Slide instructions

SPACEBAR to move forward through slides.

SHIFT & SPACEBAR to move backwards through slides.

LEFT ARROW & RIGHT ARROW to move through sections.

ESC to see overview and ESC again to exit.

F to enter presentation mode and ESC to exit.

Creating Accessibility Acceptance Criteria

John Slatin AccessU 2026

Acknowledgement of Country

As I am based in Australia, I’d like to acknowledge the Traditional Owners of the lands on which I’m hosting this meeting today.

I’d like to pay our respects to Elders past and present, and extend to all First Nations people present today.

In my case, I am on the lands of the Cammeraygal people of the Eora Nation.

If you know the traditional owners of the land that you are on today - anywhere in the world, please feel free to share in chat.

Part 1:
Introduction

What will we cover

Part 1: Introduction
  • What are acceptance criteria?
  • What about accessibility acceptance criteria?
  • Where can these criteria be used?
  • Two levels?
  • Component level acceptance criteria
  • Page and user-flow level acceptance criteria
Part 2: Writing page and user-flow accessibility criteria
  • Why is this level of acceptance criteria so important?
  • Some common page or flow-level accessibility barriers
  • How do you create accessibility acceptance criteria?
  • Why so many steps?
  • Why write the tests before our acceptance criteria?
  • The steps and activities
Part 3: Writing component-level accessibility criteria
  • The steps and activities

We will probably have a 5 min break around the hour mark.

This is an interactive session

During this session, I’ll invite you to take part in a series of short activities.

I’ll ask you to respond in the chat, but you can raise your hand if you’d prefer to answer verbally.

Please use whichever participation method works best for you.

The activities are voluntary, so you do not need to take part if you would prefer not to.

Are the slides available?

These slides are a single HTML file, which you can access any time.

https://bit.ly/2026-accessu

What are acceptance criteria?

I’m going to do a quick overview of the broader concept of acceptance criteria for those who may be unfamiliar.

Acceptance criteria are specific, clear, and testable conditions that a product, feature, or user story must meet to be accepted as complete.

What acceptance criteria do

Create shared understanding

Align the team on what needs to be delivered.

Define “done”

Confirm when a feature or story is complete.

Set scope

Clarify what’s in/out, reducing scope creep.

Guide development

Help developers build the right thing.

Support testing

Provide a checklist for testers to verify success.

Key characteristics

Clear and concise

Easy to read and understand.

Testable

Each point can be verified.

User-focused

Written from the end-user’s perspective.

Specific

No ambiguity about what must be done.

What about accessibility acceptance criteria?

Accessibility acceptance criteria define the accessibility requirements that must be met for a product or feature to be considered accessible.

Where can these criteria be used?

Definition of done

Used to confirm accessibility requirements have been met before work is considered complete.

User stories

Added to stories to define accessibility expectations before work begins.

Design requirements

Help designers define accessible interactions, layouts, and content behaviours.

Development guidance

Provide developers with clear, testable accessibility expectations during implementation.

Test cases and Qaulity Assurance

Support testers in verifying accessibility requirements consistently.

Design systems and components

Define reusable accessibility requirements for shared patterns and components.

AI prompts

Included in AI prompts to help generate designs, code, and content that consider accessibility requirements from the start.

skills.md files

Added to skills.md files to provide consistent accessibility guidance and expectations for AI-assisted workflows and development tools.

What are skills.md files?

Documents that give AI task-specific instructions, workflows, tools, and best practices.

Two levels?

In this session, we’ll explore two levels of accessibility acceptance criteria:

  1. component level
  2. page or user-flow level

We’ll also look at when each level should be used, why both are important, and how they work together to support accessible digital experiences.

Page and user-flow level acceptance criteria

What are pages and user flows?

Pages are complete views or screens that present content, functionality, or interactions within a digital product.

They often bring multiple components together into a single layout to support a user’s goal.

Page examples:
  • Contact form
  • Dashboard screen
  • Search results page
  • Settings/preferences page

User flows are end‑to‑end sequences of pages, states, or interactions that guide a user through completing a task or achieving an outcome.

Each step in a flow can involve multiple components or pages working together.

User flow examples:
  • Login process
  • Submit a complaint process
  • Get a quote process
  • Reset password process
What are page and user-flow level acceptance criteria?

Testable checks that apply to full pages or complete user flows (e.g. sign-up, checkout).

What’s their purpose?

To ensure accessibility is considered and tested across entire journeys, not just individual components.

Example:

All interactions — including navigation, opening/closing elements, entering data, and submission — can be completed using only a keyboard

Where they fit:
  • In user stories, epics, and sprint tickets.
  • As part of the “Definition of Done”.
  • As part of QA and UAT testing for full journeys.
  • During design reviews of entire pages or flows.
  • In backlog refinement to identify gaps early.
Owners:
  • POs and BAs: define expected outcomes for pages and user journeys.
  • Designers: ensure accessible design across pages and user journeys.
  • Developers: implement accessibility across pages and user journeys.
  • Testers/QAs: verify pages and user journeys meet expectations.

Why is this level of acceptance criteria so important?

Many teams focus heavily on individual UI components — and that’s important.

In fact, we’ll be covering component-level accessibility criteria a bit later.

But there are also critical accessibility issues that only surface at the page or user-flow level.

These can affect how people navigate, understand, and interact with your product as a whole — not just one element at a time.

Some common page or flow-level accessibility barriers

Poor heading hierarchy

Making it harder to understand page structure for screen reader users.

Lack of focus management

Such as modals or dynamic content not receiving focus.

Incorrect focus order

Where source order, focus order, and visual reading order are misaligned.

Inconsistent navigation patterns

Causing disorientation for users relying on predictability.

Insufficient instructions or feedback

Particularly in multi-step flows like forms or checkouts.

Missing or unclear page titles

Making it harder for screen reader users to identify where they are.

Keyboard traps or inaccessible interactions

Especially in dynamic content like popups or menus.

Overwhelming cognitive load

Due to too many competing elements or unclear tasks on a single page.

Timeouts without warning

Such as sessions that expire mid-task without alerting the user.

These types of issues can’t be caught by checking individual components in isolation.

That’s why writing acceptance criteria at the page or flow level is such a valuable practice.

Component level acceptance criteria

What are UI components?

UI components are distinct interface elements that perform a specific function within a digital interface.

They are the building blocks of websites and applications, designed to be reused in different contexts.

Simple UI component examples:
  • Form fields
  • Labels
  • Buttons
Complex UI component examples:
  • Autocomplete dropdowns
  • Modals
  • Date pickers
  • In-page tabs
What are component level acceptance criteria?

Testable checks for reusable interface components (e.g. buttons, form fields, modals, and carousels).

What’s their purpose?

To ensure accessibility is considered and tested for all components, regardless of where or how they’e used.

Example:

The dropdown can be opened using keyboard controls (e.g. Tab + Enter or Space)

Where they fit:
  • In automated and manual testing checklists for individual UI components.
  • In pattern documentation that guide consistent implementation.
Owners:
  • Design system leads: define criteria for consistent, accessible components.
  • Designers: design UI components that meet accessibility requirements.
  • Developers: build components to meet accessibility requirements.
  • Testers: test componenta to ensure they meet accessibility requirements.

Part 2:
Writing page and user-flow accessibility criteria

How do you create accessibility acceptance criteria?

There are many ways to create accessibility acceptance criteria for pages and user flows.

The following steps can be used to teach you how to write robust and inclusive critera.

  • Step 1. Choose a page or user flow you want to review.
  • Step 2. Pick a user group to focus on.
  • Step 3. Consider how this group might interact with the page or flow.
  • Step 4. List potential barriers they may encounter.
  • Step 5. Turn each barrier into a test question.
  • Step 6. Reframe each test as a positive statement (criteria).
  • Step 7: Add simple steps to test each criteria.
  • Step 8: Repeat steps 2–7 for each user group.

Why so many steps?

As you get more confident, you’ll find you can move through these steps more quickly.

You may end up being able combine some steps—but the thinking behind each step is still important!

It helps make sure we’re considering a range of different users and their needs.

Why write the tests before our acceptance criteria?

It’s easier:

Framing accessibility as a question (“Can this be done with a keyboard?”) feels more natural than writing formal criteria upfront.

It adds rigour:

Each test forces you to think about real-world usability and edge cases.

It supports QA:

These test questions become a ready-made checklist for quality assurance and user acceptance testing — especially across full flows.

Step 1. Choose a page or user flow you want to review

Page examples:
  • Contact form
  • Dashboard screen
  • Search results page
  • Settings/preferences page
User flow examples:
  • Login process
  • Submit a complaint process
  • Get a quote process
  • Reset password process
Activity

We will use a simple contact form flow:

https://bit.ly/2026-accessu-form

Step 2. Pick one user group to focus on

Pick one of these user groups:
  • People with no vision
  • People with reduced vision
  • People with reduced colour vision
  • People with reduced movement
  • People with varied learning or cognition
  • People with reduced or no hearing

Why focus on user groups?

No group gets left out
  • With this process, you look at each user group in turn.
  • This means that all groups of people are considered.
  • And often-forgotten groups are included.
Focuses your attention
  • Accessibility can feel overwhelming.
  • Focusing on one group at a time makes it more manageable.
  • Helps you write clearer, more focused acceptance criteria.
Shifts the mindset from compliance to inclusion
  • Focusing on people, not rules, changes your approach.
  • You shift from “what does WCAG say?” to “what does this user need?”.
  • Leads to more practical, human-centred outcomes.

The order

When writing accessibility acceptance criteria, the order in which we consider user groups matters.

Ideally, we should focus first on the appearance and usability of the component, then move toward more technical or structural aspects.

That’s why I recommend this order:

Start with people with varied learning or cognition.

If a component doesn't work for this group, it likely has fundamental issues with content, clarity, or UX.

These problems should be resolved before moving on — otherwise, you're building accessibility on a weak foundation.

Then consider people with reduced colour vision and reduced vision.

These groups help you assess the visual presentation of the component — including contrast, layout, text size, and use of colour.

Finally, focus on people with reduced movement and people with no vision.

These groups help you uncover technical and structural issues, like keyboard operability, focus order, screen reader compatibility, and correct semantic markup.

Activity

For our activity soon, we will focus on people with reduced movement.

Step 3. Consider how this group might interact with the page or flow

For this step, we want to understand how people interact with the page or flow.

Each user group may rely on different assistive technologies, settings, or preferences to access digital content.

Do they use?
  • A keyboard or a keyboard alternatives?
  • Screen reader?
  • Voice control?
  • Magnification?
  • A user-setting change the display (e.g. magnify, zoom)?
  • Captions?
  • Simplified layouts?
Activity

For our example group - people with reduced movement - this could include:

  • Keyboard only.
  • Keyboard alternatives: Mouth stick ,head pointer, sip and puff device, switch etc.
  • Some sort of voice control.

Step 4. List potential barriers they may encounter

In this step, we think from the user’s perspective to help identify barriers these users may face.

Activity:
Identifying accessibility barriers

  • Step 1: Simple contact form flow
  • Step 2: People with reduced movement
  • Step 3: Keyboard or keyboard equivalent
  • Step 4. In chat, list potential barriers this group may encounter when using the contact form flow

Step 5. Turn each barrier into a test question

Now we need to write each potential barrier as a short question with a clear pass/fail outcome.

Each test question should be phrased so that when someone tests it and the outcome is accessible, they can confidently say: “Yes, it passes!”

If the answer is “No”, that’s a clear sign of a failure — something is missing or needs fixing.

Test question

Are instructions, labels, and feedback easy to understand? (PASS/FAIL)

A pass would mean “Yes, instructions and labels are easy to understand!”.

A fail would mean “No, instructions and labels are NOT easy to understand!”.

Tips for test questions:
  • Phrase as a question
  • Must be testable (pass/fail)
  • Only one test per statement
  • Use simple, user-focused language
Common mistakes with test questions
  • Too broad
  • Too vague
  • Multiple concepts in one statement
  • Not phrased as a question
  • Not testable or measurable

Activity:
Write some test questions

I will ask you to rewrite each potential barrier as short questions with a clear pass/fail outcomes.

Convert this barrier into a test question:

Incorrect focus order

Possible answer:

Does keyboard focus move through the page in a logical and meaningful order? (PASS/FAIL)

Convert this barrier into a test question:

Keyboard traps

Possible answer:

Can keyboard users move to and away from all interactive elements without becoming trapped? (PASS/FAIL)

Convert this barrier into a test question:

Missing skip mechanisms

Possible answer:

Is there a way for keyboard users to skip repeated content and move directly to the main content or form? (PASS/FAIL)

Convert this barrier into a test question:

Auto-focus issues

Possible answer:

Does focus remain stable and predictable while interacting with the page? (PASS/FAIL)

Convert this barrier into a test question:

Custom controls that are not keyboard accessible

Possible answer:

Can all custom controls be accessed and operated using only the keyboard? (PASS/FAIL)

Convert this barrier into a test question:

CAPTCHA barriers

Possible answer:

Can CAPTCHA or verification steps be completed using only the keyboard? (PASS/FAIL)

Convert this barrier into a test question:

Timeouts or session expiry

Possible answer:

Do users have enough time to complete tasks without unexpected timeouts or session expiry? (PASS/FAIL)

Convert this barrier into a test question:

No visible indication of the current field

Possible answer:

Is the currently focused element always clearly visible? (PASS/FAIL)

Convert this barrier into a test question:

Inconsistent keyboard interactions

Possible answer:

Do interactive elements follow expected keyboard interactions and behaviours? (PASS/FAIL)

Convert this barrier into a test question:

Multi-step login flows with poor focus management

Possible answer:

Does keyboard focus move correctly through each step of the login process? (PASS/FAIL)

Convert this barrier into a test question:

Blocked paste functionality

Possible answer:

Can users paste information such as passwords or verification codes into relevant fields? (PASS/FAIL)

Step 6. Reframe each test as a positive statement

Next, we need to reframe each test from a question into a positive statement.

These statement become your final acceptance criterion.

Test question

Does keyboard focus move through the page in a logical and meaningful order? (PASS/FAIL)

Acceptance criteria

Keyboard focus moves through the page in a logical and meaningful order.

Test question

Can keyboard users move to and away from all interactive elements without becoming trapped? (PASS/FAIL)

Acceptance criteria

It is possible to move to and away from all interactive elements without becoming trapped.

Test question

Is there a way for keyboard users to skip repeated content and move directly to the main content or form? (PASS/FAIL)

Acceptance criteria

There is a way to skip repeated content and move directly to the main content or form.

Tips for acceptance criteria:
  • Must directly match the related test question
  • Use clear, affirmative language (state what should happen)
  • Keep to one idea per statement
  • Use simple, user-focused language
  • Phrase as an outcome rather than a process or instruction
Common mistakes with acceptance criteria
  • Too vague or generic
  • Doesn’t match the test question
  • Negative or conditional language
  • Multiple concepts in one statement
  • Not outcome-based

Activity:
Converting questions into positive statements

I will ask you to convert each test question into a positive statement - the final acceptance criteria.

Test question:

Does focus remain stable and predictable while interacting with the page? (PASS/FAIL)

Acceptance criteria:

Focus remains stable and predictable while interacting with the page.

Test question:

Can all custom controls be accessed and operated using only the keyboard? (PASS/FAIL)

Acceptance criteria:

All custom controls can be accessed and operated using only the keyboard.

Test question:

Can CAPTCHA or verification steps be completed using only the keyboard? (PASS/FAIL)

Acceptance criteria:

CAPTCHA or verification steps can be completed using only the keyboard.

Test question:

Do users have enough time to complete tasks without unexpected timeouts or session expiry? (PASS/FAIL)

Acceptance criteria:

There is enough time to complete tasks without unexpected timeouts or session expiry.

Acceptance criteria:

Do users have enough time to complete tasks without unexpected timeouts or session expiry? (PASS/FAIL)

Acceptance criteria:

Keyboard focus remains visible and moves predictably after actions are completed.

Test question:

Is the currently focused element always clearly visible? (PASS/FAIL)

Acceptance criteria:

The currently focused element is always clearly visible.

Test question:

Do interactive elements follow expected keyboard interactions and behaviours? (PASS/FAIL)

Acceptance criteria:

Interactive elements follow expected keyboard interactions and behaviours.

Test question:

Does keyboard focus move correctly through each step of the login process? (PASS/FAIL)

Acceptance criteria:

Keyboard focus moves correctly through each step of the login process.

Test question:

Can users paste information such as passwords or verification codes into relevant fields? (PASS/FAIL)

Acceptance criteria:

Information such as passwords or verification codes can be pasted into relevant fields.

Step 7. Add simple steps to test each criteria

We now have test questions and acceptance criteria for each potential barrier.

The final step is to create some simple steps to test each criterion.

These steps can be used by QA, or anyone else in the team, to determine whether the criteria pass or fail.

Activity:
Add some simple steps to test

I will ask you to add a series of simple steps that could be used to test our acceptance criteria.

Acceptance criteria: Keyboard focus moves through the page in a logical and meaningful order.

Test question: Does keyboard focus move through the page in a logical and meaningful order? (PASS/FAIL)

Simple steps to test:
  1. Use your keyboard only (no mouse).
  2. Use TAB to move forward through the page.
  3. Use SHIFT + TAB to move backward through the page.
  4. Check that focus moves in an order that matches the visual layout and expected task flow.

Acceptance criteria: It is possible to move to and away from all interactive elements without becoming trapped.

Test question: Can keyboard users move to and away from all interactive elements without becoming trapped? (PASS/FAIL)

Simple steps to test:
  1. Use your keyboard only (no mouse).
  2. Use TAB and SHIFT + TAB to move through all interactive elements.
  3. Check that you can move into and out of each element or section without getting stuck.

Acceptance criteria:There is a way to skip repeated content and move directly to the main content or form.

Test question: Is there a way for keyboard users to skip repeated content and move directly to the main content or form? (PASS/FAIL)

Simple steps to test:
  1. Use your keyboard only (no mouse).
  2. Place focus at the start of the page.
  3. Press TAB.
  4. Check whether a skip link or similar option appears.
  5. Activate it and check that focus moves directly to the main content or form.

Acceptance criteria:There is enough time to complete tasks without unexpected timeouts or session expiry.

Test question: Do users have enough time to complete tasks without unexpected timeouts or session expiry? (PASS/FAIL)

Simple steps to test:
  1. Start the login or task flow.
  2. Pause part-way through the process.
  3. Check whether a timeout warning appears before the session expires.
  4. Check whether there is a way to extend the session.
  5. Check that the task can be completed without losing entered information unexpectedly.

Step 8. Repeat for each user group

For our login screen, focussing on people with limited movement, we now have the following information for each potential barrier:

  • Acceptance criteria
  • Test question
  • Simple steps to test

We can now repeat steps 2-7 for each user group.

  • Step 3. Consider how this new group might interact with the page or flow
  • Step 4. List potential barriers they may encounter
  • Step 5. Turn each barrier into a test question
  • Step 6. Reframe each test as a positive statement
  • Step 7. Add simple steps to test each criteria

Your acceptance criteria reference library

This is a complete set of ready-to-use page and user-flow acceptance criteria.

Each item includes:
  • Acceptance criteria
  • Test question
  • Simple steps to test
  • Definitions of pass

Part 3:
Writing component-level accessibility criteria

Why should you care about component-level accessibility criteria?

Most of the time, you’ll be working with pages, flows, or existing components from your design system.

You may not often need to design or build new components.

But there are key moments where component-level thinking becomes essential.

  1. When a component doesn’t exist in your design system
  2. When an existing component needs to behaves differently in your product

Even if you rarely build components

Component-level criteria give you the tools to define, evaluate, and request accessible behaviour at any level.

Same steps as last time?

We use the same steps from page and user-flow criteria — but with a different lens.

  • Step 1. Choose a page or user flow you want to review.
  • Step 2. Pick a user group to focus on.
  • Step 3. Consider how this group might interact with the page or flow.
  • Step 4. List potential barriers they may encounter.
  • Step 5. Turn each barrier into a test question.
  • Step 6. Reframe each test as a positive statement.
  • Step 7: Add simple steps to test each criteria.
  • Step 8: Repeat steps 2–6 for each user group.

Let’s look at how these steps change when we focus on a component.

Step 1. Choose a component you want to review

For page and user-flow level acceptance criteria, we looked at full screens or user journey (e.g., “Book a flight”).

For component level acceptance criteria, we will zoom in on individual reusable elements — buttons, modals, tab sets, carousels, autocompletes, etc.

Step 2. Pick one user group to focus on

This step is the same at both levels.

Step 3. Consider how this group might interact with the component

For page and user-flow level acceptance criteria, we focused on task completion, maintaining context, feedback, and orientation.

For component level acceptance criteria, we look at three things.

1. What the component is expected to do

(e.g. open/close, show suggestions, validate input, announce its state)

2. How users operate it using different input methods or settings

(keyboard, screen reader, voice control, switch control, zoom, large text)

3. The exact sequence of interactions

(key presses, gestures, navigation steps, announcements, state changes)

To write good component level criteria, you need to consider how different input methods behave.

Step 4. List potential barriers they may encounter

For page and user-flow level acceptance criteria, we looked at barriers that affect the overall journey.

For component level acceptance criteria, barriers become more technical and specific.

Let’s explore barriers that affect each group.

1. People with varied learning or cognition
  • Vague or unclear component labels (“Submit” vs “Confirm booking”).
  • Overwhelming options (long dropdowns, unclear categories).
  • States not visually obvious (no clear “selected”, “expanded”, or “error” states).
  • Instructions too complex or missing.
  • Feedback not visible or too far from the component.
2. People with reduced colour vision
  • Low contrast between text and background.
  • States conveyed only by colour (e.g. red error outline, green success).
  • Hover/focus/pressed states too subtle.
  • Icons that rely solely on colour distinctions.
3. People with reduced vision
  • Component breaks when zoomed (overlaps, clipping, hidden fields).
  • Text truncates or disappears.
  • Interactive elements shrink or become too small.
  • Hit areas not scaling with the text.
  • Content pushed off-screen with no way to reach it.
4. People with reduced movement
  • Component not reachable using TAB.
  • Focus order illogical or jumps.
  • No visible focus indicator.
  • Can’t operate key interactions (ENTER, SPACEBAR, ARROW keys).
  • Requires precise pointer movement.
  • Small targets without adequate hit area.
5. People with no vision
  • Missing or incorrect accessible name.
  • Incorrect role (e.g. <div> used instead of <button>).
  • Missing or incorrect state information (expanded, checked, selected, invalid).
  • Dynamic changes not announced (e.g. autocomplete results, error messages).
  • Focus not moved when necessary (e.g. opening a modal).
  • No way to reach hidden content via screen reader navigation.
6. People using voice control
  • Visible label doesn’t match the spoken command.

Step 5. Turn each barrier into a test question

As before we need to write each potential barrier as a short question with a clear pass/fail outcome.

Each test question should be phrased so that when someone tests it and the outcome is accessible, they can confidently say: “Yes, it passes!”

Additional rigour

Because components are the foundation of every interface, their test questions need to be far more rigorous than page or user-flow checks.

Many accessibility criteria are objective — such as colour contrast, keyboard access, and ARIA roles.

These must be written in a way that is explicit, measurable, and produces a clear pass/fail result.

However, criteria for people with varied learning or cognition are different.

These criteria are often UX-based and rely on clarity, predictability, and comprehension — all essential, but not always binary.

These checks still matter just as much, but their pass/fail outcome depends on UX judgement rather than a strict numerical threshold.

Step 6, 7 and 8

These steps remain the same at both levels:

Activity:
Writing some acceptance criteria

Activity 1: a simple button
  • Step 1: A submit button
  • Step 2: People with no vision
  • Step 3: Screen reader or refreshable braille devide
  • Step 4. In chat, list potential barriers this group may encounter when using this component
Activity 2: A modal
  • Step 1: A modal dialog
  • Step 2: People with reduced vision
  • Step 3: Screen magnifier, browser zoom etc
  • Step 4. In chat, list potential barriers this group may encounter when using this component
Activity 3: A date picker
  • Step 1: A date picker dialog
  • Step 2: People with reduced movement
  • Step 3: Keyboard or keyboard alternative
  • Step 4. In chat, list potential barriers this group may encounter when using this component

Wrapping up

You've learned
  • How to apply the six-step process at component level
  • How different user groups interact with components
  • How to identify component-level barriers
  • How to write accessibility acceptance criteria components
What you can do next
  • Apply this process to components in your own product
  • Review existing components for gaps in interaction, naming, states, or behaviour
  • Identify opportunities to improve the design system
  • Share component-level criteria with your teams to align quality expectations

Questions or discussion?