【问题标题】:Global event hook that fires once when either Cypress run or open is called调用 Cypress run 或 open 时触发一次的全局事件挂钩
【发布时间】:2019-11-23 15:33:32
【问题描述】:

当使用 cypress run 或 cypress open 时,是否有一个 Cypress 事件挂钩被调用?

我知道插件文件 on('before:browser:launch') 将在 cypress 打开 (https://docs.cypress.io/api/plugins/browser-launch-api.html#Modify-args-based-on-browser) 之前运行,但这也会在 cypress 运行之前运行吗?

不确定在使用 cypress open 或 run 之前我应该​​挂钩哪个事件来触发一些 Node 代码。

【问题讨论】:

    标签: cypress


    【解决方案1】:

    嗯,support/index.js 文件通常是此类设置代码的理想选择。它确实在每个规范文件之前运行,而不仅仅是在启动时运行一次,但您通常可以在其中放置您需要设置的任何内容。

    如果您还没有阅读the CI docs,也值得一读,因为他们指出了在赛普拉斯之前运行进程的潜在缺陷。如果您的代码是一个简单的“运行然后成功退出”场景,您总是可以选择:

    node foo.js && cypress run
    

    当节点进程处于后台时,事情可能会变得有点麻烦。

    【讨论】:

    • 我已经阅读了文档并查看了他们的厨房水槽代码示例,但找不到这个钩子。我目前的解决方案是使用 npm 脚本执行您建议的操作。这样做的问题是,对于我拥有的每个调用 cypress open 或 run 的 npm 脚本,我必须记住在 Cypress 之前输入我想要运行的代码,这不是一个非常干净的解决方案。我很惊讶他们没有在赛普拉斯启动时触发的全局事件(不是在每次测试运行之前)。假设我只想在赛普拉斯启动或获取不记名令牌时从 S3 存储桶下载一些 .spec 文件?
    • 是的,听起来你在说 npm 脚本领域。或者,像 bash 别名这样的低租金解决方案对于这类事情可能非常有效。不必全是 JS! ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多