Measured in early October 2026, every change to this site passed its checks in about five minutes, browser tests included, and a release took a median of 80 seconds.
Aternex's own website: a Next.js static export served from Azure Storage behind Azure Front Door, with a contact API on Azure Functions, all defined in Terraform and released by GitHub Actions on self-hosted runners.
Ship a change
From pull request to production, in minutes
Pull request checks take 297 s at the median, and a site release 64 to 124 s.
The axis runs to 692 s, the slowest of the measured check runs. The three slowest releases, 263 to 280 s, are not drawn.
| Value | Method | Recorded | Scope |
|---|---|---|---|
| 297 s median for the pull request checks, 150 to 692 s across 17 runs | GitHub Actions run durations of the CI workflow, which runs formatting, types, lint, unit tests with coverage, the export build and the browser tests; browser tests re-run only for the pages and code a change touched | 2026-10-03 | The 17 successful CI runs on 2026-10-03 after browser tests began running once per change |
| 80 s median for a release; 64 to 124 s for nine of 12, and 263 to 280 s for the other three | GitHub Actions run durations of the deploy workflow | 2026-10-03 | The 12 successful releases on 2026-10-03 after browser tests began running once per change |
| 2,372 unit tests at 100% line, branch and function coverage; 0 copied blocks of 50 or more tokens | Vitest coverage thresholds and jscpd run before every push and on every pull request | 2026-10-03 | The whole repository |
Dates are when each figure was recorded for this site; the work itself is dated in the setting above.
What this does not prove
These are durations on this project's own runners, three of which share one machine, for a small site. They say nothing about the same pipeline on a larger codebase or on shared CI runners. Coverage shows what the tests exercise, not that the tests describe the right behaviour, and every check runs before a release; nothing re-checks the live site afterwards.