Files
R0ck 4d169c9e54 Add Playwright e2e suite, closing the plan's long-referenced test gap
The 5-phase rename/layout/config/region/WASM plan's gates repeatedly
cited a "full Playwright regression suite" as a completion condition,
but no such suite (or even a package.json) ever actually existed —
every prior gate had been satisfied by manual browser verification
instead. Everything else in the plan was already done and re-verified
this session (go vet/gofmt/staticcheck/test/build, wasm build, both
Docker images, YAML config flow-through, region/context/globals
checks); this was the one real gap.

tests/basic.spec.js: page load, map render, repeater stats populate,
no console errors, progress.json shape.
tests/planning.spec.js: plan panel open/close, add-repeater via map
clicks, LOS hop-chain building, companion pin toggle.
tests/simulator.spec.js: Simulate/Plan panel mutual exclusivity,
loading planned repeaters, building links via the propagation model,
running a simulation, predicting settings, clearing state. Seeds a
plan directly into localStorage (two points ~500m apart, real
Scotland terrain) rather than driving imprecise map-pixel clicks,
since this suite cares about exact geographic control and speed, not
re-testing the click-to-place UI (already covered by planning.spec.js).

Deliberately does not wait for a full coverage compute pass (minutes
to hours depending on GPU/CPU and region size) — only that
repeaters.geojson has loaded, which is all the client-side tools these
tests exercise need; coverage math correctness is covered by the Go
test suite plus the WASM/backend shared-code guarantee.

playwright.config.js's webServer runs `docker compose up` (reusing an
already-running instance locally, always fresh in CI); CI's new e2e
job builds the image first as its own step so build failures surface
distinctly from test failures. README: new "End-to-end tests"
subsection under Local development.
2026-07-23 21:44:20 +01:00
..