Share an AVA test report
AVA's output is designed for the person who ran it: concise, concurrent, assertion diffs in colour. None of that is a file. When a teammate asks what broke, the honest answer is usually a paste of ANSI escape codes.
AVA's TAP output is the way out, because TAP already has converters.
TAP → JUnit → HTML
npm i -D tap-xunit
pip install junit2html
npx ava --tap | npx tap-xunit > junit.xml || true
junit2html junit.xml ava.html
Two hops, both boring, no reporter to maintain against AVA's internals. The
|| true keeps a failing run alive long enough to publish; keep a separate
npx ava step if the build should fail.
Publish it
Drag ava.html into the app, or from CI:
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 ava.html \
--arg title "AVA — $GITHUB_REF_NAME" '{title: $title, html: $html}')"
Same id every run. The link never changes; the revisions behind it are the record.
Coverage in the same job
AVA has no built-in coverage, so most suites run it under c8:
npx c8 --reporter=html npx ava
That writes a coverage/ folder — publish it as its own report and you have
two stable URLs, one for the run and one for the tree. See
sharing a coverage report.
What the URL is for
- Anchored threads on a failing assertion, so the reply lands on the assertion rather than in a thread that scrolls away. See commenting on HTML.
- Revisions, which is how a flake stops being an argument.
- Access per report — private, team, domain-gated, or named reviewers. See the sharing model.
Limits
- Entry HTML: 5 MB. Assets: 25 MB per file, 250 MB and 500 files total.
- 60 requests/minute per token.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.