the cms for static site generators on atproto
lichen.page e2e TESTING.md
3.4 kB · 67 lines
Markdown
at main

Choosing and running tests #

This is the repository-local starting point for test commands. Read each runner's --help for its current selectors and options; do not copy the retired all, services, or full-test names from historical plans.

Small changes #

Run just gate before review. It checks formatting without rewriting files, Clippy, selected Rust and JavaScript tests, and the repository's structural checks. Report the actual selected counts and any failures. A zero exit code from a command that selected no tests is not evidence of a passing test. just crates explains lint selection; just --list lists recipes.

Run the relevant focused tests while debugging. Use the same features and runtime prerequisites as the affected lane. A missing binary, account, browser, sandbox, or tool is a setup failure to resolve, not permission to skip a test.

Planned end-to-end passes #

The just e2e recipe enters the pinned .#e2e Nix shell and forwards arguments:

just e2e --help
just e2e standard
just e2e full
just e2e linecov --help
just e2e integration --help
just e2e stress --help

standard and full are distinct workflow scopes. Use the scope required by the plan; a focused pass or standard run does not establish full-workflow success. The feature matrix also has its own just e2e feature-matrix --help entry point. just gate-all is the full workspace gate, not the full end-to-end workflow.

Linecov and stress use stock pytest/xdist. Linecov executes separate parallel, pool and exclusive phases, with account leases and process cleanup enforced at that boundary. Select a module or node through the supported entry:

just e2e one -- e2e/linecov/tests/t_git_hooks.py
just e2e linecov --no-coverage -- -k expression
just e2e stress -- -k expression

one is the plain linecov selection path and requires explicit pytest arguments; use a native node ID for exactly one test. TARGET selects its plain build directory. Every supported pytest invocation explicitly selects e2e/pytest.ini. Verify the named selected tests, not only exit status. Coverage mode is just e2e linecov; its report must have nonempty profiles and exports. See README.md for architecture, grouping and file responsibilities. Offline mutation controls and fix-verification tools live in the coordination repository's e2e-utils/, with explicit checkout binding and separate prerequisite documentation.

Managed CI venue #

On the managed lichen CI hosts, use the installed lichen-test-suites skill and coordination repository's current CI protocol for the venue, protected account setup, admission, native artifacts and cleanup. Those operational paths do not belong in this repository's portable setup. Do not put credentials in commands, logs or Git. Do not run expensive builds on a shared orchestration host.

A full acceptance report identifies its exact source revision, native run and actual lane results, including skipped and ignored counts. Preserve a red run; diagnose and fix it instead of pooling partial passes or retrying for green.

Full workflows also run every stress scenario serially via e2e/run.sh stress. Standard workflows exclude stress. The stress runner reuses the prepared server and Python environment; standalone use builds into Cargo’s resolved target before execution.