ci: run the browser e2e suite on every PR#71
Merged
Merged
Conversation
Adds an e2e job to CI that loads the built extension into a real headed Chromium (under xvfb) and runs the Playwright suite: SW health (the SW boots and creates the poll alarm, tabs stays un-granted at install), mocked popup/options/native-sync flows. The live-GitHub round-trip spec self-skips without e2e/.env.e2e credentials. This is the meta-fix for the #57/#64/#68 class of bug: CI was unit tests plus build only, so an extension that built clean but was dead in a real browser merged green. Now a dead service worker blocks the merge. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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
Wires the Playwright browser e2e suite into CI as a second job, so a service worker that dies on load (or any other builds-clean-but-dead-in-browser regression) blocks the merge instead of shipping. This is the meta-fix for the #57 / #64 / #68 bug class — CI was unit tests + build only, which is exactly how those merged green.
What the job does
playwright install --with-deps chromium.pnpm --filter @gitmarks/extension-chrome e2eunderxvfb-run— the extension fixtures launch Chromium headed (extensions don't load in classic headless), so CI needs a virtual display.e2e/.env.e2e(the config already handles this: env file absent →test.skip).The e2e suite covers: SW registers and creates the poll alarm (sw-health),
tabsnot granted at install (optional-permission audit), popup/options flows against mocked GitHub, and both native-tree sync directions.Verification
The e2e job run on this very PR is the verification — it exercises the new job end-to-end on a clean Linux runner.
Part of #61 (item 3 of the store-readiness follow-ups).
🤖 Generated with Claude Code