reach / router

https://reach.tech/router
MIT License
6.91k stars 325 forks source link

NVDA / JAWs testing #20

Open NickColley opened 6 years ago

NickColley commented 6 years ago

Todo:

I'm not sure if you receive notifications in closed issues, so re-opened here, hope that's OK.

I'd love to help out. (I can help record the videos too :))

I've done some testing based on the most common usage of assistive technologies we use at GDS.

JAWS 2018 with Internet Explorer 11

  1. Blank screen

We test JAWs on Internet Explorer, which is broken at the moment I think due to ES6 features not being transpiled. Would be happy to help re-test if we add a transpiled version to the doc site. (Lemme know if you want help with that)

NVDA 2017.4 with Firefox 52.8.0

When visiting the 'accessibility' page

  1. Reads title
  2. Reads entire page

When visiting the 'Features' page

  1. Nothing is announced.

JAWs 2018 with Firefox 52.8.0

  1. Reads title
  2. Reads entire page

I've had some decent success running JAWs and NVDA in a virtual machine, if that helps you.

https://openedx.atlassian.net/wiki/spaces/A11Y/pages/143360341/Setting+up+a+Windows+VM+for+local+screen+reader+testing

NickColley commented 6 years ago

Okay managed to get to the bottom of IE11:

The website requires

  1. Promise polyfill
  2. startsWith polyfill

I'd love to contribute the fix, but wanted to see what you thought.

Asking users to include Promise polyfills seems reasonable, so for that we'd want to add guidance around what polyfills to include for X level of support.

startsWith is not shipping in edge, and for such a small polyfill (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith) we could consider shipping this as part of the library, or maybe even avoiding it?

What do you think?

ryanflorence commented 6 years ago

Awesome, thanks, yeah just make a

let startsWith = (str, val) => new RegExp(`^${val}`).test(str)`

or whatever the cool kids use.

ryanflorence commented 6 years ago

starsWith issue is fixed in v1.0.4

ryanflorence commented 6 years ago

I just tested on NVDA + Firefox and it reads the new page after a transition, just like voice over. If you're testing https://reach.tech/router, those pages are loaded async, so it goofs it up, but if you visit it a link after it's already been visited, it'll start reading the page.

I haven't done it yet, but I'm going to start prefetching those resources after the initial load so that when you click the links the page is already there.

NickColley commented 6 years ago

@ryanflorence ah that makes sense, can we rely on prefetching in this case? Would it be a race?

ryanflorence commented 6 years ago

it would be a race, but that would be some really eager clicking for the user to win.

ryanflorence commented 6 years ago

(also, when suspense ships focus won't move until the data lands, which makes things easier)