You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:07:03