Features

Accessibility Web Testing Rules

Below is an overview of all the A11Y rules that TestingBot uses during automated web accessibility testing. Click a rule to see an explanation of the check and how to fix potential problems.

Accessibility ruleset WCAG 2.0 Level A & AA Rules

Rule ID Description
area-alt Ensure <area> elements of image maps have alternative text
aria-allowed-attr Ensure an element's role supports its ARIA attributes
aria-braille-equivalent Make sure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent
aria-command-name ARIA commands must have an accessible name
aria-conditional-attr Ensure ARIA attributes are used as described in the specification of the element's role
aria-deprecated-role Make sure elements do not use deprecated roles
aria-hidden-body Make sure aria-hidden="true" is not present on the document body.
aria-hidden-focus Ensure aria-hidden elements are not focusable nor contain focusable elements
aria-input-field-name Ensure every ARIA input field has an accessible name
aria-meter-name Make sure every ARIA meter node has an accessible name
aria-progressbar-name Every ARIA progressbar node must have an accessible name
aria-prohibited-attr Ensure ARIA attributes are not prohibited for an element's role
aria-required-attr Make sure elements with ARIA roles have all required ARIA attributes
aria-required-children Ensure elements with an ARIA role that require child roles contain them
aria-required-parent Make sure elements with an ARIA role that require parent roles are contained by them
aria-roles Ensure all elements with a role attribute use a valid value
aria-toggle-field-name Make sure every ARIA toggle field has an accessible name
aria-tooltip-name Ensure every ARIA tooltip node has an accessible name
aria-valid-attr-value Make sure all ARIA attributes have valid values
aria-valid-attr Ensure attributes that begin with aria- are valid ARIA attributes
blink Make sure <blink> elements are not used
button-name Ensure buttons have discernible text
bypass Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content
color-contrast Make sure each page has at least one mechanism for a user to bypass navigation and jump straight to the content
definition-list Ensure <dl> elements are structured correctly
dlitem Ensure <dt> and <dd> elements are contained by a <dl>
document-title Make sure each HTML document contains a non-empty <title> element
duplicate-id-aria Ensure every id attribute value used in ARIA and in labels is unique
form-field-multiple-labels Ensure form field does not have multiple label elements
frame-focusable-content Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1
frame-title-unique Ensure <iframe> and <frame> elements contain a unique title attribute
frame-title Make sure <iframe> and <frame> elements have an accessible name
html-has-lang Ensure every HTML document has a lang attribute
html-lang-valid Ensure the lang attribute of the <html> element has a valid value
html-xml-lang-mismatch Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page
image-alt Ensure <img> elements have alternative text or a role of none or presentation
input-button-name Ensure input buttons have discernible text
input-image-alt Ensure <input type="image"> elements have alternative text
label Ensure every form element has a label
link-in-text-block Ensure links are distinguished from surrounding text in a way that does not rely on color
link-name Ensure links have discernible text
list Ensure that lists are structured correctly
listitem Ensure <li> elements are used semantically
marquee Ensure <marquee> elements are not used
meta-refresh Ensure <meta http-equiv="refresh"> is not used for delayed refresh
meta-viewport Ensure <meta name="viewport"> does not disable text scaling and zooming
nested-interactive Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies
no-autoplay-audio Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio
object-alt Ensure <object> elements have alternative text
role-img-alt Ensure [role="img"] elements have alternative text
scrollable-region-focusable Ensure elements that have scrollable content are accessible by keyboard
select-name Ensure select element has an accessible name
server-side-image-map Ensure that server-side image maps are not used
summary-name Ensure summary elements have discernible text
svg-img-alt Ensure <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text
td-headers-attr Ensure that each cell in a table that uses the headers attribute refers only to other <th> elements in that table
th-has-data-cells Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe
valid-lang Ensure lang attributes have valid values
video-caption Ensure <video> elements have captions

Accessibility ruleset WCAG 2.1 Level A & AA Rules

Rule ID Description
autocomplete-valid Ensure the autocomplete attribute is correct and suitable for the form field
avoid-inline-spacing Ensure that text spacing set through style attributes can be adjusted with custom stylesheets

Accessibility ruleset WCAG 2.2 Level A & AA Rules

Rule ID Description
target-size Ensure touch targets have sufficient size and space

Best Practices

Rule ID Description
accesskeys Ensure every accesskey attribute value is unique
aria-allowed-role Ensure role attribute has an appropriate value for the element
aria-dialog-name Ensure every ARIA dialog and alertdialog node has an accessible name
aria-text Make sure role="text" is used on elements with no focusable descendants
aria-treeitem-name Make sure every ARIA treeitem node has an accessible name
empty-heading Make sure headings have discernible text
empty-table-header Ensure table headers have discernible text
heading-order Ensure the order of headings is semantically correct
image-redundant-alt Ensure image alternative is not repeated as text
label-title-only Make sure that every form element has a visible label and is not solely labeled using hidden labels, or the title or aria-describedby attributes
landmark-banner-is-top-level Ensure the banner landmark is at top level
landmark-complementary-is-top-level Make sure the complementary landmark or aside is at top level
landmark-contentinfo-is-top-level Make sure the contentinfo landmark is at top level
landmark-main-is-top-level Ensure the main landmark is at top level
landmark-no-duplicate-banner Make sure the document has at most one banner landmark
landmark-no-duplicate-contentinfo Ensure the document has at most one contentinfo landmark
landmark-no-duplicate-main Make sure the document has at most one main landmark
landmark-one-main Ensure the document has a main landmark
landmark-unique Ensure landmarks are unique
meta-viewport-large Ensure <meta name="viewport"> can scale a significant amount
page-has-heading-one Ensure that the page, or at least one of its frames contains a level-one heading
presentation-role-conflict Ensure elements marked as presentational do not have global ARIA or tabindex so that all screen readers ignore them
region Ensure all page content is contained by landmarks
scope-attr-valid Make sure the scope attribute is used correctly on tables
skip-link Ensure all skip links have a focusable target
tabindex Make sure tabindex attribute values are not greater than 0
table-duplicate-name Make sure the <caption> element does not contain the same text as the summary attribute
color-contrast-enhanced Ensure the contrast between foreground and background colors meets WCAG 2 AAA enhanced contrast ratio thresholds
identical-links-same-purpose Ensure that links with the same accessible name serve a similar purpose
meta-refresh-no-exceptions Ensure <meta http-equiv="refresh"> is not used for delayed refresh