adobe / react-spectrum

A collection of libraries and tools that help you build adaptive, accessible, and robust user experiences.
https://react-spectrum.adobe.com
Apache License 2.0
12.15k stars 1.06k forks source link

useSelect - Mac Voiceover cuts off reading highlighted option #2779

Open kaplantm opened 2 years ago

kaplantm commented 2 years ago

🐛 Bug Report

When using Mac OS voiceover (Big Sur, 11.1, Chrome 97.0.4692.71), the selected value of the dropdown is read each time the user changes the highlighted option, audibly cutting off the reading of the highlighted option.

https://user-images.githubusercontent.com/13424028/151412218-64d8c587-c62a-4527-a6e7-c21125ad3764.mov

🤔 Expected Behavior

The selected value of the dropdown is not read each time the user changes the highlighted option. User should clearly hear the option they now have highlighted.

💻 Code Sample

The example built into the useSelect docs.

Also the styled examples (tailwind, styled components ).

🌍 Your Environment

Software Version(s)
react-spectrum
Browser Chrome 97.0.4692.71
Operating System Big Sur, 11.1

🕷 Tracking Issue (optional)

snowystinger commented 2 years ago

Hey! thanks for reporting this, it's definitely frustrating. Unfortunately it's a chrome + VO bug. Our accessibility team found this:

I am able to reproduce this bug using the WAI-ARIA Select-Only ComboBox example: https://www.w3.org/TR/wai-aria-practices-1.2/examples/combobox/combobox-select-only.html, and this multi-select list box example: https://www.w3.org/TR/wai-aria-practices-1.2/examples/listbox/listbox-rearrangeable.html#ex2_label, when only one item has been selected. With the multi-select example, it seems to depend on whether more than one item has been selected. When more than one item is selected, VoiceOver in Chrome does an ok job distinguishing between selected and unselected items in the listbox. But, with only one item selected, it seems that Chrome is forcing VoiceOver to announce the selected item whenever the user navigates, but once I multi-select, things seem to work as expected, even after deselecting so that only one item remains selected.

You can read this explanation on why Chrome + VO is the way it is, https://stackoverflow.com/questions/54139306/does-mac-voiceover-limit-its-functionality-on-chrome-firefox/54147459 it has some good links explaining accessibility support