A series of HTML test cases to determine how they are announced in different screen reader / browser combinations.
<fieldset>
tests<fieldset>
with errors tests<fieldset>
tests<button>
accessible name and description tests<a>
accessible name and description tests<input>
accessible name and description tests<table>
accessible name and description testsaria-invalid
testsdisabled
attribute testsreadonly
and aria-readonly
attribute tests<header>
scope testsTests to determine how form controls and their associated <label>
and <legend>
elements are announced. In some cases, the form element does not require or should not have a <label>
.
<input type="button">
<input type="checkbox">
<input type="color">
<input type="date">
<input type="datetime-local">
<input type="email">
<input type="file">
<input type="month">
<input type="number">
<input type="password">
<input type="radio">
<input type="range">
<input type="reset">
<input type="search">
<input type="submit">
<input type="tel">
<input type="text">
<input type="time">
<input type="url">
<input type="week">
<fieldset>
testsTests to determine how <fieldset>
elements are announced.
role="presentation"
role="group"
<fieldset>
with errors testsTests to determine how error messages associated with radio groups are announced.
aria-describedby
applied to <fieldset>
aria-describedby
applied to <legend>
aria-describedby
applied to <input>
aria-label
applied to <fieldset>
aria-label
applied to <input>
<fieldset>
testsTests to determine how nested <fieldset>
elements are announced.
Tests to determine how help text and error messages can be associated with form controls.
<input>
with help text wrapped inside <label>
<input>
with help text using aria-describedby
<input>
with help text as an aria-label
<input>
with error message wrapped inside <label>
<input>
with error message using aria-describedby
<input>
with error message using aria-errormessage
<input>
with error message using title
<input>
with error message using aria-describedby
and title
<input>
with error message using hidden aria-describedby
Tests to determine how required
and aria-required
are announced.
<input>
with required
<input>
with aria-required
<input>
with required
and aria-required
<input>
with required
and aria-invalid="false"
Tests to determine how "(required)"" added to label text is announced.
<input>
with required
and "(Required)" added to label text<input>
with aria-required
and "(Required)" added to label textTests to determine how hiding the "(required)" text is announced.
<a>
accessible name and description testsThe purpose these tests is to show the cascade order of how accessible names are applied in the accessibility tree for the <a>
element. These examples should not be considered proper practice.
<a>
where aria-labelledby
should be accessible name<a>
where aria-label
should be accessible name<a>
where content should be accessible name<a>
where title
should be accessible name<a>
with no accessible nameThe purpose these tests is to show the cascade order of how accessible descriptions are applied in the accessibility tree for the <a>
element.
<input>
accessible name and description testsThe purpose these tests is to show the cascade order of how accessible names are applied in the accessibility tree for <input>
elements. These examples should not be considered proper practice.
<input>
where aria-labelledby
should be accessible name<input>
where aria-label
should be accessible name<input>
where <label>
should be accessible name<input>
where title
should be accessible name<input>
where placeholder
should be accessible name<input>
with no accessible nameThe purpose these tests is to show the cascade order of how accessible descriptions are applied in the accessibility tree for the <input>
element.
<table>
accessible name testsThe purpose these tests is to show the cascade order of how accessible names are applied in the accessibility tree for <table>
elements. These examples should not be considered proper practice.
<table>
where aria-labelledby
should be accessible name<table>
where aria-label
should be accessible name<table>
where <caption>
content should be accessible name<table>
where title
should be accessible name<table>
with no accessible nameThe purpose these tests is to show the cascade order of how accessible descriptions are applied in the accessibility tree for the <table>
element.
aria-invalid
testsTests to determine how the aria-invalid
attribute is announced.
Tests to determine how max
, aria-valuemax
, min
, aria-valuemin
, maxlength
, minlength
, multiple
and pattern
attributes are announced.
disabled
attribute testsTests to determine how the boolean disabled
attribute is announced.
readonly
and aria-readonly
attribute testsTests to determine how the boolean readonly
and aria-readonly
attributes are announced.
Tests to determine how various landmarks are announced.
<article>
<aside>
role="complementary"
<footer>
role="contentinfo"
role="form"
<header>
role="banner"
<main>
role="main"
<nav>
role="navigation"
role="search"
<section>
role="region"
aria-labelledby
<article>
with aria-labelledby
<aside>
with aria-labelledby
<footer>
with aria-labelledby
<header>
with aria-labelledby
<main>
with aria-labelledby
<nav>
with aria-labelledby
<section>
with aria-labelledby
aria-label
<article>
with aria-label
<aside>
with aria-label
<footer>
with aria-label
<header>
with aria-label
<main>
with aria-label
<nav>
with aria-label
<section>
with aria-label
<header>
scope testsWhen the <header>
element is scoped to the <body>
element, it will have an implicit ARIA role of banner
. Similarly, when the <footer>
element is scoped to the <body>
element, it will have an implicit ARIA role of contentinfo
.
However, these two elements will not have implicit ARIA roles if they are descendants of the following elements:<article>
, <aside>
, <main>
, <nav>
, <section>
These cases are designed to test whether the <header>
element's implicit ARIA role is announced.
<header>
scoped to the <body>
element - implicit ARIA role should be present<header>
role="banner"
<header>
descendant of role="article"
<header>
descendant of role="complementary"
<header>
descendant of role="main"
<header>
descendant of role="navigation"
<header>
descendant of role="region"
<header>
descendant of <article>
scoped to the <article>
element<header>
descendant of <aside>
scoped to the <aside>
element<header>
descendant of <main>
scoped to the <main>
element<header>
descendant of <nav>
scoped to the <nav>
element<header>
descendant of <section>
scoped to the <section>
elementTests to determine how live regions are announced.
Tests to determine how an onsubmit error is announced.
role
role="alert"
role="group"
role
or labelrole="group"
role="group"
with a aria-labelledby
role="group"
with a aria-label
Tests to determine how modal dialogs are announced.
dialog
dialog
dialog
dialog
and aria-labelledby
Tests to determine if the VoiceOver Rotor displays the landmark information as announced.
OSX Catalina - 10.15.7
Windows 10 Enterprise:
Assistive Technologies