Keyboard testing quick reference
The conventions used throughout this site's component pages, and the general rules to check any custom widget against.
Last verified against WCAG 2.2 and WAI-ARIA APG 1.2 on 2026-07-02.
Global keyboard shortcut legend
| Key | Behavior |
|---|---|
| Tab | Moves focus to the next focusable element in DOM/visual order. |
| Shift+Tab | Moves focus to the previous focusable element. |
| Enter | Activates the focused link or button; submits the focused form. |
| Space | Activates the focused button, toggles the focused checkbox/switch, or scrolls the page if focus is on the document body. |
| Arrow keys | Move selection/focus within a composite widget (menu, tablist, listbox, radio group, slider) — never used for page-level navigation. |
| Home / End | Move to the first / last item within a composite widget, or the top/bottom of a scrollable region. |
| Escape | Dismisses a transient UI element (menu, dialog, tooltip, popover) without committing a change, and returns focus to a sensible place. |
| Page Up / Page Down | Scrolls a large view (e.g. a slider or scrollable list) by a larger increment. |
General testing rules
- Arrow keys operate only inside a single composite widget — they should never move focus to a different, unrelated widget on the page.
- Anything a mouse can activate must also be reachable and activatable by keyboard alone (SC 2.1.1).
- Focus must never become trapped in a region a user can't Tab or Escape their way out of, except intentionally inside an open modal dialog (SC 2.1.2).
- Tab order should follow visual/reading order — components positioned visually later shouldn't receive focus earlier (SC 2.4.3).
- A visible focus indicator (2px minimum, 3:1 contrast against its background) must be present on every focusable element (SC 2.4.7).
How to run a keyboard-only pass
- Unplug or ignore your mouse/trackpad for the entire pass.
- Starting from the browser address bar, press Tab repeatedly through the whole page.
- At every stop, confirm you can see where focus is (SC 2.4.7) and that the order makes sense (SC 2.4.3).
- For every interactive control, try to complete its task using only keyboard keys documented on that component's page.
- Confirm you can always get back out — no dead ends, no traps.