Skip to content

The app corpus

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

Besides WPT, niso runs real apps: TodoMVC, Excalidraw, VS Code for the web and others, each pinned to an exact upstream version. Each app has a driver.js that performs its core flow (add a todo, draw a shape, open a file) and prints what happened, so a run says whether the app works, not just whether it loads.

Terminal window
tests/apps/run.sh todomvc-svelte --fetch # once: fetch and build the app, pinned
tests/apps/run.sh todomvc-svelte # run its driver on QuickJS
tests/apps/run.sh todomvc-svelte --engine node --screenshot

--fetch is the only step that needs the network; builds go to target/apps (or $NISO_APPS). A run whose build is stale, because a pin was bumped, stops and says to fetch again. --screenshot renders the result with niso-iced. Logs are in the app’s directory, one per engine and run.

The apps in the corpus are in tests/apps (one directory each, with its fetch.sh and driver). What works in each, and what doesn’t, is Real apps.

Add tests/apps/<name>/ with a fetch.sh that fetches and builds the app at an exact commit or version into its serve root, and a driver.js that drives the app’s core flow and prints NISO-APP lines. Then add it to docs/compat/apps.md. Look at tests/apps/todomvc for a small example.