在运行另一个之前等待特定的spec文件执行 - Jasmine / Protractor

时间:2016-06-14 17:07:49

标签: jasmine protractor wait

工具:Protractor 3.3.0,Jasmine 2.4.1,Selenium Standalone Server。

我有一个测试套件,其中包含大量spec.js文件,每个文件都包含我的应用程序的唯一测试。

我正在使用 maxInstances shardTestFiles 浏览器功能启动3个浏览器并运行每个spec文件以减少整个套件的运行时间(使用3个浏览器它在大约20分钟..所以没有它可能超过一个小时)。

我的问题是如何告诉Protractor在执行之前让spec文件等待另一个spec文件的完成。例如:

假设我有一个 Page 1测试,我有spec文件 a1.spec a2.spec a3 .spec 然后我还有一些类似结构的测试或者你有什么。

当我按照预期推出具有3个浏览器实例的量角器时, a1.spec a2.spec a3.spec 全部启动与他们自己的浏览器实例,因为它是1:1的比例。但是如果除 a2.spec 完成之外 a3.spec 无法运行怎么办?我如何使这种等待发生,或者仅仅是不使某些测试相互依赖的最佳做法?

1 个答案:

答案 0 :(得分:0)

您可以在任何需要时间异步完成的测试的donebeforeEach中使用it回调。以下任何测试都不会运行,直到您等待的测试结束。

beforeEach示例

beforeEach(function(done) {
    setTimeout(function() {
        value = 0;
        done();
    }, 1);
});

它的例子

it("should support async execution of test preparation and expectations", function(done) {
    value++;
    expect(value).toBeGreaterThan(0);
    done();
});

这将根据您的需要排队,但测试将按顺序运行。为了加快速度,你可以使用Promises和when/guard,但这可能会使事情变得太复杂。