在特定失败后停止测试

Stop testing after specific failures

我有不可预知的行为页面,它取决于创建开发人员的更改。有时我的测试失败了,因为页面没有加载。我的测试场景结构如下:

describe('0. first actions', function () {
    var lib = require("../../common.js");
    var config = browser.params;
    var url = config.listOfReferencesUrl, toolbar;

    load(url, "list-of-references");

    beforeAll(function () {
        // some actions on the page
    });

    it('test0', function () {
        since('test0 failed').
            expect(toolbar.isPresent()).toBe(true);
    });

    describe('1.actions1', function () {

    beforeAll(function () {
        // some actions on the page
    });

    it('test1', function () {
        since('test1 failed').       
            expect(table.getRow(clientNameNum).getRowInput().isEnabled()).toBe(true);
    });

    // ... another invested describes 
});

其中加载函数为:

global.load = function (url, pageType) {
  browser.get(url);
  if (pageType == 'list-of-references'){
    browser.executeScript("icms.go('WEB_INQ_PROC', 'InquiryList', null, 0)");
  }
  browser.waitForAngular();
};

我想知道如果页面未加载,我是否可以创建结构来停止我的测试。但我不想使用 'jasmine-bail-fast',因为如果页面加载,我想看到另一个失败。 我试着写这样的东西:

if (this.results_.failedCount > 0) {
    // Hack: Quit by filtering upcoming tests
    this.env.specFilter = function(spec) {
        return false;
    };
}

但它不起作用。我使用茉莉花2。 也许有人知道我该如何组织它?

您可以定义一个包装器

var filter = function (fn) {
  if (!condition)
    throw new Error('skipped');

  return fn;
}

并在所有相关的 describe/it 块上使用它:

describe('...', filter(function () {
  ...
}));