React项目Jest测试在GitHub Actions中无法生成汇总报告
问题解决:GitHub Actions中Jest不生成测试汇总报告
核心问题分析
你的Workflow配置存在两个关键问题:
- 仅重定向了Jest的标准输出(stdout),但Jest的测试汇总报告通常输出到标准错误(stderr),导致报告内容既没被写入文件,也无法在Actions日志中显示。
- 为获取退出码重复执行测试,既浪费资源,也未处理第二次执行的输出。
修复步骤
1. 修改测试执行命令,同时捕获stdout和stderr
将原测试执行步骤替换为:
- name: Run UI tests id: run-ui-tests continue-on-error: true run: | cd ./packages # 同时捕获标准输出和标准错误到文件 yarn web:test:ui > test-results.txt 2>&1 # 保存测试退出码 echo "::set-output name=exit-code::$?"
2>&1会将stderr内容重定向到stdout,确保汇总报告能被写入文件,同时Actions日志可显示完整输出。
2. 移除重复执行测试的步骤
删除Store exit code步骤,直接使用run-ui-tests步骤的输出:
- name: Check test results if: steps.run-ui-tests.outputs.exit-code != 0 run: echo "Test suite failed with exit code ${{ steps.run-ui-tests.outputs.exit-code }}"
3. 检查Jest CI环境配置
若上述修改后仍无报告,检查jest.config.js:
- 确认CI环境下未禁用默认报告器,比如避免类似配置:
可调整为同时保留汇总报告输出:module.exports = { reporters: process.env.CI ? ['github-actions'] : ['default'] };reporters: process.env.CI ? ['github-actions', 'summary'] : ['default'] - 或在命令中强制禁用CI模式,避免Jest简化输出:
CI=false yarn web:test:ui > test-results.txt 2>&1
4. 验证依赖安装完整性
偶尔缓存可能导致依赖不完整,可临时禁用缓存测试:
- uses: actions/cache@v3 id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- enabled: false
测试正常后再恢复缓存配置。
内容的提问来源于stack exchange,提问作者Dipesh Silwal
相关产品推荐
相关产品推荐

