Мне удалось добиться этого с помощью пользовательского флага командной строки, установки пакета jasmin-fail-fast и неудачного первого теста при прохождении этого флага. Но обратите внимание, что всегда должен быть 1 отказ.
Подробные шаги
- Передача пользовательского флага в качестве аргумента командной строки при запуске транспортира
- В проверке onPrepare, если этот флаг найден
- Если это так, выполните следующие 3 шага:
- включите пакет jasmine-fail-fast (вам нужно скачать с
npm i jasmine-fail-fast --save
- Добавить пользовательский репортер, который регистрирует только количество тестов в ловушке жизненного цикла jasmineStarted
- Добавить beforeAll с пользовательским сообщением об ошибке
Project структура Обратите внимание, что приложения 1. js и приложения 2. js идентичны, поэтому в общей сложности существует 8 спецификаций.
Используемая команда
C:\ProtractorProjects\jasmine-test-count>node_modules\.bin\protractor conf.js --params.countSpecs
приложение 1. js
describe("suite 1", function(){
it("spec 1", function(){
expect(true).toBe(true);
});
it("spec 2", function(){
expect(true).toBe(false);
})
xit("spec 3", function(){
expect(true).toBe(false);
})
xit("spec 4", function(){
expect(true).toBe(false);
})
});
конф. js
exports.config = {
framework: 'jasmine',
specs: "app.*.js",
onPrepare: function () {
if (browser.params.countSpecs) {
//Add jasmine fail fast package
const failFast = require('jasmine-fail-fast');
jasmine.getEnv().addReporter(failFast.init());
//Add custom reporter which only counts
jasmine.getEnv().addReporter({
jasmineStarted: function (suiteInfo) {
console.log(`Due to execute #${suiteInfo.totalSpecsDefined} specs in total`);
}
});
beforeAll(function () {
fail("Failing because only a count was required");
})
}
}
}
Выход