Using a screen reader is very different than using a monitor and mouse. Testing with a screen reader can be challenging for individuals who have sight, and well-intentioned testers sometimes get it all wrong. The following guidelines can help:
Use the Right Screen Reader
JAWS is the most widely-used screen reader, but it is expensive. NVDA is a free, open-source screen reader that is similar to JAWS and a good option for testing on a budget. On Mac and iOS, VoiceOver is built in, but beware that it works a little differently that the others. We usually don't recommend testing with less common/less full-featured screen readers like Narrator or ChromeVox.
Put Down your Mouse!
While testing with a screen reader, NEVER use the mouse. Since users who are blind cannot use a mouse, using a mouse invalidates screen reader testing. To avoid the inevitable temptation, move the mouse out of reach. It's also cheating to look at the screen to fill in gaps in what you're hearing. To avoid this temptation, at least when you're getting started, turn off your monitor.
Using a screen reader is not a passive experience. Take control using the following keyboard commands:
- Ctrl will temporarily silence your screen reader. (The Ctrl key will be your friend!)
- Ctrl + Home will usually move your screen reader's focus to the top of the current window, which is usually the best place to start.
- Insert + J (for JAWS) or Insert + N (for NVDA) will bring up the screen reader settings window. Use it to adjust the speech rate before beginning, but don't change anything else!
Learn to Read
Open a web browser and go to a simple web page, preferably one that you know is accessible. Use the following commands to get started reading:
- Ctrl + Home: After the screen reader begins reading the page, interrupt it and re-start at the top of the page. JAWS will read the page title to help confirm you're where you meant to be.
- Down Arrow: Read down the page a "line" at a time. Down Arrow will move to and read the next element, which may be a heading, paragraph, list item, link, form field, table cell, etc. (and may span multiple visible "lines" on the screen). Note that the screen reader may say more than is visible on the screen, for example, indicating a heading level or number of items in a list. You may also hear it say "blank"; screen reader users get used to ignoring this.
- Up Arrow: If you need to back up and re-read something, use Up Arrow to re-read the previous line.
Skip to Headings
Get an overview of a web page by reading its headings using any of the following commands
- H: Read the next heading (of any level),
- Number key (e.g., 1, 2, 3): read the next heading at that level, or
- Insert + F6 (JAWS) or Insert + F7, Alt + H (NVDA): Bring up a list of all the headings and skip to the one you're interested in. Move between controls in this (or any) dialog box by using Tab and Shift + Tab and Spacebar or Enter to click the OK button.
Find and Follow Links
Move to and use links with the following commands:
- Tab: Move to the next link (or form field)
- Shift + Tab: Move back to the previous link (or form field)
- Enter: Activate the current link
- Insert + F7 (JAWS or NVDA): Bring up the "Links List" to quickly find, move to, and/or activate a specific link.
JAWS and NVDA have powerful, if somewhat complicated, tools for reading tables of data. When they encounter a table, they will say "table with x columns and y rows". After hearing that announcement, press Down Arrow to enter the table and then use the following commands:
- Alt + Ctrl + Right Arrow to read across the row. If you are in the body of the table, the screen reader should say the header of each column so you know what you're reading (assuming the table headers are coded correctly!) When the screen reader says it's at the end of the row, press Down Arrow to move to the first cell of the next row and repeat the process.
- Alt + Ctrl + NumPad 5 (JAWS) or Insert + NumPad 5 (NVDA) will read the current cell with associated row and column headers. Try this periodically to confirm that the table headers have been coded correctly.
- Alt + Ctrl + Up/Down/Left/Right Arrows : Move around the table in any direction. The screen reader will read the associated header of the new column or row (if it has been coded correctly).
- Alt + Ctrl + Home: Move to the beginning of the table.
- Alt + Ctrl + End: Move to the end of the table.
Filling web forms requires the use of a special "Forms Mode" so keyboard commands enter data rather than performing special functions (like reading a heading when you press "H"). JAWS and NVDA will automatically switch in and out of forms mode -- you will hear a "pop", "chime", or other tone when forms mode turns on and off. While in Forms Mode, some keyboard commands do different things:
- Tab: Move to the next form field (or link).
- Insert + Tab: Re-read the name of the current form field (or link).
- Shift + Tab: Move back to the previous form field (or link).
- Up & Down Arrow: Move between items in a list box, combo box, or radio button group.
- Spacebar: Check or uncheck a checkbox or press a button. (Enter may also work on buttons, but Spacebar is safer.)
- Esc: If you seem to be stuck in forms mode, Esc will usually turn it off. (If you're really stuck, try the "+" key on the number pad.)
With a little practice, it is very possible for sighted users to learn to test with a screen reader. The most important practice is to resist the temptation to cheat: Avoid looking at the screen during testing (better yet, turn it off). Don't even try to remember what the screen looks like to fill in information you can't get by listening. And never, ever use the mouse.
Remember that, behind the scenes, a screen reader is performing a complex technical task. Glitches, flukes, and even crashes can unfortunately happen. Learning to use a screen reader requires learning the patience and persistence to re-group from these errors and continue on.
Finally, you will discover that screen readers have many powerful, advanced features; but, remember, just like other computer users, most users are only familiar with the basics. We want to test like a typical user, not find ways to use advanced features to get around problems.