Github Action运行缓慢致Cypress测试用例失败,求解决方案
解决Github Action中Cypress测试因速度慢失败的问题
一、关于指定运行服务器
GitHub托管的Runner无法指定具体某台服务器,但可以选择更高资源规格的托管Runner来提升运行速度——这类Runner拥有更多CPU和内存,能有效缓解运行缓慢的问题。比如将runs-on改为大规格版本:
runs-on: ubuntu-22.04-large
如果对运行环境有完全自定义的需求,也可以使用自托管Runner:用自己的服务器部署Runner,就能完全掌控服务器配置和网络环境,但需要自行负责服务器的维护和稳定性。
二、设置超时时间
可以从两个层面设置超时,避免因速度慢导致测试中断:
1. Job级别超时
在Job配置中添加timeout-minutes,自定义整个测试Job的最长运行时间(默认是360分钟):
jobs: cypress-run: runs-on: ubuntu-22.04-large timeout-minutes: 60 # 根据实际测试时长调整 steps: # 后续步骤保持不变
2. Cypress测试本身超时
通过环境变量或命令参数,调整Cypress的各类超时设置(比如默认命令超时、页面加载超时)。可以在env中添加相关变量:
- name: Cypress run uses: cypress-io/github-action@v6 with: record: true browser: chrome spec: cypress/e2e/Customer.cy.js env: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CYPRESS_DEFAULT_COMMAND_TIMEOUT: 15000 # 将命令超时调整为15秒(默认4秒) CYPRESS_PAGE_LOAD_TIMEOUT: 60000 # 页面加载超时调整为60秒(可按需修改)
也可以直接在with中通过command参数传递Cypress运行参数:
- name: Cypress run uses: cypress-io/github-action@v6 with: record: true browser: chrome spec: cypress/e2e/Customer.cy.js command: npx cypress run --default-command-timeout 15000 --page-load-timeout 60000 env: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
额外优化建议
- 启用Cypress缓存,减少每次运行的依赖安装时间:
- name: Cache Cypress dependencies uses: actions/cache@v3 with: path: | ~/.cache/Cypress node_modules key: ${{ runner.os }}-cypress-${{ hashFiles('package-lock.json') }}
- 可以尝试使用更轻量的浏览器(比如Firefox),或确认Chrome无头模式的配置是否存在额外资源消耗。
内容的提问来源于stack exchange,提问作者Eash Bhanu
相关产品推荐
相关产品推荐

