Skip to content

test(web): stabilize composer menu dismissal settling - #32502

Merged
teamleaderleo merged 16 commits into
feat-cmux-nextfrom
lane/composer-menu-red
Nov 2, 2026
Merged

teamleaderleo merged 16 commits into
feat-cmux-nextfrom
lane/composer-menu-red

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes the base web red in composer-menu-dismiss.test.ts.

Base red: cmux-next checks run 41482881033 and run 41487395714, plus the repeated base run 41501739354, where the test timed out in settle() while waiting for every popup animation to finish.

The failure is a timing flake under loaded WebKit, not a product regression. git log -S on the assertion points to #23585 (09ca3be94392) and #28494 (fb0888b27fac); neither introduced a functional change to popup dismissal. The test now waits for the requested live popup state and geometry, explicitly ignores popups marked data-ending-style, and no longer couples the pointer-state assertion to unrelated document animation bookkeeping. This preserves the behavior under test while removing the race with stale closing popups.

Validation: focused browser coverage is dispatched through cmux-ci; no heavy build runs locally.

🤖 Generated with Codex
Agent session: agent session


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Stabilizes the composer menu dismissal test so it no longer flakes under loaded WebKit. The base red was a timing flake, not a product regression: the test timed out in settle() while waiting for every popup animation to finish.

  • settle() now matches each open menu to its trigger via aria-controls/aria-label/aria-labelledby, requires the live popup to be fully rendered (non-zero geometry, visible, opacity above 0, pointer-events enabled), ignores data-ending-style popups, and waits for closing popups to stop intercepting input.
  • Chip presses wait until the chip center is uncovered before clicking, and presses wait for open menus to stop moving so rows land in final positions.

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

View guided diff Turn on auto-fix

Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f06f881e50cb94f73b72
@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review d9bef6e: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr32502 -f ref=lane/composer-menu-red -f platform=macos -f backend_mode=local

Shipped in:

@github-actions github-actions Bot added the risk:low Risk tier (docs/ci/risk-tiers.md) label Nov 2, 2026
@blacksmith-sh

blacksmith-sh Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Found 2 test failures on Blacksmith runners:

Failures

Test View Logs
test_every_compile_job_names_its_warm_sources (main.ThisTree.test_every_compile_job
_names_its_warm_sources)/
test_every_compile_job_names_its_warm_sources (main.ThisTree.test_every_compile_job
_names_its_warm_sources)
View Logs
the short nightly decide gate must use the pooled Linux route with a Blacksmith fallbac
k/
the short nightly decide gate must use the pooled Linux route with a Blacksmith fallbac
k
View Logs

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

Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f06f881e50cb94f73b72
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at 3778c4e

Reviewer: codex gpt-6.1-sol xhigh, fast tier.

Follow-ups: 1. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward.

SHIP at 3778c4e

Visual verdict: no images; Leo tries the build

Static review found no correctness, regression, or compile issue in the changed settling logic.

Follow-ups: [P2] [follow-up] review/images/: no after screenshots were supplied for visual comparison.

Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f06f881e50cb94f73b72
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base ac1dcde to this head): SHIP at 3778c4e

No P1/P2 findings.

Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f06f881e50cb94f73b72
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at 4db76bc

Reviewer: codex gpt-6.1-sol xhigh, fast tier.

Follow-ups: 2. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward.

SHIP at 4db76bc
Visual verdict: no images; Leo tries the build

  1. [P2] [follow-up] composer-menu-dismiss.test.ts:116 — The existing Effort fallback at line 408 passes Playwright-only :has-text("Effort") into pressAt(). The new native querySelectorAll() rejects this with SyntaxError whenever that branch runs. Hit-test the resolved locator element instead.
  2. [P2] [follow-up] webviews/test/composer-menu-dismiss.test.ts:108 — No head screenshots were available for visual verification.

Follow-ups:

Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f06f881e50cb94f73b72
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f06f881e50cb94f73b72
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f06f881e50cb94f73b72
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f06f881e50cb94f73b72
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): BLOCK at 1b60212

BLOCK at 1b60212

Visual verdict: no images; Leo tries the build

  1. [P1] [blocking] webviews/test/composer-menu-dismiss.test.ts:117 rejects any SVG hit target. The centered Add chip icon is an SVG path, so elementFromPoint() returns an SVGElement, the wait remains false, and every test pressing that chip times out. Accept Element targets (or otherwise allow SVG descendants).

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at 69873f2

Reviewer: codex gpt-6.1-sol xhigh, fast tier.

SHIP at 69873f2

Visual verdict: no images; Leo tries the build

No correctness findings.

Follow-ups: none

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cmux-bot approves 69873f2: an independent review passed this exact head (router-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-6fba3d75b9833e8d0a4b
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-6fba3d75b9833e8d0a4b
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-6fba3d75b9833e8d0a4b
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at faf34c4

Reviewer: codex gpt-6.1-sol xhigh, fast tier.

Follow-ups: 1. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward.

SHIP at faf34c4

Visual verdict: no images; Leo tries the build

  1. [P2] [follow-up] [webviews/test/composer-menu-dismiss.test.ts:200] settle() accepts any live .ui-popup for a nonempty want. A stale or unrelated popup can let the test pass even when the requested popup is missing or unrendered; retain per-trigger popup association and a rendered geometry check.

Follow-ups:

  • [P2] [follow-up] settle() should verify the requested popup, rather than merely any live popup.

Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-6fba3d75b9833e8d0a4b
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6.1-sol high, sweep, via the review router; full diff from merge base ac1dcde to this head): SHIP at faf34c4

No P1/P2 findings.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at 5d684cf

Reviewer: codex gpt-6.1-sol xhigh, fast tier.

Follow-ups: 1. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward.

SHIP at 5d684cf

Visual verdict: no images; Leo tries the build

  1. [P2][follow-up] settle() only checks that a popup exists, so it can return before the popup has non-zero, final geometry. menusAtRest() only checks animations, while popup opening has no animation; subsequent hit testing and presses can race positioning. Re-add a geometry or stable hit-target check at composer-menu-dismiss.test.ts:214.

Follow-ups:

  • [P2][follow-up] Restore popup geometry stabilization before pointer checks.

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cmux-bot approves 5d684cf: an independent review passed this exact head (router-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-6fba3d75b9833e8d0a4b
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-6fba3d75b9833e8d0a4b
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-6fba3d75b9833e8d0a4b
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-6fba3d75b9833e8d0a4b
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): SHIP at d9bef6e

SHIP at d9bef6e

Visual verdict: no images; Leo tries the build

  1. [P2][follow-up] The closed-state branch only checks popups associated with known chips, so a live .ui-popup without that association can remain while settle(..., []) reports success. Require no rendered live popup remains at composer-menu-dismiss.test.ts:243.

Follow-ups:

  • [P2] Reject unassociated live popups in the closed-state assertion.

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cmux-bot approves d9bef6e: an independent review passed this exact head (next-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

@teamleaderleo
teamleaderleo merged commit f20dbc1 into feat-cmux-next Nov 2, 2026
157 of 163 checks passed
@teamleaderleo
teamleaderleo deleted the lane/composer-menu-red branch November 2, 2026 22:30

This branch was previously deployed

1 inactive deployment
ci-routing-agent — d9bef6e6 Deployed Nov 2, 2026 by teamleaderleo via cmux-tui tree preflight #102680
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:low Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant