Add browser E2E tests with Playwright#28
Merged
andreagrandi merged 3 commits intomasterfrom Mar 14, 2026
Merged
Conversation
Introduce pytest-playwright in a separate nox session (e2e) to catch client-side regressions that server-side tests cannot: broken JS interactions, HTMX wiring, Leaflet map init, and form UX flows. 18 tests covering homepage, map, submit form, library detail, and stats pages. External APIs (Photon, Nominatim, OSM tiles) are mocked via page.route() for determinism. CI runs e2e in parallel with unit tests and both gate deployment.
Add guidance to run nox -s e2e after medium/large changes touching templates, views, JS, HTMX, or URL routing. Document test structure, fixtures, and prerequisites.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
nox -s e2esession with 18 browser tests covering homepage, map, submit form, library detail, and stats pagespage.route()for deterministic testse2eCI job that runs in parallel with unit tests — both gate deployment (needs: [tests, e2e])Test plan
nox -s testspasses (481 tests, 18 E2E deselected)nox -s e2epasses (18 tests, deterministic across multiple runs)testsande2ejobs both run and gate deploy