Accessibility Beyond Automated Checks

Treat axe as a gate, not a verdict. Walk the keyboard path, names, and focus, and keep the issues tools cannot see.

This post is part of the QA General series. If you missed the previous post, read Part 6 — Exploratory Testing first.


Introduction — The Gate Went Green

The pull request runs axe. It is green. A keyboard user still cannot reach the pay button, because the button is a clickable div that axe scored as a different issue you marked “won’t fix,” or because focus moves to a heading and the action is elsewhere.

Automated checks find a real set of failures: missing names, broken contrast on plain text, images with no alternative. They do not finish the job. This post is the pass you still do yourself.

A Twenty-Minute Charter

Timebox one flow, the same way part 6 timeboxes an exploratory session. The charter is specific: “Can someone complete checkout with a keyboard only, and hear each error?”

On that flow, check:

  1. Reach. Tab reaches every control. Shift+Tab comes back. Nothing traps the user except a dialog, and Escape leaves the dialog.
  2. Order. Focus follows the visual order. It does not jump to the footer in the middle of the form.
  3. Name. The focused control has a name you would say out loud. “Button” and “edit” are failures.
  4. Visible focus. You can tell where you are. A focus ring that matches the background is a failure even when the contrast tool looked at body text.
  5. Errors. After a rejected submit, focus moves to the error or the error is announced. A red border alone is not an error.

Write defects as “keyboard user cannot submit shipping” with the steps. Do not write “accessibility.”

What the Tool Keeps

Leave axe, or the equivalent in your component tests, on the pull request. It is cheap and it stops the regressions it understands. Do not waive a serious name or contrast failure to make the gate green. Waiving is how the manual pass inherits a broken start.

Do not add five overlapping accessibility plugins to feel safer. One tool, read, plus the charter above.

What Only a Person Sees

  • instructions that exist only as colour or as a placeholder
  • a dialog that opens and leaves focus on the page behind it
  • a custom dropdown that opens on click and ignores the arrow keys
  • text baked into an image, including the hero that the contrast checker never parsed
  • a session timeout that is visible only as a silent redirect

These are the notes at the bottom of the session sheet. They are not a reason to turn the tool off.

Conclusion

Automated checks are the gate. The keyboard pass is the test. Schedule it on one important flow, file what you could not do, and keep the tool for the failures it is actually good at.

Action for this week: Turn off the mouse. Complete one critical flow with the keyboard. File the first place you get stuck, with the control’s accessible name in the steps.


This concludes the QA General series.