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-describedbyTests 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-labelledbyaria-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.
rolerole="alert"role="group"role or labelrole="group"role="group" with a aria-labelledbyrole="group" with a aria-labelTests to determine how modal dialogs are announced.
dialogdialogdialogdialog and aria-labelledbyTests to determine if the VoiceOver Rotor displays the landmark information as announced.
OSX Catalina - 10.15.7
Windows 10 Enterprise:
Assistive Technologies