【问题标题】:Option to retry command in Cypress after it failed在 Cypress 中重试命令失败后的选项
【发布时间】:2020-03-03 09:14:29
【问题描述】:

有一个 Cypress 错误,即每 ~100 次测试 cy.visit() 不会加载页面,并且在等待 60 秒后测试失败。 赛普拉斯的支持帮不上忙,因为他们想要一种可靠的方式来重现它,显然在这种情况下我不能把它给他们。 我想这样做: 调用 .visit() 并给它 15 秒的超时,如果超时,再次调用该命令或重试测试。 我知道有一个 cypress-plugin-retries 库,但我认为我不能仅根据一个命令超时重试,至少我没有找到办法。

有人对我该如何处理有任何想法吗?

【问题讨论】:

  • 我们有同样的问题,我登录了github.com/cypress-io/cypress/issues/2938cypress-plugin-retries 使这成为非问题。它不适用于每个命令,但会重试为我们完成相同任务的整个测试。
  • 我也看到了,但我真的不想为我们所有的测试创建重试。以目前的形式,cypress 测试非常稳定,我不想仅仅因为重试就结束了一堆不稳定的测试。

标签: javascript timeout cypress


【解决方案1】:

也许您可以改用wait until

【讨论】:

  • 也有人建议过,但我在这里看不到应用程序:/ cy.visit 仍然会超时并导致整个测试崩溃,对吧?
  • 它有效,请参阅此答案cypress - do action until element shows on screen,它给出了一个贯穿始终。本质上,包装函数确保第一次失败不会停止测试。
  • 哦,谢谢 Marion 提供的链接,真的很有帮助,我会去看看!
  • 我觉得差不多了,但我需要一些不包含断言的 cy.visit() 替代方法,因此测试不会失败。他们提到了暴露的柏树查询,但我没有看到 cy.visit 的任何内容:/
  • @AciD 但是您如何知道您要访问的网址实际上是由 cypress 访问的? :P 这个测试失败是有原因的。这就是你说的问题:github.com/cypress-io/cypress/issues/2938
【解决方案2】:

您可以尝试重试:https://docs.cypress.io/guides/guides/test-retries.html#How-It-Works 超时

尽管如此,所有它的“加载控制”都将被再次测试,将它放在 beforeeach 中可能不是一个好主意

  it('Controls of the loading  ',{retries: {
    runMode: 2,
    openMode: 2
  },timeout :16000 }, () => {
//your test there such as 
cy.visit('/localhost:3033');
  });

尽管如此,所有它的“加载控制”都将被再次测试,将它放在 beforeEach 中可能不是一个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多