Comparison

Codecov Test Analytics Alternative: Keep Coverage, Add Links

A Codecov Test Analytics alternative that keeps your coverage: hosted run pages and share links on $15 or $49/month plans. One extra CI step, same JUnit file.

On this page

Your Codecov PR comment lists the failed tests, then a PM or contractor without a repo account asks to see the run. On a private repo, Codecov’s test data lives in that comment and in a Tests tab you reach after logging in. Codecov’s public docs describe no public share link for a private repo’s test results as of November 2026, though we did not test this inside a Codecov account. Gaffer is a Codecov Test Analytics alternative for hosted run pages and share links, while Codecov keeps your coverage. Add one CI step that sends the same JUnit file to Gaffer, on a $15 or $49/month plan with unlimited users.

What does Codecov Test Analytics cover today?

Codecov Test Analytics reports test results from a JUnit XML upload, in your pull requests and in the Tests tab on the Codecov UI. As of November 2026, Codecov’s feature page lists:

  • Failed tests in a PR comment
  • Total suite run time, a slowest tests callout, and last test duration
  • Flaky count and failed count
  • Average and individual failure and flake rates

In the Tests tab you can sort by average run duration, failure rate and commits failed, and Codecov’s docs add: “You can create custom reports using the Test Results API.” Codecov’s FAQ says: “For private repositories: Users will need a seat license to access.” It defines a user as “anyone who authors a pull request or merge request on a private repo with Codecov coverage” or who “accesses advanced features on Codecov.io for a private repo.”

As of November 2026, Codecov’s docs state two limits: “The only test result file format we support is JUnit XML at the moment,” and “We currently store test results on Codecov servers for 60 days.”

On ownership: a Harness press release dated June 2, 2026 says Harness acquired Codecov from Sentry, and that “Harness plans to accelerate innovation in Codecov while retaining its brand and free access for open source projects.”

How much does Codecov Test Analytics cost a small team?

Codecov doesn’t price Test Analytics separately: it comes with a per-user plan on private repos, and flaky detection requires Pro or Enterprise. A five-person team pays 5 x $12 = $60 a month for Codecov Pro as of November 2026. These figures come from Codecov’s pricing page and the feature page linked above:

PlanPriceUsers on private reposPrivate repo uploads per monthFlaky detection on private repos
DeveloperFree1250No
Team$5 per user per month, or $4 on annual billingUp to 102,500No
Pro$12 per user per monthUnlimitedUnlimitedYes

Enterprise has custom pricing and includes flaky detection. Developer and Team include Failed Test Reporting. Pro can be purchased by teams of two or more and has a 14-day free trial. The FAQ on Codecov’s pricing page describes the upload limits as coverage uploads per month. Public and open source repos get flaky detection on all plans.

The $60 is not like for like with Gaffer’s prices below. It also buys Codecov’s coverage products, and Gaffer does not match those. The real comparison is for a five-person team on Codecov Team that wants flaky detection: moving to Pro costs $35 to $40 more a month and also adds project coverage, while adding Gaffer Pro costs $15 and adds flaky detection, hosted runs and share links. A team already on Pro has flaky detection and pays $15 more for Gaffer only if it wants hosted reports and share links.

What does Gaffer add as a Codecov Test Analytics alternative?

Gaffer adds a hosted page for every test run, a link you can send to someone without a repo account, and unlimited users at a flat price.

Reports in one place

Each upload becomes a run in the Gaffer dashboard with counts, failed tests, and any branch and commit you pass. Gaffer hosts HTML reports from Playwright, Vitest, Jest, pytest and RSpec, and also reads JUnit XML, CTRF, TRX, Jest and Vitest JSON, and Playwright JSON. That matters if some of your test suites don’t output JUnit, or if the HTML report is what people actually open.

A share link is a read-only public URL for one run, and the recipient doesn’t need a Gaffer account. You can set it to expire after 1 hour, 24 hours, 7 days or 30 days, or never, and revoke it at any time. Share links are on every plan. A link stops working once its report passes your project’s retention.

A flat price

Gaffer charges per plan, not per user: $0, $15 or $49 a month, with unlimited users on every plan.

Gaffer FreeGaffer ProGaffer Team
Price$0$15/month$49/month
Storage500 MB10 GB50 GB
Default report retention7 days30 days90 days
UsersUnlimitedUnlimitedUnlimited

Storage above the limit costs $0.50/GB/month on Pro and Team, so storage is the one thing that can move the bill. Retention is the catch: as of November 2026, Codecov keeps test results for 60 days, longer than the Gaffer Free and Pro defaults. You can set a longer retention per project in settings on Pro and Team, and those reports count against your storage.

Running both costs more than Codecov alone:

Setup, five usersMonthly cost, as of November 2026
Codecov Pro alone$60
Codecov Pro + Gaffer Pro$75
Codecov Team + Gaffer Pro$35 to $40

The Team row only works if flaky detection is your one reason for Pro. The FAQ on Codecov’s pricing page says Team “shows Patch ONLY coverage”, so it drops project coverage, and it caps private uploads at 2,500 a month. Codecov’s sources disagree on patch coverage: its docs FAQ says patch coverage reporting “is not available for Private Repos on the Codecov team plan”. Confirm that with Codecov before moving a private repo to Team. Flaky detection runs on all Gaffer plans, and a test needs at least 5 executions before Gaffer evaluates it.

What is the one CI step to add?

Add a Gaffer upload step after your Codecov upload, pointed at the same file. In this workflow, the first step is what you already have. The second is the only addition:

- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
report_type: test_results
files: ./junit.xml
- name: Upload test results to Gaffer
if: ${{ !cancelled() }}
uses: gaffer-sh/gaffer-uploader@v2
with:
gaffer_upload_token: ${{ secrets.GAFFER_PROJECT_TOKEN }}
report_path: ./junit.xml

Store your Gaffer project token as the GAFFER_PROJECT_TOKEN repository secret. Your Codecov setup doesn’t change. If your workflow still uses codecov/test-results-action, that action was archived on August 11, 2026, and its README points to codecov-action@v5. Use report_type with an underscore, as above: that is the input name in the action’s action.yml.

Two things to know about this step:

  • A JUnit file gives you a summary, not an HTML report. The share page shows pass, fail and skip counts, up to 50 failed tests with their errors, and a link to the raw XML. For the interactive report, also generate your framework’s HTML report and add a second Gaffer step with report_path set to its folder, such as ./playwright-report. Each upload becomes its own run, so one CI job then shows two runs, with a notification and commit status for each. If you only need Gaffer for reports, upload the HTML report alone.
  • Commit details are extra inputs. The uploader doesn’t detect them, so add commit_sha: ${{ github.event.pull_request.head.sha || github.sha }} and branch: ${{ github.head_ref || github.ref_name }} under with to tie each run to a commit and branch, including on pull requests. A pass or fail commit status also needs the Gaffer GitHub App installed and linked to the project.

Other inputs and CI providers are in the GitHub Actions guide.

When should you stay on Codecov?

Stay on Codecov alone if test results already reach everyone who needs them through the pull request. Gaffer doesn’t improve on it in these cases:

  • Coverage is why you pay for it. PR-level coverage is Codecov’s core product, and Gaffer is not a Codecov alternative for it. Gaffer’s coverage tracking is in beta and covers trends, per-file breakdowns and commit status gates. If coverage is why you have Codecov, keep it.
  • You maintain open source. As of November 2026, Codecov’s open source access is free with unlimited users, and flaky detection is included on all plans for public repos. Gaffer has no separate open source plan, so a public project gets the Free plan’s 500 MB and 7-day default retention.
  • Failed-test PR comments are enough. Codecov lists failures in the PR. Gaffer posts a commit status and doesn’t comment on the PR, so a developer still clicks through to see what failed.
  • JUnit XML covers your suites. If every suite outputs JUnit and nobody opens an HTML report, Gaffer’s extra formats add nothing.

Other Comparisons

Weighing other tools? See how Gaffer compares to Allure, ReportPortal, Currents.dev and TestDino. For a wider view, see 10 test reporting tools compared.

Try It

Gaffer’s Free plan has 500 MB of storage and 7-day default retention, so you can add the step on one repo and send a share link from the first failed run.

Facts checked November 5, 2026. Codecov details come from its own pricing, feature, docs and blog pages, linked above, and may have changed since.