test(webviews): follow inline effort, the queue's lead row, steer Copy and token-sized circles (react-apps-check base red)

TE
7d ago
+83-25

What broke

cmux-next web / web / react-apps-check ("Test webviews") has been red on feat-cmux-next, and it hides signal for every webviews merge. This PR fixes seven of its deterministic failures (they fail on retry and alone). All of them are tests that went stale against deliberate product changes, so only test files change:

TestCauseFix
composer-menu-dismiss (agent-pane.new-tab reasoning-chip at 760/300 px, Chromium + WebKit): picking a level hands the keyboard back to the prompt#26521 (8b01895e95): where the caller picks model and effort together (New Tab, a live chat), the current model's row carries its effort levels, and the menu has no Effort submenu ("The Effort submenu is gone when the current model's row carries its levels")Picks an unchecked level from the row's segments where the menu has them, else from the Effort submenu as before. The assertion is unchanged: the keyboard goes back to the prompt.
reasoning-own-control: the model button's menu lists live levels#26521New Tab and live chat check the row's segments (more than one level, exactly one checked, no Effort submenu). A new chat's composer, which still draws the Effort submenu, keeps the submenu check. This matches the red run: only the new-chat cases passed.
reasoning-menu-check: the check trails the chosen row#26521It measures the submenu's label and check layout, which only the submenu has, so it now runs on the new-chat composer, which still draws that submenu.
model-menu-submenu-up: a submenu at the window's foot opens up from its row#26521The Effort submenu is gone on this stage, so the test uses the menu's Provider submenu. It's the same room-aware Submenu (growsUp in ui/Menu.tsx), so Leo's 2026-10-21 ask ("this effort should open up top instead of bottom i think") stays covered.
agent-pane-no-capsules: rounds its controls as small-radius rects#24644 (1b36b517e2) sized .acpmux-drop-mark with one token on both sides (var(--ds-control-primary)), so it is still a circle. The detector could only read px values.Counts a box whose width and height are the same value as square. Adds a token-sized circle case (passes) and a two-token pill case (still caught).
agent-pane-pending-steer: Send now on a waiting steer#27256 (20f21d4e15) moved Copy into the waiting steer's row (#27313; Leo, 2026-10-29: "i feel like im frequently missing the copy/whatever buttons on these steers")Still asserts "no clock": Send now has no icon, and every icon in the row belongs to one of the row's icon buttons. #27168 (fc7bdfd73d) also wrapped the bubble and its action row in .cv-user__body so the waiting controls stay attached; the message now holds that body alone, and the body holds the bubble and action row.
queuedMessages.test.ts: each agent message is a received-card row#27312 (90e1666c0f) marks the first queued agent message lead, so "Read after this turn" shows once (Leo, 2026-10-29: "the "read after this turn" stuff gets a bit redundant")Expects { promptId: "a1", lead: true }.

Why test-side

Each cause PR made its change on purpose, with Leo's words quoted in the PR or its commit. #26521's own commits updated the related gallery plays and some tests but missed these four browser tests. None of these tests is deleted or loosened: each still checks its original point (levels are live and checked, the check trails, a submenu grows toward the room it has, the keyboard goes back to the prompt, no capsules, no clock) against the shipped behaviour.

Other helpers are fixing the other react-apps-check failures in separate PRs.

Test

cmux-ci (Linux, 32 vCPU) over the seven files at 72dae00ffd, with the agent-pane page built first and CMUX_BROWSER_TESTS=1: 7 files pass, 0 failed, 0 retried (run). The first run at 6e78f0f2ae passed 6 of 7 and found the .cv-user__body assertion fixed in the second commit.

Agent session: agent session

🤖 Generated with Claude Code