git clone https://www.github.com/marcysutton/js-a11y-workshop
cd js-a11y-workshop
npm install
npx gatsby develop
Debugging
Render in web browsers
Test with keyboard
Use a11y web extensions (good for smoke testing)
Check color contrast (#1 problem on the web)
Test with screen readers (recommended to pair with someone who uses them daily)
Use magnification & zoom
App Testing In The Wild
If you have trouble figuring out where you are on the screen, click to set focus point
Number of items on Slack JSON viewer that couldn't be reached
Visual outlines are very important for a number of people
<a> without href attribute is NOT focusable - if you need something interactive, the button may have been the better choice.
Github uses the Skip to content
Elements should not have a tabindex > 0 (best practise more than outright violation)
Fn + Cmd + F5 to start Mac voiceover (NOTE: key navigation changes with voiceover)
Tests NVDA on Mac using VM
Local build is done for testing a11y
Hidden vs Visible CSS
Can affect where focus can go
Presenter uses .visually-hidden class to take an HTML and render it so it is part of the a11y info but visually hidden visually. Common utility, but sometimes not the right tool.
Contents is still there for a11y APIs
opacity is used for reserving space, still being rendered and contents still available for a11y APIs
display: none hides from assistive technology (a11y info being ignored)
visibility: hidden still reserves space, but hides a11y info