Skip to content

test(ios): script the authenticated host status in pairing tests - #14464

Merged
teamleaderleo merged 1 commit into
mainfrom
fix/ios-pairing-tests-host-status
Sep 25, 2026
Merged

teamleaderleo merged 1 commit into
mainfrom
fix/ios-pairing-tests-host-status

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

Since #7908 and #8299 (@azooz2003-bit), pairing sends workspace.list and then an authenticated mobile.host.status that binds the route to the Mac before anything is persisted. Twenty cmuxFeatureTests still scripted only the workspace list. Their scripted transports spent the list frame on the status request, or their routers replied "Unexpected method". Every pairing ended in connectionClosed, and the assertions ran against the preview workspaces.

remoteCreateTerminalDoesNotStealSelectionAfterWorkspaceSwitch never reached terminal.create, so waitForTerminalCreateRequest() parked forever. That hung the whole simulator suite until the job was killed 14 minutes later (exit 143), which also hid every package test bundle that runs after cmuxFeatureTests.

Changes:

  • Scripted tests add rpcHostStatusFrame after the workspace list, as the passing neighbours already do (for example uuidAttachTicketListsAllWorkspacesFirstWithAttachToken). Each frame reports the ticket's own Mac, because pairing rejects a mismatched identity.
  • Request-aware routers answer mobile.host.status. The superseded-URL router reports whichever Mac's list it just served.
  • The version-warning test checks that the warning sends no new requests, instead of pinning the total request count.

Part of getting the full iOS simulator suite (test-ios.yml, ios-simulator (iphone)) green on main. It failed the same way on Blacksmith (run 36114121829) and the owned mini cmux10s (run 36114119494). These tests were hidden while the iOS test target did not compile (fixed in #14421), and PR CI runs only selected tests.

Verified in the combined full-suite run 36119701161 (all fix branches stacked): every test this PR touches passes.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Fixes the scripted pairings in cmuxFeatureTests so they respond to the authenticated mobile.host.status request that pairing now sends after workspace.list (since #7908 and #8299). The tests previously scripted only the workspace list, so every pairing ended in connectionClosed and one test never reached terminal.create, hanging the simulator suite until the job was killed.

  • Scripted tests add rpcHostStatusFrame after the workspace list, and the request-aware routers answer mobile.host.status as well.
  • The version-warning test now checks that the warning sends no new requests instead of pinning the total request count.

Written for commit f9dea5d. Summary will update on new commits.

Review in cubic

Pairing sends `workspace.list` and then an authenticated
`mobile.host.status` that binds the route to the Mac process before
anything is persisted (#7908, #8299). Twenty cmuxFeatureTests still
scripted only the workspace list. Their scripted transports spent the
list frame on the status request, or their routers answered it with
"Unexpected method", so every pairing ended in `connectionClosed` and
the assertions ran against the preview workspaces.

`remoteCreateTerminalDoesNotStealSelectionAfterWorkspaceSwitch` never
reached `terminal.create`, so its `waitForTerminalCreateRequest()`
parked forever and the full simulator suite hung until the job was
killed (exit 143, run 36114121829).

These tests were hidden while the iOS test target did not compile
(fixed in #14421). The passing neighbours, such as
`uuidAttachTicketListsAllWorkspacesFirstWithAttachToken`, already
script the status frame; this brings the rest in line. The version
warning test now checks that the warning sends nothing new instead of
pinning the total request count.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 1 minute.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 3908407d-0239-4d0a-9a08-70e182b52f3f

📥 Commits

Reviewing files that changed from the base of the PR and between 446c2c4 and f9dea5d.

📒 Files selected for processing (1)
  • ios/cmuxPackage/Tests/cmuxFeatureTests/cmuxFeatureTests.swift

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for f9dea5d291: every check was green at merge (7 verified; 12 skipped by policy). Full suite runs on main after merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant