Skip to content

Emergency main fix: count only panel tabs in the crowded-tab browser journey - #516

Closed
loganj wants to merge 1 commit into
mainfrom
loganj/emergency-channel-tabs-69a9af23
Closed

loganj wants to merge 1 commit into
mainfrom
loganj/emergency-channel-tabs-69a9af23

Conversation

@loganj

@loganj loganj commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

What

Fixes the deterministic channel-tabs.spec.mjs:309 failure on main (Chromium and WebKit): expected 2 tabs, received 5.

Failing run: https://github.com/block/buzz-app/actions/runs/36919997681/job/110564390755 (main 69a9af23)

Cause

#505 (e697aa7a, "Use top tabs in the new-tab picker") replaced the picker's category buttons with a Tabs tablist (Channels, DMs, Tools). The crowded-tab journey opens the picker and counts workspace.getByRole("tab"), so it got 2 panel tabs plus 3 picker category tabs. #505 scoped the other two counts in this file to the "Panel tabs" tablist but missed this test, which was in a different shard.

The last main run with green browser journeys was at 999dbde0. e697aa7a is the next commit, and every main run since has failed this test the same way.

The product change was intended. The test's selector was stale, so this fixes the test only.

Fix

In that test, every tab lookup now goes through the existing list locator (the "Panel tabs" tablist). Besides the count at 309, this also fixes the first()/last() lookups for position and Home/End focus. Those had been resolving to the picker's tabs instead of the panel strip. No assertions were removed or loosened.

Relationship to #514

#514 (virtualized thread replies) doesn't touch channel tabs or the picker. It fails this test only because its base includes #505. It should go green once this lands and it rebases.

Validation

Local, macOS, headless, at 4ef0d802 on 69a9af23:

  • Before the fix: channel-tabs.spec.mjs:281 fails on chromium and webkit at line 309 with the same error.
  • playwright test channel-tabs.spec.mjs:281 --project chromium --project webkit --repeat-each 4: 8 passed.
  • playwright test channel-tabs.spec.mjs todos.spec.mjs --project chromium --project webkit: 18 passed.
  • vitest run src/bundled/channels: 464 passed.
  • tsc --noEmit: pass. biome check --error-on-warnings on the changed file: pass.

#505 turned the new-tab picker's category switcher into a tablist
(Channels, DMs, Tools). The crowded-tab journey still read every
role=tab in the workspace, so with the picker open it counted 2 panel
tabs plus 3 picker tabs and failed at channel-tabs.spec.mjs:309 on
Chromium and WebKit. Its last()/first() lookups also resolved to picker
tabs instead of the strip.

Scope those lookups to the "Panel tabs" tablist, matching how #505
scoped the other counts in this file. Product behavior is unchanged.

Co-authored-by: classy-murderbot <noreply@buzz.local>
Signed-off-by: Logan Johnson <loganj@squareup.com>
@loganj

loganj commented Oct 1, 2026

Copy link
Copy Markdown
Contributor Author

Closing: this fix landed on main through #293 (427619f) as a separate commit authored by @loganj.

@loganj loganj closed this Oct 1, 2026
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