Skip to content

Reporter Combos

When to Use

Use this when configuring multiple reporters for different audiences — CI pipeline, PR reviewers, dashboard systems, or automated tooling.

Decision

Audience Reporter
Local dev list (terminal) + html (triage)
GitHub PR diff annotations github
Jenkins / GitLab test tab junit
Custom dashboards json
Machine consumption (Claude, scripts) json
Triage humans html (always include)
Sharded CI runs blob on each shard, merge to html

Pattern

Typical CI combo:

reporter: process.env.CI
  ? [['github'], ['html', { open: 'never' }], ['junit', { outputFile: 'junit.xml' }]]
  : [['list'], ['html']],

Machine-readable + human-readable:

reporter: [
  ['list'],                                   // Live terminal output
  ['html'],                                   // Human triage
  ['json', { outputFile: 'results.json' }],   // Machine consumption
]

Common Mistakes

  • Wrong: single reporter in CI → Right: either humans can't triage or machines can't parse; combine both
  • Wrong: html and junit with the same outputFile path → Right: JUnit needs a file path; HTML needs a folder — different keys
  • Wrong: omitting github reporter on GitHub Actions → Right: missing inline PR annotations is a lost UX win

See Also