Repository navigation
fix(e2e): fix the quick-actions deep link and stop cold-dev timeouts in the v0.6.5 E2E run (CHE-1968) [squash] - #359
Merged
Conversation
added 6 commits
October 22, 2026 19:48
next dev evicts a compiled page after 60s idle and keeps only a few, so the global-setup warm-up was undone before the specs that needed it.
…-1968) The workspace layout publishes the workspace in an effect and the persisted chat store rehydrates a microtask later. A chat page mounting in that commit lost its ?session= selection and the store-to-URL effect stripped the deep link.
The fetch warm-up compiles server routes only. The dashboard layout and search worker chunks stayed cold, so the first spec to open a workspace waited 30s+ on the compiler.
…the late-workspace-list quick-actions path (CHE-1968) The previous page can still be syncing its own workspace when the test navigates away, so any search-index response satisfied the wait.
…1968) next dev compiles each route on first visit and serves a slow client bundle, so the specs' 5 to 10s waits timed out. check.sh now builds and starts next start, refuses a listener already on the frontend port, and keeps E2E_WEB_MODE=dev for the dev smoke run.
congvc-bot-x99
Bot
changed the base branch from
agent/x99-claude-sonnet/529e13bdbf3b
to
main
October 22, 2026 18:21
added 2 commits
October 23, 2026 01:56
…ontend owns it (CHE-1968) A foreign listener answering 503 slipped past curl -sf, the new frontend lost the bind, and a later 200 from the foreign listener passed the readiness probe. The runner now refuses a port that accepts connections whatever its status, stops when the launched frontend exits, and requires the listener to belong to the frontend it started. check.test.sh covers the foreign 503 listener, an early exit, a foreign owner, the production build failure and dev smoke mode.
…ed (CHE-1968) With no listener PID from ss or lsof, the runner trusted that the launched frontend was still alive. A foreign listener that wins the bind during the build leaves the frontend alive until it exits with EADDRINUSE, so the probe passed on the foreign listener. The runner now fails when ownership cannot be established. check.test.sh covers the race and the stays-alive case.
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.
Status
Draft. Base is
main(PR #325 merged on 22 October 2026).main3dcd45fabis merged into this branch.Candidate head:
52628dfa60860f8f780236b235cda316e30a9106. x99-codex-sol (OpenAI, non-author) reviewede4e24f58242845180cd4b6c95f70bd99506da0e5(scoped code review PASS)219c4a85f2d97a005366cda9846d07b8aa1b786a(CHANGES REQUESTED: R1 false PASS, R2 test regression) andd45155cfea76779fc10a484a83c25fba779d0b2e(CHANGES REQUESTED: R1 still open when no listener PID is available).52628dfa60860f8f780236b235cda316e30a9106closes that R1 and has no independent review yet, so ready is NOT-RUN.Change
fix(chat): the chat page re-applies the?session=thread after a workspace rehydration. The workspace layout publishes the workspace in an effect, and the persisted chat store rehydrates one microtask later. A chat page that mounted in that commit lost its selection, and the store-to-URL effect stripped the deep link. This is the only product bug found. It fixesquick-actions.fix(e2e):apps/web/next.config.tssetsonDemandEntriessonext devkeeps compiled routes for the whole run.test(e2e):e2e/global-setup.tsalso loads each route once in a signed-in browser, so client chunks compile before the specs run.test(e2e):local-searchwaits for the sync response of its own workspace only.quick-actionsgets a variant where the workspace list arrives 3000 ms late.test(e2e):scripts/check.shbuildsapps/web(next build --webpack) and runs the E2E step againstnext start. It refuses a frontend port that accepts connections whatever HTTP status it answers (R1), stops if the launched frontend exits, and requires the listener to belong to the frontend it started. If neitherssnorlsofcan name the listener, it fails instead of trusting that the process is alive. It never reuses or kills a foreign listener.E2E_WEB_MODE=devkeeps thenext devsmoke run. The database, serial workers, zero retries and the assertions are unchanged.Evidence
Host X99. Private
pgvector/pgvector:pg17container, fresh_testdatabase per run,--workers=1 --retries=0, cold server. Raw output is on X99 in/mnt/ssd2/che1968-evidence/.Red then green, observed:
apps/web/next.config.test.ts: red1 failed | 2 passed (3), then3 passed (3).packages/views/chat/chat-page.test.tsx: red2 failed | 58 passed (60),expected null to be 'session-5', then60 passed (60).bash scripts/check.test.sh(the command CI runs): red at219c4a85fwith the new 503-listener case,foreign frontend answering 503 is refused: status 0, want 1(a falseAll checks passed.). Red again atd45155cfewith the new no-listener-PID race case:unprovable ownership after losing the bind race fails: status 0, want 1. Green at52628dfa60860f8f780236b235cda316e30a9106: 15 cases PASS, exit 0 (R2: the old frontend-reuse expectations are replaced; the cleanup and failure cases are kept).port_in_useis true for a listener answering 503 and false for a free port; the ownership check fails for a foreign listener and passes for the launched one.219c4a85f:pnpm typecheck10 of 10 successful; both unit files above pass.E2E at head
219c4a85f, step 4 and 5 ofscripts/check.sh(production frontend, whole suite, 93 tests): 92 passed, 1 failed (issue-wakeups"a member waits for a condition the platform checks"). The run used a copy ofcheck.shwith steps 0 to 3 removed. A fullcheck.shrun from step 0 is NOT-RUN.All 8 original cases pass in that run:
agent-mcp,auth-callback-locale(2 cases),auth,local-search,navigation,quick-actions,settings. The two specs that failed in the earlier production run (issue-content-disclosure,issue-table) also pass.The
issue-wakeupsfailure is not caused by this PR. It is an intermittent timeout ("element is not stable", then "detached from the DOM", 150s). On this head, 4 repeats of the spec: 2 failed. Onmain3dcd45fabwithout this PR, 4 repeats: 3 failed. The cause is not investigated.At head
d45155cfe, the same step 4 and 5 (realnext buildandnext start) on the 7 original-case specs, run atd45155cfebefore the fail-closed change: 18 passed, 0 failed,All checks passed., withssnaming the listener. That real flow was not rerun at52628dfa60860f8f780236b235cda316e30a9106. The whole suite was not rerun on this head.Earlier runs on the previous head
e4e24f582:next devwhole suite 86 passed, 7 failed; production build 91 passed, 2 failed. Thenext devfailures were timeouts against slow client rendering;check.shnow avoidsnext devby default.Refs: CHE-1968, CHE-1900, PR #325
Changelog: none