cypress - 同一工作流程中的多个 Cypress 在 Github 上运行 --record 命令仅记录 Cypress Dashboard 上的第一次执行
问题描述
我正在构建一个持续部署管道,该管道在对主分支进行更改(基于主干)时触发,执行通用测试、构建和部署阶段直至生产。
为了实现这一点,我尝试在同一工作流程中在 Github Actions 中执行多个cypress run命令,并在 Cypress 仪表板上记录执行,这是在多个环境中测试应用程序的尝试。但是,只有第一次执行被执行和记录。
这是工作流 YAML,删除了不相关的语句:
name: trunk-release
on:
push:
branches: [main]
jobs:
test-local:
name: test-local
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
steps:
- uses: actions/checkout@v2
- run: npm ci
- run: npm start & npx wait-on http://localhost:3000
- run: npm run cy-test:local
deploy-dev:
needs: test-local
name: deploy-dev
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
steps:
- uses: actions/checkout@v2
- run: npm run cy-test:dev
deploy-prod:
needs: deploy-dev
name: deploy-prod
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
steps:
- uses: actions/checkout@v2
- run: npm run cy-test:prod
这是我正在运行的脚本:
"scripts": {
"cy-test:local": "./node_modules/.bin/cypress run --record --parallel --tag 'local'",
"cy-test:dev": "CYPRESS_BASE_URL=https://dev.mywebapp.com ./node_modules/.bin/cypress run --record --parallel --tag 'develop'",
"cy-test:prod": "CYPRESS_BASE_URL=https://mywebapp.com ./node_modules/.bin/cypress run --record --parallel --tag 'production'",
}
默认的 CYPRESS_BASE_URL 是 localhost。
npm run cy-test:local成功运行并记录,但是,其他执行不会运行测试或记录到仪表板。
第二次和第三次执行的 Github Action 日志在这里,显示没有运行测试:
(Run Starting)
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Cypress: 7.3.0 │
│ Browser: Electron 89 (headless) │
│ Specs: 6 found (listed tests) │
│ Params: Tag: develop, Group: false, Parallel: true │
│ Run URL: same URL as first run │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
tput: No value for $TERM and no -T specified
====================================================================================================
(Run Finished)
感谢任何帮助,马特
解决方案
这已通过增加运行完成延迟值来解决。
运行完成延迟
在并行化模式或分组运行期间,赛普拉斯将在完成测试运行之前等待指定的时间,以防还有更多相关工作。这是为了补偿 CI 机器可以在队列中备份的各种场景。此等待时间称为运行完成延迟,它在最后一个已知 CI 机器完成后开始。此延迟默认为 60 秒,但可在仪表板项目设置页面中配置。
更多信息可在此处获得
推荐阅读
- django - Heroku 上的 Django:ModuleNotFoundError:没有名为“app_name”的模块
- mysql - 如果它们对同一个人 ID 重复,我需要在不同列中显示行值
- html - 创建具有相同布局*每行*的 flexbox 行
- javascript - Apollo - 将客户端链接到多个 graphql 模式注册表
- optimization - 自动优化和谷歌洞察
- sql - 查找同时注册了两门课程的学生
- wordpress - 如何将邮件从 mail.domain.com 发送到 mail2.domain.com
- ios - Mapkit 标注附件按钮激活
- soap - Amazon Java 客户端库
- laravel - 在 laravel 中调用 null 上的成员函数 move()