WebAIM - Web Accessibility In Mind

E-mail List Archives

Re: Examples of virtual buffer user experience

for

From: Weston Thayer
Date: Jan 12, 2021 1:15PM


One real-world example I ran into last year was a custom checkbox component
that properly changed state while using the keyboard using SPACE. It also
worked fine with SPACE while MacOS VoiceOver was on. But navigating to it
with NVDA and hitting SPACE had no effect. Further investigation showed
that SPACE worked with NVDA if you forced it into forms mode, but not in
browse / virtual buffer/cursor mode (which is the default and works fine
with native checkboxes). Interestingly, it also did not work in VoiceOver
if you used VO + SPACE instead of only SPACE.

This strange behavior arises because MacOS VoiceOver doesn't use a virtual
buffer/cursor/browse mode (caveat: it has a semi-browse mode if you turn on
quick nav, but that's off by default). When you press SPACE, the keyboard
event goes through to the target application just like it would if
VoiceOver wasn't running. However, NVDA in browse mode does not send the
SPACE keyboard event. Instead, it uses the OS accessibility APIs to call
the "invoke" method on the node in the browser accessibility tree
currently in the virtual cursor.

The custom checkbox had modified its "click" event handler in a way that
caused the OS accessibility API's "invoke" method to fail (it had a call to
e.stopPropagation(), but I think there were more issues at play). It
appeared to work correctly with MacOS VoiceOver and pressing SPACE because
a different code path was taken (the "keydown" event handler).

Sure, you may have discovered this bug using only MacOS VoiceOver if you
tried VO+SPACE instead of just SPACE, but even if you did you might not
determine the impact is severe without understanding what happens in NVDA
(inoperable by default).

Weston Thayer
https://assistivlabs.com

On Tue, Jan 12, 2021 at 11:58 AM cb < <EMAIL REMOVED> > wrote:

> Hey all,
>
> I'm looking for concrete examples of how user experience differs between
> VoiceOver on Mac and Jaws or NVDA on Windows. (Or more generally, between a
> screenreader that uses a virtual buffer and one that doesn't.)
>
> The context is that my colleagues and I do a lot of talking to developers
> who use the Mac platform and test their own code for accessibility using
> VoiceOver. If we report a bug we've discovered via Jaws or NVDA, we often
> get pushback that they can't reproduce it on VoiceOver.
>
> I can send them the WebAIM screenreader survey results that show
> demographics and usage statistics, and I can talk generally about the
> differences between the tools, but I'd love to have some illustrative
> examples of types of things they miss when they rely solely on tests
> conducted with VoiceOver. These could be accessibility violations, bugs,
> big differences in UX, etc.
>
> Have you run across something that makes a good example that I could
> explain to people with varying levels of coding and accessibility
> expertise? And for my own education, I'd like to hear more about the
> low-level differences between platforms so I can get better at diagnosing
> these issues.
>
> Thanks
>
> Caroline
> > > > >