Repository navigation
Conversation
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
Fix two independent test-isolation issues exposed by the same CI run. Both affect code paths used on all platforms.
Bug fix
Interactive setup: real docs downloads exceed the test deadline
The interactive helper bypasses the shared launcher to send keyboard input. It missed the launcher's
AGENT_CLI_NO_DOCS_SYNCdefault, so the agent-selection test downloaded real documentation after installing its stub plugin. In the failing run, the child had not exited within the helper's 15-second deadline.This is an intermittent issue across platforms. The same test passed in 1.02 seconds on Linux and in 3 seconds on Windows in the previous run. These timings do not isolate download speed from extraction or other runner work.
Reproduce the setup issue
Keep the added skipped-docs assertion, but remove the fixture's
AGENT_CLI_NO_DOCS_SYNCflag. Frompackages/@expo/agent-cli, run:AGENT_CLI_DOCS_URL=http://127.0.0.1:1 bun run test:e2e -- agents-install-test -t 'toggle preselected'The attempted download makes the docs status
failedinstead ofskipped. Restoring the flag makes this regression check pass. This demonstrates the unintended network dependency without relying on a slow external download.Reload verification: discovery can time out before the reload runs
The reload evidence table starts a fake dev server and knows its URL, but asks the CLI to discover it through a lock. Discovery's 800 ms probe deadline can expire when the stub responds slowly, returning
NO_DEV_SERVERinstead of the reload report. The original assertion then fails withundefined !== false.This failure mode was reproduced locally. The original CI run omitted the error payload, so its exact cause remains inferred.
Reproduce the reload issue
With the original lock-based test, temporarily delay the stub's first targets response by 900 ms and run the
reloadTargets stalecase. Discovery returnsNO_DEV_SERVER. Passing--dev-server-urlwith the same delayed stub lets the test complete. The temporary delay is excluded from this patch.How
Alternatives considered
Increasing the test timeout would leave setup's real docs downloads in place and would not change reload discovery's separate 800 ms deadline.
Verification
Evidence
The Windows verification run finished with 400 passed, 2 failed and 7 skipped. Both original failing tests passed. The two other failures were in unchanged
cloud-binding-test.ts: iOS tunnel reconnection and a 300-second guarded-argv timeout. Those failures are outside this patch.Local checks on macOS with Node 24.22.1:
bun run test:e2e -- agents-install-test runtime-reload-test docs-test: 68 passed.bun run test -- src/runtime/__tests__/devServerLockDiscovery-test.ts src/runtime/__tests__/devServerDiscovery-test.ts: 35 passed.git diff --check: passed.Merge Danger
Door: two-way
Blast Radius: tests
The patch changes two E2E test files and is straightforward to revert.