无需Cypress Dashboard并行测试:合并Mochawesome报告仅含单机器结果问题
解决Cypress并行测试后Mochawesome报告仅显示单台机器结果的问题
问题根源
你的并行任务生成的Mochawesome报告文件名默认相同(比如mochawesome.json),在合并阶段复制文件时,后一个任务的文件会覆盖前一个,最终合并的只有最后一个任务的测试数据。
修复方案
1. 为每个并行实例生成唯一的报告文件名
修改Run Tests步骤的Cypress命令,通过--reporter-options指定带容器编号的唯一文件名,避免重名覆盖:
- name: Run Tests run: npx cypress run --spec $(node cypress-parallel.js ${{ matrix.containers }} 2) --reporter mochawesome --reporter-options reportFilename=mochawesome-${{ matrix.containers }}.json,overwrite=false,html=false continue-on-error: true
这里额外添加overwrite=false(防止单实例内报告覆盖)和html=false(只生成JSON文件,后续统一生成HTML报告),减少冗余文件。
2. 优化报告合并的文件收集逻辑
原合并步骤的find命令可替换为更简洁的通配符复制,确保所有子目录下的JSON报告都被收集:
- name: Merge mochawesome reports run: | mkdir -p merged-reports cp artifacts/**/*.json merged-reports/ npx mochawesome-merge merged-reports/*.json > merged-reports/merged.json npx marge merged-reports/merged.json -f index -o mochawesome-report
完整修复后的GitHub Actions配置
name: Cypress Automation Tests on: workflow_dispatch: jobs: job1: name: cypress-run runs-on: ubuntu-latest strategy: fail-fast: false matrix: containers: [0, 1] steps: - name: Checkout uses: actions/checkout@v3 - name: Install Packages run: npm install - name: Run Tests run: npx cypress run --spec $(node cypress-parallel.js ${{ matrix.containers }} 2) --reporter mochawesome --reporter-options reportFilename=mochawesome-${{ matrix.containers }}.json,overwrite=false,html=false continue-on-error: true - name: Upload Mochawesome results uses: actions/upload-artifact@v4 with: name: mochawesome-${{ matrix.containers }} path: cypress/reports/ merge-and-publish: name: reports if: always() runs-on: ubuntu-latest needs: job1 steps: - uses: actions/checkout@v3 - name: Install Node uses: actions/setup-node@v3 with: node-version: '18' - name: Install dependencies run: npm ci - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts - name: Merge mochawesome reports run: | mkdir -p merged-reports cp artifacts/**/*.json merged-reports/ npx mochawesome-merge merged-reports/*.json > merged-reports/merged.json npx marge merged-reports/merged.json -f index -o mochawesome-report - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./mochawesome-report
额外检查点
- 确认
cypress-parallel.js脚本已正确将测试用例分配到两个容器,确保两个实例都有测试执行 - 可在GitHub Actions的Artifacts选项卡中,检查上传的artifact是否包含对应容器的JSON报告文件
内容的提问来源于stack exchange,提问作者Hari D
相关产品推荐
相关产品推荐

