-
Notifications
You must be signed in to change notification settings - Fork 4.3k
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
Unable to edit blocks once they've been inserted into content while using a screen reader #29526
Comments
Follow-up from report on TRAC here: https://core.trac.wordpress.org/ticket/52687 While I myself don't use JAWS and primarily a NVDA/Voiceover user, it is important to ensure Gutenberg works with all screen readers. Would be great to get some further testing here to see why NVDA/Voiceover work sort of well with editing basic blocks and JAWS/Narrator fails. I will say that the UX with editing more advanced blocks such as the table block is very bad. When I inserted a table block with NVDA yesterday I found that you actually have to select the number of columns and rows first followed by selecting Add Table button. Initially focus is placed in an empty section of the table block making users think it is okay to start typing right then instead of reading a description such as "Please select number of rows and columns to begin." There is certainly room for UX improvement here across the board. This issue, #27521, is also related as far as more complex blocks go. I've not had time to troubleshoot it further. |
Thank you for writing this up 🙇🏼 I've flagged it for a few contributors to see if someone can dig in further! |
Reporting in from the JAWS development side, this is because JAWS currently doesn't offer proper edit semantics for ContentEditable="true" when paired with certain ARIA roles. In particular, role="group". Starting with 5.6 this role seems to be gratuitously assigned to ContentEditable elements. These elements along with already have proper edit semantics and do not need a specific ARIA role assigned. In fact assigning the wrong role breaks JAWS and I suspect Narrator as well.
I'm running a build with a more relaxed condition and editing now works fine with JAWS. But it's going to take a really long time for any JAWS build with this fix to hit all of the people running older JAWS versions with WordPress. Would you consider removing role="group" from these editable items? If you feel compelled to explicitly assign a role, document or paragraph would be good ones to use. We'd love a closer working relationship with the Gutenberg team and I personally would be happy to be ping'ed about issues. |
Seems that using HTML tags in comments gets them stripped out when posted. My previous comment refered to role=group being assigned to paragraph elements in 5.6+. These along with divs already have proper ContentEditable semantics and do not need a role explicitly assigned for them to work. |
@ggordon-vispero You are saying that all that needs to happen is removing:
and then this will work with JAWS? I just tried this while using NVDA in the browser inspector and I cannot notice it causing any issues. Happy to make a code change and see if others spot issues in testing. Would be great to get this fully working. Is there anything JAWS users can do right now to help with this issue? Settings change, update? Appreciate your input. Thanks. |
I’m talking about removing role=”group” on each of the ContentEditable p tags. I’m seeing role=group on each p tag in 5.7.2. Did you say grid when you meant group or are we talking about different items? Assuming we’re talking about the same thing, then yes, just removing the explicit role should fix JAWS.
We’ll have a JAWS 2021 update mid-July that will include a fix to accommodate role=”group” on ContentEditables, but sadly beyond that there isn’t anything JAWS users can do till then.
Will there be a test WP instance I can try with your change or do I need to spin up my own and make the change independently in order to validate?
Thanks very much for jumping on this.
From: Alex Stine ***@***.***>
Sent: Thursday, June 10, 2021 11:55 PM
To: WordPress/gutenberg ***@***.***>
Cc: Glen Gordon <GGordon@Vispero.com>; Mention ***@***.***>
Subject: Re: [WordPress/gutenberg] Unable to edit blocks once they've been inserted into content while using a screen reader (#29526)
CAUTION: This email originated outside Vispero. Do not click links, open attachments or forward unless you recognize the sender.
@ggordon-vispero<https://github.com/ggordon-vispero> You are saying that all that needs to happen is removing:
role="grid"
and then this will work with JAWS? I just tried this while using NVDA in the browser inspector and I cannot notice it causing any issues. Happy to make a code change and see if others spot issues in testing.
Would be great to get this fully working. Is there anything JAWS users can do right now to help with this issue? Settings change, update?
Appreciate your input.
Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#29526 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AGBCJATYANGUWPY3VTKWGUDTSGJLPANCNFSM4YRUSXXQ>.
|
Hello @ggordon-vispero Sorry about the delay here, I got busy with other tasks in my personal life. I made a PR which removes Also, if you are available @amandarush , the more testing, the better. Thanks. |
Seems that Gutenberg.run has been offline since the weekend. I thought it would right itself when someone else noticed, but that hasn’t happened as of yet.
I’ve spent more time with contenteditable p elements using a released version of JAWS and now realize that it would be better to give each paragraph an ARIA role of document. This combined with contenteditable will cause screen readers that have a virtual reading mode to go into edit mode automatically whenever one of them gains focus. Turns out that with released versions of JAWS, a plain contenteditable p element requires manually switching to edit mode each time such a paragraph gets focus, something which users don’t expect.
We’ve fixed contenteditable p elements both with and without a group role for our July release, but if you assign the document role to paragraphs yourself, this will fix JAWS in the field and should work equally well with other screen readers. Sorry for the refinement after testing further at my end.
From: Alex Stine ***@***.***>
Sent: Thursday, June 17, 2021 10:52 PM
To: WordPress/gutenberg ***@***.***>
Cc: Glen Gordon <GGordon@Vispero.com>; Mention ***@***.***>
Subject: Re: [WordPress/gutenberg] Unable to edit blocks once they've been inserted into content while using a screen reader (#29526)
CAUTION: This email originated outside Vispero. Do not click links, open attachments or forward unless you recognize the sender.
Hello @ggordon-vispero<https://github.com/ggordon-vispero>
Sorry about the delay here, I got busy with other tasks in my personal life. I made a PR which removes role="group" from the blocks. Could you please test with JAWS and let me know the results? You can test by clicking the link below.
https://gutenberg.run/32799
Also, if you are available @amandarush<https://github.com/amandarush> , the more testing, the better.
Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#29526 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AGBCJAQL2ICV67VUYXYMQKTTTK7GFANCNFSM4YRUSXXQ>.
|
Can you clarify what issues you're running into? I just used Gutenberg.run on a few PRs and didn't have any issues so wanted to check in :) |
@ggordon-vispero Sorry, that's my fault. This link should work. I will work on changes to add Thanks. |
This works fine given the limitations mentioned in my most recent comment, the ones that will be resolved by role=document.
When editing with a screen reader, there is a command to read the current line. This is useful when working with multiline paragraphs where hearing the entire paragraph is inefficient. Reading the current line works fine when editing a Gutenberg block accept when the caret is one past the last character of a block. In that case we appear to be getting the entire paragraph rather than the final line when we request the contents of the current line. We don’t see this issue With contenteditables outside of Gutenberg. This makes me think that you may be doing something intentional when the caret is in this position. Before digging in further, wondering if you have any insights into the above?
From: Alex Stine ***@***.***>
Sent: Tuesday, June 22, 2021 12:27 PM
To: WordPress/gutenberg ***@***.***>
Cc: Glen Gordon <GGordon@Vispero.com>; Mention ***@***.***>
Subject: Re: [WordPress/gutenberg] Unable to edit blocks once they've been inserted into content while using a screen reader (#29526)
CAUTION: This email originated outside Vispero. Do not click links, open attachments or forward unless you recognize the sender.
@ggordon-vispero<https://github.com/ggordon-vispero> Sorry, that's my fault. This link should work.
http://gutenberg.run/32799
I will work on changes to add role="document" but it will take me some time.
Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#29526 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AGBCJARZV334DTJSRV443BTTUDBXJANCNFSM4YRUSXXQ>.
|
@ggordon-vispero I am a very low-level contributor and couldn't answer the question. My best guess is you found a bug in writing flow. Writing flow is fairly detrimental to screen readers, so you can turn it off. At least one part of writing flow, the ability to keep your text cursor contained in one block at a time.
Does this make it work any better? Thanks. |
Sadly, that didn’t help. Assuming after doing future research on this issue we become more confident that it’s a Gutenberg issue, how would you suggest opening an issue to get it before the right folks?
…--Glen
From: Alex Stine ***@***.***>
Sent: Tuesday, June 22, 2021 1:35 PM
To: WordPress/gutenberg ***@***.***>
Cc: Glen Gordon <GGordon@Vispero.com>; Mention ***@***.***>
Subject: Re: [WordPress/gutenberg] Unable to edit blocks once they've been inserted into content while using a screen reader (#29526)
CAUTION: This email originated outside Vispero. Do not click links, open attachments or forward unless you recognize the sender.
@ggordon-vispero<https://github.com/ggordon-vispero> I am a very low-level contributor and couldn't answer the question. My best guess is you found a bug in writing flow. Writing flow is fairly detrimental to screen readers, so you can turn it off. At least one part of writing flow, the ability to keep your text cursor contained in one block at a time.
1. Go to Options.
2. Open Preferences.
3. Select Blocks tab.
4. Check the option Contain text cursor inside block.
Does this make it work any better?
Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#29526 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AGBCJAX7T5GHAVPLEMJA373TUDJUZANCNFSM4YRUSXXQ>.
|
@ggordon-vispero I just received my own copy of JAWS and gave this a test. When I tried without any roles, JAWS announced that the paragraph block contained text but did not read the text. When I added:
JAWS just read "blank, blank, blank" every time I pressed arrow keys inside the block. Is it possible that there is some type of update that hasn't gone public yet that is allowing this to work for you but not me? Thanks. |
@ggordon-vispero alexstine As of Jaws 2020.2107.12 adding role="document" to paragraph tags with contenteditable="true" produces the same result reported by Alex, everything reads "blank blank blank" inside blocks. |
I’m baffled by your results with JAWS. I assume you mean JAWS 2021.210712 not 2020. With this build, the test page at http://fbj9chhn.gutenberg.run/wp-admin/post.php?post=4&action=edit works fine for me. Once focus moves into a paragraph block, I can arrow up and down and speak line by line, and arrow left and right by character and Word. Additionally, JAWS 2020 which didn’t work when the role of paragraphs was grouping, once again works with this latest Wordpress change.
I brought up the post, hit the letter e to move to the title, pressed Enter to turn on JAWS forms mode. At that point I was able to use the arrow keys to navigate text.
In addition, this latest JAWS build with support for contenteditables with role=grouping works with WordPress 5.7.2 with both Firefox and Chrome, not just for me but for one of our staff who regularly posts. Presumably, it also works with Brave and Edge, but I didn’t test them explicitly.
I’m happy to have a call to compare steps and try to understand why things aren’t working for you. I’m not saying that there isn’t a problem, only that I can’t replicate it.
From: Amanda Rush ***@***.***>
Sent: Tuesday, July 20, 2021 4:54 PM
To: WordPress/gutenberg ***@***.***>
Cc: Glen Gordon <GGordon@Vispero.com>; Mention ***@***.***>
Subject: Re: [WordPress/gutenberg] Unable to edit blocks once they've been inserted into content while using a screen reader (#29526)
CAUTION: This email originated outside Vispero. Do not click links, open attachments or forward unless you recognize the sender.
@ggordon-vispero<https://github.com/ggordon-vispero> alexstine As of Jaws 2020.2107.12 adding role="document" to paragraph tags with contenteditable="true" produces the same result reported by Alex, everything reads "blank blank blank" inside blocks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#29526 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AGBCJARZNK6Q3Q52QHR57U3TYXWADANCNFSM4YRUSXXQ>.
|
@ggordon-vispero When might you be available to have a meeting? I can block out time this week but next week will be limited. Thanks. |
I’m just creating an empty text block by typing, pressing enter to start a new paragraph, etc. In that case things work right with JAWS. Haven’t done anything more advanced. Are you doing something different when things aren’t reading?
Feel free to write to me privately to schedule a time. Take my GitHub name, replace the dash with a period and add .com. I can make time this week.
From: Alex Stine ***@***.***>
Sent: Wednesday, July 21, 2021 10:35 AM
To: WordPress/gutenberg ***@***.***>
Cc: Glen Gordon <GGordon@Vispero.com>; Mention ***@***.***>
Subject: Re: [WordPress/gutenberg] Unable to edit blocks once they've been inserted into content while using a screen reader (#29526)
CAUTION: This email originated outside Vispero. Do not click links, open attachments or forward unless you recognize the sender.
@ggordon-vispero<https://github.com/ggordon-vispero> When might you be available to have a meeting? I can block out time this week but next week will be limited.
Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#29526 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AGBCJAUYX7FDODIS66KX5WLTY3SJTANCNFSM4YRUSXXQ>.
|
Sent an email to try to schedule a meeting. I'll update this issue once I have new information. :) |
I wanted to update this after the meeting I had with @ggordon-vispero . During our testing, there was a new bug found with:
effecting blocks in navigation mode. The JAWS version 2021.2107.12 seems to work fine for me. Whenever you enter a paragraph block, it will read the text as it should and allow you to edit the text. I am still having a problem navigating blocks in navigation mode. If you are in a paragraph block and you press escape, this puts you in virtual cursor JAWS mode. If you press escape again and land in Gutenberg navigation mode, using arrows or tab key does not allow you to move through the list of blocks. This is something that NVDA has no problem with and I suspect JAWS simply doesn't like all the changing roles. One thing I noticed with NVDA is when Gutenberg is in navigation mode and NVDA is in edit mode (same as JAWS forms mode), navigating the blocks works fine. I wonder if there is a way to keep JAWS in forms mode but put Gutenberg in navigation mode. I'll play around with this and see where I end up, but it is clear that my PR is no longer viable. If that got merged in, it would make the JAWS situation worse, so probably best to avoid. The sad news is older JAWS versions will not receive a fix, at least not at this point in time. In summary, I think JAWS and Gutenberg have a love/hate relationship and a lot of work needs to be done before anyone can call it perfect. I think NVDA works much better with the editor as of now. It may be wise to have an open JAWS testing session and open up a fresh issue for other problems found as this one is getting a bit long. Let me ask around and test in the next few days and we'll determine where this GitHub issue will end up. Thanks. |
Here's a bit more information. When working with Gutenberg, I've found Google Chrome to be way more stable. Actually, as a side comment, Firefox is painfully slow even on this very GitHub issue. Not sure why, but Chrome is certainly without a doubt faster. One thing I noticed is for some reason when tabbing through the block list in Gutenberg navigation mode, the aria-live region is not picking up the block labels. This is something I'm going to look in to because I thought this was done as a fix for NVDA. I found 2 work arounds to get from block to block using JAWS.
If it were me, I would choose option 1 for now because the UX for option 2 are confusing. JAWS Keyboard Shortcuts: https://www.freedomscientific.com/training/jaws/hotkeys/ Hope this helps. Thanks. |
@ggordon-vispero I think I finally got this working. What happens when you are pressing Tab in Gutenberg navigation mode is the button is dynamically changing under the screen reader cursor. I also found the wordpress/a11y.speak() function was ultimately not working, so turns out this would have also broken NVDA if NVDA was still having dynamic content issues. This is what I did.
If you want to give it a test, the new link is below. It works fine with NVDA, JAWS, and Voiceover. I think this is as cross-platform as it's going to get without major UX work. In a perfect world, I'd have the navigation mode rewritten so you were actually tabbing down a list of buttons instead of having the button dynamically replaced on each Tab key press, but beggers can't be choosers and I think I made a solution that's 99% full proof. Open to any feedback and hopefully getting this one closed out. 🎆 😃 Thanks for your time. This has been quite the research/trial and error project. |
@alexstine Thanks for spending so much time with this. I did test your change and it seems to work with both JAWS 2020 and 2021. |
I will send an email later today to try and schedule a time, can work on this next week. Will try the other steps listed in further comments after the one that I left. |
I cycled back to this issue while investigating more weirdness in the various blocks and wanted to thank everyone for the discussion on this issue. It's a long reading but it's very enlightening ❤️ |
Please fill out ALL required sections. Bug reports with missing information will
be closed.
Before submitting a bug report:
If this is a security issue, please report it in HackerOne instead:
https://hackerone.com/wordpress
-->
Description
As of WordPress V. 5.6 and including 5.6.1 and 5.6.2, screen reader users are unable to edit blocks after they have been inserted into a post or page. NVDA will allow some flaky editing of some of the less advanced blocks, but not things like the table block, Narrator allows editing of zero of the blocks, reporting "unable to take focus", and Jaws for Windows reads all text as blank whether you tab from the title field or down-arrow from it. The only thing that will read with Jaws is the blocktype: ("block heading group", "block paragraph group", ETC.).
Step-by-step reproduction instructions
Open the "add new post" or "add new page" or "edit post" or "edit page" screen. Press "E" to navigate to the title field and then press enter on this to enter forms mode or your screen reader's equivalent. Tab or arrow to the content area where already-entered content is.
Expected behaviour
Expectation is that I should be able to read the text within blocks, select, copy, cut, and paste as in either the Classic Editor or any other form field on the web.
Actual behaviour
Screen reader speaks the word "blank" while navigating through what I know for a fact to be entered text. This can be determined by exiting forms mode and then arrowing through the page. Block types are the only things that read: "block heading group" "block paragraph group" ETC.).
Screenshots or screen recording (optional)
Code snippet (optional)
WordPress information
Device information
See issue #23892 #23892 where multiple members of the WordPress Accessibility Team as well as outside accessibility experts and ordinary users of assistive technology and/or low-vision users warned that playing around with the focus outlines for blocks would produce results like this.
The text was updated successfully, but these errors were encountered: