Material-ui: [Select] Fails when using screen reader or keyboard navigation

Created on 16 Apr 2020  Â·  9Comments  Â·  Source: mui-org/material-ui

While generally the accessibility functionality of the MUI Multi-select is decent, it would still fail any audit due to inconsistent screen reader behaviour and keyboard navigation. See further details below.

  • [x] The issue is present in the latest release.
  • [x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behaviour 😯

Screen Readers (SR)

Win10/Chrome/ChromeVox

When I navigate to the select that has preselected entries, these are not announced to me unless I open the menu and navigate to each of the entries. It is possible to open the menu and select/deselect ok with enter key, space doesn’t work. No instructions for the user either, and the select is announced as a ‘button’ and I’m not informed when menu is expanded or collapsed. Not an ideal experience. Would fail an audit.

Win10/Chrome/Jaws

Slightly better experience (announces as expanded, gives instructions to navigate list), but JAWS won’t announce which of the entries have been ticked/selected. You have to close the menu and listen to the chips to determine that. Would fail an audit.

Win10/Firefox/NVDA

Can navigate menu using Insert+Space, then arrow keys, however selected entries are not announced, as per above. Would fail an audit.

Mac10.14/Chrome/VoiceOver

Shares the same issues as above. Would fail an audit.

Overall

  • SR doesn’t announce which of the entries have been ticked/selected.
  • SR doesn’t allow user to use spacebar to select/check entries.
  • SR doesn’t always announce when the listbox has been expanded or collapsed.
  • SR doesn’t reliably read the selected entries when the menu is collapsed (e.g. chips)

Keyboard Navigation

It works with TAB to select, up/down arrow or Enter to open and Enter key to select entry, but doesn’t work with space to select, this would be expected behaviour.

Expected Behaviour 🤔

  • SR must announce which of the entries have been ticked/selected.
  • SR must always announce when the listbox has been expanded or collapsed.
  • In keyboard navigation mode and while using SR we must allow user to use spacebar to select/check entries. See HTML5 example: https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select

Steps to Reproduce 🕹

Try the following example with the above mentioned screen readers and using the keyboard only: https://cwvg4.csb.app/

Context 🔦

The goal is to meet the WCAG 2.0/2.1 AA standard as legal audit requirement for a learning platform used by millions of students, teachers and administrators.

Your Environment 🌎

| Tech | Version |
| ----------- | ------- |
| Material-UI | v4.9.10 |
| Browser | Firefox (latest), Chrome (latest) |
| Screen Reader | Jaws, VoiceOver, NVDA, ChromeVox |
| OS | MacOS 10.14, 10.15, Windows 10 |

accessibility Select

Most helpful comment

Thank you so much for this report!

This is definitely something that we want to look into when working on v5. I can't promise any backports of these fixes to v4 though.

All 9 comments

Hi there. I'd like to add to what @attilavago reported please - we're planning to use this multi-select component in an upcoming (WCAG 2.1 compliant) release and would appreciate any info you can provide around a release roadmap for these fixes when you've had a chance to review. Many thanks.

Thank you so much for this report!

This is definitely something that we want to look into when working on v5. I can't promise any backports of these fixes to v4 though.

I think that we should avoid backports as much as possible, the opportunity cost is high.

Thanks for the feedback. What's the estimated release date for V5 please? Cheers

@AnnemarieMcc 2021 but they will be plenty of alpha and beta versions before. If there is an easy fix for this, we might as well do it now :)

@AnnemarieMcc 2021 but they will be plenty of alpha and beta version before. If there is an easy fix for this, we might as well do it now :)

Yes - that would be fantastic. We're legally required to be WCAG compliant so using this component in it's current state wouldn't be an option for us. Please keep us posted with your progress - it would help us plan our release and the need to use a workaround if required. Happy to carry out some regression testing on alpha/beta versions. Appreciate your help 🙂

@AnnemarieMcc 2021 but they will be plenty of alpha and beta version before. If there is an easy fix for this, we might as well do it now :)

If I may chime in here, it would be great to have this solved as early in v.4 as possible. I've also checked in v.3, so this is technically not a new bug. Given the fact that release of v.5 seems to now have slipped to 2021 from Q3 2020, I'd advocate for a v.4 fix rather than a v.5 especially these days when so many people are finding themselves having to use the web to get their day to day stuff done, which only means even more disabled folks are interacting with these components.

seems to now have slipped to 2021 from Q3 2020

@attilavago I would name that shift: not over-promising :). If you have $ on the line (legal risk), note that you have a couple of options:

  1. Material-UI has a custom-work offering: https://material-ui.com/getting-started/support/#custom-work
  2. Migrate to use the Autocomplete component instead.
  3. You could explore the issue and come up with a pull request, even if we don't accept it in the timeline that matches your requirements, you could still use the patch internally.

seems to now have slipped to 2021 from Q3 2020

@attilavago I would name that shift: not over-promising :). If you have $ on the line (legal risk), note that you have a couple of options:

  1. Material-UI has a custom-work offering: https://material-ui.com/getting-started/support/#custom-work
  2. Migrate to use the Autocomplete component instead.
  3. You could explore the issue and come up with a pull request, even if we don't accept it in the timeline that matches your requirements, you could still use the patch internally.

These are actually some great suggestions. That 3rd one particularly. Thanks @oliviertassinari!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

FranBran picture FranBran  Â·  3Comments

ryanflorence picture ryanflorence  Â·  3Comments

reflog picture reflog  Â·  3Comments

sys13 picture sys13  Â·  3Comments

mattmiddlesworth picture mattmiddlesworth  Â·  3Comments