fix(ci): e2e-browser readiness must prove Phoenix, not just Vite (#964)#973
Merged
Conversation
Playwright's webServer gates were shallow: Phoenix polled /api/health
("always 200 once the app is up", no Postgres check), and both Vite
entries used a bare port check that never proves the /api proxy can
actually reach Phoenix. Switch all four to /api/health/deep, which
round-trips Ecto.Repo, so tests only start once the whole chain
(Vite -> proxy -> Phoenix -> Postgres) is genuinely serving.
Closes #964
Rasbandit
enabled auto-merge (squash)
July 8, 2026 23:40
Rasbandit
added a commit
that referenced
this pull request
Jul 8, 2026
Rasbandit
added a commit
that referenced
this pull request
Jul 9, 2026
#974) * fix(deps): OTP 27.1.2 -> 27.3.4.14 — ssl session-ticket VM crash Bump the release/CI toolchain to OTP 27.3.4.14 (ssl 11.2.12.10), whose release notes fix the exact prod crash class from the Jul 3 incident: tls_client_ticket_store crashing on TLS 1.3 session tickets in auto mode (OTP-20232, erlang/otp PR-11311), plus ticket/session store recovery resilience (OTP-20216) and the 2026-06/07 ssl CVE fixes. Also harden rel/env.sh.eex: retry when hostname -I is transiently empty during boot, then fail loudly instead of booting undistributed forever (the #966 secondary anomaly). Closes #966 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: bump to 0.5.651 (avoid collision with #973's 0.5.650) --------- Co-authored-by: Rasbandit <Rasbandit@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
The Vite webServer URLs proxy /api/health/deep through to Phoenix, so their old 15s timeout (sized for a bare TCP check) would fail the run while Phoenix is still legitimately booting within its own 120s budget. 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
e2e-browser's PlaywrightwebServerreadiness gates were shallow: Phoenix polled/api/health(HealthController.index/2— "always 200 once the app is up", no Postgres check), and both Vite entries used a bareport:check that never proves the/apiproxy can reach Phoenix. That let Playwright start tests before the full stack (Vite → proxy → Phoenix → Postgres) was actually serving, producingReq.TransportError connection refused+ vite proxy errors +element(s) not found(runs 28923600235 attempt 2, 28938773572).webServerentries infrontend/playwright.config.tsto/api/health/deep, which round-tripsEcto.Repo(check_postgres), so readiness only passes once the backend can genuinely serve a request.frontend/is a deployable path per the pre-push/version-check policy, so bumpedmix.exs0.5.649 → 0.5.650.Verification
No reliable local repro exists — this is a CI-only boot race. Verified by code-reading (confirmed
/api/health's docstring and that/api/health/deepchecks Postgres; confirmed Vite's/apiproxy target and that its old check was a bare TCP port) plustsc --noEmitandbiome checklocally. Will watch this PR's owne2e-browserCI run to confirm no regression; the race is intermittent (2 failures in 12h) so a single green run is corroborating, not conclusive.Test plan
e2e-browserCI job passes on this PRCloses #964