首页 > 解决方案 > 同一工作流程中的多个 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)

感谢任何帮助,马特

标签: cypressgithub-actions

解决方案


这已通过增加运行完成延迟值来解决。

运行完成延迟

在并行化模式或分组运行期间,赛普拉斯将在完成测试运行之前等待指定的时间,以防还有更多相关工作。这是为了补偿 CI 机器可以在队列中备份的各种场景。此等待时间称为运行完成延迟,它在最后一个已知 CI 机器完成后开始。此延迟默认为 60 秒,但可在仪表板项目设置页面中配置。

更多信息可在此处获得


推荐阅读