赛普拉斯:首次失败时中断所有测试

时间:2020-05-07 15:40:55

标签: semaphore cypress e2e-testing

如何在第一次测试失败时中断所有赛普拉斯测试?

我们正在使用信号量针对每个PR与赛普拉斯一起启动完整的e2e测试。但是需要太多时间。

我想在第一次测试失败时中断所有测试。

获得完整的错误是每个开发人员的工作。我只想尽快通知部署是否有任何问题,而不必等待完整的测试完成。

到目前为止,我想出的唯一解决方案是使用赛普拉斯中断对当前规范文件的测试。

afterEach(() => {
        if (this.currentTest.state === 'failed') {
            Cypress.runner.end();
        }
    });

但这还不够,因为它仅中断规范文件上的测试,而不中断所有其他文件。我今天在此问题上进行了深入的搜索,在Cypress上似乎并不是一件容易的事。

所以我正在尝试其他解决方案。

1:带有信号灯

fail_fast:
  stop:
    when: "true"

应该在出错时中断脚本。但这是行不通的:测试会在出现错误后继续运行。我的猜测是,赛普拉斯只有在所有测试完成后才会抛出错误。

2:也许随着脚本启动赛普拉斯,但我没有主意 现在这是我的脚本

"cy:run": "npx cypress run",
"cy:run:dev": "CYPRESS_env=dev npx cypress run",
"cy:test": "start-server-and-test start http-get://localhost:4202 cy:run"

1 个答案:

答案 0 :(得分:0)

一个对我有用的小技巧

Cypress.Commands.add('interrupt', () => {
  eval("window.top.document.body.querySelector('header button.stop').click()");
});