Client E2E Harness
The client half of the end-to-end tests. It asks the server to start a run, plays each journey against a real client, writes logs, and sends the results back.
Owns
packages/client/internal/e2e/: configuration, journey loading and selection, the runner, the journey executors, and the/e2eAPI client (api.go).packages/client/scripts/e2e/: therunentrypoint,run_all_suites, thescaffoldjourney generator, journey YAML underjourneys/, andconfig.example.yaml.
Entry points
scripts/e2e/runruns a suite or selected journeys;run_all_suitesdiscovers suites fromGET /e2e/suitesand runs each one.scripts/e2e/scaffoldgenerates the YAML and stubs for a new journey.
Boundaries
- Authentication: every
/e2erequest carriesX-E2E-Runner-IDandAuthorization: Bearer. The runner ID comes fromNIXSTASIS_E2E_RUNNER_IDore2e.runner_id; the token is read only fromNIXSTASIS_E2E_RUNNER_TOKEN, never from YAML or arguments. - Transport: requests use the same connection policy as Client Transport.
- Protocol: run creation sends
X-E2E-Protocol-Version; the server rejects mismatches (Server E2E). - Logs: each journey writes JSONL in the
e2e_log.v1schema: a journey start row, one row per step, and a completion summary. - Platforms: runtime journeys run natively on Linux; elsewhere the harness falls back to Apple Container, Docker, then Podman.