The art of writing accessibility issue documentation

There are several ingredients for effective accessibility issue documentation. In this post, I describe what I include in writing accessibility issues and how that helps progress remediation work. I outline how I structure issue documentation drawing on an example issue of icon buttons in a toolbar.

Use issue-tracking tools #

A modern issue-tracking tool such as Jira is a powerful collaborative issue documentation space. Whatever tool you use, a solid structure maximises the effectiveness of accessibility issue write-ups.

Describe the benefits #

Introduce benefits that can be realised from resolving the issue. Using plain language describe user-centred gains that can motivate action. For example:

Using visible text in each icon button will benefit:

  • Mobile phone users.
  • Keyboard-only users.
  • Screen magnifier users.
  • Screen reader users.
  • Users with fine motor skill impairments.
  • Users with cognitive impairments

Scope and components #

List pages and templates where the issue is observed.

This issue relates to icon buttons in a toolbar above each data table. Found on the following pages: Page 1, Page 2, etc.

Additionally, when accessibility issues are found in design system components, reference the component guidance.

How to reproduce the issue #

A list of steps to reproduce the issue helps build understanding and enables the use of inspection tools for examining code.

I start with an orienting step such as navigating to a certain page.

Step two may include using a bookmarklet to show the problem. For example, when documenting an issue with icon buttons in a toolbar:

Click the “List Buttons” bookmarklet (from your bookmarks bar).

A series of icon buttons, one of them hovered with a pointer showing a tooltip "Open filters".
Also shown is output of the List Buttons bookmarklet, where there may be issues.
A screenshot showing actual results from following the steps to reproduce the issue.

Actual and expected results #

Describe the actual or current experience followed by what the experience should be. When the experience is accessible, what will it be like?

In the case of our button toolbar, I described these actual results:

  • Buttons have a title attribute that does not serve 1:
    • mobile and tablet users
    • assistive tech users
    • keyboard-only users
  • Buttons lack visible onscreen text.

Usually we have only 1 expected result, and it often contrasts with the actual result. However, there are several ways to create a more accessible2 button toolbar. In the expected results, I described these options:

  • Option a: each button has an icon plus onscreen text.
  • Option b: each button has an icon plus hidden text serving some screen reader users.

Providing options made it easier to scope progress on remediation work and to engage teammates on their accessibility literacy journey3.

Writing your recommendations #

This part requires thoughtful consideration and collaboration amongst designers, developers, testers, and product roles. Our icon button toolbar has 2 actual problems and 2 recommendations.

My first recommendation was to remove the redundant title attribute from each <button> element. This sparked a question:

Why do we need to remove the title attribute? My understanding is we generally want to keep it as it provides further context (a user can hover and see the title)

A conversation and a skim through Using the HTML title attribute led to an awareness of ableism and its impacts here.

My second recommendation was to add visibly hidden text in each button, as an interim measure. This also stimulated a question:

Is there a reason to use a hidden text node instead of an aria-label here?

To answer this, I referred to another authoritative resource, My Priority of Methods for Labeling a Control. In that post, Adrian lists this order when assigning an accessible name:

  1. Native HTML techniques,
  2. aria-labelledby pointing at an existing visible text,
  3. Visibly hidden content that is still on the page,
  4. aria-label.

For both options 3 and 4, “The only users who will know it is there are screen reader users.” Some of the reasons aria-label is a last resort:

  • aria-label content cannot be relied on for translation
  • aria-label content will not become visible when CSS or scripts fail to load

Using information from authorities is highly effective in supporting your recommendations.

Write acceptance criteria to indicate success and done #

Write acceptance criteria to clarify when an accessibility issue will be resolved. Use a structured, easy-to-understand format, such as the Given-When-Then format4. Your project might adopt and adapt these 10 Accessibility Acceptance Criteria. For our icon buttons:

AAC9 Alt text
Given I use a screen reader,
When I encounter a button with visibly hidden text,
Then I can understand the button content non-visually.

Each accessibility acceptance criteria follows the format of user + action + outcome 
and centres the story on the user’s requirement.

Ross Mullen 5

Additionally, linking acceptance criteria can help testers identify relevant checklist items. I’ve written previously on how accessibility acceptance criteria uplifted team capability.

Only 1 WCAG guideline per issue #

Help teammates find the guidelines that affect their role and responsibilities, and those that are appropriate for a given feature. For our icon buttons, there is a guideline for the icons:

WCAG
1.1.1 Non-text Content – Level A
https://www.w3.org/WAI/WCAG22/quickref/#non-text-content

Delving deeper, the interaction shows the buttons are behaving as toggle buttons. For example, open/close filters and show/hide search. In a separate issue, I documented the need for a toggle role and the current state of show/hide to be conveyed audibly. I’ll leave it to you to name the appropriate guideline for that.

Useful labels for filtering, prioritising and reporting #

Accessibility audits often target a particular standard and level of conformance. For example, Government projects started before September 2024 may have contractual obligations for conformance with WCAG 2.0 up to level AA. Useful labels for filtering and prioritising include:

  • accessibility
  • WCAG_2.0
  • Level_A
  • Level_AA

Forms for authentication and collecting personal data may benefit from autocomplete functionality or turning autofill off for privacy. 1.3.5 Identify Input Purpose is a guideline from WCAG 2.1. Authentication guidelines arrived in WCAG 2.2. To group issues according to their guideline version, I use labels:

  • WCAG_2.1
  • WCAG_2.2

My audits are scoped to several pages and components and performed over a few days. Chronologically grouping issues, I label issues:

  • audit_1
  • audit_2

Labels for 8 testing themes #

Web content accessibility guidelines map resembling an underground train map.
The map resembles an underground train map, showing 86 success criteria as stations across 8 lines.

In Andrew Hick’s WCAG 2.2 map by theme6, “all the criteria that can be tested using a keyboard are on one line.” Each of the 8 lines groups several WCAG guidelines into practical themes for testing. The guideline we identified earlier for icon buttons, 1.1.1 Non-text Content, maps to themes:

  • Sensory
  • Code & labels
  • Wording

I add the themes as labels. After remediation work, we test whether each theme’s criteria are met. Criteria are listed on the web page at the start of each theme. For example, Sensory:

These criteria prevent content from being reliant on particular senses, by:

  • avoiding audio or video distractions
  • having enough contrast
  • not relying on vision, colour, hearing or timing

Link issues to communicate related work. Developers gain efficiency by remediating issues on the same component or common templates. In this case, once I had separately documented the need for a toggle button’s interactive state to be conveyed audibly, I linked these related issues.

Share tools and resources #

Sharing tools and resources appropriate for a given feature is a frame of Devon Persing’s Accessibility Literacy Framework. It helps people in their accessibility learning and practice.

One of the fantastic A11y Tools bookmarklets is List Buttons.

In addition to the resources mentioned throughout this post, I also link to exemplar components and patterns that solve interaction problems. In the case of our icon buttons toolbar:

Edit for conciseness #

Save your audience’s precious time. Edit your accessibility issue documentation. Ask for feedback from your audience to help you edit it further. Make it brief. Any parts that can be left out will save everyone time. You might consider iterative editing a shift-left approach to effective issue documentation.

Summing up #

I believe there is an art to writing successful accessibility issue documentation. This structure and ingredients made my accessibility issue write-ups useful and usable by the audiences responsible for progressing the work. Product owners, designers, developers, and testers have praised my issue write-ups. Comprehensive documentation made it easier for everyone to perform their role7 in creating more inclusive digital experiences.

What else could help make accessibility issue documentation more effective? What works in your team to catalyse conversations about accessibility, raise accessibility literacy, and progress remediation? Let me know in the comments.

Footnotes #

  1. Using the HTML title attribute – updated March 2020 by Steve Faulkner ↩︎
  2. Perfection is the enemy – Principles Of Web Accessibility by Heydon Pickering et al ↩︎
  3. The Accessibility Operations Guidebook by Devon Persing ↩︎
  4. Where did the term “Gherkin” originate and get used with Agile User Stories? ↩︎
  5. How Australian supermarket Coles creates accessible user stories by Ross Mullen ↩︎
  6. WCAG 2.2 map by theme – AAA version by Andrew Hick ↩︎
  7. Developing a RACI matrix for accessibility by Karl Groves ↩︎

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.