Codex retrospective on #203 + #205 noted the URL round-trip harness (tests/playwright/url_roundtrip_investigation.js) only covers camera + mode. The URL state contract is larger.
Untested cases
From Codex's review:
Harness vs spec
The existing url_roundtrip_investigation.js is a Node script useful for manual investigation but doesn't run in CI. Plan:
- Keep the investigation harness as a manual diagnostic (it does cold-cache live-site work that's too slow / network-sensitive for CI).
- Extract CI-safe Playwright specs into
tests/playwright/url_roundtrip.spec.js covering the items above, hitting localhost:5860 like the other specs.
- Each spec asserts: open URL in fresh context, wait for settle, snapshot relevant state, compare against an expectation built from the source URL.
Acceptance
- New
tests/playwright/url_roundtrip.spec.js (or split into focused spec files) running in CI.
- All items above pass against
localhost:5860 (Quarto preview of current main).
- Either the existing investigation harness is updated to share helpers with the specs, or it's left as-is with a comment pointing to the specs.
Refs
Codex retrospective on #203 + #205 noted the URL round-trip harness (
tests/playwright/url_roundtrip_investigation.js) only coverscamera+mode. The URL state contract is larger.Untested cases
From Codex's review:
piddeep-link + active filters: boot/hashchange PID hydration does not appear to applysourceFilterSQL()or facet filters, so?sources=...#...&pid=...can hydrate a sample that the active filters exclude. Need a round-trip test.h3deep-link round-trip: open#h3=...in a fresh tab; cluster card hydrates; URL persists across pan/zoom.search+search_scope:?search=pottery&search_scope=areashould restore the search input, scope toggle, and re-run.sources,material,context,object_typefacet filters: each should round-trip via?sources=, etc.view=table: table mode should restore.moveEnd(regression for explorer: add camera.moveEnd URL-write backstop (closes #204) #205): a small pan with no zoom should update the URL within ~1s of mouseup.?cache=disabledor a wiped browser cache, the deep-link should still round-trip — measure time-to-stable, assert eventual consistency.Harness vs spec
The existing
url_roundtrip_investigation.jsis a Node script useful for manual investigation but doesn't run in CI. Plan:tests/playwright/url_roundtrip.spec.jscovering the items above, hittinglocalhost:5860like the other specs.Acceptance
tests/playwright/url_roundtrip.spec.js(or split into focused spec files) running in CI.localhost:5860(Quarto preview of current main).Refs
moveEndbackstoptests/playwright/url_roundtrip_investigation.js— current harness (post-explorer: fix URL state round-trip (closes #201 parts A+B) #203/explorer: add camera.moveEnd URL-write backstop (closes #204) #205)