Semaphore Cypress:在第一次失败时中断所有测试

Semaphore Cypress:在第一次失败时中断所有测试,semaphore,cypress,e2e-testing,Semaphore,Cypress,E2e Testing,如何在第一次测试失败时中断所有Cypress测试? 我们正在使用信号量为每个PR使用Cypress启动完整的e2e测试。但是这需要太多时间 我想在第一次测试失败时中断所有测试 获得完整的错误是每个开发人员在开发时的事情。我只想在部署之前尽快通知我是否有任何错误,而不必等待完整测试完成 到目前为止,我提出的唯一解决方案是使用Cypress中断对当前规范文件的测试 afterEach(() => { if (this.currentTest.state === 'failed'

如何在第一次测试失败时中断所有Cypress测试?

我们正在使用信号量为每个PR使用Cypress启动完整的e2e测试。但是这需要太多时间

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

获得完整的错误是每个开发人员在开发时的事情。我只想在部署之前尽快通知我是否有任何错误,而不必等待完整测试完成

到目前为止,我提出的唯一解决方案是使用Cypress中断对当前规范文件的测试

afterEach(() => {
        if (this.currentTest.state === 'failed') {
            Cypress.runner.end();
        }
    });
但这还不够,因为它只会中断位于spec文件上的测试,而不会中断所有其他文件。我今天对这件事做了一些深入的调查,但似乎这不是柏树上的事情

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

1:带信号灯

fail_fast:
  stop:
    when: "true"
它应该在出现错误时中断脚本。但它不起作用:测试在出错后继续运行。我猜Cypress只有在所有测试完成后才会抛出错误

2:也许是剧本启动了Cypress,但我没有主意了 现在这是我的脚本

"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"

这是Cypress中长期要求的特性,但由于某些原因尚未引入。社区提出了一些变通办法,但不能保证它们会奏效

对我有用的小技巧

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

非常感谢。这正是我所想的,我在发布我的问题之前访问了这个链接。解决方法还可以,但我想知道是否可以用信号量或npm脚本来实现。据我所知,这是不可能的。我遇到的所有解决方法都在这个链接中。如果我的回答对你有帮助,请考虑把它标记为被接受的答案。虽然这不是一个很好的解决办法,因为正如你所说的,它有点笨拙,效果很好。也许最好发送停止按钮(s键)的键盘快捷键,在未来版本的Cypress中,该按钮不太可能更改。另外,我可能错了,但我认为您不需要这里的
eval()