特定故障后停止测试

时间:2015-11-02 12:37:14

标签: angularjs protractor angularjs-e2e e2e-testing

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

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;
    };
}

但它不起作用。我用jasmine2。 也许有人知道如何组织它?

1 个答案:

答案 0 :(得分:1)

您可以定义包装器

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

  return fn;
}

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

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