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.

Publish a test report →

Related