├── favicon.ico
├── assets
├── img
│ ├── cross.png
│ ├── rotor-chrome01.png
│ ├── rotor-chrome02.png
│ ├── rotor-chrome03.png
│ ├── rotor-chrome04.png
│ ├── rotor-firefox01.png
│ ├── rotor-firefox02.png
│ ├── rotor-firefox03.png
│ ├── rotor-firefox04.png
│ ├── rotor-safari01.png
│ ├── rotor-safari02.png
│ ├── rotor-safari03.png
│ └── rotor-safari04.png
└── masters
│ └── voiceover.numbers
├── x-accessible-forms.sublime-project
├── README.md
├── debug.log
├── x-other-tests
├── link.html
├── image.html
├── xxx.html
├── alert02.html
├── alert01.html
├── andrew01.html
├── fieldset-button-test.html
├── badge01.html
├── empty-aria-label-test.html
├── select-test.html
├── andrew02.html
├── autocomplete-component-test.html
├── firefox-focus-test.html
├── line-break-in-legend-test.html
├── empty-id-name-attributes-test.html
├── space-inside-icon-test.html
├── content-injected.html
├── clickable-label-test.html
├── modal-test3.html
├── modal-test4.html
├── list-test.html
├── metadata-test.html
├── display-test.html
├── modal-test5.html
├── non-native-dropdown-test.html
├── metadata-test2.html
├── uppercase-test.html
├── greg-test.html
├── button-with-aria-label-test.html
└── error-message-test.html
├── LICENSE
├── 04-button.html
├── 01-input-button.html
├── 01-input-submit.html
├── 01-input-reset.html
├── 01-input-file.html
├── 01-input-text.html
├── 01-input-email.html
├── 01-input-range.html
├── 01-input-radio.html
├── 01-input-checkbox.html
├── 01-input-url.html
├── 03-textarea.html
├── 01-input-color.html
├── 01-input-tel.html
├── 01-input-number.html
├── invalid02.html
├── 01-input-search.html
├── accessible-description-link03.html
├── 01-input-time.html
├── 01-input-password.html
├── 01-input-week.html
├── 01-input-date.html
├── 01-input-month.html
├── accessible-description-button03.html
├── voiceover01.html
├── 01-input-datetime-local.html
├── voiceover02.html
├── landmarks-form.html
├── invalid01.html
├── landmarks-banner03.html
├── required02.html
├── landmarks-banner19.html
├── accessible-description-link02.html
├── landmarks-footer01.html
├── landmarks-section01.html
├── disabled01.html
├── voiceover04.html
├── landmarks-main01.html
├── landmarks-footer02.html
├── landmarks-section02.html
├── landmarks-search.html
├── 02-select.html
├── landmarks-banner01.html
├── landmarks-main02.html
├── landmarks-banner15.html
├── landmarks-banner02.html
├── landmarks-banner11.html
├── landmarks-banner07.html
├── accessible-description-button02.html
├── landmarks-nav01.html
├── voiceover03.html
├── accessible-description-link01.html
├── accessible-description-input03.html
├── landmarks-aside01.html
├── landmarks-nav02.html
├── support-readonly-fields.html
├── attributes09.html
├── landmarks-search02.html
├── disabled02.html
├── landmarks-aside02.html
├── fieldset-buttons.html
├── input-help-text-aria-label.html
├── invalid03.html
└── landmarks-article01.html
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/favicon.ico
--------------------------------------------------------------------------------
/assets/img/cross.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/cross.png
--------------------------------------------------------------------------------
/x-accessible-forms.sublime-project:
--------------------------------------------------------------------------------
1 | {
2 | "folders":
3 | [
4 | {
5 | "path": "."
6 | }
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/assets/img/rotor-chrome01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-chrome01.png
--------------------------------------------------------------------------------
/assets/img/rotor-chrome02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-chrome02.png
--------------------------------------------------------------------------------
/assets/img/rotor-chrome03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-chrome03.png
--------------------------------------------------------------------------------
/assets/img/rotor-chrome04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-chrome04.png
--------------------------------------------------------------------------------
/assets/img/rotor-firefox01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-firefox01.png
--------------------------------------------------------------------------------
/assets/img/rotor-firefox02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-firefox02.png
--------------------------------------------------------------------------------
/assets/img/rotor-firefox03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-firefox03.png
--------------------------------------------------------------------------------
/assets/img/rotor-firefox04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-firefox04.png
--------------------------------------------------------------------------------
/assets/img/rotor-safari01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-safari01.png
--------------------------------------------------------------------------------
/assets/img/rotor-safari02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-safari02.png
--------------------------------------------------------------------------------
/assets/img/rotor-safari03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-safari03.png
--------------------------------------------------------------------------------
/assets/img/rotor-safari04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/img/rotor-safari04.png
--------------------------------------------------------------------------------
/assets/masters/voiceover.numbers:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/russmaxdesign/accessible-forms/HEAD/assets/masters/voiceover.numbers
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # accessible-forms
2 | A series of simple tests on accessible form controls
3 |
4 | https://russmaxdesign.github.io/accessible-forms/.
5 |
--------------------------------------------------------------------------------
/debug.log:
--------------------------------------------------------------------------------
1 | [0228/223613.424:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3)
2 | [0301/080009.874:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3)
3 | [0302/212948.423:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3)
4 | [0302/235628.511:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3)
5 | [0303/001857.982:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3)
6 |
--------------------------------------------------------------------------------
/x-other-tests/link.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Link test
7 |
8 |
9 |
10 |
11 | Link tes
12 | ← Index page
13 |
14 |
15 | Link 1
16 | Link 2
17 |
18 |
19 | ← Index page
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/x-other-tests/image.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Image test
7 |
8 |
9 |
10 |
11 | Image test
12 | ← Index page
13 |
14 |
15 | Test 1
16 |
17 |
18 | Test 2
19 |
20 |
21 | Test 3
22 |
23 |
24 |
25 |
26 | ← Index page
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Russ Weakley
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/x-other-tests/xxx.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | DIV inside BUTTON test
7 |
8 |
9 |
10 | DIV inside BUTTON test
11 | Dummy link before
12 |
13 |
14 |
15 | Policy excess currently set to:
16 | $500
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | Dummy link after
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/x-other-tests/alert02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Alert test 02
7 |
8 |
23 |
24 |
25 |
26 | Alert test 02
27 | ← Index page
28 |
29 |
30 |
31 |
32 |
33 |
Do you need eggs?
34 |
35 |
Everyone needs eggs from the shops
36 |
37 |
38 |
39 |
40 |
41 | ← Index page
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/x-other-tests/alert01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Alert test 01
7 |
8 |
23 |
24 |
25 |
26 | Alert test 01
27 | ← Index page
28 |
29 |
30 |
31 |
32 |
33 |
Do you need eggs?
34 |
35 |
Everyone needs eggs from the shops
36 |
37 |
38 |
39 |
40 |
41 | ← Index page
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/x-other-tests/andrew01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Andrew test 1
7 |
8 |
16 |
17 |
18 |
19 | Andrew test 1
20 | ← Index page
21 | In this first example, the <div> with an id of one does not receive focus on initial page load.
22 |
23 |
24 |
25 | Alert message
26 |
27 | Lorem, ipsum dolor sit amet consectetur adipisicing, elit. Nemo ducimus provident corporis vitae voluptatum exercitationem, officia accusantium et soluta iure dolore repellendus cupiditate quaerat dolorem qui ratione incidunt? Voluptatibus, recusandae.
28 |
29 |
30 | ← Index page
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/x-other-tests/fieldset-button-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Fieldset test
7 |
8 |
9 |
10 |
11 | Fieldset test
12 | ← Index page
13 | This test is to determine if Firefox and Safari will allow focus on links, form controls and buttons.
14 |
15 |
16 | Example
17 |
24 | Code
25 | <form action="#">
26 | <fieldset>
27 | <legend>Choose a method</legend>
28 | <button class="button">Australia only</button>
29 | <button class="button">Overseas</button>
30 | </fieldset>
31 | </form>
32 | ← Index page
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/x-other-tests/badge01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Badge test 01
7 |
8 |
15 |
16 |
17 |
18 | Badge test 01
19 | ← Index page
20 |
21 |
22 | Badges in current form
23 | Apple
24 | Banana
25 | Watermelon
26 | Grape
27 |
28 | Badges without status
29 | Dog
30 | Cat
31 | Fish
32 | Rabbit
33 |
34 |
35 | ← Index page
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/x-other-tests/empty-aria-label-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Empty aria-label test
7 |
8 |
9 |
10 |
11 | Empty aria-label test
12 | ← Index page
13 | To determine if an empty aria-label attribute is announced to assistive technologies, or affects the accessible name.
14 |
15 |
16 | Example 01: empty aria-label attribute
17 | Test one
18 | Code
19 | <button aria-label="" >Test one</button>
20 | Dummy link after
21 |
22 |
23 | Results
24 |
25 | All browser / screen reader combinations currently ignore empty aria-label attributes.
26 | An empty aria-label is not defined in the Chrome Accessibility Tree.
27 |
28 |
29 | ← Index page
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/x-other-tests/select-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | select test
7 |
8 |
9 |
10 |
11 | <select> test
12 | ← Index page
13 | This test is to determine if the label is announced when associated with a <select> element.
14 |
15 |
16 | Example
17 |
26 | Code
27 | <form action="#">
28 | <label for="one" >Subscribe</label>
29 | <select id="one" >
30 | <option>Choose an option</option>
31 | <option value="red">Red</option>
32 | <option value="green">Green</option>
33 | <option value="blue">Blue</option>
34 | </select>
35 | </form>
36 | ← Index page
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/x-other-tests/andrew02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Andrew test 2
7 |
8 |
16 |
24 |
25 |
26 |
27 | Andrew test 2
28 | ← Index page
29 | In this second example, the <div> with an id of two receives focus on initial page load.
30 |
31 |
32 |
33 | Alert message
34 |
35 | Lorem, ipsum dolor sit amet consectetur adipisicing, elit. Nemo ducimus provident corporis vitae voluptatum exercitationem, officia accusantium et soluta iure dolore repellendus cupiditate quaerat dolorem qui ratione incidunt? Voluptatibus, recusandae.
36 |
37 |
38 | ← Index page
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/x-other-tests/autocomplete-component-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Autocomplete component test
7 |
8 |
9 |
10 |
11 | Autocomplete component test
12 | ← Index page
13 | To determine how the autocomplete <label> is announced in relation to the form control.
14 |
15 |
16 | Example
17 |
34 | ← Index page
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/x-other-tests/firefox-focus-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Firefox and Safari focus test
7 |
8 |
9 |
10 |
11 | Firefox and Safari focus test
12 | ← Index page
13 | This test is to determine if Firefox and Safari will allow focus on links, form controls and buttons.
14 |
15 |
16 | Example
17 |
24 | Code
25 | <form action="#">
26 | <div>
27 | <label for="form-name">Name</label>
28 | <input id="form-name" type="text" autocomplete="name">
29 | </div>
30 | <button>Submit</button>
31 | </form>
32 | Dummy link after
33 |
34 |
35 | Resources
36 |
40 | ← Index page
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/x-other-tests/line-break-in-legend-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Line break inside a Legend test
7 |
8 |
9 |
10 |
11 | Line break inside a <legend> test
12 | ← Index page
13 | This test is to determine if line breaks are allowed inside the <legend> element. This is based on the W3C content model , which defines content that must be included as children and descendants of the element.
14 |
15 |
16 | Example
17 |
22 | <form action="#">
23 | <fieldset>
24 | <legend>Something<br> Another thing</legend>
25 | </fieldset>
26 | </form>
27 | Dummy link after
28 |
29 |
30 | Results
31 | The <legend> element can contain phrasing content , optionally intermixed with heading content .
32 | ← Index page
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/04-button.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | button
6 |
7 |
8 |
9 |
10 |
11 | <button>
12 | ← Return to main list
13 | This is a test case designed to determine how the <button> element is announced by various screen readers.
14 | Example
15 |
20 | Code
21 |
22 | <button>Submit</button>
23 |
24 | Assistive technologies
25 |
26 |
VoiceOver
27 |
28 | Chrome: Submit. Button.
29 | Firefox: Submit. Button.
30 | Safari: Submit. Button.
31 |
32 |
33 |
34 |
NVDA
35 |
36 | Chrome: Submit. Button.
37 | Firefox: Submit. Button.
38 | Edge: Submit. Button.
39 |
40 |
41 |
42 |
JAWS
43 |
44 | Chrome: Submit. Button.
45 | Firefox: Submit. Button.
46 | Edge: Submit. Button.
47 |
48 |
49 | ← Return to main list
50 |
51 |
52 |
--------------------------------------------------------------------------------
/01-input-button.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="button"
6 |
7 |
8 |
9 |
10 |
11 | <input type="button">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="button"> element is announced by various screen readers.
14 | Example
15 |
20 | Code
21 |
22 | <input type="button" value="Login">
23 |
24 | Assistive technologies
25 |
26 |
VoiceOver
27 |
28 | Chrome: Login. Button
29 | Firefox: Login. Button
30 | Safari: Login. Button
31 |
32 |
33 |
34 |
NVDA
35 |
36 | Chrome: Login. Button.
37 | Firefox: Login. Button.
38 | Edge: Login. Button.
39 |
40 |
41 |
42 |
JAWS
43 |
44 | Chrome: Login. Button.
45 | Firefox: Login. Button.
46 | Edge: Login. Button.
47 |
48 |
49 | ← Return to main list
50 |
51 |
52 |
--------------------------------------------------------------------------------
/x-other-tests/empty-id-name-attributes-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Empty id and name attributes tests
7 |
8 |
9 |
10 |
11 | Empty id and name attributes tests
12 | ← Index page
13 | To determine if id and name attributes are considered invalid if written as boolean attributes, or attributes with blank values.
14 |
15 |
16 | Example 01: id and name attributes without values
17 | Test one
18 | Code
19 | <button id name aria-label="">Test one</button>
20 | Dummy link after
21 |
22 |
23 | Example 02: empty id and name attributes
24 | Test two
25 | Code
26 | <button id="" name="" aria-label="">Test two</button>
27 | Dummy link after
28 |
29 |
30 | Results
31 | Both methods are considered invalid.
32 |
33 | An ID must not be the empty string.
34 | The name value must not be empty.
35 | ID attributes with empty strings are also not considered unique.
36 |
37 | ← Index page
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/x-other-tests/space-inside-icon-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Space inside icon test
7 |
8 |
9 |
10 |
11 | Space inside icon test
12 | ← Index page
13 | This test is to determine if a non-breaking space inside an icon is announced to screen readers.
14 |
15 |
16 | Example 01: icon with space
17 | Some text before icon:
18 | Code
19 | Some text before icon: <i> </i>
20 | Dummy link after
21 |
22 |
23 | Example 01: icon with space
24 | Some text before icon:
25 | Code
26 | Some text before icon: <i aria-hidden="true" > </i>
27 | Dummy link after
28 |
29 |
30 | Results
31 |
32 | Windows/NVDA : Using read mode, the icon is not announced , so this does not present issues.
33 | Windows/JAWS : Using read mode, the icon is announced as a silent character , which could be confusing.
34 | OSX/Voiceover : Using read mode, the icon is announced as "Group" , which could be confusing
35 |
36 | Recommendation: Apply aria-hidden="true" to hide the element from the Accessibility Tree.
37 | ← Index page
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/01-input-submit.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="submit"
6 |
7 |
8 |
9 |
10 |
11 | <input type="submit">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="submit"> element is announced by various screen readers.
14 | Example
15 |
20 | Code
21 |
22 | <input type="submit" value="Logout">
23 |
24 | Assistive technologies
25 |
26 |
VoiceOver
27 |
28 | Chrome: Logout. Button.
29 | Firefox: Logout. Button.
30 | Safari: Logout. Button.
31 |
32 |
33 |
34 |
NVDA
35 |
36 | Chrome: Logout. Button.
37 | Firefox: Logout. Button.
38 | Edge: Logout. Button.
39 |
40 |
41 |
42 |
JAWS
43 |
44 | Chrome: Logout. Button.
45 | Firefox: Logout. Button.
46 | Edge: Logout. Button.
47 |
48 |
49 | ← Return to main list
50 |
51 |
52 |
--------------------------------------------------------------------------------
/01-input-reset.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="reset"
6 |
7 |
8 |
9 |
10 |
11 | <input type="reset">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="reset"> element is announced by various screen readers.
14 | Example
15 |
20 | Code
21 |
22 | <input type="reset" value="Start over">
23 |
24 | Assistive technologies
25 |
26 |
VoiceOver
27 |
28 | Chrome: Start over. Button
29 | Firefox: Start over. Button
30 | Safari: Start over. Button
31 |
32 |
33 |
34 |
NVDA
35 |
36 | Chrome: Start over. Button.
37 | Firefox: Start over. Button.
38 | Edge: Start over. Button.
39 |
40 |
41 |
42 |
JAWS
43 |
44 | Chrome: Start over. Button.
45 | Firefox: Start over. Button.
46 | Edge: Start over. Button.
47 |
48 |
49 | ← Return to main list
50 |
51 |
52 |
--------------------------------------------------------------------------------
/x-other-tests/content-injected.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Using role="alert"
6 |
7 |
8 |
9 |
38 |
39 |
40 | Using role="alert"
41 | List of all exercises
42 | Example
43 |
44 |
45 |
46 |
47 |
48 | It was the best of times, it was the worst of times, it was the age
49 | of wisdom, it was the age of foolishness, it was the epoch of belief,
50 | it was the epoch of incredulity, it was the season of Light, it was
51 | the season of Darkness, it was the spring of hope, it was the winter
52 | of despair, we had everything before us, we had nothing before us,
53 | we were all going direct to Heaven, we were all going direct the
54 | other way.
55 | List of all exercises
56 |
57 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/x-other-tests/clickable-label-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Clickable label test
7 |
8 |
9 |
10 |
11 | Clickable <label> test
12 | ← Index page
13 | These tests are to determine whether the <label> contents are clickable as well as the form control itself when the <label> is wrapped or unwrapped.
14 |
15 |
16 | Example 01: Unwrapped <label>
17 |
21 | Code
22 | <form action="#">
23 | <input id="one" type="checkbox">
24 | <label for="one">Subscribe</label>
25 | </form>
26 | Dummy link after
27 |
28 |
29 | Example 02: Wrapped <label>
30 |
36 | Code
37 | <form action="#">
38 | <label for="two">
39 | <input id="two" type="checkbox">
40 | Subscribe
41 | </label>
42 | </form>
43 | Dummy link after
44 |
45 |
46 | Results
47 | All modern browsers include the <label> and checkbox as triggers to change the state of the checkbox.
48 | ← Index page
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/x-other-tests/modal-test3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Modal test 3
7 |
8 |
9 |
10 |
11 | Modal test 3
12 | ← Index page
13 |
14 |
15 |
16 |
Chat with us
17 |
18 |
19 |
20 |
21 |
42 |
43 |
44 |
45 |
46 | ← Index page
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/x-other-tests/modal-test4.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Modal test 4
7 |
8 |
9 |
10 |
11 | Modal test 4
12 | ← Index page
13 |
14 |
15 |
16 |
Chat with us
17 |
18 |
19 |
20 |
21 |
42 |
43 |
44 |
45 |
46 | ← Index page
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/01-input-file.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input="file"
6 |
7 |
8 |
9 |
10 |
11 | <input="file">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="file"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="file">Choose a file</label>
25 | <input type="file" id="file">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Choose a file. Button.
33 | Firefox: Browse.... Button. Choose a file. Group.
34 | Safari: No file selected. Choose a file. File upload button.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Choose a file. Button.
41 | Firefox: Choose a file. Grouping. Browse. Button.
42 | Edge: Choose a file. Button.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Choose a file. Button.
49 | Firefox: Choose a file. Browse. Button.
50 | Edge: Choose a file. Button.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/x-other-tests/list-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Paragraph inside list item test
7 |
8 |
9 |
10 |
11 | Paragraph inside list item test
12 | ← Index page
13 | This test is to determine if the <p> element is considered valid when placed inside an <li> element. This is based on the W3C content model , which defines content that must be included as children and descendants of the element.
14 |
15 |
16 | Example
17 |
18 |
19 | Lorem ipsum, dolor sit amet consectetur adipisicing elit. Nostrum deserunt itaque, amet ipsam placeat ad rerum consequuntur quaerat iste error et reprehenderit ex exercitationem tempore molestiae porro rem eveniet incidunt.
20 |
21 |
22 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Id doloribus voluptatum, perspiciatis dolores neque cum molestias officiis voluptates debitis optio provident dolorum possimus ipsam vero alias, quaerat nemo, soluta officia?
23 |
24 |
25 | Code
26 | <ul>
27 | <li>
28 | <p>Lorem ipsum dolor...</p>
29 | </li>
30 | <li>
31 | <p>Lorem ipsum dolor...</p>
32 | </li>
33 | </ul>
34 | Dummy link after
35 |
36 |
37 | Results
38 | The <li> element can contain any flow content .
39 | ← Index page
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/x-other-tests/metadata-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Metadata validation test
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | Metadata validation test
19 | ← Index page
20 | This test is to determine which IAG metadata elements are valid.
21 |
22 |
23 | Example
24 | <meta name="description" content="IAG CTP Insurance">
25 | <meta name="keywords" content="CTP, Insurance">
26 | <meta name="author" content="IAG">
27 | <meta name="viewport" content="width=device-width">
28 | <meta http-equiv="expires" content="0">
29 | <meta http-equiv="Pragma" content="no-cache">
30 | Dummy link after
31 |
32 |
33 | Results
34 | These two should be removed:
35 | <meta http-equiv="expires" content="0">
36 | <meta http-equiv="Pragma" content="no-cache">
37 | The http-equiv only allows thw following values :
38 |
39 | content-security-policy
40 | content-type
41 | default-style
42 | x-ua-compatible
43 | refresh
44 |
45 | ← Index page
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/x-other-tests/display-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | aria-hidden="true", hidden and display:none tests
7 |
8 |
9 |
10 |
11 | aria-hidden="true", hidden and display:none tests
12 | ← Index page
13 | These tests are to determine how aria-hidden="true" and hidden attributes, as well as the display: none CSS property are applied visually as well as how they are announced to screen readers.
14 |
15 |
16 | The aria-hidden="true" attribute
17 | The following information should be visible on screen but not announced to screen readers.
18 | Green spider .
19 | Code
20 | <span aria-hidden="true" >Green spider</span>
21 | Dummy link after
22 |
23 |
24 | The hidden attribute
25 | The following information should not be visible on screen and not announced to screen readers.
26 | Yellow frog .
27 | Code
28 | <span hidden >Yellow frog</span>
29 | Dummy link after
30 |
31 |
32 | The display:none CSS property/value
33 | The following information should not be visible on screen and not announced to screen readers.
34 | Red wolf .
35 | Code
36 | <span style="display: none; ">Red wolf</span>
37 | ← Index page
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/01-input-text.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="text"
6 |
7 |
8 |
9 |
10 |
11 | <input type="text">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="text"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="name">Full name</label>
25 | <input type="text" id="name">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Full name. Edit text.
33 | Firefox: Full name. Edit text.
34 | Safari: Full name. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Full name. Edit. Blank.
41 | Firefox: Full name. Edit. Has autocomplete. Blank.
42 | Edge: Full name. Edit. Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Full name. Edit. Type in text.
49 | Firefox: Full name. Edit. Type in text.
50 | Edge: Full name. Edit. Type in text.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/x-other-tests/modal-test5.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Modal test 5
7 |
8 |
9 |
10 |
11 | Modal test 5
12 | ← Index page
13 |
14 |
17 |
18 |
19 |
20 |
21 |
Chat with us
22 |
23 |
24 |
25 |
26 |
47 |
48 |
49 |
50 |
51 | ← Index page
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/01-input-email.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="email"
6 |
7 |
8 |
9 |
10 |
11 | <input type="email">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="email"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="email">Email address</label>
25 | <input type="email" id="email">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Email address. Edit text.
33 | Firefox: Email address. Edit text.
34 | Safari: Email address. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Email address. Edit blank.
41 | Firefox: Email address. Edit. Has autocomplete. Blank.
42 | Edge: Email address. Edit. Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Email address. Edit. Type in text.
49 | Firefox: Email address. Edit. Type in text.
50 | Edge: Email address. Edit. Type in text.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-range.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="range"
6 |
7 |
8 |
9 |
10 |
11 | <input type="range">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="range"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="range">Choose a range</label>
25 | <input type="range" id="range">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: 50. Choose a range. Slider.
33 | Firefox: 50. Choose a range. Slider.
34 | Safari: 50. Choose a range. Slider.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Choose a range. Slider. 50.
41 | Firefox: Choose a range. Slider. 50.
42 | Edge: Choose a range. Slider. 50.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Choose a range. Left Right slider. 50.
49 | Firefox: Choose a range. Left right slider. 50.
50 | Edge: Choose a range. Left right slider. 50.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-radio.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="radio"
6 |
7 |
8 |
9 |
10 |
11 | <input type="radio">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="radio"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <input type="radio" id="yes">
25 | <label for="yes">Yes</label>
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Yes. Radio button. 1 of 1.
33 | Firefox: Yes. Radio button.
34 | Safari: Yes. Radio button.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Yes. Radio button. Not checked. 1 of 1.
41 | Firefox: Yes. Radio button. Not checked.
42 | Edge: Yes. Radio button. Not checked. 1 of 1.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Yes. Radio button. Not checked. 1 of 1.
49 | Firefox: To change to the selection press up or down arrow. Yes. Radio button. Not checked.
50 | Edge: Yes. Radio button. Not checked. 1 of 1.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-checkbox.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="checkbox"
6 |
7 |
8 |
9 |
10 |
11 | <input type="checkbox">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="checkbox"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <input type="checkbox" id="subscribe">
25 | <label for="subscribe">Subscribe</label>
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome : Subscribe. Unticked. Tick box.
33 | Firefox : Subscribe. Unticked. Checkbox.
34 | Safari : Subscribe. Unticked. Tick box.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Subscribe. Checkbox. Not checked.
41 | Firefox: Subscribe. Checkbox. Not checked.
42 | Edge: Subscribe. Checkbox. Not checked.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Subscribe. Checkbox. Not checked.
49 | Firefox: Subscribe. Checkbox. Not checked.
50 | Edge: Subscribe. Checkbox. Not checked.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-url.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="url"
6 |
7 |
8 |
9 |
10 |
11 | <input type="url">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="url"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="url">Enter web address</label>
25 | <input type="url" id="url">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Enter web address. Edit text.
33 | Firefox: Enter web address. Edit text.
34 | Safari: Enter web address. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Enter web address. Edit. Blank.
41 | Firefox: Enter web address. Edit. Has autocomplete. Blank.
42 | Edge: Enter web address. Edit. Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Enter web address. Edit. Type in text.
49 | Firefox: Enter web address. Edit. Type in text.
50 | Edge: Enter web address. Edit. Type in text.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/03-textarea.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | textarea
6 |
7 |
8 |
9 |
10 |
11 | <textarea>
12 | ← Return to main list
13 | This is a test case designed to determine how the <textarea> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="comment">Add a comment</label>
25 | <textarea id="comment" rows="10"></textarea>
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Add a comment. Edit text.
33 | Firefox: Add a comment. Edit text.
34 | Safari: Add a comment. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Add a comment. Edit. Multi-line. Blank.
41 | Firefox: Add a comment. Edit. Multi-line. Blank.
42 | Edge: Add a comment. Edit. Multi-line. Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Add a comment. Edit. Type in text.
49 | Firefox: Add a comment. Edit. Type in text.
50 | Edge: Add a comment. Edit. Type in text.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-color.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="color"
6 |
7 |
8 |
9 |
10 |
11 | <input type="color">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="color"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="color">Choose a color</label>
25 | <input type="color" id="color">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Black. Choose a colour. Colour well.
33 | Firefox: Choose a colour. Button.
34 | Safari: [Element not announced]
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Clickable. 0% red, 0% green, 0% blue.
41 | Firefox: Choose a colour. Button.
42 | Edge: Clickable. 0% red, 0% green, 0% blue.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: [Element not announced]
49 | Firefox: Choose a colour. Button.
50 | Edge: [Element not announced]
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-tel.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="tel"
6 |
7 |
8 |
9 |
10 |
11 | <input type="tel">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="tel"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="tel">Enter phone number</label>
25 | <input type="tel" id="tel">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Enter phone number. Edit text.
33 | Firefox: Enter phone number. Edit text.
34 | Safari: Enter phone number. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Enter phone number. Edit. Blank.
41 | Firefox: Enter phone number. Edit. Has autocomplete. Blank.
42 | Edge: Enter phone number. Edit. Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Enter phone number. Edit. Type in text.
49 | Firefox: Enter phone number. Edit. Type in text.
50 | Edge: Enter phone number. Edit. Type in text.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/x-other-tests/non-native-dropdown-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Non-native dropdown test
7 |
8 |
9 |
10 |
11 | Non-native dropdown test
12 | ← Index page
13 | These tests are to determine how different online examples mark up non-native dropdown lists.
14 |
15 |
16 | Example 01: <li> items
17 | Choose a fruit
18 |
22 | Apple
23 | Banana
24 |
25 | Code
26 | <button
27 | aria-haspopup="listbox"
28 | aria-labelledby="aaa bbb"
29 | id="aaa"
30 | >
31 | Choose a fruit
32 | </button>
33 | <ul role="listbox" aria-activedescendant="bbb">
34 | <li id="bbb" role="option" aria-selected="true">Apple</li>
35 | <li id="ccc" role="option">Banana</li>
36 | </ul>
37 | Dummy link after
38 |
39 |
40 | Example 02: <a> items
41 | Choose a fruit
42 |
46 | Code
47 | <button role="combobox">Choose a fruit</button>
48 | <ul role="presentation">
49 | <li><a role="option" aria-selected="true" href="#">Apple</a></li>
50 | <li><a role="option" href="#">Banana</a></li>
51 | </ul>
52 | ← Index page
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-number.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="number"
6 |
7 |
8 |
9 |
10 |
11 | <input type="number">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="number"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="number">Choose a number</label>
25 | <input type="number" id="number">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Choose a number. Stepper.
33 | Firefox: Choose a number. Stepper.
34 | Safari: Choose a number. Incremental. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Choose a number. Spin button. Editable. Blank.
41 | Firefox: Choose a number. Spin button. Has autocomplete. Editable. Blank.
42 | Edge: Choose a number. Spin button. Editable. Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Choose a number. Edit. Spin box.
49 | Firefox: Choose a number. Edit. Spin box.
50 | Edge: Choose a number. Edit. Spin box.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/invalid02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input with aria-invalid="false"
6 |
7 |
8 |
9 |
10 |
11 | <input> with aria-invalid="false"
12 | ← Return to main list
13 | This is a test case designed to determine how the aria-invalid attribute, applied to the <input> element, is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="name">Name</label>
25 | <input type="text" id="name" aria-invalid="false">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Name. Edit text.
33 | Firefox: Name. Edit text.
34 | Safari: Name. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Name. Edit. Blank.
41 | Firefox: Name. Edit. Has autocomplete. Blank.
42 | Edge: Name. Edit. Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Name. Edit. Type in text.
49 | Firefox: Name. Edit. Type in text.
50 | Edge: Name. Edit. Type in text.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-search.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="search"
6 |
7 |
8 |
9 |
10 |
11 | <input type="search">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="search"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="search">Search the site</label>
25 | <input type="search" id="search">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Search the site. Search text field.
33 | Firefox: Search the site. Search text field.
34 | Safari: Search the site. Search text field.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Search the site. Edit. Blank.
41 | Firefox: Search the site. Edit. Has autocomplete. Blank.
42 | Edge: Search the site. Edit. Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Search the site. Edit. Type in text.
49 | Firefox: Search the site. Edit. Type in text.
50 | Edge: Search the site. Edit. Type in text.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/accessible-description-link03.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | a with no accessible description
6 |
7 |
8 |
9 |
10 |
11 | <a> with no accessible description
12 | ← Return to main list
13 | The purpose this test is to show the cascade order of how accessible descriptions are applied in the accessibility tree for the <a> element. The priority order from highest to lowest is:
14 |
15 | If present, use aria-describedby value (as per the "Cat" example below) .
16 | Otherwise, if present, use title value .
17 | If none of the above are provided, there is no accessible description.
18 |
19 | This example should not be considered proper practice, and is for testing purposes only.
20 | Example
21 |
26 | Code
27 |
28 | <a href="#">Fish</a>
29 |
30 | Assistive technologies
31 |
32 |
VoiceOver
33 |
34 | Chrome: Link. Fish.
35 | Firefox: Link. Fish.
36 |
37 |
38 |
39 |
NVDA
40 |
41 | Chrome: Fish. Link.
42 | Firefox: Fish. Link.
43 | Edge: Fish. Link.
44 |
45 |
46 |
47 |
JAWS
48 |
49 | Chrome: Fish. Link.
50 | Firefox: Fish. Link.
51 | Edge: Fish. Link.
52 |
53 |
54 | ← Return to main list
55 |
56 |
57 |
--------------------------------------------------------------------------------
/01-input-time.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="time"
6 |
7 |
8 |
9 |
10 |
11 | <input type="time">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="time"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="time">Choose a time</label>
25 | <input type="time" id="time">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Hours. Choose a time. Stepper.
33 | Firefox: Hours. Stepper.
34 | Safari: Choose a time. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Choose a time. Grouping. Hours. Choose a time. Spin button. 0.
41 | Firefox: Choose a time. Grouping. Hours. Spin button. 50.
42 | Edge: Choose a time. Grouping. Hours. Choose a time. Spin button. 0.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Choose a time. Group. Hours. Choose a time. Edit. Spin box. 0
49 | Firefox: Choose a time. Hours. Edit. Spin box. 50
50 | Edge: Choose a time. Group. Hours. Choose a time. Edit. Spin box. 0
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/x-other-tests/metadata-test2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Metadata validation test
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | Metadata validation test
22 | ← Index page
23 | This test is to determine which IAG metadata elements are valid.
24 |
25 |
26 | Example
27 | <meta name="description" content="IAG CTP Insurance">
28 | <meta name="keywords" content="CTP, Insurance">
29 | <meta name="author" content="IAG">
30 | <meta name="viewport" content="width=device-width">
31 | <meta http-equiv="expires" content="0">
32 | <meta http-equiv="Pragma" content="no-cache">
33 | Dummy link after
34 |
35 |
36 | Results
37 | These two should be removed:
38 | <meta http-equiv="expires" content="0">
39 | <meta http-equiv="Pragma" content="no-cache">
40 | The http-equiv only allows thw following values :
41 |
42 | content-security-policy
43 | content-type
44 | default-style
45 | x-ua-compatible
46 | refresh
47 |
48 | ← Index page
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/01-input-password.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="password"
6 |
7 |
8 |
9 |
10 |
11 | <input type="password">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="password"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="password">Enter password</label>
25 | <input type="password" id="password">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Enter password. Secure edit text.
33 | Firefox: Enter password. Secure edit text.
34 | Safari: Enter password. Secure edit text with autofill menu.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Enter password. Edit protected. Blank.
41 | Firefox: Enter password. Edit protected. Blank.
42 | Edge: Enter password. Edit protected. Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Enter password. Password. Edit. Type in text.
49 | Firefox: Enter password. Password. Edit. Type in text.
50 | Edge: Enter password. Password. Edit. Type in text.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-week.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="week"
6 |
7 |
8 |
9 |
10 |
11 | <input type="week">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="week"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="week">Choose a week</label>
25 | <input type="week" id="week">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Week. Choose a week. Stepper.
33 | Firefox: Choose a week. Edit text.
34 | Safari: Choose a week. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Choose a week. Date edit. Week. Choose a week. Spin button. 0.
41 | Firefox: Choose a week. Edit. Has autocomplete. Blank.
42 | Edge: Choose a week. Date edit. Week. Choose a week. Spin button. 0.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Choose a week. Date time edit. Week. Choose a week. Spin button. 0.
49 | Firefox: Choose a week. Edit. Type in text.
50 | Edge: Choose a week. Date time edit. Week. Choose a week. Spin button. 0.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-date.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="date"
6 |
7 |
8 |
9 |
10 |
11 | <input type="date">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="date"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="date">Choose a date</label>
25 | <input type="date" id="date">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Day. Choose a date. Stepper. DD.
33 | Firefox: Day. Stepper.
34 | Safari: Choose a date. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Choose a date. Date edit. Day. Choose a date. Spin button. 0.
41 | Firefox: Choose a date. Date edit. Day. Spin button. 50.
42 | Edge: Choose a date. Date edit. Day. Choose a date. Spin button. 0.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Choose a date. Date time edit. Day. Choose a date. Spin button. 0.
49 | Firefox: Choose a date. Date time edit. Day. Spin button. 50.
50 | Edge: Choose a date. Date time edit. Day. Choose a date. Spin button. 0.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/01-input-month.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="month"
6 |
7 |
8 |
9 |
10 |
11 | <input type="month">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="month"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="month">Choose a month</label>
25 | <input type="month" id="month">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Month. Choose a month. Stepper.
33 | Firefox: Choose a month. Edit text.
34 | Safari: Choose a month. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Choose a month. Date edit. Month. Choose a month. Spin button. 0.
41 | Firefox: Choose a month. Edit. Has autocomplete. Blank.
42 | Edge: Choose a month. Date edit. Month. Choose a month. Spin button. 0.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Choose a month. Date time edit. Month. Choose a month. Spin button. 0.
49 | Firefox: Choose a month. Edit. Type in text.
50 | Edge: Choose a month. Date time edit. Month. Choose a month. Spin button. 0.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/accessible-description-button03.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | button with no accessible description
6 |
7 |
8 |
9 |
10 |
11 | <button> with no accessible description
12 | ← Return to main list
13 | The purpose this test is to show the cascade order of how accessible descriptions are applied in the accessibility tree for the <button> element. The priority order from highest to lowest is:
14 |
15 | If present, use aria-describedby value.
16 | Otherwise, if present, use title value (as per the "Rabbit" example below) .
17 | If none of the above are provided, there is no accessible description .
18 |
19 | This example should not be considered proper practice, and is for testing purposes only.
20 | Example
21 |
26 | Code
27 |
28 | <button>Fish</button>
29 |
30 | Assistive technologies
31 |
32 |
VoiceOver
33 |
34 | Chrome: Fish. Button.
35 | Firefox: Fish. Button.
36 | Safari: Fish. Button.
37 |
38 |
39 |
40 |
NVDA
41 |
42 | Chrome: Fish. Button.
43 | Firefox: Fish. Button.
44 | Edge: Fish. Button.
45 |
46 |
47 |
48 |
JAWS
49 |
50 | Chrome: Fish. Button.
51 | Firefox: Fish. Button.
52 | Edge: Fish. Button.
53 |
54 |
55 | ← Return to main list
56 |
57 |
58 |
--------------------------------------------------------------------------------
/voiceover01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | VoiceOver test without ARIA
6 |
7 |
8 |
9 |
10 |
11 | VoiceOver test without ARIA
12 | ← Return to main list
13 | This test case is designed to determine how landmark elements are displayed in VoiceOver's Rotor Landmark list.
14 | Example
15 |
16 |
19 |
20 | Orange
21 |
22 |
25 |
26 | Green
27 |
28 |
29 | Blue
30 |
31 |
34 |
35 | Code
36 |
37 | <header>
38 | <h4>Red</h4>
39 | </header>
40 | <main>
41 | <h4>Orange</h4>
42 | </main>
43 | <aside>
44 | <h4>Yellow</h4>
45 | </aside>
46 | <nav>
47 | <h4>Green</h4>
48 | </nav>
49 | <article>
50 | <h4>Blue</h4>
51 | </article>
52 | <footer>
53 | <h4>Violet</h4>
54 | </footer>
55 |
56 | Results
57 |
58 |
59 | Chome Rotor Landmarks View
60 |
61 |
62 |
63 | Firefox Rotor Landmarks View
64 |
65 |
66 |
67 | Safari Rotor Landmarks View
68 |
69 | VoiceOver Rotor support chart
70 | ← Return to main list
71 |
72 |
73 |
--------------------------------------------------------------------------------
/01-input-datetime-local.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input type="datetime-local"
6 |
7 |
8 |
9 |
10 |
11 | <input type="datetime-local">
12 | ← Return to main list
13 | This is a test case designed to determine how the <input type="datetime-local"> element is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="datetime-local">Choose a date/time</label>
25 | <input type="datetime-local" id="datetime-local">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Day. Choose a date/time. Stepper. DD.
33 | Firefox: Choose a date/time. Edit text.
34 | Safari: Choose a date/time. Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Choose a date/time. Date edit. Day. Choose a date/time. Spin button. 0.
41 | Firefox: Choose a date/time. Edit. Has autocomplete. Blank.
42 | Edge: Choose a date/time. Date edit. Day. Choose a date/time. Spin button. 0.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Choose a date/time. Date time edit. Day. Choose a date/time. Spin button. 0.
49 | Firefox: Choose a date/time. Edit. Type in text.
50 | Edge: Choose a date/time. Date time edit. Day. Choose a date/time. Spin button. 0.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/voiceover02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | VoiceOver test with ARIA roles
6 |
7 |
8 |
9 |
10 |
11 | VoiceOver test with ARIA roles
12 | ← Return to main list
13 | This test case is designed to determine how landmark elements are displayed in VoiceOver's Rotor Landmark list.
14 | Example
15 |
16 |
19 |
20 | Orange
21 |
22 |
25 |
26 | Green
27 |
28 |
29 | Blue
30 |
31 |
34 |
35 | Code
36 |
37 | <header role="banner">
38 | <h4>Red</h4>
39 | </header>
40 | <main role="main">
41 | <h4>Orange</h4>
42 | </main>
43 | <aside role="complementary">
44 | <h4>Yellow</h4>
45 | </aside>
46 | <nav role="navigation">
47 | <h4>Green</h4>
48 | </nav>
49 | <article>
50 | <h4>Blue</h4>
51 | </article>
52 | <footer role="contentinfo">
53 | <h4>Violet</h4>
54 | </footer>
55 |
56 | Results
57 |
58 |
59 | Chome Rotor Landmarks View
60 |
61 |
62 |
63 | Firefox Rotor Landmarks View
64 |
65 |
66 |
67 | Safari Rotor Landmarks View
68 |
69 | VoiceOver Rotor support chart
70 | ← Return to main list
71 |
72 |
73 |
--------------------------------------------------------------------------------
/landmarks-form.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | role="form"
6 |
7 |
8 |
9 |
10 |
11 | role="form"
12 | ← Return to main list
13 | This test case is designed to determine how role="form" is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
27 | Code
28 |
29 | <div role="form">
30 | <form action="#">
31 | Test content
32 | </form>
33 | </div>
34 |
35 | Assistive technologies
36 |
37 |
VoiceOver
38 |
39 | Chrome: Test content. [Form role not announced]
40 | Firefox: Test content. [Form role not announced]
41 | Safari: Test content. [Form role not announced]
42 |
43 |
44 |
45 |
NVDA
46 |
47 | Chrome: Form . Test content.
48 | Firefox: Form . Test content.
49 | Edge: Form . Test content.
50 |
51 |
52 |
53 |
JAWS
54 |
55 | Chrome: Test content. [Form role not announced]
56 | Firefox: Test content. [Form role not announced]
57 | Edge: Test content. [Form role not announced]
58 |
59 |
60 | ← Return to main list
61 |
62 |
63 |
--------------------------------------------------------------------------------
/x-other-tests/uppercase-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Uppercase conversion in form controls test
7 |
8 |
31 |
32 |
33 |
34 | Uppercase conversion in form controls test
35 | ← Index page
36 | This is Andrew's quick and nasty lower to uppercase conversion to determine if screen readers announce uppercase lettering. The second input will change all characters to uppercase onchange.
37 |
38 |
39 | Example
40 |
51 |
52 | ← Index page
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/invalid01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input with aria-invalid="true"
6 |
7 |
8 |
9 |
10 |
11 | <input> with aria-invalid="true"
12 | ← Return to main list
13 | This is a test case designed to determine how the aria-invalid attribute, applied to the <input> element, is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="name">Name</label>
25 | <input type="text" id="name" aria-invalid="true">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Name. Invalid data . Edit text.
33 | Firefox: Name. Invalid data . Edit text.
34 | Safari: Name. Invalid data . Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Name. Invalid entry . Blank.
41 | Firefox: Name. Invalid entry . Has autocomplete. Blank.
42 | Edge: Name. Invalid entry . Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Name. Edit. Invalid entry . Type in text.
49 | Firefox: Name. Edit. Invalid entry . Type in text.
50 | Edge: Name. Edit. Invalid entry . Type in text.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/landmarks-banner03.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | header descendant of article
6 |
7 |
8 |
9 |
10 |
11 | <header> descendant of <article>
12 | ← Return to main list
13 | This test case is designed to determine how the <header> element will be announced by various screen readers when it is a descendant of the <article> element.
14 | In this case, the element should not be announced as a banner landmark, as it is not scoped to the <body> element, it is scoped to the <article> element
15 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
16 |
17 | VoiceOver : Announce next item: VO + Right Arrow
18 | NVDA and JAWS : Announce next line: DOWN ARROW
19 |
20 | Example
21 |
22 |
23 | Other content
24 |
27 |
28 |
29 | Code
30 |
31 | <article>
32 | Other content
33 | <header>
34 | <h4>Test content</h4>
35 | </header>
36 | </article>
37 |
38 | Assistive technologies
39 |
40 |
VoiceOver
41 |
42 | Chrome: Test content.
43 | Firefox: Test content.
44 | Safari: Test content.
45 |
46 |
47 |
48 |
NVDA
49 |
50 | Chrome: Test content.
51 | Firefox: Test content.
52 | Edge: Test content.
53 |
54 |
55 |
56 |
JAWS
57 |
58 | Chrome: Test content.
59 | Firefox: Test content.
60 | Edge: Test content.
61 |
62 |
63 | ← Return to main list
64 |
65 |
66 |
--------------------------------------------------------------------------------
/required02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input with "aria-required"
6 |
7 |
8 |
9 |
10 |
11 | <input> with aria-required
12 | ← Return to main list
13 | This is a test case designed to determine how the aria-required attribute, applied to the <input> element, is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="name">Full name</label>
25 | <input aria-required="true" type="text" id="name">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Full name. Required . Edit text.
33 | Firefox: Full name. Required . Edit text.
34 | Safari: Full name. Required . Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Full name. Edit. Required . Blank.
41 | Firefox: Full name. Edit. Required . Has autocomplete. Blank.
42 | Edge: Full name. Edit. Required . Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Full name. Edit. Required . Type in text.
49 | Firefox: Full name. Edit. Required . Type in text.
50 | Edge: Full name. Edit. Required . Type in text.
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/landmarks-banner19.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | header descendant of section
6 |
7 |
8 |
9 |
10 |
11 | <header> descendant of <section>
12 | ← Return to main list
13 | This test case is designed to determine how the <header> element will be announced by various screen readers when it is a descendant of the <section> element.
14 | In this case, the element should not be announced as a banner landmark, as it is not scoped to the <body> element, it is scoped to the <section> element
15 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
16 |
17 | VoiceOver : Announce next item: VO + Right Arrow
18 | NVDA and JAWS : Announce next line: DOWN ARROW
19 |
20 | Example
21 |
22 |
23 | Other content
24 |
27 |
28 |
29 | Code
30 |
31 | <section>
32 | <h4>Other content</h4>
33 | <header>
34 | <h4>Test content</h4>
35 | </header>
36 | </section>
37 |
38 | Assistive technologies
39 |
40 |
VoiceOver
41 |
42 | Chrome: Test content.
43 | Firefox: Test content.
44 | Safari: Test content.
45 |
46 |
47 |
48 |
NVDA
49 |
50 | Chrome: Test content.
51 | Firefox: Test content.
52 | Edge: Test content.
53 |
54 |
55 |
56 |
JAWS
57 |
58 | Chrome: Test content.
59 | Firefox: Test content.
60 | Edge: Test content.
61 |
62 |
63 | ← Return to main list
64 |
65 |
66 |
--------------------------------------------------------------------------------
/accessible-description-link02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | a where "title" should be accessible description
6 |
7 |
8 |
9 |
10 |
11 | <a> where title should be accessible description
12 | ← Return to main list
13 | The purpose this test is to show the cascade order of how accessible descriptions are applied in the accessibility tree for the <a> element. The priority order from highest to lowest is:
14 |
15 | If present, use aria-describedby value .
16 | Otherwise, if present, use title value (as per the "Rabbit" example below) .
17 | If none of the above are provided, there is no accessible description.
18 |
19 | This example should not be considered proper practice, and is for testing purposes only.
20 | Example
21 |
26 | Code
27 |
28 | <a href="#" title="rabbit">Fish</a>
29 |
30 | Assistive technologies
31 |
32 |
VoiceOver
33 |
34 | Chrome: Link. Fish. Rabbit .
35 | Firefox: Link. Fish. Rabbit .
36 |
37 |
38 |
39 |
NVDA
40 |
41 | Chrome: Fish. Link. Rabbit .
42 | Firefox: Fish. Link. Rabbit .
43 | Edge: Fish. Link. Rabbit .
44 |
45 |
46 |
47 |
JAWS
48 |
49 | Chrome: Fish. Link. Rabbit .
50 | Firefox: Fish. Link. Rabbit .
51 | Edge: Fish. Link. Rabbit .
52 |
53 |
54 | ← Return to main list
55 |
56 |
57 |
--------------------------------------------------------------------------------
/landmarks-footer01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | footer
6 |
7 |
8 |
9 |
10 |
11 | <footer>
12 | ← Return to main list
13 | This test case is designed to determine how the <footer> element is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
21 |
24 |
25 | Code
26 |
27 | <footer>
28 | Test content
29 | </footer>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Footer . [Stop] Test content. [Stop]. End of footer .
36 | Firefox: Content . [Stop] Test content. [Stop]. End of content .
37 | Safari: Content information . [Stop] Test content. [Stop]. End of content information .
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Contentinfo landmark . Test content.
44 | Firefox: Contentinfo landmark . Test content.
45 | Edge: Contentinfo landmark . Test content.
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Test content. [Footer not announced]
52 | Firefox: Test content. [Footer not announced]
53 | Edge: Test content. [Footer not announced]
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------
/x-other-tests/greg-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Greg test
7 |
8 |
9 |
10 |
11 | Greg test
12 | ← Index page
13 |
14 |
15 | Example 1: Static
16 |
17 |
18 |
19 |
20 | Announced:
21 |
22 | Accessible name: "Card number field"
23 | Placeholder: "1234 5678 9012 3456"
24 | Required true/false: "Required"
25 | Invalid true/false: "Invalid data"
26 | Simple instructions: "Edit text"
27 |
28 |
29 |
30 | Example 2: Error
31 |
32 |
33 | Incomplete field
34 |
35 | Announced:
36 |
37 | Accessible name: "Card number field"
38 | Placeholder: "1234 5678 9012 3456"
39 | Required true/false: "Required"
40 | Invalid true/false: "Invalid data"
41 | Simple instructions: "Edit text"
42 | Description: "Incomplete field"
43 |
44 |
45 | Suggestions:
46 |
47 | Accessible name: "Card number" - remove "field" as this is annouced via role
48 | Either remove aria-invalid or set to false initially as it is being announced as an invalid field as soon as it receives focus
49 |
50 |
51 |
52 | ← Index page
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/landmarks-section01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | section
6 |
7 |
8 |
9 |
10 |
11 | <section>
12 | ← Return to main list
13 | This test case is designed to determine how the <section> element is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
21 |
24 |
25 | Code
26 |
27 | <section>
28 | <h4>Test content</h4>
29 | </section>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Heading level 4. Test content. [Section not announced]
36 | Firefox: Heading level 4. Test content. [Section not announced]
37 | Safari: Heading level 4. Test content. [Section not announced]
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Heading level 4. Test content. [Section not announced]
44 | Firefox: Heading level 4. Test content. [Section not announced]
45 | Edge: Heading level 4. Test content. [Section not announced]
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Heading level 4. Test content. [Section not announced]
52 | Firefox: Heading level 4. Test content. [Section not announced]
53 | Edge: Heading level 4. Test content. [Section not announced]
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------
/disabled01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | button with "disabled"
6 |
7 |
8 |
9 |
10 |
11 | <button> with disabled
12 | ← Return to main list
13 | This is a test case designed to determine how the disabled attribute, applied to the <button> element, is announced by various screen readers.
14 | Disabled attributes cannot receive focus, so the only way to test how these attributes are announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
25 | Code
26 |
27 | <button disabled>Submit</button>
28 |
29 | Assistive technologies
30 |
31 |
VoiceOver
32 |
33 | Chrome: Submit. Dimmed . Button.
34 | Firefox: Submit. Dimmed . Button.
35 | Safari: Submit. Dimmed . Button.
36 |
37 |
38 |
39 |
NVDA
40 |
41 | Chrome: Button. Unavailable . Submit.
42 | Firefox: Button. Unavailable . Submit.
43 | Edge: Button. Unavailable . Submit.
44 |
45 |
46 |
47 |
JAWS
48 |
49 | Chrome: Submit. Button. Unavailable .
50 | Edge: Submit. Button. Unavailable .
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/voiceover04.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | VoiceOver test with aria-label
6 |
7 |
8 |
9 |
10 |
11 | VoiceOver test with aria-label
12 | ← Return to main list
13 | This test case is designed to determine how landmark elements are displayed in VoiceOver's Rotor Landmark list.
14 | Example
15 |
16 |
19 |
20 | Orange
21 |
22 |
25 |
26 | Green
27 |
28 |
29 | Blue
30 |
31 |
34 |
35 | Code
36 |
37 | <header aria-label="Colour red">
38 | <h4>Red</h4>
39 | </header>
40 | <main aria-label="Colour orange">
41 | <h4>Orange</h4>
42 | </main>
43 | <aside aria-label="Colour yellow">
44 | <h4>Yellow</h4>
45 | </aside>
46 | <nav aria-label="Colour green">
47 | <h4>Green</h4>
48 | </nav>
49 | <article aria-label="Colour blue">
50 | <h4>Blue</h4>
51 | </article>
52 | <footer aria-label="Colour violet">
53 | <h4>Violet</h4>
54 | </footer>
55 |
56 | Results
57 |
58 |
59 | Chome Rotor Landmarks View
60 |
61 |
62 |
63 | Firefox Rotor Landmarks View
64 |
65 |
66 |
67 | Safari Rotor Landmarks View
68 |
69 | VoiceOver Rotor support chart
70 | ← Return to main list
71 |
72 |
73 |
--------------------------------------------------------------------------------
/landmarks-main01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | main
6 |
7 |
8 |
9 |
10 |
11 | <main>
12 | ← Return to main list
13 | This test case is designed to determine how the <main> element is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
21 |
22 | Test content
23 |
24 |
25 | Code
26 |
27 | <main>
28 | Test content
29 | </main>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Main . [Stop] Test content. [Stop] End of main .
36 | Firefox: Main . [Stop] Test content. [Stop] End of main .
37 | Safari: Main . [Stop] Test content. [Stop] End of main .
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Main landmark . Test content.
44 | Firefox: Main landmark . Test content.
45 | Edge: Main landmark . Test content.
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Main region . [Stop] Test content. [Stop] Main region ends .
52 | Firefox: Main region . [Stop] Test content. [Stop] Main region ends .
53 | Edge: Main region . [Stop] Test content. [Stop] Main region ends .
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------
/landmarks-footer02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | role="contentinfo"
6 |
7 |
8 |
9 |
10 |
11 | role="contentinfo"
12 | ← Return to main list
13 | This test case is designed to determine how role="contentinfo" is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
21 |
22 | Test content
23 |
24 |
25 | Code
26 |
27 | <div role="contentinfo">
28 | Test content
29 | </div>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Contentinfo . [Stop] Test content. [Stop]. End of contentinfo .
36 | Firefox: Content . [Stop] Test content. [Stop]. End of content .
37 | Safari: Content information . [Stop] Test content. [Stop]. End of content information .
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Contentinfo landmark . Test content.
44 | Firefox: Contentinfo landmark . Test content.
45 | Edge: Contentinfo landmark . Test content.
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Test content. [Contentinfo role not announced]
52 | Firefox: Test content. [Contentinfo role not announced]
53 | Edge: Test content. [Contentinfo role not announced]
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------
/landmarks-section02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | role="region"
6 |
7 |
8 |
9 |
10 |
11 | role="region"
12 | ← Return to main list
13 | This test case is designed to determine how role="region" is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
21 |
22 |
Test content
23 |
24 |
25 | Code
26 |
27 | <div role="region">
28 | <h4>Test content</h4>
29 | </div>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Heading level 4. Test content. [Region role not announced]
36 | Firefox: Heading level 4. Test content. [Region role not announced]
37 | Safari: Heading level 4. Test content. [Region role not announced]
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Heading level 4. Test content. [Region role not announced]
44 | Firefox: Heading level 4. Test content. [Region role not announced]
45 | Edge: Heading level 4. Test content. [Region role not announced]
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Heading level 4. Test content. [Region role not announced]
52 | Firefox: Heading level 4. Test content. [Region role not announced]
53 | Edge: Heading level 4. Test content. [Region role not announced]
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------
/landmarks-search.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | role="search"
6 |
7 |
8 |
9 |
10 |
11 | role="search"
12 | ← Return to main list
13 | This test case is designed to determine how role="search" is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
27 | Code
28 |
29 | <div role="search">
30 | <form action="#">
31 | Test content
32 | </form>
33 | </div>
34 |
35 | Assistive technologies
36 |
37 |
VoiceOver
38 |
39 | Chrome: Search . [Stop] Test content. [Stop] End of search .
40 | Firefox: Search . [Stop] Test content. [Stop] End of search .
41 | Safari: Search . [Stop] Test content. [Stop] End of search .
42 |
43 |
44 |
45 |
NVDA
46 |
47 | Chrome: Search landmark . Test content.
48 | Firefox: Search landmark . Test content.
49 | Edge: Search landmark . Test content.
50 |
51 |
52 |
53 |
JAWS
54 |
55 | Chrome: Test content. [Search role not announced]
56 | Firefox: Test content. [Search role not announced]
57 | Edge: Test content. [Search role not announced]
58 |
59 |
60 | ← Return to main list
61 |
62 |
63 |
--------------------------------------------------------------------------------
/02-select.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | select
6 |
7 |
8 |
9 |
10 |
11 | <select>
12 | ← Return to main list
13 | This is a test case designed to determine how the <select> element is announced by various screen readers.
14 | Example
15 |
30 | Code
31 |
32 | <div>
33 | <label for="suburb">Suburb</label>
34 | <select id="suburb">
35 | <option value="Abbotsbury">Abbotsbury</option>
36 | </select>
37 | </div>
38 |
39 | Assistive technologies
40 |
41 |
VoiceOver
42 |
43 | Chrome: Abbotsbury. Suburb. Menu popup collapsed. Button.
44 | Firefox: Abbotsbury. Suburb. Popup button.
45 | Safari: Abbotsbury. Suburb. Popup button.
46 |
47 |
48 |
49 |
NVDA
50 |
51 | Chrome: Suburb combobox. Abbotsbury. Collapsed.
52 | Firefox: Suburb combobox. Abbotsbury. Collapsed.
53 | Edge: Suburb combobox. Abbotsbury. Collapsed.
54 |
55 |
56 |
57 |
JAWS
58 |
59 | Chrome: Suburb combobox. Abbotsbury.
60 | Firefox: Suburb combobox. Abbotsbury.
61 | Edge: Suburb combobox. Abbotsbury.
62 |
63 |
64 | ← Return to main list
65 |
66 |
67 |
--------------------------------------------------------------------------------
/landmarks-banner01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | header
6 |
7 |
8 |
9 |
10 |
11 | <header>
12 | ← Return to main list
13 | This test case is designed to determine how the <header> element is announced by various screen readers.
14 | In this case, the element should be announced as a banner landmark.
15 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
16 |
17 | VoiceOver : Announce next item: VO + Right Arrow
18 | NVDA and JAWS : Announce next line: DOWN ARROW
19 |
20 | Example
21 |
22 |
25 |
26 | Code
27 |
28 | <header>
29 | <h4>Test content</h4>
30 | </header>
31 |
32 | Assistive technologies
33 |
34 |
VoiceOver
35 |
36 | Chrome: Banner . [Stop] Test content. [Stop]. End of banner .
37 | Firefox: Banner . [Stop] Test content. [Stop]. End of banner .
38 | Safari: Banner . [Stop] Test content. [Stop]. End of banner .
39 |
40 |
41 |
42 |
NVDA
43 |
44 | Chrome: Banner landmark . Test content.
45 | Firefox: Banner landmark . Test content.
46 | Edge: Banner landmark . Test content.
47 |
48 |
49 |
50 |
JAWS
51 |
52 | Chrome: Test content. [Banner not announced]
53 | Firefox: Test content. [Banner not announced]
54 | Edge: Test content. [Banner not announced]
55 |
56 |
57 | ← Return to main list
58 |
59 |
60 |
--------------------------------------------------------------------------------
/landmarks-main02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | role="main"
6 |
7 |
8 |
9 |
10 |
11 | role="main"
12 | ← Return to main list
13 | This test case is designed to determine how role="main" is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
21 |
22 | Test content
23 |
24 |
25 | Code
26 |
27 | <div role="main">
28 | Test content
29 | </div>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Main . [Stop] Test content. [Stop] End of main .
36 | Firefox: Main . [Stop] Test content. [Stop] End of main .
37 | Safari: Main . [Stop] Test content. [Stop] End of main .
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Main landmark . Test content.
44 | Firefox: Main landmark . Test content.
45 | Edge: Main landmark . Test content.
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Main region . [Stop] Test content. [Stop] Main region ends .
52 | Firefox: Main region . [Stop] Test content. [Stop] Main region ends .
53 | Edge: Main region . [Stop] Test content. [Stop] Main region ends .
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------
/x-other-tests/button-with-aria-label-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Button with aria-label test
7 |
8 |
9 |
10 |
11 | <button> with aria-label test
12 | ← Index page
13 | To determine if aria-label should be applied to the <button> or icon inside the <button>.
14 |
15 |
16 | Example 01: aria-label and aria-hidden applied to the icon
17 |
18 | Dummy
19 |
20 | Code
21 | <button>
22 | <i aria-label="Open calendar" aria-hidden="true" ></i>Dummy
23 | </button>
24 | Dummy link between
25 |
26 |
27 | Example 02: aria-label applied to the icon
28 |
29 | Dummy
30 |
31 | Code
32 | <button>
33 | <i aria-label="Open calendar" ></i>Dummy
34 | </button>
35 | Dummy link between
36 |
37 |
38 | Example 03: aria-label applied to the <button>
39 |
40 | Dummy
41 |
42 | Code
43 | <button aria-label="Open calendar" >
44 | <i aria-hidden="true"></i>Dummy
45 | </button>
46 | Dummy link after
47 |
48 |
49 | Results
50 | The first method fails as the aria-label is not announced to assistive technologies. This is due to the icon also having aria-hidden applied.
51 | ← Index page
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/landmarks-banner15.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | header descendant of nav
6 |
7 |
8 |
9 |
10 |
11 | <header> descendant of <nav>
12 | ← Return to main list
13 | This test case is designed to determine how the <header> element will be announced by various screen readers when it is a descendant of the <nav> element.
14 | In this case, the element should not be announced as a banner landmark, as it is not scoped to the <body> element, it is scoped to the <nav> element
15 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
16 |
17 | VoiceOver : Announce next item: VO + Right Arrow
18 | NVDA and JAWS : Announce next line: DOWN ARROW
19 |
20 | Example
21 |
22 |
23 | Other content
24 |
27 |
28 |
29 | Code
30 |
31 | <nav>
32 | <h4>Other content</h4>
33 | <header>
34 | <h4>Test content</h4>
35 | </header>
36 | </nav>
37 |
38 | Assistive technologies
39 |
40 |
VoiceOver
41 |
42 | Chrome: Test content.
43 | Firefox: Test content.
44 | Safari: Banner . [Stop] Test content. [Stop]. End of banner . [Banner incorrectly announced]
45 |
46 |
47 |
48 |
NVDA
49 |
50 | Chrome: Test content.
51 | Firefox: Test content.
52 | Edge: Test content.
53 |
54 |
55 |
56 |
JAWS
57 |
58 | Chrome: Test content.
59 | Firefox: Test content.
60 | Edge: Test content.
61 |
62 |
63 | ← Return to main list
64 |
65 |
66 |
--------------------------------------------------------------------------------
/landmarks-banner02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | role="banner"
6 |
7 |
8 |
9 |
10 |
11 | role="banner"
12 | ← Return to main list
13 | This test case is designed to determine how role="banner" is announced by various screen readers.
14 | In this case, the element should be announced as a banner landmark.
15 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
16 |
17 | VoiceOver : Announce next item: VO + Right Arrow
18 | NVDA and JAWS : Announce next line: DOWN ARROW
19 |
20 | Example
21 |
22 |
23 |
Test content
24 |
25 |
26 | Code
27 |
28 | <div role="banner">
29 | <h4>Test content</h4>
30 | </div>
31 |
32 | Assistive technologies
33 |
34 |
VoiceOver
35 |
36 | Chrome: Banner . [Stop] Test content. [Stop]. End of banner .
37 | Firefox: Banner . [Stop] Test content. [Stop]. End of banner .
38 | Safari: Banner . [Stop] Test content. [Stop]. End of banner .
39 |
40 |
41 |
42 |
NVDA
43 |
44 | Chrome: Banner landmark . Test content.
45 | Firefox: Banner landmark . Test content.
46 | Edge: Banner landmark . Test content.
47 |
48 |
49 |
50 |
JAWS
51 |
52 | Chrome: Test content. [Banner role not announced]
53 | Firefox: Test content. [Banner role not announced]
54 | Edge: Test content. [Banner role not announced]
55 |
56 |
57 | ← Return to main list
58 |
59 |
60 |
--------------------------------------------------------------------------------
/landmarks-banner11.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | header descendant of main
6 |
7 |
8 |
9 |
10 |
11 | <header> descendant of <main>
12 | ← Return to main list
13 | This test case is designed to determine how the <header> element will be announced by various screen readers when it is a descendant of the <main> element.
14 | In this case, the element should not be announced as a banner landmark, as it is not scoped to the <body> element, it is scoped to the <main> element.
15 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
16 |
17 | VoiceOver : Announce next item: VO + Right Arrow
18 | NVDA and JAWS : Announce next line: DOWN ARROW
19 |
20 | Example
21 |
22 |
23 | Other content
24 |
27 |
28 |
29 | Code
30 |
31 | <main>
32 | <h4>Other content</h4>
33 | <header>
34 | <h4>Test content</h4>
35 | </header>
36 | </main>
37 |
38 | Assistive technologies
39 |
40 |
VoiceOver
41 |
42 | Chrome: Test content.
43 | Firefox: Test content.
44 | Safari: Banner . [Stop] Test content. [Stop]. End of banner . [Banner incorrectly announced]
45 |
46 |
47 |
48 |
NVDA
49 |
50 | Chrome: Test content.
51 | Firefox: Test content.
52 | Edge: Test content.
53 |
54 |
55 |
56 |
JAWS
57 |
58 | Chrome: Test content.
59 | Firefox: Test content.
60 | Edge: Test content.
61 |
62 |
63 | ← Return to main list
64 |
65 |
66 |
--------------------------------------------------------------------------------
/landmarks-banner07.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | header descendant of aside
6 |
7 |
8 |
9 |
10 |
11 | <header> descendant of <aside>
12 | ← Return to main list
13 | This test case is designed to determine how the <header> element will be announced by various screen readers when it is a descendant of the <aside> element.
14 | In this case, the element should not be announced as a banner landmark, as it is not scoped to the <body> element, it is scoped to the <aside> element
15 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
16 |
17 | VoiceOver : Announce next item: VO + Right Arrow
18 | NVDA and JAWS : Announce next line: DOWN ARROW
19 |
20 | Example
21 |
22 |
23 | Other content
24 |
27 |
28 |
29 | Code
30 |
31 | <aside>
32 | <h4>Other content</h4>
33 | <header>
34 | <h4>Test content</h4>
35 | </header>
36 | </aside>
37 |
38 | Assistive technologies
39 |
40 |
VoiceOver
41 |
42 | Chrome: Test content.
43 | Firefox: Test content.
44 | Safari: Banner . [Stop] Test content. [Stop]. End of banner . [Banner incorrectly announced]
45 |
46 |
47 |
48 |
NVDA
49 |
50 | Chrome: Test content.
51 | Firefox: Test content.
52 | Edge: Test content.
53 |
54 |
55 |
56 |
JAWS
57 |
58 | Chrome: Test content.
59 | Firefox: Test content.
60 | Edge: Test content.
61 |
62 |
63 | ← Return to main list
64 |
65 |
66 |
--------------------------------------------------------------------------------
/accessible-description-button02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | button where "title" should be accessible description
6 |
7 |
8 |
9 |
10 |
11 | <button> where title should be accessible description
12 | ← Return to main list
13 | The purpose this test is to show the cascade order of how accessible descriptions are applied in the accessibility tree for the <button> element. The priority order from highest to lowest is:
14 |
15 | If present, use aria-describedby value.
16 | Otherwise, if present, use title value (as per the "Rabbit" example below) .
17 | If none of the above are provided, there is no accessible description.
18 |
19 | This example should not be considered proper practice, and is for testing purposes only.
20 | Example
21 |
26 | Code
27 |
28 | <button title="rabbit">Fish</button>
29 |
30 | Assistive technologies
31 |
32 |
VoiceOver
33 |
34 | Chrome: Fish. Button. Rabbit .
35 | Firefox: Fish. Button. Rabbit .
36 | Safari: Fish. Button. Rabbit .
37 |
38 |
39 |
40 |
NVDA
41 |
42 | Chrome: Fish. Button. Rabbit .
43 | Firefox: Fish. Button. Rabbit .
44 | Edge: Fish. Button. Rabbit .
45 |
46 |
47 |
48 |
JAWS
49 |
50 | Chrome: Fish. Button. Rabbit .
51 | Firefox: Fish. Button. Rabbit .
52 | Edge: Fish. Button. Rabbit .
53 |
54 |
55 | ← Return to main list
56 |
57 |
58 |
--------------------------------------------------------------------------------
/x-other-tests/error-message-test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Error message test
7 |
8 |
9 |
10 |
11 | Error message test
12 | ← Index page
13 | The KANA system does not allow separate error messages as per the Chroma system. Errors are flagged with strong red text, but nothing programatic for screen readers. These two tests are to determine if and where an error message can be presented to screen readers
14 |
15 |
16 | Example 01: aria-label applied to the<label> element
17 |
23 | Code
24 | <form action="#">
25 | <div class="form-container">
26 | <label for="two" aria-label="Error: What is the time" >Address</label>
27 | <input class="input" type="text" id="two">
28 | </div>
29 | </form>
30 | Dummy link after
31 |
32 |
33 | Example 02: Hidden information inside <label> element
34 |
43 | Code
44 | <form action="#">
45 | <div class="form-container">
46 | <label class="label" for="three">
47 | <span class="sr-only">Error:</span>
48 | Email
49 | </label>
50 | <input class="input" type="text" id="three">
51 | </div>
52 | </form>
53 | Dummy link after
54 |
55 |
56 | Results
57 | The first example works in all browser/screen reader combinations EXCEPT Chroma/VoiceOver. Adding an aria-label to the label means that the <label> is completely ignored in this browser/screen reader combination.
58 | ← Index page
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/landmarks-nav01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | nav
6 |
7 |
8 |
9 |
10 |
11 | <nav>
12 | ← Return to main list
13 | This test case is designed to determine how the <nav> element is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
21 |
22 | Test content
23 |
24 |
25 | Code
26 |
27 | <nav>
28 | Test content
29 | </nav>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Navigation . [Stop] Test content. [Stop] End of navigation .
36 | Firefox: Navigation . [Stop] Test content. [Stop] End of navigation .
37 | Safari: Navigation . [Stop] Test content. [Stop] End of navigation .
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Navigation landmark . Test content.
44 | Firefox: Navigation landmark . Test content.
45 | Edge: Navigation landmark . Test content.
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Navigation region . [Stop] Test content. [Stop] Navigation region ends .
52 | Firefox: Navigation region . [Stop] Test content. [Stop] Navigation region ends .
53 | Edge: Navigation region . [Stop] Test content. [Stop] Navigation region ends .
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------
/voiceover03.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | VoiceOver test with aria-labelledby
6 |
7 |
8 |
9 |
10 |
11 | VoiceOver test with aria-labelledby
12 | ← Return to main list
13 | This test case is designed to determine how landmark elements are displayed in VoiceOver's Rotor Landmark list.
14 | Example
15 |
16 |
19 |
20 | Orange
21 |
22 |
25 |
26 | Green
27 |
28 |
29 | Blue
30 |
31 |
34 |
35 | Code
36 |
37 | <header aria-labelledby="red">
38 | <h4 id="red">Red</h4>
39 | </header>
40 | <main aria-labelledby="orange">
41 | <h4 id="orange">Orange</h4>
42 | </main>
43 | <aside aria-labelledby="yellow">
44 | <h4 id="yellow">Yellow</h4>
45 | </aside>
46 | <nav aria-labelledby="green">
47 | <h4 id="green">Green</h4>
48 | </nav>
49 | <article aria-labelledby="blue">
50 | <h4 id="blue">Blue</h4>
51 | </article>
52 | <footer aria-labelledby="violet">
53 | <h4 id="violet">Violet</h4>
54 | </footer>
55 |
56 | Results
57 |
58 |
59 | Chome Rotor Landmarks View
60 |
61 |
62 |
63 | Firefox Rotor Landmarks View
64 |
65 |
66 |
67 | Safari Rotor Landmarks View
68 |
69 | VoiceOver Rotor support chart
70 | ← Return to main list
71 |
72 |
73 |
--------------------------------------------------------------------------------
/accessible-description-link01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | a where "aria-describedby" should be accessible description
6 |
7 |
8 |
9 |
10 |
11 | <a> where aria-describedby should be accessible description
12 | ← Return to main list
13 | The purpose this test is to show the cascade order of how accessible descriptions are applied in the accessibility tree for the <a> element. The priority order from highest to lowest is:
14 |
15 | If present, use aria-describedby value (as per the "Cat" example below) .
16 | Otherwise, if present, use title value .
17 | If none of the above are provided, there is no accessible description.
18 |
19 | This example should not be considered proper practice, and is for testing purposes only.
20 | Example
21 |
27 | Code
28 |
29 | <a
30 | href="#"
31 | aria-describedby="cat"
32 | title="rabbit"
33 | >
34 | Fish
35 | </a>
36 | <div id="cat">
37 | Cat
38 | </div>
39 |
40 | Assistive technologies
41 |
42 |
VoiceOver
43 |
44 | Chrome: Link. Fish. Cat .
45 | Firefox: Link. Fish. Cat .
46 |
47 |
48 |
49 |
NVDA
50 |
51 | Chrome: Fish. Link. Cat .
52 | Firefox: Fish. Link. Cat .
53 | Edge: Fish. Link. Cat .
54 |
55 |
56 |
57 |
JAWS
58 |
59 | Chrome: Fish. Link. Cat .
60 | Firefox: Fish. Link. Cat .
61 | Edge: Fish. Link. Cat .
62 |
63 |
64 | ← Return to main list
65 |
66 |
67 |
--------------------------------------------------------------------------------
/accessible-description-input03.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input with no accessible description
6 |
7 |
8 |
9 |
10 |
11 | <input> with no accessible description
12 | ← Return to main list
13 | The purpose this test is to show the cascade order of how accessible descriptions are applied in the accessibility tree for the <input> element. The priority order from highest to lowest is:
14 |
15 | If present, use aria-describedby value .
16 | Otherwise, if present, use title value (as per the "Rabbit" example below) .
17 | If none of the above are provided, there is no accessible description .
18 |
19 | This example should not be considered proper practice, and is for testing purposes only.
20 | Example
21 |
27 | Code
28 |
29 | <label for="fish">Fish</label>
30 | <input
31 | type="text"
32 | id="fish"
33 | placeholder="fox"
34 | >
35 |
36 | Assistive technologies
37 |
38 |
VoiceOver
39 |
40 | Chrome: Fish. Fox . Edit text.
41 | Firefox: Fish. Edit text.
42 | Safari: Fish. Fox . Edit text.
43 |
44 |
45 |
46 |
NVDA
47 |
48 | Chrome: Fish. Edit. Fox . Blank.
49 | Firefox: Fish. Edit. Has autcomplete. Fox . Blank.
50 | Edge: Fish. Edit. Fox . Blank.
51 |
52 |
53 |
54 |
JAWS
55 |
56 | Chrome: Fish. Edit. Fox . Type in text.
57 | Firefox: Fish. Edit. Fox . Type in text.
58 | Edge: Fish. Edit. Type in text.
59 |
60 |
61 | ← Return to main list
62 |
63 |
64 |
--------------------------------------------------------------------------------
/landmarks-aside01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aside
6 |
7 |
8 |
9 |
10 |
11 | <aside>
12 | ← Return to main list
13 | This test case is designed to determine how the <aside> element is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
25 | Code
26 |
27 | <aside>
28 | <h4>Test content</h4>
29 | </aside>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Complementary . [Stop] Heading level 4. Test content. [Stop] End of complementary .
36 | Firefox: Complementary . [Stop] Heading level 4. Test content. [Stop] End of complementary .
37 | Safari: Complementary . [Stop] Heading level 4. Test content. [Stop] End of complementary .
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Complementary landmark . Heading level 4. Test content.
44 | Firefox: Complementary landmark . Heading level 4. Test content.
45 | Edge: Complementary landmark . Heading level 4. Test content.
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Heading level 4. Test content. [Aside not announced]
52 | Firefox: Heading level 4. Test content. [Aside not announced]
53 | Edge: Heading level 4. Test content. [Aside not announced]
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------
/landmarks-nav02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | role="navigation"
6 |
7 |
8 |
9 |
10 |
11 | role="navigation"
12 | ← Return to main list
13 | This test case is designed to determine how role="navigation" is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
21 |
22 | Test content
23 |
24 |
25 | Code
26 |
27 | <div role="navigation">
28 | Test content
29 | </div>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Navigation . [Stop] Test content. [Stop] End of navigation .
36 | Firefox: Navigation . [Stop] Test content. [Stop] End of navigation .
37 | Safari: Navigation . [Stop] Test content. [Stop] End of navigation .
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Navigation landmark . Test content.
44 | Firefox: Navigation landmark . Test content.
45 | Edge: Navigation landmark . Test content.
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Navigation region . [Stop] Test content. [Stop] Navigation region ends .
52 | Firefox: Navigation region . [Stop] Test content. [Stop] Navigation region ends .
53 | Edge: Navigation region . [Stop] Test content. [Stop] Navigation region ends .
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------
/support-readonly-fields.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | readonly and aria-readonly attribute support chart
6 |
7 |
8 |
9 |
10 |
11 | readonly and aria-readonly attribute support chart
12 | ← Return to main list
13 |
14 |
15 |
16 |
17 | VoiceOver Chrome
18 | VoiceOver Firefox
19 | VoiceOver Safari
20 | NVDA Chrome
21 | NVDA Firefox
22 | NVDA Edge
23 | JAWS Edge
24 | JAWS Edge
25 |
26 |
27 |
28 |
29 | readonly attribute on <input>
30 | Announced
31 | readonly not announced
32 | readonly not announced
33 | Announced
34 | Announced
35 | Announced
36 | Announced
37 | Announced
38 |
39 |
40 | readonly attribute on <textarea>
41 | Announced
42 | readonly not announced
43 | Announced
44 | Announced
45 | Announced
46 | Announced
47 | Announced
48 | Announced
49 |
50 |
51 | aria-readonly attribute on <input>
52 | readonly not announced
53 | readonly not announced
54 | readonly not announced
55 | readonly not announced
56 | readonly not announced
57 | readonly not announced
58 | readonly not announced
59 | readonly not announced
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/attributes09.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input with "multiple"
6 |
7 |
8 |
9 |
10 |
11 | <input> with multiple
12 | ← Return to main list
13 | This is a test case designed to determine how the multiple attribute is announced. In real situations, authors should always provide clear instructions on how to successfully complete form questions.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="email">Email address</label>
25 | <input
26 | type="email"
27 | id="email"
28 | multiple
29 | >
30 | </div>
31 |
32 | Assistive technologies
33 |
34 |
VoiceOver
35 |
36 | Chrome: Email address. Edit text. [multiple attribute not announced]
37 | Firefox: Email address. Edit text. [multiple attribute not announced]
38 | Safari: Email address. Edit text. [multiple attribute not announced]
39 |
40 |
41 |
42 |
NVDA
43 |
44 | Chrome: Email address. Edit. Blank. [multiple attribute not announced]
45 | Firefox: Email address. Edit. Has autocomplete. Blank. [multiple attribute not announced]
46 | Safari: Email address. Edit. Blank.[multiple attribute not announced]
47 |
48 |
49 |
50 |
JAWS
51 |
52 | Chrome: Email address. Edit. Type in text. [multiple attribute not announced]
53 | Firefox: Email address. Edit. Type in text. [multiple attribute not announced]
54 | Edge: Email address. Edit. Type in text. [multiple attribute not announced]
55 |
56 |
57 | ← Return to main list
58 |
59 |
60 |
--------------------------------------------------------------------------------
/landmarks-search02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | role="search" with label
6 |
7 |
8 |
9 |
10 |
11 | role="search" with <label>
12 | ← Return to main list
13 | This test case is designed to determine how role="search" and an associated <label> are announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
27 | Code
28 |
29 | <div role="search" aria-label="Search the site">
30 | <form action="#">
31 | Test content
32 | </form>
33 | </div>
34 |
35 | Assistive technologies
36 |
37 |
VoiceOver
38 |
39 | Chrome: Search . [Stop] Test content. [Stop] End of search .
40 | Firefox: Search . [Stop] Test content. [Stop] End of search .
41 | Safari: Search . [Stop] Test content. [Stop] End of search .
42 |
43 |
44 |
45 |
NVDA
46 |
47 | Chrome: Search landmark . Test content.
48 | Firefox: Search landmark . Test content.
49 | Edge: Search landmark . Test content.
50 |
51 |
52 |
53 |
JAWS
54 |
55 | Chrome: Test content. [Search role not announced]
56 | Firefox: Test content. [Search role not announced]
57 | Edge: Test content. [Search role not announced]
58 |
59 |
60 | ← Return to main list
61 |
62 |
63 |
--------------------------------------------------------------------------------
/disabled02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input with "disabled"
6 |
7 |
8 |
9 |
10 |
11 | <input> with disabled
12 | ← Return to main list
13 | This is a test case designed to determine how the disabled attribute, applied to the <input> element, is announced by various screen readers.
14 | Disabled attributes cannot receive focus, so the only way to test how these attributes are announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
26 | Code
27 |
28 | <div>
29 | <label for="name">Name</label>
30 | <input type="text" id="name" disabled>
31 | </div>
32 |
33 | Assistive technologies
34 |
35 |
VoiceOver
36 |
37 | Chrome: Name. Dimmed . Clickable. Text.
38 | Firefox: Name. Dimmed . Edit text.
39 | Safari: Name. Dimmed . Edit text.
40 |
41 |
42 |
43 |
NVDA
44 |
45 | Chrome: [Label] Name. [Input] Edit. Unavailable .
46 | Firefox: [Label] Name. [Input] Edit. Unavailable .
47 | Edge: [Label] Name. [Input] Edit. Unavailable .
48 |
49 |
50 |
51 |
JAWS
52 |
53 | Chrome: [Label] Name. [Input] Edit. Unavailable .
54 | Edge: [Label] Name. [Input] Edit. Unavailable .
55 |
56 |
57 | ← Return to main list
58 |
59 |
60 |
--------------------------------------------------------------------------------
/landmarks-aside02.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | role="complementary"
6 |
7 |
8 |
9 |
10 |
11 | role="complementary"
12 | ← Return to main list
13 | This test case is designed to determine how role="complementary" is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
21 |
22 |
Test content
23 |
24 |
25 | Code
26 |
27 | <div role="complementary">
28 | <h4>Test content</h4>
29 | </div>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Complementary . [Stop] Heading level 4. Test content. [Stop] End of complementary .
36 | Firefox: Complementary . [Stop] Heading level 4. Test content. [Stop] End of complementary .
37 | Safari: Complementary . [Stop] Heading level 4. Test content. [Stop] End of complementary .
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Complementary landmark . Heading level 4. Test content.
44 | Firefox: Complementary landmark . Heading level 4. Test content.
45 | Edge: Complementary landmark . Heading level 4. Test content.
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Heading level 4. Test content. [Complementary role not announced]
52 | Firefox: Heading level 4. Test content. [Complementary role not announced]
53 | Edge: Heading level 4. Test content. [Complementary role not announced]
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------
/fieldset-buttons.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Fieldset with buttons
6 |
7 |
8 |
9 |
10 |
11 | <fieldset> with buttons
12 | ← Return to main list
13 | This is a test case designed to determine how the <fieldset> and <legend> elements are announced in relation to buttons by various screen readers.
14 | Example
15 |
22 | Code
23 |
24 | <fieldset>
25 | <legend>Options</legend>
26 | <button>Back</button>
27 | <button>Next</button>
28 | </fieldset>
29 |
30 | Assistive technologies
31 |
32 |
VoiceOver
33 |
34 | Chrome: Back. Button. Options . Group .
35 | Firefox: Back. Button. Options . Group .
36 | Safari: Back. Button. Options . Options . Group . [Legend announced twice]
37 |
38 |
39 |
40 |
NVDA
41 |
42 | Chrome: Options . Grouping . Back. Button
43 | Firefox: Options . Grouping . Back. Button.
44 | Edge: Options . Grouping . Back. Button
45 |
46 |
47 |
48 |
JAWS
49 |
50 | Chrome: Options . Group . Back. Button.
51 | Firefox: Options . Back. Button.
52 | Edge: Options . Group . Back. Button.
53 |
54 |
55 | ← Return to main list
56 |
57 |
58 |
--------------------------------------------------------------------------------
/input-help-text-aria-label.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input with help text as an "aria-label"
6 |
7 |
8 |
9 |
10 |
11 | <input> with help text as an aria-label
12 | ← Return to main list
13 | This is a test case designed to determine how help information is applied directly to the <input> via the aria-label attribute, is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="name">Name</label>
25 | <input
26 | type="text"
27 | id="name"
28 | aria-label="Name. Make sure to include full name"
29 | >
30 | </div>
31 |
32 | Assistive technologies
33 |
34 |
VoiceOver
35 |
36 | Chrome: Name. Make sure to include full name . Edit text.
37 | Firefox: Name. Edit text. [aria-label not announced]
38 | Safari: Name. Make sure to include full name . Edit text.
39 |
40 |
41 |
42 |
NVDA
43 |
44 | Chrome: Name. Make sure to include full name . Edit. Blank.
45 | Firefox: Name. Make sure to include full name . Edit. Has autocomplete. Blank.
46 | Edge: Name. Make sure to include full name . Edit. Blank.
47 |
48 |
49 |
50 |
JAWS
51 |
52 | Chrome: Name. Make sure to include full name . Edit. Type in text.
53 | Firefox: Name. Make sure to include full name . Edit. Type in text.
54 | Edge: Name. Make sure to include full name . Edit. Type in text.
55 |
56 |
57 | ← Return to main list
58 |
59 |
60 |
--------------------------------------------------------------------------------
/invalid03.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | input with aria-invalid="grammar"
6 |
7 |
8 |
9 |
10 |
11 | <input> with aria-invalid="grammar"
12 | ← Return to main list
13 | This is a test case designed to determine how the aria-invalid attribute, applied to the <input> element, is announced by various screen readers.
14 | Example
15 |
21 | Code
22 |
23 | <div>
24 | <label for="name">Name</label>
25 | <input type="text" id="name" aria-invalid="grammar">
26 | </div>
27 |
28 | Assistive technologies
29 |
30 |
VoiceOver
31 |
32 | Chrome: Name. Invalid grammar . Edit text.
33 | Firefox: Name. Invalid grammar . Edit text.
34 | Safari: Name. Invalid grammar . Edit text.
35 |
36 |
37 |
38 |
NVDA
39 |
40 | Chrome: Name. Edit. Invalid entry . Grammar . Error. Blank.
41 | Firefox: Name. Edit. Invalid entry . Has autocomplete. Grammar . Error. Blank.
42 | Edge: Name. Edit. Invalid entry . Grammar . Error. Blank.
43 |
44 |
45 |
46 |
JAWS
47 |
48 | Chrome: Name. Edit. Invalid entry . Type in text. [Grammar not announced]
49 | Firefox: Name. Edit. Invalid entry . Type in text. [Grammar not announced]
50 | Edge: Name. Edit. Invalid entry . Type in text. [Grammar not announced]
51 |
52 |
53 | ← Return to main list
54 |
55 |
56 |
--------------------------------------------------------------------------------
/landmarks-article01.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | article
6 |
7 |
8 |
9 |
10 |
11 | <article>
12 | ← Return to main list
13 | This test case is designed to determine how the <article> element is announced by various screen readers.
14 | By default, the element being tested does not receive focus, so the only way to test how it is announced is via:
15 |
16 | VoiceOver : Announce next item: VO + Right Arrow
17 | NVDA and JAWS : Announce next line: DOWN ARROW
18 |
19 | Example
20 |
21 |
22 | Test content
23 |
24 |
25 | Code
26 |
27 | <article>
28 | <h4>Test content</h4>
29 | </article>
30 |
31 | Assistive technologies
32 |
33 |
VoiceOver
34 |
35 | Chrome: Article . [Stop] Heading level 4. Test content. [Stop] End of article .
36 | Firefox: Article . [Stop] Heading level 4. Test content. [Stop] End of article .
37 | Safari: Article . [Stop] Heading level 4. Test content. [Stop] End of article .
38 |
39 |
40 |
41 |
NVDA
42 |
43 | Chrome: Heading level 4. Test content. [Article not announced]
44 | Firefox: Heading level 4. Test content. [Article not announced]
45 | Edge: Heading level 4. Test content. [Article not announced]
46 |
47 |
48 |
49 |
JAWS
50 |
51 | Chrome: Article . [Stop] Heading level 4. Test content. [Stop] Article end .
52 | Firefox: Article . [Stop] Heading level 4. Test content. [Stop] Article end .
53 | Edge: Article . [Stop] Heading level 4. Test content. [Stop] Article end .
54 |
55 |
56 | ← Return to main list
57 |
58 |
59 |
--------------------------------------------------------------------------------