【问题标题】:Cypress 10 - How to run all tests in one go?Cypress 10 - 如何一次运行所有测试?
【发布时间】:2022-11-29 22:00:15
【问题描述】:

我曾经在以前的项目中使用 Cypress 9。 默认情况下,当运行 cypress opencypress open --browser chrome 时,用于运行所有 React 组件的所有测试。

然而,我第一次在一个还没有端到端测试的项目上安装了 Cypress 10。我添加了测试规范,但我没有看到任何选项可以完全运行所有测试。

看来我必须一个接一个地运行测试,点击它们中的每一个。

谁能建议我如何自动运行所有测试?

【问题讨论】:

    标签: cypress


    【解决方案1】:

    它已在 Cypress v10 中删除,这里是相关的更改说明

    在赛普拉斯开放期间,“运行所有规范”和“运行过滤规范”的能力已被删除。请在此处留下有关删除此功能的反馈。您的反馈将帮助我们围绕此功能的未来做出产品决策。

    表达不满的反馈页面是here


    您可以创建一个“桶”规范来运行多个导入的规范。

    我不能保证它与 v9“运行所有测试”一样工作,但看不出有任何理由不这样做。

    // all.spec.cy.js
    
    import './test1.spec.cy.js'    // relative paths
    import './test2.spec.cy.js'
    ...
    

    【讨论】:

    • 在 CI 中运行时不要忘记排除你的桶规格,否则每个测试将运行两次。在你的cypress.config.ts中的e2e下添加:if (config.isTextTerminal) { return {excludeSpecPattern: ['cypress/e2e/all.spec.cy.js']}; }
    • 我宁愿忘记excludeSpecPattern,而只使用--spec cypress/e2e/all.spec.cy.js
    【解决方案2】:

    如果 Cypress Test Runner 不是必须的,我建议使用 CLI/Node Cmd 方法

    您可以通过npx cypress run触发所有测试(失败步骤的视频录制和屏幕截图仍然会保存在各自的文件夹中)以运行所有或与任何其他赛普拉斯标志一起运行以过滤掉特定的规范文件或浏览器等.

    【讨论】:

      【解决方案3】:

      根据反馈discussion,有一个与@Fody 的答案相同的解决方法,可以达到与 v9 相同的结果。同样值得注意的是关于持续集成的部分和 Update 1,其中包含一个修复程序,用于防止此解决方法使用 cypress run 命令产生问题。

      目前有解决方法吗?

      • 是的。如果您受到遗漏此功能的影响,可以使用 Gleb Bahmutov 在这里解释的解决方法实现与 9.x 相同的奇偶校验级别:https://glebbahmutov.com/blog/run-all-specs-cypress-v10/
      • 这仍然会继承与以前的实现相同的问题(这就是它被删除的原因),但它会在某些情况下起作用,其中以前的实现对您的用例没有问题

      https://github.com/cypress-io/cypress/discussions/21628#discussion-4098510

      【讨论】:

      • 如果测试隔离是问题(不完全清楚),那么它与确保同一规范中测试之间的正确隔离没有什么不同。
      【解决方案4】:

      它被删除了,因为人们用错了它。

      Test Runner 用于调试单个测试。但是通过运行所有测试,性能将很快成为一个问题并使整个套件崩溃。

      运行所有测试只能从 CLI 执行。

      来源

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-03
        • 2020-06-02
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 2020-03-02
        • 1970-01-01
        相关资源
        最近更新 更多