Features

Once runs are flowing in, UniTrack turns the raw JUnit and JaCoCo data into the signals teams actually act on. Each feature has its own page:

  • Flaky Detection — find tests that pass and fail on the same commit.

  • Quality Gate — fail builds when coverage drops or new failures appear, measured against a baseline.

  • Coverage Flags — slice coverage by component using the flag field.

  • Report Merging — combine sharded/parallel runs into one logical run via a runKey.

  • Failure Clustering & Triage — group similar failures and auto-categorise them with rules.

  • AI Root-Cause Analysis — click-to-run LLM root cause + fix direction for a failure cluster (bring your own key; off by default).

  • Test Regression Report — the itemised diff vs the baseline: what newly failed, what got fixed, what is still failing.

  • Unit-test Performance — slowest-tests leaderboard and per-test / suite-time duration trends, over timings already captured at ingest.

  • GitHub PR Checks — post the quality-gate verdict back to the pull request as a commit status.

1. The dashboard

All of the above surface in the Thymeleaf dashboard:

  • a project list (board) with the latest run and coverage at a glance, failing gates first, and a "broken since" rot signal (age + run count) on projects that regressed and stayed red;

  • a project page charting pass/fail and coverage trends over a true time axis (so a slow regression and its onset are visible, not just the current number);

  • a run page with the suite/case tree, captured output and attachments, and the quality-gate verdict;

  • dedicated flaky, clusters and triage views.

The UI supports a dark/light theme toggle, persisted in the browser.

2. Embeddable badges

Each project exposes status badges for its latest run, for READMEs and PRs:

Badges honor visibility: a public project’s badge renders for anyone, a private project’s badge returns 404 (so it can’t be used to probe it).

3. Run export

Every run page has an Export ↗ link (/runs/{id}/export) that renders the run as a single, self-contained HTML document: all styles are inlined and there are no external requests, so it opens offline and can be attached as a CI artifact (curl the URL to a file). It carries an @media print stylesheet and a Print / Save as PDF button for a paper/PDF copy. The export covers the run summary, quality-gate verdict, failures (with triage category and stacktrace), suite breakdown and per-file coverage. It honors visibility — a private run’s export is 404 for anyone who can’t read the project.

A run can be shared read-only with people who don’t have an account. From the run page, write members create a revocable share link (/share/{token}); the unguessable token is the capability, so the link renders the read-only report even for a private project. The token is shown once and only its SHA-256 hash is stored; revoking it (also from the run page) immediately 404s the link. This is the one deliberate public route besides badges — creating and revoking links still requires write access to the project.