Skip to content

How niso is tested

Checked against 54d987f on 2026-11-10 by Capy (drift after the docs-site merge). The files it covers are unchanged since.

tests/check.sh runs every check that works on any machine; flags add the device comparisons. There is no CI: the script is where checks are enforced. Known differences are listed with their reason, and a check fails when one appears and when a listed one stops happening.

Check What it compares Recorded results
cargo xtask layers crate dependencies against the layer rules xtask/layers-allowlist.txt
cargo test --workspace each crate’s contract suite, the C API conformance tests (in C, against niso.h), the JS binding’s tests, the Rust timer app in the tests
examples/lang/*/build.sh the timer app built in C, Zig, Go and Java and driven headless in each app’s test
tests/svelte/run.sh a Svelte 5 component mounted headless and driven in the script
WPT (niso-wpt) the web-platform-tests of every Baseline feature, run headless tests/wpt/expectations.json and per system expectations.<os>.json
test262 intl402 ECMA-402 conformance of niso’s Intl tests/test262/
Acid1, Acid2, Acid3 Acid1 and Acid2 laid out box by box against headless Chrome; Acid3’s score tests/acid/expectations.json
The docs check the site builds, links resolve, references exist, runnable blocks run Keeping the docs current
--ios, --android, --iced each page of tests/screens/cases.txt on the device against Chrome: every element’s border box within a pixel, box-only screenshots nearly identical; on iOS and Android also text inside its box at the default and a large text size, and text styles against SwiftUI’s and Compose’s tests/screens/expectations.json
--mac a Mac’s input played into the macOS host tests/mac-input

The WPT gate fails on any subtest that stopped passing. When a change makes more pass, cargo run --release -p niso-wpt -- --update records them on each system and rescores tests/wpt/baseline.json, the Baseline score that Web platform support and the banners on API pages show. WPT is the regression net; work is picked by what real apps need, not to raise the count (Decisions). How the score is computed and what it leaves out: the WPT notes. Running it: WPT and the Baseline score.

tests/apps/run.sh fetches each app of the corpus at a pinned upstream version and drives its core flow headless on QuickJS, Node or Bun, optionally rendering a screenshot with niso-iced. The status per app and engine is in Real apps; The app corpus says how to run it.

node tests/porffor/run.mjs builds every example and the Svelte fixture with Porffor and compares each with QuickJS. cargo run --release -p niso-wpt -- --engine node runs the WPT suite under Node-API and diffs it against the expectations.