You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Parent: search for issue titled “Epic Stack catch-up: tracking”.
Do this next after package 1/7 (#24) is merged to dev. It is not an Epic Stack port. It unblocks every later catch-up PR: merge-to-dev staging deploys needs the Playwright job, and that job has been hanging ~60 minutes on Install Playwright Browsers (then cancelled). Same hang on an origin/dev push, so it is not unique to the RR bump.
Read .cursor/skills/epic-stack-catch-up/SKILL.md before coding.
Goal
Make the Playwright job in .github/workflows/deploy.yml reliably get past browser install so lint / typecheck / vitest / Playwright can finish and dev can auto-deploy staging.
Do not skip Playwright. Do not drop e2e coverage on dependency PRs.
Why
Observed on 2026-08-19:
PR Bump React Router to 7.18.2 for __manifest DoS CVEs #31 (package 1/7) first Playwright run did install browsers, then failed collection by parsing sprite.svg as JS (fixed in that PR with a test-only stub — do not redo unless it regressed).
A later run of the same PR, and a push to origin/dev, sat on 📥 Install Playwright Browsers (npm run test:e2e:install → npx playwright install --with-deps chromium) until the 60-minute job timeout / cancel. Tests never started.
There is no cache of ~/.cache/ms-playwright. Epic Stack’s workflow is the same uncached install; this issue is our CI reliability, not a file copy from upstream.
Do this
Branch off current origin/dev. PR into dev.
Cache Playwright browsers, keyed by runner OS + @playwright/test version (so package 6/7’s Playwright bump refills once, on purpose).
On cache hit, do not re-download browsers. Still install OS deps if needed (npx playwright install-deps chromium) unless you verify the ubuntu-22.04 image already has them.
On cache miss, install Chromium (keep --with-deps if required). Prefer failing the install step in ~10–15 minutes over eating the full 60-minute job timeout with a silent hang.
Keep timeout-minutes: 60 on the job (tests need it). Add a step-level timeout on install if Actions supports it for that step.
Do not change test files, app code, or playwright.config.ts unless install/cache requires a one-line script tweak in package.json.
Do not skip the Playwright job, and do not make it continue-on-error.
Suggested shape (adapt; do not paste blindly if Playwright’s current CI docs differ):
If the first cache-miss install still hangs, say so in the PR with the log snippet (download vs apt--with-deps). Do not “fix” it by deleting Playwright from needs.
Files allowed
.github/workflows/deploy.yml
package.json only if you split test:e2e:install into install vs install-deps scripts
playwright.config.ts only if a documented Playwright CI requirement appears (prefer not)
Do not
Do not bump @playwright/test, Vite, Express, Sentry, Prisma, or React Router
Parent issue: #23
Parent: search for issue titled “Epic Stack catch-up: tracking”.
Do this next after package 1/7 (#24) is merged to
dev. It is not an Epic Stack port. It unblocks every later catch-up PR: merge-to-devstaging deploysneedsthe Playwright job, and that job has been hanging ~60 minutes on Install Playwright Browsers (then cancelled). Same hang on anorigin/devpush, so it is not unique to the RR bump.Read
.cursor/skills/epic-stack-catch-up/SKILL.mdbefore coding.Goal
Make the Playwright job in
.github/workflows/deploy.ymlreliably get past browser install so lint / typecheck / vitest / Playwright can finish anddevcan auto-deploy staging.Do not skip Playwright. Do not drop e2e coverage on dependency PRs.
Why
Observed on 2026-08-19:
sprite.svgas JS (fixed in that PR with a test-only stub — do not redo unless it regressed).origin/dev, sat on📥 Install Playwright Browsers(npm run test:e2e:install→npx playwright install --with-deps chromium) until the 60-minute job timeout / cancel. Tests never started.There is no cache of
~/.cache/ms-playwright. Epic Stack’s workflow is the same uncached install; this issue is our CI reliability, not a file copy from upstream.Do this
Branch off current
origin/dev. PR intodev.@playwright/testversion (so package 6/7’s Playwright bump refills once, on purpose).npx playwright install-deps chromium) unless you verify theubuntu-22.04image already has them.--with-depsif required). Prefer failing the install step in ~10–15 minutes over eating the full 60-minute job timeout with a silent hang.timeout-minutes: 60on the job (tests need it). Add a step-level timeout on install if Actions supports it for that step.playwright.config.tsunless install/cache requires a one-line script tweak inpackage.json.continue-on-error.Suggested shape (adapt; do not paste blindly if Playwright’s current CI docs differ):
If the first cache-miss install still hangs, say so in the PR with the log snippet (download vs
apt--with-deps). Do not “fix” it by deleting Playwright fromneeds.Files allowed
.github/workflows/deploy.ymlpackage.jsononly if you splittest:e2e:installinto install vs install-deps scriptsplaywright.config.tsonly if a documented Playwright CI requirement appears (prefer not)Do not
@playwright/test, Vite, Express, Sentry, Prisma, or React RouterAcceptance
@playwright/testversiondevStaging smoke (human, after merge to
dev)devworkflow’s Playwright job completes (not cancelled on Install Browsers)PR target:
dev(nevermain). Implement only this issue.