Repository navigation
ci: run the mobile e2e suite on a production build, one job per browser - #8948
Merged
Merged
Conversation
…per browser The build job now packages .next (zstd, cache excluded) and uploads it for a day. A new e2e-mobile job, one per browser (chromium, webkit), extracts it and serves it with `next start`, so the suite no longer waits on dev compiles or runs both browsers back to back. The mobile group leaves the e2e matrix. On runs that execute e2e, the build bakes NEXT_PUBLIC_APP_URL=http://localhost:3000, which is what production images bake, so the served build is the one that ships. Content-only pull requests keep the hosted value, under which next build prerenders every post. http-e2e.sh gains a `next start` mode used only by mobile: it installs only the selected browser, drops the dev heap override, and rebuilds the HTTP status log from RouteHandler's JSON lines at LOG_LEVEL=INFO. The ci gate treats e2e-mobile like e2e: a skip passes only when `full` is exactly false.
…untouched The `build` job is back to staging byte for byte: its www.sim.ai build is CI's only render of every post, and it must stay on every run. A new `e2e-build` job, gated on `full` with its own Turbo cache key, builds with NEXT_PUBLIC_APP_URL=http://localhost:3000 (the Dockerfile default, so the same public-env mode production images use; images run the standalone server) and packages and uploads it for e2e-mobile, now kept 3 days and without .next/trace. e2e-mobile fails fast when the downloaded build prerendered posts, which only a hosted build does; the URL is no marker, since next.config's redirects name www.sim.ai in every build. The ci gate treats e2e-build like e2e.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
There was a problem hiding this comment.
No issues found across 5 files
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Heads up: you’ve reached your flex budget. Increase your flex budget or wait for usage to reset.
Turn on auto-fix | Re-trigger cubic
Contributor
|
Each document load mints one realtime token from a route capped at 30/min per IP. On the production build the suite loads well over 30 documents a minute from loopback, so the route's designed 429 is recorded apart from httpErrors (only with Retry-After), and each browser must still mint at least once.
1 task
This branch was previously deployed
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 (mobile)is CI's critical path: p50 22 min, up to 26. About 40% of that isnext devcompiling routes on first visit, which is CPU-bound and swings with runner speed (jobs run 15–25% slower on weekdays than on weekends). Chromium (~15 min) and WebKit (~8 min) also ran one after the other.build (e2e)job. Gated onfull, likee2e. 16 vCPU. Uses its own Turbo cache key, so it never evicts entries from thebuildcache.NEXT_PUBLIC_APP_URL=http://localhost:3000, the default every shipped image bakes (docker/app.Dockerfile). In that mode every route is dynamic andNEXT_PUBLIC_*values are read at startup, so one build serves any per-port URL..nextwithoutcacheortrace, zstd-compressed, as an artifact kept 3 days.e2e-mobilejob, one per browser (chromium, webkit). Each downloads the build and serves it withnext startagainst the realtime server, installing only its own browser.prerender-manifest.jsonlists any/blog/*route.LOG_LEVEL=INFOset on that process only.buildis unchanged. It still bakeshttps://www.sim.ai, which makesnext buildprerender every post. That's CI's only full render of all posts and landing pages.next dev. scim can't move, because hosted mode can be forced only outside production. cli, stop-after and desktop-inbox are short and off the critical path.cigate. Now needse2e-buildande2e-mobile, both gated onfull, with newci-gate.test.tscases.Expected: the mobile critical path drops from ~22–26 min to ~11–14 min (shorter on a Turbo cache hit). Cost is about +75 vCPU-min per full run on a build-cache miss, partly offset by the two shorter browser jobs.
Rollback: revert this PR.
e2e (mobile)returns to thenext devmatrix row.Test plan
next startready time, and per-browser suite time; confirm the non-hosted guard passesbuildstill prerenders posts (same log as before)ci-gate.test.ts/ci-changes.test.ts