New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Split Views are confusing for screen reader users #95996
Comments
@ndarilek great feedback. So taking from your description we have two issues:
So some questions:
@MarcoZehe for role smartness |
A toolbar is a container, not an actionable widget itself. So, aria-expanded does not work on such things, it only works on interactive widgets. What we have here, although I have never encountered one myself yet, is probably a menu button. A button that expands with menu options to select from. MS Office might call these split buttons. But split buttons are such an inconsistent beast in Windows that ARIA never adopted them. |
actually I am not quite sure if it is not announced. I don't use nvda/windows generally, but I remember running vscode for a while on windows and I am not sure if nvda didn't actually read the expanded/collapsed status. It would be interesting to see what the other screenreaders like jaws/voice over do there. |
Both NVDA and VoiceOver do not announce "expanded", so it is exactly as @MarcoZehe says, To give more clarity what the split view header is: it has a title and potentialy some actions, it can be expanded and if it is expanded beneath it is usualy content like a whole tree. So take Explorer as an example in it's header section is the title (Explorer: My Folder) some actions to create new files, refresh and once you expand the header you have the tree to navigate over your files. |
I just tried "menu", "menubutton", "menubar" and for all of those VoiceOver does not announce the expanded state. We could add the expanded state to the ariaLabel of the header section but that feels wrong. So we shuold try to find a role for which aria-expanded will be respected. |
Maybe something like this Bootstrap example?
https://getbootstrap.com/docs/4.4/components/collapse/
I know VSCode doesn't use Bootstrap or its JavaScript, but you see under
the first example a row of collapsable buttons which, when expanded,
inject a new section below them. Maybe use that markup as a guide? A row
of collapsable buttons, with sections appearing below them, would
certainly be more clear IMO.
|
@ndarilek thanks for that example, but voiceover does not correctly read the expand state also in that case. And they use the role |
As much as I hate to say it, this may not be fixable in all screen
readers. I don't necessarily know if my example correctly follows
standards, but it works under Orca, and I've got code deployed using
Bootstrap's collapsables which works under Windows as well. Our push
should probably be toward following the standard and encouraging
non-compliant screen readers to get with the program.
|
@isidorn: While I'm getting accustomed to VSCode thanks to all this work we're doing, without specific steps to reproduce a problem, I don't know where in VSCode to be looking. Numbered lists with super concrete steps (like José provides us) work best for me. @ndarilek: You filed this issue. 😁 Can I please have some José-style steps to take a look? Thanks!! |
If the example doesn‘t work in Chrome with VoiceOver, try Safari. If that works, it‘s very likely a bug in Chromium. |
Ok, actually Orca behaves great when we put @joanmarie sorry! I should have distilled into nice steps. Here they are
|
@MarcoZehe also does not work with Safari. So smells like a VoiceOver bug. I will now check if the |
It's kind of hard to provide a reproduction here, because it varies
widely based on which extensions you have installed, what your context
is, etc. For instance, I just opened an empty VSCode window and don't
see these widgets anywhere. I can tell you that opening a GitHub project
with the GitHub extension installed may or may not show one of these
views for pull requests, but I'm learning to use VSCode too so don't
always know how to trigger them.
But I think we're on the right track in that these views shouldn't be
toolbars, and the markup used for them should probably be that linked to
from my previous comment.
And if someone with more VSCode experience can provide a reproduction
that doesn't involve you installing such-and-such extension and opening
such-and-such project, I'll defer to them. :) Not sure how to arrive at
one of these views otherwise.
|
Ok, putting role=button also works on NVDA. So it feels like the way to go here. @ndarilek you can try out vscode insiders from tomorrow which will have my fix and you can let us know if it is good for you know. Or if we should furter fine tune the aria label. Now the collapsed state will be read. |
Nifty, thanks, I'll install tomorrow and report back here one way or the
other.
|
I honestly don't know where to file VoiceOver bugs. Perhaps @cookiecrook from Apple Accessibility could let us know? The link I provided before was when something is potentially a Safari/WebKit accessibility bug: https://bugs.webkit.org/enter_bug.cgi. If we discover a Chromium and WebKit bug in macOS, then the WebKit bug can be fixed by Apple Accessibility folks -- and we can see the corresponding change needed in Chromium for VSCode. On the other hand, if the problem is strictly in VoiceOver, those same Apple folks can direct it to the right source within Apple. |
Thanks, I will file an issue there. |
wondering if button is a good role for this, as in... button associates with pressing it with a space. but... not sure what other roles can be used here |
@webczat no other role would have the expanded state read out. And also the headers can be expanded collapsed via |
Just got code-insiders and this looks great! Thanks for such a quick fix!
|
if they can, that's okay for me. |
Great, thanks for letting me know. Adding verified label. |
I've encountered many of these Split Views, and only today discovered how to use them. An example of some of the mistakes I've made:
Here are some areas I struggled with:
Suggestions:
Thanks.
The text was updated successfully, but these errors were encountered: