INKHOLD

Contributor · How-to

Run long test jobs in a container#

The full end-to-end suite takes minutes and wants every core; WebKit needs Debian or Ubuntu libraries. Run such jobs in a container, never by installing their dependencies on your own machine.

A container for the e2e suite#

Any Debian or Ubuntu container with Node and the repository in it will do. With Podman:

podman run -it --name inkhold-ci -v "$PWD:/work" -w /work/webapp \
  docker.io/library/node:24-bookworm bash

Inside it, once:

npm ci
npx playwright install --with-deps chromium webkit

The suite needs the WebAssembly decoders built from the Zig sources. Build them on your machine first (npm run build:wasm in webapp/, which writes them into webapp/public/), or install Zig 0.17.0 in the container too.

Run it#

npx playwright test --workers=4                      # Chromium, everything
E2E_BROWSER=webkit npx playwright test --workers=4    # Safari's engine
npx playwright test -c playwright.pwa.config.ts        # the installed app, on a production build

Four workers is a good number: more makes timing-sensitive tests fail for the wrong reason on a busy machine.

Read the result#

--reporter=line keeps the log short; the failures are listed at the end with their file and line. A test that fails only under load is still a bug worth reading, not a flake to retry: the ones found so far were real.