Page Accessibility Validation
Accessible web pages are web pages that are designed in a way that people with disabilities or impairments can use them. Most US and EU organizations require accessibility compliance.
Using the Validate page accessibility step, you can check the accessibility level of your web page, while identifying elements in your web page that could have been made accessible, but were not. The accessibility checks are based on rules, which are listed below.
This is a pro feature only open to projects on our professional plan. To learn more about our professional plan, click here.
The Validate page accessibility step feature is only available when using the Chrome browser.
Adding a Validate page accessibility step
The Validate page accessibility step should be placed in the part of your test where the desired page to be tested is currently open in the AUT. If your test involves navigating to more than one page, be sure that the step is placed in the testing sequence where the desired page is open.
Steps created before Jan 2022 are not shared. To make them shared, please record them again.
To add a Validate page accessibility step:
- Hover over the (arrow symbol) where you want to add the step.

The action options are displayed.

- Click on the Toggle Breakpoint button.

- Click on the Run test button to run the test until the breakpoint.

- Hover over the (arrow symbol) again and click on the “M” (Testim predefined steps).
The Predefined steps menu opens.

- Click on Validations.
The Validations menu expands.

- Scroll down through the menu and select Validate page accessibility.
Alternatively, you can use the search box at the top of the menu to search for Validate page accessibility.
A Validate page accessibility step is added in the Editor.

- Hover over the newly created step, and click on the Show Properties () icon.

The Properties panel opens on the right-hand side.

- Fill in the properties as described below.
- Description – The description of the step. (Default = Page accessibility validation)
- Fail test from impact level – The minimal impact level that will fail the test. Options are: Critical, Serious, Moderate, and Minor. (Default = Minor) The impact levels of the different rules are shown in the table below.
- Run only specific tags – Click in this field and choose the protocols you wish to test from the dropdown options available. See table below. By default all tags are selected.
- Exclude specific rule IDs – If you wish to exclude specific rule IDs, select them from the list. In addition if you wish to only check specific rule IDs, you can select all and then un-select the ones you would like to test.
- When this step fails – Specify what to do if the step fails.
- When to run step – Specify conditions for when to run the step. For more info, see Conditions.
- Override timeout – Allows you to override the default time lapse setting which causes Testim to register a fail for a test step, and specify a different time lapse value (in milliseconds).
- Click on the Toggle Breakpoint button after the Validation step to remove the breakpoint.
When the test is run, the accessibility level of your page will be checked against the parameters you set. If accessibility violations are found and the step fails, you can view the accessibility report to see detailed results.
Viewing the page accessibility results
After a test with a Validate page accessibility step is run, if accessibility violations are found, a Step Failed: Accessibility violations were found error message is shown, and you can view detailed accessibility violation results.
To view the page accessibility results:
- Hover over the failed Validate page accessibility step, and click on the Show Properties () icon.

The Properties panel opens on the right-hand side.
- In the Properties panel, click the Check here for more details link.

Alternatively, in the error panel, you can click on the Accessibility report link.

The Accessibility Result window is shown (based on the impact level you chose previously), displaying a list of accessibility issues, the number of occurrences that were found, and their impact levels.

If you would like to show the accessibility issues found based on all of the impact levels, click the All impact level toggle.

- If you would like to download the results as a CSV file, click the download icon. (The CSV file includes the results of all of the accessibility tests, including those that passed.)

- Click the down arrow next to any of the results to show the following detailed information: Description, How To Fix The Problem, and Element CSS Selector.

- If more than one occurrence of an accessibility issue was found, click the arrows in the Element CSS Selector section to show the different instances of the issue.

Rules Descriptions
Testim uses the following library to check the page accessibility level: https://github.com/dequelabs/axe-core/blob/develop/doc/rule-descriptions.md. Each rule has an associated impact level (e.g. Critical, Serious, Moderate, or Minor) and associated tags. When configuring the accessibility check, you can limit the check to certain tags and/or impact levels.
WCAG 2.0 Level A & AA Rules
Rule ID | Description | Impact | Tags | Issue Type | ACT Rules |
---|---|---|---|---|---|
area-alt | Ensures <area> elements of image maps have alternate text | Critical | cat.text-alternatives, wcag2a, wcag111, wcag244, wcag412, section508, section508.22.a, ACT | failure, needs review | c487ae |
aria-allowed-attr | Ensures ARIA attributes are allowed for an element's role | Serious, Critical | cat.aria, wcag2a, wcag412 | failure, needs review | 5c01ea |
aria-command-name | Ensures every ARIA button, link and menuitem has an accessible name | Serious | cat.aria, wcag2a, wcag412 | failure, needs review | 97a4e1 |
aria-hidden-body | Ensures aria-hidden='true' is not present on the document body. | Critical | cat.aria, wcag2a, wcag412 | failure | |
aria-hidden-focus | Ensures aria-hidden elements do not contain focusable elements | Serious | cat.name-role-value, wcag2a, wcag412, wcag131 | failure, needs review | 6cfa84 |
aria-input-field-name | Ensures every ARIA input field has an accessible name | Moderate, Serious | cat.aria, wcag2a, wcag412, ACT | failure, needs review | e086e5 |
aria-meter-name | Ensures every ARIA meter node has an accessible name | Serious | cat.aria, wcag2a, wcag111 | failure, needs review | |
aria-progressbar-name | Ensures every ARIA progressbar node has an accessible name | Serious | cat.aria, wcag2a, wcag111 | failure, needs review | |
aria-required-attr | Ensures elements with ARIA roles have all required ARIA attributes | Critical | cat.aria, wcag2a, wcag412 | failure | |
aria-required-children | Ensures elements with an ARIA role that require child roles contain them | Critical | cat.aria, wcag2a, wcag131 | failure, needs review | ff89c9 |
aria-required-parent | Ensures elements with an ARIA role that require parent roles are contained by them | Critical | cat.aria, wcag2a, wcag131 | failure | bc4a75, ff89c9 |
aria-roledescription | Ensure aria-roledescription is only used on elements with an implicit or explicit role | Serious | cat.aria, wcag2a, wcag412 | failure, needs review | |
aria-roles | Ensures all elements with a role attribute use a valid value | Serious, Critical | cat.aria, wcag2a, wcag412 | failure, needs review | |
aria-toggle-field-name | Ensures every ARIA toggle field has an accessible name | Moderate, Serious | cat.aria, wcag2a, wcag412, ACT | failure, needs review | |
aria-tooltip-name | Ensures every ARIA tooltip node has an accessible name | Serious | cat.aria, wcag2a, wcag412 | failure, needs review | |
aria-valid-attr-value | Ensures all ARIA attributes have valid values | Serious, Critical | cat.aria, wcag2a, wcag412 | failure, needs review | 5c01ea, c487ae |
aria-valid-attr | Ensures attributes that begin with aria- are valid ARIA attributes | Critical | cat.aria, wcag2a, wcag412 | failure | |
audio-caption | Ensures <audio> elements have captions | Critical | cat.time-and-media, wcag2a, wcag121, section508, section508.22.a | needs review | c3232f, e7aa44 |
blink | Ensures <blink> elements are not used | Serious | cat.time-and-media, wcag2a, wcag222, section508, section508.22.j | failure | |
button-name | Ensures buttons have discernible text | Critical | cat.name-role-value, wcag2a, wcag412, section508, section508.22.a, ACT | failure, needs review | 97a4e1, m6b1q3 |
bypass | Ensures each page has at least one mechanism for a user to bypass navigation and jump straight to the content | Serious | cat.keyboard, wcag2a, wcag241, section508, section508.22.o | needs review | |
color-contrast | Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds | Serious | cat.color, wcag2aa, wcag143 | failure, needs review | |
definition-list | Ensures <dl> elements are structured correctly | Serious | cat.structure, wcag2a, wcag131 | failure | |
dlitem | Ensures <dt> and <dd> elements are contained by a <dl> | Serious | cat.structure, wcag2a, wcag131 | failure | |
document-title | Ensures each HTML document contains a non-empty <title> element | Serious | cat.text-alternatives, wcag2a, wcag242, ACT | failure | 2779a5 |
duplicate-id-active | Ensures every id attribute value of active elements is unique | Serious | cat.parsing, wcag2a, wcag411 | failure | |
duplicate-id-aria | Ensures every id attribute value used in ARIA and in labels is unique | Critical | cat.parsing, wcag2a, wcag411 | failure | 3ea0c8 |
duplicate-id | Ensures every id attribute value is unique | Minor | cat.parsing, wcag2a, wcag411 | failure | |
form-field-multiple-labels | Ensures form field does not have multiple label elements | Moderate | cat.forms, wcag2a, wcag332 | needs review | |
frame-focusable-content | Ensures <frame> and <iframe> elements with focusable content do not have tabindex=-1 | Serious | cat.keyboard, wcag2a, wcag211 | failure, needs review | |
frame-title | Ensures <iframe> and <frame> elements have an accessible name | Serious | cat.text-alternatives, wcag2a, wcag241, wcag412, section508, section508.22.i | failure, needs review | |
html-has-lang | Ensures every HTML document has a lang attribute | Serious | cat.language, wcag2a, wcag311, ACT | failure | b5c3f8 |
html-lang-valid | Ensures the lang attribute of the <html> element has a valid value | Serious | cat.language, wcag2a, wcag311, ACT | failure | bf051a |
html-xml-lang-mismatch | Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page | Moderate | cat.language, wcag2a, wcag311, ACT | failure | 5b7ae0 |
image-alt | Ensures <img> elements have alternate text or a role of none or presentation | Critical | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a, ACT | failure, needs review | 23a2a8 |
input-button-name | Ensures input buttons have discernible text | Critical | cat.name-role-value, wcag2a, wcag412, section508, section508.22.a | failure, needs review | |
input-image-alt | Ensures <input type="image"> elements have alternate text | Critical | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a, ACT | failure, needs review | 59796f |
label | Ensures every form element has a label | Minor, Critical | cat.forms, wcag2a, wcag412, wcag131, section508, section508.22.n, ACT | failure, needs review | e086e5, 307n5z |
link-name | Ensures links have discernible text | Serious | cat.name-role-value, wcag2a, wcag412, wcag244, section508, section508.22.a, ACT | failure, needs review | c487ae |
list | Ensures that lists are structured correctly | Serious | cat.structure, wcag2a, wcag131 | failure | |
listitem | Ensures <li> elements are used semantically | Serious | cat.structure, wcag2a, wcag131 | failure | |
marquee | Ensures <marquee> elements are not used | Serious | cat.parsing, wcag2a, wcag222 | failure | |
meta-refresh | Ensures <meta http-equiv="refresh"> is not used | Critical | cat.time-and-media, wcag2a, wcag2aaa, wcag221, wcag224, wcag325 | failure | |
nested-interactive | Nested interactive controls are not announced by screen readers | Serious | cat.keyboard, wcag2a, wcag412 | failure, needs review | 307n5z |
object-alt | Ensures <object> elements have alternate text | Serious | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a | failure, needs review | 8fc3b6 |
role-img-alt | Ensures [role='img'] elements have alternate text | Serious | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a, ACT | failure, needs review | 23a2a8 |
scrollable-region-focusable | Elements that have scrollable content must be accessible by keyboard | Moderate | cat.keyboard, wcag2a, wcag211 | failure | 0ssw9k |
select-name | Ensures select element has an accessible name | Minor, Critical | cat.forms, wcag2a, wcag412, wcag131, section508, section508.22.n, ACT | failure, needs review | e086e5 |
server-side-image-map | Ensures that server-side image maps are not used | Minor | cat.text-alternatives, wcag2a, wcag211, section508, section508.22.f | needs review | |
svg-img-alt | Ensures svg elements with an img, graphics-document or graphics-symbol role have an accessible text | Serious | cat.text-alternatives, wcag2a, wcag111, section508, section508.22.a, ACT | failure, needs review | 7d6734 |
td-headers-attr | Ensure that each cell in a table using the headers refers to another cell in that table | Serious | cat.tables, wcag2a, wcag131, section508, section508.22.g | failure, needs review | a25f45 |
th-has-data-cells | Ensure that each table header in a data table refers to data cells | Serious | cat.tables, wcag2a, wcag131, section508, section508.22.g | failure, needs review | d0f69e |
valid-lang | Ensures lang attributes have valid values | Serious | cat.language, wcag2aa, wcag312 | failure | |
video-caption | Ensures <video> elements have captions | Critical | cat.text-alternatives, wcag2a, wcag122, section508, section508.22.a | needs review | eac66b |
WCAG 2.1 Level A & AA Rules
Rule ID | Description | Impact | Tags | Issue Type | ACT Rules |
---|---|---|---|---|---|
autocomplete-valid | Ensure the autocomplete attribute is correct and suitable for the form field | Serious | cat.forms, wcag21aa, wcag135 | failure | 73f2c2 |
avoid-inline-spacing | Ensure that text spacing set through style attributes can be adjusted with custom stylesheets | Serious | cat.structure, wcag21aa, wcag1412 | failure | |
empty-table-header | Ensures table headers have discernible text | Minor | wcag131, cat.aria | needs review |
Best Practices Rules
Rules that do not necessarily conform to WCAG success criterion but are industry accepted practices that improve the user experience.
Rule ID | Description | Impact | Tags | Issue Type | ACT Rules |
---|---|---|---|---|---|
accesskeys | Ensures every accesskey attribute value is unique | Serious | cat.keyboard, best-practice | failure | |
aria-allowed-role | Ensures role attribute has an appropriate value for the element | Minor | cat.aria, best-practice | failure, needs review | |
aria-dialog-name | Ensures every ARIA dialog and alertdialog node has an accessible name | Serious | cat.aria, best-practice | failure, needs review | |
aria-text | Ensures "role=text" is used on elements with no focusable descendants | Serious | cat.aria, best-practice | failure, needs review | |
aria-treeitem-name | Ensures every ARIA treeitem node has an accessible name | Serious | cat.aria, best-practice | failure, needs review | |
empty-heading | Ensures headings have discernible text | Minor | cat.name-role-value, best-practice | failure, needs review | |
frame-tested | Ensures <iframe> and <frame> elements contain the axe-core script | Critical | cat.structure, review-item, best-practice | failure, needs review | |
frame-title-unique | Ensures <iframe> and <frame> elements contain a unique title attribute | Serious | cat.text-alternatives, best-practice | failure | |
heading-order | Ensures the order of headings is semantically correct | Moderate | cat.semantics, best-practice | failure, needs review | |
identical-links-same-purpose | Ensure that links with the same accessible name serve a similar purpose | Minor | cat.semantics, wcag2aaa, wcag249, best-practice | needs review | b20e66, fd3a94 |
image-redundant-alt | Ensure image alternative is not repeated as text | Minor | cat.text-alternatives, best-practice | failure | |
label-title-only | Ensures that every form element is not solely labeled using the title or aria-describedby attributes | Serious | cat.forms, best-practice | failure | |
landmark-banner-is-top-level | Ensures the banner landmark is at top level | Moderate | cat.semantics, best-practice | failure | |
landmark-complementary-is-top-level | Ensures the complementary landmark or aside is at top level | Moderate | cat.semantics, best-practice | failure | |
landmark-contentinfo-is-top-level | Ensures the contentinfo landmark is at top level | Moderate | cat.semantics, best-practice | failure | |
landmark-main-is-top-level | Ensures the main landmark is at top level | Moderate | cat.semantics, best-practice | failure | |
landmark-no-duplicate-banner | Ensures the document has at most one banner landmark | Moderate | cat.semantics, best-practice | failure | |
landmark-no-duplicate-contentinfo | Ensures the document has at most one contentinfo landmark | Moderate | cat.semantics, best-practice | failure | |
landmark-no-duplicate-main | Ensures the document has at most one main landmark | Moderate | cat.semantics, best-practice | failure | |
landmark-one-main | Ensures the document has a main landmark | Moderate | cat.semantics, best-practice | failure | |
landmark-unique | Landmarks should have a unique role or role/label/title (i.e. accessible name) combination | Moderate | cat.semantics, best-practice | failure | |
meta-viewport-large | Ensures <meta name="viewport"> can scale a significant amount | Minor | cat.sensory-and-visual-cues, best-practice | failure | |
meta-viewport | Ensures <meta name="viewport"> does not disable text scaling and zooming | Critical | cat.sensory-and-visual-cues, best-practice, ACT | failure | b4f0c3 |
page-has-heading-one | Ensure that the page, or at least one of its frames contains a level-one heading | Moderate | cat.semantics, best-practice | failure | |
presentation-role-conflict | Flags elements whose role is none or presentation and which cause the role conflict resolution to trigger. | Minor | cat.aria, best-practice | failure | |
region | Ensures all page content is contained by landmarks | Moderate | cat.keyboard, best-practice | failure | |
scope-attr-valid | Ensures the scope attribute is used correctly on tables | Moderate, Critical | cat.tables, best-practice | failure | |
skip-link | Ensure all skip links have a focusable target | Moderate | cat.keyboard, best-practice | failure, needs review | |
tabindex | Ensures tabindex attribute values are not greater than 0 | Serious | cat.keyboard, best-practice | failure | |
table-duplicate-name | Ensure that tables do not have the same summary and caption | Minor | cat.tables, best-practice | failure |
Experimental Rules
Rules we are still testing and developing. They are not enabled by default in axe-core, but are enabled for the axe browser extensions.
Rule ID | Description | Impact | Tags | Issue Type | ACT Rules |
---|---|---|---|---|---|
css-orientation-lock | Ensures content is not locked to any specific display orientation, and the content is operable in all display orientations | Serious | cat.structure, wcag134, wcag21aa, experimental | failure, needs review | b33eff |
focus-order-semantics | Ensures elements in the focus order have an appropriate role | Minor | cat.keyboard, best-practice, experimental | failure | |
hidden-content | Informs users about hidden content. | Minor | cat.structure, experimental, review-item, best-practice | failure, needs review | |
label-content-name-mismatch | Ensures that elements labelled through their content must have their visible text as part of their accessible name | Serious | cat.semantics, wcag21a, wcag253, experimental | failure | 2ee8b8 |
link-in-text-block | Links can be distinguished without relying on color | Serious | cat.color, experimental, wcag2a, wcag141 | failure, needs review | |
no-autoplay-audio | Ensures <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio | Moderate | cat.time-and-media, wcag2a, wcag142, experimental | failure, needs review | 80f0bf |
p-as-heading | Ensure p elements are not used to style headings | Serious | cat.semantics, wcag2a, wcag131, experimental | failure | |
table-fake-caption | Ensure that tables with a caption use the <caption> element. | Serious | cat.tables, experimental, wcag2a, wcag131, section508, section508.22.g | failure | |
td-has-header | Ensure that each non-empty data cell in a large table has one or more table headers | Critical | cat.tables, experimental, wcag2a, wcag131, section508, section508.22.g | failure |
Deprecated Rules
Deprecated rules are not enabled by default and will be removed in the next major release.
There are no matching rules
Updated over 1 year ago