THE FIELD GUIDE

Testing fxcss itself

The toolkit's own CI runs unit tests on Python 3.9, 3.12 and 3.14. Profile installation, upgrade, rollback, removal and failure recovery are checked on macOS, Windows and Linux, including edited files and paths with spaces and non-ASCII characters. Real Firefox checks cover Stable on all three platforms and ESR on Linux, repeated capture consistency, deliberate CSS changes, nested imports, content stylesheets and stacked optional stylesheets.

A separate compatibility workflow checks Stable, ESR, Beta and Nightly on Linux every Monday and Thursday, or on demand. Failed audits, incomplete captures and rendering differences fail the run; reports and screenshots are retained as workflow artifacts. These checks help detect browser changes between releases. To test a development branch before merging, manually run CI on that branch and enable compatibility to include all four channels. Normal PR CI runs Stable and ESR; the additional channels are optional for manual runs.

Package publishing is gated on CI and checks of the exact wheel and source archive being published. Clean environments outside the checkout test the base install, optional image dependencies, generated workflows and profile compatibility with the latest released fxcss. Package checks run on all three operating systems with Python 3.9 and 3.14; the release tag must also match the built package version. These are fxcss's own checks; init generates the theme repository workflows described above.

Run the checks locally with:

bash
python3 -m unittest discover -s tests -v
python3 -m tests.smoke_themes       # requires Firefox and a display
python3 -m tests.smoke_variants     # requires Firefox and a display
python3 -m pip install build
python3 -m build
python3 scripts/package_smoke.py --dist dist  # downloads the released package and image dependencies