Share a Stryker mutation report
Stryker's HTML report is the best-designed artifact in JavaScript testing:
a file tree, a mutation score per directory, and source with every killed and
surviving mutant marked inline. It is also a file at
reports/mutation/mutation.html on a CI runner, and its usual fate is a
number in a Slack message.
"Mutation score 61%." Nobody has ever fixed a test from that sentence.
Publish the file
npx stryker run
Drag reports/mutation/mutation.html into
the app, or from CI:
npx stryker run || true
curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
-H "Authorization: Bearer $COMMA_API_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile html reports/mutation/mutation.html \
--arg title "Mutation — $GITHUB_SHA" '{title: $title, html: $html}')"
Stryker exits non-zero below thresholds.break, so either tolerate the exit
code on the run step or publish with if: always().
The report is self-contained — no assets folder to carry — so this is one of the easier artifacts to wire up.
Triage the survivors
A surviving mutant is a question: would we care if this behaviour changed? Half the time the honest answer is no, and that answer is worth writing down where the next person will see it.
- Anchored threads on the mutant — "equivalent mutant, the branch is unreachable" — see commenting on HTML.
- Revisions — one report id per package, one revision per run. A score that fell after a refactor is a diff you can point at in review.
- Access per report — private, team, domain-gated, or named reviewers. See the sharing model.
Limits
- Entry HTML: 5 MB. Stryker inlines the full results JSON, so a very large monorepo run can approach it — run per package and publish one report each.
- 60 requests/minute per token.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.