Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
PR Analysis Report📚 Storybook PreviewView Storybook for this PR 🧪 Sandbox PreviewView Sandbox for this PR No new or modified components detected. Bundle Size Summary
Accessibility AuditStatus: 36 accessibility violation(s) found — 2 critical, 34 serious. Button pattern - 1 issue(s)
ChatComposer - 1 issue(s)
ChatComposerInput - 1 issue(s)
ChatReasoning - 1 issue(s)
ChatToolCalls - 1 issue(s)
Checkbox pattern - 1 issue(s)
CheckboxList - 1 issue(s)
ClickableCard - 1 issue(s)
CodeEditor - 1 issue(s)
CodeEditorPerf - 1 issue(s)
CodeEditorTheme - 1 issue(s)
CodeTheme - 1 issue(s)
DateRangeInput - 1 issue(s)
FileInput - 1 issue(s)
GridMasonry - 1 issue(s)
Heading - 1 issue(s)
Icon - 1 issue(s)
LogStream - 1 issue(s)
MediaTheme Auto - 1 issue(s)
PowerSearch - 1 issue(s)
ProgressBar - 1 issue(s)
Radio group pattern - 1 issue(s)
RadioList - 1 issue(s)
RichTextEditor - 2 issue(s)
SelectableCard - 1 issue(s)
Stepper - 1 issue(s)
TableGroupedRows - 1 issue(s)
TableTree - 1 issue(s)
Text - 1 issue(s)
Theme - 1 issue(s)
PopArt - 1 issue(s)
Thumbnail - 1 issue(s)
Timestamp - 1 issue(s)
Token - 1 issue(s)
Tokenizer - 1 issue(s)
Visual RegressionStatus: No visual change across 2 compared shot(s). Generated by PR Enrichment workflow | Storybook | Sandbox | View full report |
|
AI review status for this pull request.
|
There was a problem hiding this comment.
The no-search bottom-sheet Selector listbox now gets its computed accessible name from the component's existing label, while search and popover behavior remain unchanged. The focused Chromium accessibility-tree regression passed, and this review recommends approval with no blocking findings.
[Automated review]
User impact
In a
Selectorwithpresentation="bottom-sheet"and no search, Chromium exposes the openlistboxwith an empty accessible name, so a person using accessibility software cannot tell which choices it holds.Problem and solution fit
The listbox names itself with
aria-labelledby={triggerId}. The bottom sheet is a modal layer, and while it is open the trigger is not in Chromium's accessibility tree, so the reference resolves to""(see AS-IS below). The popover paths keep the trigger in the tree and are unaffected.Expected behavior and authority
MultiSelectorfor MultiSelector bottom-sheet listbox needs an accessible name #6385.Smallest restoration
Selector.tsx: on the no-search listbox, usearia-label={label}instead ofaria-labelledby={triggerId}only whilesurface.activePresentation === 'bottom-sheet'. The searchable sheet and both popover paths are untouched. No public API, visual, default, or interaction change.Evidence
AS-IS / TO-BE: Chromium accessibility tree on
core-selector--bottom-sheet-presentation,upstream/mainatdd1f91dabcversus this head. Rendered pixels are identical; the outline and panel are injected by the probe.Unchanged paths, same builds:
core-selector--default(popover)"Select a fruit..."on bothcore-selector--searchable(popover)"Fruit"on bothThe new
Selector.a11y.chromium.spec.tsfails on the main build withExpected: "Team" / Received: ""and passes here. The searchable bottom sheet has no story and is unchanged by inspection only.Scope
Testing
pnpm storybook:buildpnpm test:a11y-contract— 517 passedpnpm vitest run --project ui— 10428 passedpnpm -F @astryxdesign/core typecheck— cleanpnpm -F @astryxdesign/core build— cleanpnpm lint:strict— cleannode .github/scripts/accessibility-audit.js --components Selector --baseline .github/a11y-baseline.json --fail-on-new— 0 new