MUI
The entire report: 5 components, 64 scoring checks, 5 failing. Each check cites the clause it measures; the per-component pages carry the failure detail and the command that reproduces it.
Maintainer response
Findings were delivered privately on 2026-08-09 in this thread, with the adapter source and fourteen days to reply before publication. The issue was labelled accessibility and closed as completed the same day.
Thanks for your input. We are improving the accessibility of our components.
| Check | Verdict | Severity |
|---|---|---|
| The combobox has an accessible namecombobox.has-accessible-name | pass | serious |
| The input exposes role=comboboxcombobox.has-combobox-role | pass | serious |
| The combobox can be reached with the Tab keycombobox.is-focusable | pass | blocker |
| aria-expanded is present and false before the popup openscombobox.collapsed-by-default | pass | moderate |
| Down Arrow opens the popupcombobox.opens-on-down-arrow | pass | blocker |
| aria-expanded becomes true when the popup openscombobox.expanded-state-communicated | pass | serious |
| The popup exposes role=listboxcombobox.popup-has-listbox-role | pass | serious |
| The combobox references its popup with aria-controlscombobox.controls-popup | pass | moderate |
| Each option exposes role=optioncombobox.options-have-option-role | pass | serious |
| Down Arrow moves through the optionscombobox.arrow-moves-active-option | pass | blocker |
| The active option is exposed to assistive technologycombobox.active-option-communicated | pass | serious |
| DOM focus stays on the combobox while the popup is opencombobox.focus-remains-on-combobox | pass | moderate |
| Enter selects the active optioncombobox.enter-selects-active-option | pass | blocker |
| Escape closes the popupcombobox.escape-closes | pass | serious |
| Check | Verdict | Severity |
|---|---|---|
| The tab container exposes role=tablisttabs.tablist-has-role | pass | serious |
| Each tab exposes role=tabtabs.tabs-have-tab-role | pass | serious |
| Each tab has an accessible nametabs.tab-has-accessible-name | pass | serious |
| The selected panel exposes role=tabpaneltabs.panel-has-tabpanel-role | pass | serious |
| Exactly one tab is marked selectedtabs.selected-tab-communicated | pass | serious |
| The panel takes its accessible name from its tabtabs.panel-labelled-by-tab | pass | moderate |
| The tab references its panel with aria-controlstabs.tab-controls-panel | pass | moderate |
| Unselected panels are hidden from assistive technologytabs.unselected-panels-not-exposed | pass | serious |
| Tab moves focus to the selected tabtabs.tab-key-reaches-selected-tab | pass | blocker |
| The tablist is a single stop in the tab sequencetabs.tablist-is-one-tab-stop | pass | serious |
| Right Arrow moves focus to the next tabtabs.arrow-moves-between-tabs | pass | blocker |
| Keyboard navigation can select a different tabtabs.activation-selects-tab | pass | blocker |
| Selecting a tab reveals its paneltabs.activation-reveals-panel | pass | blocker |
| Check | Verdict | Severity |
|---|---|---|
| Each header control sits inside a headingaccordion.header-is-heading | pass | moderate |
| Each header control exposes role=buttonaccordion.trigger-is-button | pass | serious |
| Each header control has an accessible nameaccordion.trigger-has-accessible-name | pass | serious |
| Collapsed sections expose aria-expanded=falseaccordion.collapsed-state-communicated | pass | serious |
| The header control references its panel with aria-controlsaccordion.trigger-controls-panel | fail | moderate |
| Collapsed panels are hidden from assistive technologyaccordion.collapsed-panel-not-exposed | pass | serious |
| Enter expands the focused sectionaccordion.enter-expands | pass | blocker |
| Space expands the focused sectionaccordion.space-expands | pass | serious |
| An expanded panel is exposed and reveals its contentaccordion.expanded-panel-exposed | pass | blocker |
| Tab moves between accordion headersaccordion.headers-are-tab-stops | pass | serious |
| Activating an expanded header collapses itaccordion.collapses-again | pass | serious |
What this cannot tell you
A high score means no violations were detected by automated testing. It does not mean the component is accessible. Automated tests cannot judge whether a label is meaningful, whether a reading order makes sense, or whether the experience is usable with a screen reader. Those need human judgement and disabled users. This is a floor, not a ceiling.