Skip to main content
The suite runs from a checkout of the repository, against the installed release or a build of your own.

Set up

1

Clone and install

pip install ./python installs the package from the checkout, which the suite imports.
2

Fonts

On a Linux or macOS host, install the Windows fonts, or the font checks for the Windows persona have nothing to measure:

Offline tier

That runs every persona with seeds 42 and 1337, in both launch modes, headless. The options narrow or widen it: Use the = form for the options. pytest reads a bare path after an option as a test path. A quick check of one persona:

Live tier

Behind a proxy, set APOSTATE_PROXY. The Apostate browsers and the control browsers all use it.

Control browsers

--controls=playwright,chrome loads the same pages in two browsers without Apostate:

Publish a results file

tests/report.py rewrites Latest results from every file in tests/results/, keeping the newest run per host. python3 tests/report.py --check exits 1 when the page is out of date. Name result files by the run’s UTC date and the host.

In CI

The offline tier runs on GitHub Actions for every push and pull request, on Linux x64 with the released browser: .github/workflows/test-suite.yml. The live tier does not run in CI, because hosted runners exit from datacenter addresses that detectors rate differently from a residential connection.