如何重试失败的测试?

时间:2019-02-13 15:45:39

标签: continuous-integration cypress

有时候我会有1或2个测试在CI中失败,并且重新运行构建会使它们通过。

我该如何自动重新运行这些不稳定的测试,以便我的构建可以第一次通过?是否有与let initials = title.match(/\b([a-zA-Z]|\d+)/g);的{​​{1}}类似的东西?

例如,我有一个测试失败,大约10%的时间显示“元素的有效高度为0x0”:

mocha

3 个答案:

答案 0 :(得分:2)

正在对测试重试提供官方支持,但是有一个插件。 cypress-plugin-retries

公开:我是插件的创建者

安装

将插件添加到devDependencies

this.retries

cy.visit('/') cy.get('.my-element').click() // sometimes fails with not visible error 的顶部:

npm install -D cypress-plugin-retries

用法

使用环境变量cypress/support/index.js设置重试编号:

require('cypress-plugin-retries')

或在规范文件中使用CYPRESS_RETRIES

CYPRESS_RETRIES=2 npm run cypress

或在测试中使用摩卡咖啡的Cypress.env('RETRIES')

注意:必须使用function()表示法,而不是箭头()=> {}

Cypress.env('RETRIES', 2)

注意:Please refer to this issue for updates about official cypress retry support

答案 1 :(得分:1)

Cypress 5现在具有重试的本机支持。检查:https://cypress.io/blog/2020/08/19/introducing-test-retries-in-cypress-5-0

答案 2 :(得分:1)

要重试,可以按如下所示将其添加到配置中

{
  "retries": {
    // Configure retry attempts for `cypress run`
    // Default is 0
    "runMode": 2,
    // Configure retry attempts for `cypress open`
    // Default is 0
    "openMode": 0
  }
}

但我不想添加上面的内容,而是添加(运行和打开模式均适用)

“重试”:1

enter image description here

要考虑的重点

  1. 您需要柏树版本> 5
  2. 到目前为止,在赛普拉斯中,您可以重试测试,而不是重试整个规范,这将是使测试更强大的强大功能。我已经将此选为一项关键功能(这也是目前投票最多的功能之一) 参考: https://portal.productboard.com/cypress-io/1-cypress-dashboard/tabs/1-under-consideration