Skip to content

ci: run Playwright e2e suite on every PR#35

Open
zphillips wants to merge 1 commit into
PADAS:developfrom
zphillips:contrib/e2e-ci
Open

ci: run Playwright e2e suite on every PR#35
zphillips wants to merge 1 commit into
PADAS:developfrom
zphillips:contrib/e2e-ci

Conversation

@zphillips

@zphillips zphillips commented Jun 23, 2026

Copy link
Copy Markdown
Contributor
Field Value
Change type ♻️ same behavior (chore / ci)
Risk severity S4 low

Summary

Add a CircleCI e2e job that runs the Playwright regression suite on every branch / PR, so breakage surfaces automatically instead of relying on someone remembering to run yarn test:e2e locally. Follow-up to #34.

Decisions & alternatives

  • Approach & why: new e2e job on cimg/node:20-browsers, no branch filter so it runs on all PRs. Kept separate from the existing deploy_testER job, which stays on Node 14 — Playwright needs Node ≥18, so this job rents its own newer image; the two never share a machine.
  • Alternatives considered & why rejected:
    • Reuse the deploy job's Node 14 image — rejected, Playwright requires Node ≥18.
    • GitHub Actions instead of CircleCI — open question (see note below). Kept this on CircleCI to match the existing pipeline, but happy to switch if the team prefers?
  • Trade-offs / what could go wrong: the webpack-4 + --openssl-legacy-provider dev server booting under Node 20 in CI is the main unknown; may need a small tweak once it runs live.

Links

Tests — how do we know it's safe? (check all used)

  • Unit
  • Integration
  • Contract
  • Synthetic / e2e — the suite this job runs passes locally (7/7 green on Node 20)
  • Manual — config.yml YAML structure validated locally
  • None

⚠️ CI-side verification is still pending: CircleCI won't run on PRs from a fork until "Build forked pull requests" is enabled (admin setting), so this job's first real run happens after that toggle.

Incident detection — if this breaks in prod, how will we know?

CI-only change, no runtime / prod impact. A misconfigured job shows red on the PR in CircleCI — that's the signal.

Incident impact analysis — can we measure the blast radius?

Blast radius is limited to CI. Until this check is marked required in branch protection, a failing or broken job blocks nothing and has zero user impact.

Rollback & mitigation — if it goes wrong, how do we fix it fast?

  • Safe to plain-revert? Yes — single-file change to .circleci/config.yml; reverting removes the job cleanly.
  • Rollout: direct.
  • If revert isn't enough: N/A.

To make this an actual merge gate (admin only)

Two settings I can't reach as an outside contributor:

  1. CircleCI → Project Settings → Advanced → enable "Build forked pull requests" (so it runs on fork PRs at all).
  2. GitHub → Settings → Branches → branch protection for develop → "Require status checks to pass before merging" → select the e2e check. The check only appears in that list after it has run once, so do updated tracks #1 first.

Add a CircleCI `e2e` job (Node 20 + browsers image) that installs deps
and runs `yarn test:e2e` on every branch / PR, so regressions surface
automatically instead of relying on someone running the suite locally.

The existing deploy job stays on Node 14; this job rents a newer image
because Playwright requires Node >=18. No branch filter so it runs on PRs.

Follow-up to PADAS#34 (the e2e suite itself); depends on that landing first.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant