The criterion behind it
1.3.1 Info and Relationships
Structure you show with layout — headings, lists, tables, groups — has to exist in the markup too.
Level A · EN 301 549 § 9.1.3.1
Why this check exists
Screen reader users navigate by heading and landmark. If your headings are styled `div`s, that navigation does not exist and the page becomes one long paragraph.
What usually triggers it
- fails`<div class="h2">` instead of `<h2>`.
- failsA layout table with no `<th>`, or a data table with no header cells.
- failsRelated radio buttons not wrapped in a `<fieldset>` with a `<legend>`.
- failsA visual list built from `<br>` tags.
How to fix it
- doUse the element that means what you mean, then style it. Semantics first, CSS second.
- doGive data tables `<th scope="col">` or `scope="row"`.
- doGroup related form controls in `<fieldset>` and name the group in `<legend>`.
- doAdd landmarks: `<main>`, `<nav>`, `<header>`, `<footer>`.
How it is reported
A11ySignal reports this at critical impact. Every failing element comes with its CSS selector and the markup that failed, so you can go straight to the line rather than hunting for it. Deque publishes the engine-level detail:
https://dequeuniversity.com/rules/axe/4.13/aria-hidden-body ↗
Check implemented by axe-core 4.13.0, © Deque Systems, MPL-2.0.
Other checks for 1.3.1
criticalaria-required-childrenCertain ARIA roles must contain particular children
criticalaria-required-parentCertain ARIA roles must be contained by particular parents
criticaltd-has-headerNon-empty <td> elements in larger <table> must have an associated table header
seriousdefinition-list<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements
seriousdlitem<dt> and <dd> elements must be contained by a <dl>
seriouslistitem<li> elements must be contained in a <ul> or <ol>
seriousp-as-headingStyled <p> elements must not be used as headings
serioustable-fake-captionData or header cells must not be used to give caption to a data table.
serioustd-headers-attrTable cell headers attributes must refer to other <th> elements in the same table
seriousth-has-data-cellsTable headers in a data table must refer to data cells