fix(ui-mode): make the filter summary reachable from the keyboard - #42449
Merged
Devin Rousso (dcrousso) merged 1 commit intoAug 28, 2026
Conversation
the summary was a div with an onClick, so tab skipped it, enter and space did nothing, and a screen reader read it as ordinary text rather than a control that expands something it is a real button now, which brings focus, enter and space and the button role with it, and aria-expanded reports the state. the chevron beside it was already a button so this follows the same shape as Expandable the css resets the button chrome the same way expandable-title-button does and adds the same focus ring, so it looks unchanged
Contributor
Author
|
@microsoft-github-policy-service agree |
Devin Rousso (dcrousso)
approved these changes
Aug 28, 2026
Contributor
Test results for "tests 1"6 flaky51253 passed, 1240 skipped Merge workflow run. |
Contributor
Test results for "MCP"8259 passed, 1361 skipped Merge workflow run. |
Huzaifa Iftikhar (HuzaifaChaudary)
added a commit
to HuzaifaChaudary/huzaifa-portfolio
that referenced
this pull request
Aug 29, 2026
Two upstream PRs, both merged in Aug 2026: - microsoft/playwright#42449 — UI Mode filter summary as a real button - langchain-ai/langchain#39978 — stale duplicate block in Groq docstring Reuses the existing .cols layout, reveal, and parallax language; new rows are picked up by the generic [data-reveal]/[data-plx] queries. Nav gains an Open Source link in third position so the mobile nth-child(n+3) rule keeps hiding the same items as before. Favicon set is cropped from the hero photo, circular-masked, with a touch of unsharp so the face still reads at 32px: favicon.ico (16/32/48), 16 and 32 PNGs, and a full-bleed apple-touch-icon on the paper ground since iOS drops alpha. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01QyQQvrZTAJ7tSpEUFMrm8r
This was referenced Aug 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #42439
problem
the filter summary under the search input in UI Mode toggles the status and project filters when you click it, but it is a
divwith anonClick:so tab skips it, enter and space do nothing, and a screen reader announces it as ordinary text rather than a control that expands something. the chevron next to it is already a button, which makes the summary the odd one out rather than a deliberate choice.
fix
make it a real
buttonwitharia-expanded.using a native button rather than
role='button'plustabIndexplus a keydown handler means focus, enter, space and the button role all come from the platform. it also matchesExpandableright above it, which already renders its toggle as abuttonwitharia-expanded.the css resets the button chrome the same way
.expandable-title-buttondoes and adds the same focus ring, so it looks the way it did:one thing worth calling out: the original properties lived in a rule shared with
.filter-title, so the reset is in its own.filter-summaryblock rather than added to the shared one..filter-titleis untouched.test
should toggle filters from the keyboardinui-mode-test-filters.spec.ts, close to your snippet in the issue, plus the aria state and the space key:on
mainit fails at the first assertion,toHaveRole('button').verification
main, rebuiltui-mode-test-filtersui-modespecdisclaimer: this contribution was prepared with the assistance of an ai agent. i reproduced the behaviour, checked how
Expandablesolves the same problem before picking an approach, and ran the ui mode suites locally before opening this.