phetsims / a11y-research

a repository to track PhETs research into accessibility, or "a11y" for short
MIT License
3 stars 0 forks source link

VO interrupts itself when many alerts are triggered in a row #47

Open jessegreenberg opened 7 years ago

jessegreenberg commented 7 years ago

If we provide VO with a number of alerts (say every 500 ms) then VO will interrupt itself when the next alert is set as the text content for the live element. Seems to be the case for all priority levels for ARIA alerts.

jessegreenberg commented 7 years ago

Potential fixes are to have a number of alert elements in the DOM? Not sure if that would fix it, need to test. Or maybe have the queue guess how long the utterance will be (yuck).

jessegreenberg commented 7 years ago

Actually @terracoda is this something you would expect? Do you know of any ways to get around this? The result of this is that we hear something like

jessegreenberg commented 7 years ago

I tried to predict how long an utterance might take for the screen reader to say, but bailing, it is too unpredictable and seems too fragile. Im gonna try multiple live elements.

jessegreenberg commented 7 years ago

Here is a JSFiddle where we can test some things.

https://jsfiddle.net/jd4vmqf2/

jessegreenberg commented 7 years ago

Here is a better way to see this: https://jsfiddle.net/jd4vmqf2/show/

When running with VO I hear "Testing multiple alerts...Testing multiple alerts..." when I want to hear "Testing multiple alerts with a very long string will VO complete this question?" over and over again.

So the multiple element theory isn't working.

terracoda commented 7 years ago

@jessegreenberg, are NVDA and JAWS also interrupting themselves? Or is this Voice Over specific?

terracoda commented 7 years ago

@jessegreenberg regarding https://github.com/phetsims/a11y-research/issues/47#issuecomment-317886646 all I know is what you know...the ARIA politeness scale does not work very well, but I do not know why it is not queuing the events if they all have the same politeness level.

See also, Léonie Watson 2014.

terracoda commented 7 years ago

@jessegreenberg, I found a newer 2017 article, Accessibility in Web Applications with ARIA Live Regions that describes a few more aria attributes, atomic, live, busy, and relevant. I do not know if any of these would be helpful for our implementation. Posted examples are always so much simpler than our use cases with the sims.

jessegreenberg commented 7 years ago

Thanks @terracoda, I had never heard of aria-busy. That seems useful if it takes a long time for something to load. In https://github.com/phetsims/chipper/issues/472 we discovered that atomic and relevant attributes were essentially unsupported. That testing was done in August 2016, perhaps things have improved over the year.

jessegreenberg commented 7 years ago

I just tested https://jsfiddle.net/jd4vmqf2/show/ with NVDA and Firefox, NVDA doesn't interrupt at all, I hear the full alert.

jessegreenberg commented 7 years ago

NVDA also works great when the alert comes through a single element.

jessegreenberg commented 7 years ago

There is no interruption with JAWS in Firefox and IE11, it sounds great. So this is just an issue for VO.

terracoda commented 7 years ago

@jessegreenberg, interesting, maybe it warrants a bug report?

jessegreenberg commented 7 years ago

@terracoda that is what I was wondering too. A workaround for VO could be really tricky and unpredictable, and I don't know if it is worth spending a lot of time on. Lets submit a bug report and also discuss at the next a11y meeting.

terracoda commented 7 years ago

@jessegreenberg, nice labels!

jessegreenberg commented 7 years ago

@jobara helped investigate and determined that the nested setTimeout was causing some interruption. https://jsfiddle.net/jd4vmqf2/3/

In that JSFiddle, the alerts do not interrupt themselves, but each aria-live element only triggers an update once.

jessegreenberg commented 7 years ago

Modifying the example to go through one aria-live element reintroduces the issue https://jsfiddle.net/jd4vmqf2/14/

So it doesn't seem like a problem with setTimeout.

jessegreenberg commented 7 years ago

Was wondering if the single character change in the id wasn't enough to cause a full re-read of the entire alert. This example updates with a random sentence: https://jsfiddle.net/jd4vmqf2/17/

It is still interrupting itself.

By the way, Has anyone really been far even as decided to use even go want to do look more like?

jessegreenberg commented 7 years ago

Ill send a bug report to Apple.

terracoda commented 7 years ago

@jessegreenberg, I don't understand the last sentence in comment https://github.com/phetsims/a11y-research/issues/47#issuecomment-319124672.

jessegreenberg commented 7 years ago

Sorry @terracoda, was meant to be a joke, it was a randomly shuffled sentence used to test alerts in my JSFiddle.

Submitted bug report to Apple on 7/31/17.

terracoda commented 7 years ago

Laughing now. Delayed reaction :-)

jessegreenberg commented 7 years ago

Update 10/3/17, no response from Apple.

terracoda commented 7 years ago

Hmm, a full 2 months and no response. Have you submitted a bug report before?

jessegreenberg commented 7 years ago

I have not, Ill ask some of the other devs. This stack exchange response is discouraging :( https://apple.stackexchange.com/questions/189126/apple-bug-report-apples-response-time

I have filed quite a few bug reports during the last years. Some still seem to be unchanged since I created them, some got closed silently and there is only one where I ever got notified that the fix would be in the next OS X release.

jessegreenberg commented 7 years ago

According to https://discussions.apple.com/docs/DOC-5421 I can 'rank' my bugs to "help get it noticed asap." Ill see if I can find that in the interface.

terracoda commented 7 years ago

@jessegreenberg, I was testing/listening again today to BASE, working on ideas for release alerts (for two balloon scenarios), and it seems the velocity phrase is the phrase that gets missed the most. I am wondering if other design considerations recently discussed (e.g., shortening the velocity phrase by moving the balloon name string to the location phrase), and perhaps using aria-roledescription to provide the Indication of grab and/or Indication of release would help at all in this interruption issue.

Should we start 2 new issues in the BASE repo to explore these ideas?

jessegreenberg commented 6 years ago

Update 1/8/18: No response from apple on this issue.

Regarding https://github.com/phetsims/a11y-research/issues/47#issuecomment-337900426, sorry I missed this @terracoda, seems useful to create issues in BASE if you haven't done so already, or maybe you explored this elswhere in a design doc.

jessegreenberg commented 6 years ago

Update 2/26/18: No response from Apple.