test(browser): wait for menu and wheel completion - #492
Conversation
Signed-off-by: tulsi <tulsi@block.xyz>
|
🤖 Hosted CI for head |
Signed-off-by: tulsi <tulsi@block.xyz>
|
🤖 Final hosted update for exact head |
wesbillman
left a comment
There was a problem hiding this comment.
No changes requested; the menu-dismissal and wheel-completion barriers fit the existing lifecycle, while retaining focus/geometry checks and browser cases.
Star Lord’s automated source review via Wes’s account (wesbillman), head e39bc5fe5e57f5728cd8b04af39a07530d98b1a3, base 5e24150216316a0ee6df3c112685eb7127e0ce77.
The exact-head CI snapshot succeeded, and its artifacts show all 32 affected-file cases passing across Chromium/WebKit. I ran no tests or app flows; before/after timing comparisons, native behavior and the documented human-acceptance gate remain unverified.
wesbillman
left a comment
There was a problem hiding this comment.
Carl, an automated reviewer, commenting via Wes’s GitHub account.
No blocking findings. I recommend this as a low-risk, solid test-only change, subject to the normal human approval/acceptance gate.
Reviewed head e39bc5fe5e57f5728cd8b04af39a07530d98b1a3 against base 5e24150216316a0ee6df3c112685eb7127e0ce77. Both changes synchronize on the existing lifecycle: menu dismissal/focus return and native wheel completion. The wheel listener is registered before input, already-reached edges avoid a nonexistent scrollend, and the bottom/geometry/focus-ring checks remain. No production changes, test removals, retries, timeout increases, or relaxed assertion tolerances.
Verified CI run 36877190914: all 32 cases across the two affected files passed in Chromium/WebKit; all 12 journey shards and CI required passed. CI checked merge commit 8d4979dbc373ab4cf61e5e601888c783418b40e5; its Git tree exactly matches the reviewed head. DCO passed.
I used source review and existing hosted logs, not a new local test/app run. This establishes a sensible synchronization repair, not deterministic before/after proof that every flake is eliminated. Human acceptance is not attested in the description; GitHub currently requires approval. Neither is a code defect. No approval or merge performed.
Brings in #492 (browser tests wait for menu and wheel completion) and #486 (membership hints confirmed with exact channel reads). One hand resolution, in tests/browser/sidenav-polish.spec.mjs: the import lines keep this branch's `ids` fixture export and take main's `wheel` helper. Every other file merged without conflict. Co-authored-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz> Signed-off-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz>
…page-icon * origin/main: Count unread replies only in conversations you are part of (block#471) Animate the terminal welcome with a compact hex wordmark (block#508) Use top tabs in the new-tab picker (block#505) Polish media controls, panel headers, and menus (block#496) harden pinned browser CI setup and native fixture provenance (block#494) perf(relay): confirm membership hints with exact channel reads (block#486) test(browser): wait for menu and wheel completion (block#492) fix(links): render one hash on completed channel links (block#506) ci: publish Windows and Linux alongside macOS previews (block#491) fix(channels): keep conversations open through archive and restore (block#452) feat(channels): align create and edit forms with draft protection (block#482) Test provider connections before model selection (block#500) Signed-off-by: Matthew Boston <mboston@squareup.com>
Category: fix
User Impact: Browser regression checks more reliably catch menu focus and sidebar scrolling problems without changing the app.
Problem: The tests can move the pointer or resize before a dismissed menu returns focus, and can focus Retry while WebKit is still finishing a wheel gesture.
Solution: Wait for the actual popup/focus and scroll completion boundaries before the existing visual assertions. This extracts only the two independent test repairs from #422 onto current
main.File changes
tests/browser/message-actions.spec.mjs
After Escape in each responsive layout, wait for menu removal and trigger focus return before the next viewport/pointer action. Retains current
main's panel-close transition selectors.tests/browser/sidenav-polish.spec.mjs
Use the existing wheel helper, which registers
scrollendbefore input; avoid an edge gesture that could not producescrollend. Poll the real scrollport bottom before the existing target geometry and focus-ring checks.Reproduction / validation
bin/pnpm test:browser --project chromium --project webkit --no-deps tests/browser/message-actions.spec.mjs tests/browser/sidenav-polish.spec.mjswith isolated synthetic fixture identities; observe menu dismissal/focus across responsive widths and a bottom-reached Retry row before keyboard focus.9e1ea777, both full files passed: 32 tests, Chromium + WebKit, 2 workers, 47.4s locally on macOS (initial pre-rebase run 32/32 in 49.3s). Custom hooks and bounded independent source review passed with no blockers. Hosted run 36875175840 on that head was terminal failed: all 12 Chromium/WebKit journey shards (536 cases/engine), browser measurements, Rust/tool integration, native fixture, Semgrep OSS, zizmor and DCO passed. JavaScript lint failed on a duplicate JSX prop already in itsmainbasebc542f28; build/Vitest were skipped, soCI requiredfailed. Windows native validation is not automatic. The upstream fix inmain5e241502was integrated by a signed-off, no-rewrite merge as current heade39bc5fe; no authored product/native changes. On the merged tree, both full affected files again passed 32/32 Chromium + WebKit in 47.7s on macOS synthetic fixtures; custom hooks passed. New hosted run 36877190914 on exact heade39bc5fepassed: JavaScript (including build, 6,090 Vitest tests), Rust/tool integration, all 12 browser journey shards (536 tests/engine), 9 browser measurements plus 1 classic-scrollbar case, native fixture, Semgrep OSS, zizmor, DCO andCI required. Windows native validation is workflow-skipped. This is hosted Linux and synthetic browser fixture evidence, not native GUI or human acceptance.No browser cases added or removed; no assertions, tolerances, timeouts or retries weakened. Browser-only justification: portal focus restoration, native wheel
scrollend, actual scrollport and focus geometry cannot be established in jsdom. Historical diagnostics saw late popup focus crossing iterations and an interrupted wheel; these runs are not deterministic local fail→pass proof and do not establish that all flakes are fixed. Original #422 checks were green at982ce489anda1822854; neither they nor the earlier PR head certify the new merged head. No production/UI/Foundation/CI changes. No human acceptance orbuzz-review-completedattestation; keep draft.Status
Draft; prior hosted CI failed at
9e1ea777from the unrelated base lint error. After integrating its upstream fix, all hosted checks passed at currente39bc5fe(run 36877190914). Human acceptance/review is still pending; nobuzz-review-completedattestation.Review / merge order (2026-10-01)
This PR is independent and remains based on
main. #492 and #494 may merge in either order when their own checks/reviews are satisfied. The feature dependency stack is #495 → #499 → #502; this PR is not made a prerequisite merely to serialize reviews. Wes review found no concrete blockers at this unchanged head. Keep draft pending the documented human acceptance/review gate.