Как остановить транспортир от запуска дополнительных тестовых коробок при сбое?

Есть ли способ выйти из набора тестов и прекратить выполнение дополнительных тестовых случаев, если тестовый пример не работает в транспортир?

Ответы

Ответ 1

В случае jasmine рамки тестирования вы не первый спрашиваете об этом.

Существуют релевантные открытые обсуждения/проблемы при выходе из первого отказа, опция --fail-fast:

Короче говоря, это открытая проблема, и через некоторое время jasmine будет встроена функциональность. В настоящее время используйте сторонний модуль jasmine-bail-fast.

Кроме того, есть удобная установка жасмина realtimeFailure. Если вы установите его на true, это не пропустит весь тестовый прогон, но он будет показывать ошибки в реальном времени - сразу же после его появления - это может покрыть ваш прецедент. Установите его в jasmineNodeOpts:

exports.config = {
    seleniumAddress: 'http://127.0.0.1:4444/wd/hub',

    ...

    jasmineNodeOpts: {
        realtimeFailure: true
    }
}

Ответ 2

jasmine-bail-fast не работал в моем случае. Не уверен, что это связано с некоторыми конфликтами с моими другими плагинами отчетов.

Если у кого-то такая же проблема. Вы можете попробовать protractor-fast-fail

exports.config = {
  plugins: [{
    package: 'protractor-fail-fast'
  }],

  onPrepare: function() {
    jasmine.getEnv().addReporter(failFast.init());
  },

  afterLaunch: function() {
    failFast.clean(); 
  }  
}

Работала отлично для меня.

Ответ 3

Вот мое решение пропустить тесты при первом провале с помощью Jasmine 2 и Protractor. Надеюсь, что это поможет.

exports.config = {
    onPrepare: function () {
        //skip tests after first fail
        var specs = [];
        var orgSpecFilter = jasmine.getEnv().specFilter;
        jasmine.getEnv().specFilter = function (spec) {
            specs.push(spec);
            return orgSpecFilter(spec);
        };
        jasmine.getEnv().addReporter(new function () {
            this.specDone = function (result) {
                if (result.failedExpectations.length > 0) {
                    specs.forEach(function (spec) {
                        spec.disable()
                    });
                }
            };
        });
    }
};

Ответ 4

вам не нужны все сторонние плагины. Используйте native process.exit().

Пример кода:

it("test", function()
{
   ...
   if(isExit)
   {
      browser.driver.close().then(function()
      {
         process.exit(1);
      });
   }
});

прибыль.