- Success Criterion 1.3.1
- Conformance level A
Mismatched Parent and Child Roles in a Custom ARIA Widget
1.3.1 — Info and Relationships
Scenario
Setting
A car-rental site's checkout flow
What’s wrong
ARIA structural roles broken: role="list" whose children aren't listitem — tab without tablist — row outside grid/table.
Example
Consider a car-rental site's checkout flow: ARIA structural roles broken: role="list" whose children aren't listitem — tab without tablist — row outside grid/table.
Why it matters
Screen-reader, braille, and reading-tool users who depend on coded structure rather than visual layout. The practical effect on a car-rental site's checkout flow: they can't navigate the content by its real structure.
How to test
Inspect a custom widget's ARIA parent/child structure in DevTools (e.g., li inside ul, tab inside tablist): mismatched nesting breaks the pattern a screen reader expects.
How to fix
Complete the required ARIA parent/child structure (listitem in list, tab in tablist, row in grid/table).
Outcome
That one change on a car-rental site's checkout flow means they understand how the page is organized.
Who is affected
Screen-reader, braille, and reading-tool users who depend on coded structure rather than visual layout.
Learn more
- Understanding Understanding document (opens in a new tab)
Related scenarios
- Text Styled to Look Like a Heading Instead of Coded as One
- Text Columns Faked With Spaces Instead of Real Table Markup
- Table Layout Faked With Spaces Instead of Real Table Code
- Clickable Div Acting as a Link Button With No Real Role
- Structural HTML Tags Used Purely for Visual Styling
- Layout-Only Table Wrongly Coded With Real Header Cells