Skip to content
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

JAWS (screen reader) doesn't read out the editable areas content #6002

Closed
afercia opened this issue Apr 5, 2018 · 16 comments
Closed

JAWS (screen reader) doesn't read out the editable areas content #6002

afercia opened this issue Apr 5, 2018 · 16 comments
Labels
[Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes).
Milestone

Comments

@afercia
Copy link
Contributor

afercia commented Apr 5, 2018

We're getting reports from accessibility testers that the content of the paragraphs etc. is not read out by JAWS or that weird things happen.

I've tested on Windows 10, IE11, and JAWS 2018 and was able to reproduce following a specific flow. Please try to follow the steps below to reproduce. See also the videorecording:
https://cloudup.com/cGohxttOPhN

In the first part of the video I'm moving through paragraphs using the Tab key and then:

  • use left and right arrow keys to read by character
  • use Ctrl + left and right arrow keys to read by word

JAWS reads out just "blank" or nothing.

Instead, in the second part of the video I'm moving through the paragraphs using the up/down arrow keys and JAWS reads the content by character and by word as expected.

Seems a pretty weird behavior and I have no idea why it's happening.

I guess we should investigate what changes in the blocks when moving via Tab or arrow keys. Any JS event triggering some behavior? Any attributes change? Any CSS change? (yes also CSS could play a role).

Any help from who knows the editable area internals would be greatly appreciated. /cc @aduth @youknowriad @iseulde

@afercia afercia added the [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). label Apr 5, 2018
@aduth
Copy link
Member

aduth commented Apr 5, 2018

For context, does JAWS tend to work generally well with a plain contenteditable element ?

@afercia
Copy link
Contributor Author

afercia commented Apr 9, 2018

As far as I can tell JAWS works well with contenteditable. In this codepen: https://codepen.io/afercia/full/LdJgdK/ I've tested it a bit, including some complex HTML copied from WP and JAWS always reads out the content of the contenteditable element. So I'd tend to think it's not something related to HTML.

@afercia
Copy link
Contributor Author

afercia commented May 5, 2018

To further clarify this issue, I'd recommend to have a look at the testing session by @sinabahram recorded by @joedolson at CSUN 2018, starting from minute 2:26 https://youtu.be/qpzyiL7n__0?t=2m26s and also published on https://make.wordpress.org/accessibility/2018/03/28/accessibility-of-gutenberg-the-state-of-play/

@sinabahram I'd greatly appreciate any help here, when you have a chance! Since you've tested at CSUN, the editable fields in the post content have been updated to use an ARIA role "textbox". For example the paragraph "block" should now be announced as edit text. Still to improve:

  • the labels (please ignore them for now)
  • aria-multiline should be set to true

However, JAWS still doesn't read the field value, or it does in a very inconsistent way.
Please also consider these editable fields are not real form fields. For example, a paragraph is a "p" element with a contenteditable attribute. This shouldn't make a difference, as the role textbox maps it to an edit text field. But still, there's something going on that prevents JAWS to correctly read the value.

@afercia
Copy link
Contributor Author

afercia commented May 5, 2018

Testing a bit more with IE 11 and JAWS, I've noticed there's something related to focus, to reproduce:

  • tab into an existing paragraph
  • be sure JAWS switched to forms mode
  • try to read the paragraph content by character or by word
  • JAWS read out "blank"
  • now, press Alt + Tab to switch to any other application window that's currently opened (open one before the test if necessary)
  • press Alt + Tab to switch back to IE11
  • the caret should be in the same place as before, and now JAWS reads out everything correctly

@sinabahram
Copy link

sinabahram commented May 5, 2018 via email

@afercia
Copy link
Contributor Author

afercia commented May 7, 2018

Yep works correctly in Chrome/Firefox, seems it's just an IE11 thing. Aside: one more reason why you don't hear the input value announced when you tab into it, is because the text within the field doesn't get selected. All browsers natively select the text within text fields. Instead, the Gutenberg fields behave more like textareas.

@tofumatt tofumatt self-assigned this Oct 4, 2018
@tofumatt
Copy link
Member

tofumatt commented Nov 1, 2018

Is this also a problem in Edge or just in IE11? We definitely support IE 11 but doesn't Windows 10 ship with Edge these days anyway? I know users can opt to use IE, but I just want to know the size of users affected.

We tend to prioritise IE 11 fixes a bit less, in general.

@afercia
Copy link
Contributor Author

afercia commented Nov 2, 2018

To my knowledge Edge doesn't work so well with JAWS and with other screen readers. Works a bit better with Narrator. You may want to have a look at these data about Screen Reader / Browser combinations. They're from October 2017 but the situation hasn't changed so much. https://webaim.org/projects/screenreadersurvey7/#browsercombos

@tofumatt
Copy link
Member

tofumatt commented Nov 16, 2018

Because this isn't yet marked as in-progress I'm moving it out of the 5.0 RC milestone and into the follow-up fixes. Sorry for not getting to it in time.

@afercia
Copy link
Contributor Author

afercia commented Feb 28, 2019

Just tested again and this is still a problem.

Additionally, seems Ctrl + left / right arrow keys don't move the caret "by word" any longer, will create a new issue.

@afercia
Copy link
Contributor Author

afercia commented Mar 1, 2019

Update:

Good news: the root cause is some behavior in <ObserveTyping>: when I completely remove it from the visual editor, all the content is read out as expected. So this is definitely something in <ObserveTyping> that breaks the interaction between IE11 and JAWS.

Bad news: I have no idea why.

Will try to pinpoint the specific offending code part. However, I'd argue that playing with events, selection, timeouts, on a contenteditable (contenteditable has its own issues) seems fragile when it comes to assistive technologies and can break expected interaction at any time.

@aduth
Copy link
Member

aduth commented Mar 1, 2019

I might suspect it's more to do with the changes in state of the "is typing" state. ObserveTyping doesn't really manipulate events, but does observe them to cause a change in this state. The change in state is what results in the toolbars surrounding a paragraph fading away (possible DOM change interfering with JAWS?).

@afercia
Copy link
Contributor Author

afercia commented Mar 1, 2019

Yep, I went a bit ahead and seems it's something with isTyping, still not sure what happens exactly as caret navigation here is non-native and completely rebuilt with JS 🙁

@afercia
Copy link
Contributor Author

afercia commented Mar 1, 2019

Manually testing:

  • block with more than 3 lines of text
  • it happens (approximately) only on the first 3 lines, which is weird
  • press arrow keys: moves by character > character is not read out
  • same as above but this time also moving the mouse (which sets isTyping to false) while pressing arrow keys: moves by character > character is read out
    🤷‍♂️

@simison
Copy link
Member

simison commented Nov 6, 2020

Has this been re-tested recently? It's been quite a while and lots has changed in the editor under the hood.

@youknowriad
Copy link
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes).
Projects
None yet
Development

No branches or pull requests

7 participants