-
Notifications
You must be signed in to change notification settings - Fork 28.7k
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
NVDA/JAWS should announce the placeholder text provided at edit fields in command palette. #166920
Comments
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.73.1. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding! |
Hi @meganrogge, The bug still exists with the new vscode version. I edited the original post. Thanks! |
@TylerLeonhardt I think you just worked on improving the accessibility of the quick pick - thoughts on this? |
#A11yMAS; #A11yTCS; #A11ySev2; #DesktopApp; #Win32; #Visual Studio Code Client; #BM-VisualStudioCodeClient-Win32-Aug2022; #WCAG1.3.1; #Element:Placeholdertext; #AILimited; #JAWS; #NVDA; |
@TylerLeonhardt have you looked into the feasibility of supporting this? |
Sorry I'm not sure I totally follow here. Just to make sure, @qpetraroia can you attach a gif? /gifPlease |
Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, If the issue depends on keyboard input, you can help us by enabling screencast mode for the recording ( Happy coding! |
@TylerLeonhardt from the above description, I believe what @qpetraroia expects is for the placeholder text to be read before the selected item is. From my testing though, that is working already (I tried |
Thanks for the comments @TylerLeonhardt and @meganrogge. I will try and get a gif for you folks in the upcoming days! |
@meganrogge, @TylerLeonhardt sadly gif does not record audio. I will record a video and send it to you internally. |
@qpetraroia video uploads on GitHub issues work now so you can always attach here :) |
@TylerLeonhardt, @meganrogge I have attached a video below! Basically, the place holder text should be read with NVDA. The accessibility folks have flagged this as a bug. Thanks! Bridge.to.Kubernetes.-.accessibility.bugs.-.placeholder.text.not.being.read.mp4 |
@qpetraroia do you have Accessibility mode turned on? Just checking. You should have gotten a notification about it. |
you can turn that on with |
Let me test that today @TylerLeonhardt @meganrogge, thanks! |
@meganrogge where do I find |
|
Thanks for this @meganrogge, it was set to auto. I will turn it to on and try again |
@meganrogge, @TylerLeonhardt. It is still not pronouncing the text in the edit field. Would you classify this as a bug or is this just a part of VsCode? |
I can reproduce the issue - @TylerLeonhardt I'd expect the placeholder text to be read before the selected item is, but that does not happen. |
We'll try to fix this in February with the following read by the screen reader via @TylerLeonhardt :
|
I just discussed with @TylerLeonhardt and he says "I need an ARIA expert because I can’t get this to work nicely. I’ve tried a few other solutions and haven’t had luck, unfortunately. Looking for creative solutions" @scottaohara might you have suggestions here? |
Just to provide an update... After chewing on the problem yesterday, my best idea is to try to mirror this design pattern as much as possible: https://w3c.github.io/aria-practices/examples/combobox/combobox-autocomplete-list.html Applying it to the quick pick means making the following changes:
When pressing down the first element is highlighted. aria-activedecendent is set on the inputbox pointing to that item. The item gets read out. Nothing new here. While this pattern is fine, it's not really what I want because the QuickPick isn't really a combo box (though I'll admit it's close). I’m sad because I would rather not have specific a11y mode behavior here… but this is the best I think we can offer with my ARIA skills. Tl;dr: I need a solution for reading the placeholder of the quickpick input box first and then read out the first highlighted item in the list (the aria-activedecendent) |
Hi team. I’m reading the thread and I’m probably missing something but I’m concerned that there is perhaps a misunderstanding about how the quick input experience works in general and the particular issue of the Bridge to Kubernetes extension. Perhaps I’m missing the problem, but the quick input list works well for me. Here is an example:
I wouldn’t expect this to behave any different. The only instance where I have observed a different behavior is with the Bridge to Kubernetes extension where, upon selecting the connect command, for example, screen reader focus seems to jump directly to the list instead of the editable portion which is the standard behavior, maybe because aria-activedescendant is set at a time when it shouldn't? @TylerLeonhardt why you would like the placeholder text and the first highlighted item to be read together? I understand the placeholder text as the label for the editable field, therefore it is relevant only when the editable field is focused. By focused in this context I mean that it has screen reader focus, not keyboard focus. When we manipulate aria-activedescendant we are communicating the screen reader to focus on a different control, therefore the label of the control with focus shouldn't be read. The label of the list portion is "Quick Input list", and that is actually the hint that we are now exploring the list of options. I fully agree that we should stay away from an A11Y exclusive mode as much as possible. |
@qpetraroia because this is the behavior of a sighted users today. They are able to see the placeholder in the input box and the first item in the list is already focused (using Today, users of a11y mode via the setting My wish is that we could have the same experience for users of a11y mode and not... but my research above, albeit not expert level, has given me the perspective that it's just not possible... and that it would be easier to fix the bug you call out which can be simplified to: "When we chain quick picks we need to remove |
Thanks @TylerLeonhardt. I think I understand now. Since this is really not a combobox, I would then suggest a change to the way this works from a keyboard and screen reader perspective. Please take this as a general idea which could be significantly refined or completely abandoned.
note: As a blind screen reader user myself, I don't know how the experience looks / feels like from a visual perspective. For example, I don't know if sighted keyboard users can edit the text as they type, or if there still an insertion point visible in the text field as ones navigates in the list with the keyboard as it is now. |
@rperez030 I think we are on to something here... Thanks for your input. It sounds like, from what I can tell, you are suggesting we drop aria-activedescendant usage from the input box and go with your alternative. I'm intrigued by this idea. I have a couple of follow ups mostly because my ARIA skills are quite low:
Could you explain the difference between these two approaches? How are they represented differently via a screen reader? Just to confirm, yes, the inputbox that currently has
Today, when you type a character, the active item in the list becomes the first item in the list. I would imagine we would still announce via
Yes. Visual users are able to see a cursor in the input box that they can move left to right as they choose and edit the text in the box while an item in the list is active (again, similar to the combobox example I linked above). This works today because true focus is entirely kept by the input box. "fake focus" or what we call "the active list item" never actually gets browser focus, it just appears "focused" or "active" or "highlighted" to the user compared to the items in the list. |
Hi @TylerLeonhardt !
Aria-activedescendant overrides DOM focus. It means that, as soon as we add the property, screen reader focus goes to the list and screen reader no longer track the cursor in the text field. If we use an aria-live region however, changes in selection can be announced while focus is maintained in the input field for the user to edit. In this way if an element is selected in the list by default, we can announce that element and the placeholder text will be read by the screen reader due to the focus event. We may not be able to fully control the order in which both events are read, but that's a lesser problem in my opinion. Does it make sense?
Yes, that is correct. actually, your visual explanation has helped me understand the entire experience better. I initially thought that there was no cursor in the text field at all while the user was typing. |
This basically puts focus back in input Fixes #166920
@rperez030 thanks a lot for your comments! I really want to sit down and play with aria-live some more based on your idea. Considering that this issue is pressing, I've made a small change to get the placeholder to be read out. |
This basically puts focus back in input Fixes #166920
@TylerLeonhardt happy to test that change when it becomes available in an insiders build, or remotely with you in case you want earlier testing. for my idea to work, it would require some changes in keyboard behavior as well, and careful testing so that we don't break current user expectations around a widget which is critical for some customers. feel free to reach out if you need additional input. |
This bug has been fixed in the latest release of VS Code Insiders! @qpetraroia, you can help us out by commenting If things still don't seem right, please ensure you're on version 6fe3014 of Insiders (today's or later - you can use Happy Coding! |
I did some testing using the latest insiders build and NVDA Results with screen reader mode on:
Screen reader mode off:
Version: 1.77.0-insider (user setup) |
#Closed 166920_Fixed.mp4 |
Hello, we have been recently testing out our extension for accessibility bugs, and we believe we may have found one directly linked to vscode. The extension we are using is Bridge to Kubernetes.
https://learn.microsoft.com/en-us/visualstudio/bridge/bridge-to-kubernetes-sample
Does this issue occur when all extensions are disabled?: Yes
Steps to Reproduce:
The text was updated successfully, but these errors were encountered: