Skip to content

test(browser): wait for menu and wheel completion - #492

Merged
wesbillman merged 2 commits into
mainfrom
tulsi/inbox-browser-order
Oct 1, 2026
Merged

wesbillman merged 2 commits into
mainfrom
tulsi/inbox-browser-order

Conversation

@tulsi-builder

@tulsi-builder tulsi-builder commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

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 scrollend before input; avoid an edge gesture that could not produce scrollend. Poll the real scrollport bottom before the existing target geometry and focus-ring checks.

Reproduction / validation

  1. Run bin/pnpm test:browser --project chromium --project webkit --no-deps tests/browser/message-actions.spec.mjs tests/browser/sidenav-polish.spec.mjs with isolated synthetic fixture identities; observe menu dismissal/focus across responsive widths and a bottom-reached Retry row before keyboard focus.
  2. On original feature head 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 its main base bc542f28; build/Vitest were skipped, so CI required failed. Windows native validation is not automatic. The upstream fix in main 5e241502 was integrated by a signed-off, no-rewrite merge as current head e39bc5fe; 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 head e39bc5fe passed: 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 and CI 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 at 982ce489 and a1822854; neither they nor the earlier PR head certify the new merged head. No production/UI/Foundation/CI changes. No human acceptance or buzz-review-completed attestation; keep draft.

Status

Draft; prior hosted CI failed at 9e1ea777 from the unrelated base lint error. After integrating its upstream fix, all hosted checks passed at current e39bc5fe (run 36877190914). Human acceptance/review is still pending; no buzz-review-completed attestation.

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.

@tulsi-builder

Copy link
Copy Markdown
Contributor Author

🤖 Hosted CI for head 9e1ea77795dc5254866798f4999fc513143196f3 is terminal failed (run 36875175840). All 12 Chromium/WebKit journey shards (536 tests per engine), browser measurements, Rust/tool integration, native browser fixture, Semgrep OSS, zizmor and DCO passed. JavaScript lint failed on an already-present duplicate dismissOnOutsideClick in src/bundled/channels/ChannelMembersDialog.tsx at base bc542f28; frontend build and Vitest were skipped, and CI required failed. Newer main 5e241502 contains the fix, but is not integrated in this PR head. This is not a green CI claim. Draft remains pending human acceptance/review.

Signed-off-by: tulsi <tulsi@block.xyz>
@tulsi-builder

Copy link
Copy Markdown
Contributor Author

🤖 Final hosted update for exact head e39bc5fe5e57f5728cd8b04af39a07530d98b1a3: CI run 36877190914 passed, including JavaScript (build + 6,090 Vitest tests), Rust/tool integration, all 12 Chromium/WebKit browser shards (536 tests per engine), browser measurements (9 + 1 classic-scrollbar), native fixture, and CI required. Semgrep OSS, zizmor, and DCO Check passed. The earlier failed run at 9e1ea777 was blocked by a duplicate JSX prop already in then-current main; no authored product fix was made here—an ordinary signed-off merge brought in the upstream fix. Windows native validation was skipped by the automatic workflow. Draft remains pending human acceptance/review; browser results do not establish native GUI behavior or that all flakes are fixed.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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 wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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.

@wesbillman
wesbillman merged commit bbd470c into main Oct 1, 2026
21 checks passed
@wesbillman
wesbillman deleted the tulsi/inbox-browser-order branch October 1, 2026 19:01
tlongwell-block pushed a commit that referenced this pull request Oct 1, 2026
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>
bostonaholic added a commit to bostonaholic/buzz-app that referenced this pull request Oct 1, 2026
…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>
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.

2 participants