Tests
Progress
Basic
Code
1
<progress max='100' value='40'></progress>
Screen reader | ChromeVox 53 | NVDA 2017.4 | ||
---|---|---|---|---|
Browser | Chrome 63 | Chrome 63 | Edge 16 | Firefox 57 |
Spoken output | progress bar, 40 | progress bar, 40 | progress bar, 40% | |
Skipped | true | true | false | false |
Indeterminate
Code
1
<progress tabindex=0></progress>
Screen reader | ChromeVox 53 | NVDA 2017.4 | ||
---|---|---|---|---|
Browser | Chrome 62 | Chrome 63 | Edge 16 | Firefox 57 |
Spoken output | progress bar | progress bar 0 | progress bar half checked | |
Skipped | true | true | false | true |
Note:
Decide if skipping the element is preferred
Overflow
Code
1
<progress max='30' value='40'></progress>
Screen reader | ChromeVox 53 | NVDA 2017.4 | ||
---|---|---|---|---|
Browser | Chrome 63 | Chrome 63 | Edge 16 | Firefox 57 |
Spoken output | progress bar, 30 | progress bar 100 | progress bar, 100% | |
Skipped | true | true | false | false |
Basic with aria fallback
Code
1
<progress role='progressbar' max='100' value='40' aria-valueNow='40'></progress>
Screen reader | ChromeVox 53 | NVDA 2017.4 | ||
---|---|---|---|---|
Browser | Chrome 63 | Chrome 63 | Edge 16 | Firefox 57 |
Spoken output | Progress bar 40 | progress bar, 40 | progress bar 40 | progress bar, 40 |
Skipped | false | false | false | false |
Overflow with aria fallback
Code
1
<progress role='progressbar' max='30' value='40' aria-valueNow='40' aria-valueMax='30'></progress>
Screen reader | ChromeVox 53 | NVDA 2017.4 | ||
---|---|---|---|---|
Browser | Chrome 63 | Chrome 63 | Edge 16 | Firefox 57 |
Spoken output | Progress bar 40 Max 30 | progress bar, 40 | progress bar 133 | progress bar, 40 |
Skipped | false | false | false | false |
Indeterminate with aria fallback
Code
1
<progress role='progressbar'></progress>
Screen reader | ChromeVox 53 | NVDA 2017.4 | ||
---|---|---|---|---|
Browser | Chrome 63 | Chrome 63 | Edge 16 | Firefox 57 |
Spoken output | Progress bar | progress bar | progress bar 0 | progress bar half checked |
Skipped | true | true | false | true |
Svg
Basic markup
Code
1
<svg role="img"><title>Test</title><rect x="0" y="0" width="100" height="100" /></svg>
Screen reader | voiceover (macOs) 8.0 (562.13) | ChromeVox 53 | NVDA 2017.4 | |||||
---|---|---|---|---|---|---|---|---|
Browser | Safari 11 | Chrome 64 | Firefox 57 | Chrome 62 | Firefox 57 | Chrome 63 | Edge 16 | IE 11 |
Spoken output | Test group | Test, image | Test, image | image | Test graphic, Test | graphic, Test | graphic, Test | graphic, Test, graphic, Test |
Skipped | false | false | false | false | false | false | false | false |
With aria-label
Code
1
<svg role="img" aria-label="Test"><rect x="0" y="0" width="100" height="100" /></svg>
Screen reader | voiceover (macOs) 8.0 (562.13) | ChromeVox 53 | NVDA 2017.4 | |||
---|---|---|---|---|---|---|
Browser | Firefox 57 | Chrome 62 | Firefox 57 | Chrome 63 | Edge 16 | IE 11 |
Spoken output | Test, image | Test, image | Test graphic, Test | graphic, Test | graphic, Test | graphic, Test |
Skipped | false | false | false | false | false | false |
Note:
ChromeVox currently doesn’t pronounce <title>
or aria-labelby
while it’s visible witin the automation API
Extended with aria & role
Code
1
2
3
4
5
<svg role="presentation">
<g role="img" aria-label="Test">
<rect x="0" y="0" width="100" height="100" />
</g>
</svg>
Screen reader | voiceover (macOs) 8.0 (562.13) | ChromeVox 53 | NVDA 2017.4 | |||
---|---|---|---|---|---|---|
Browser | Firefox 57 | Chrome 62 | Firefox 57 | Chrome 63 | Edge 16 | IE 11 |
Spoken output | Test, image | Test, image | Test graphic, Test | graphic, Test | graphic, Test | graphic, Test |
Skipped | false | false | false | false | false | false |
Note:
Adds Safari support, but the SVG can’t have title
element as direct child of <svg>
Symbols
Code
1
2
3
4
5
6
7
8
9
<svg role="presentation">
<use role="img" xlink:href="#r" />
</svg>
<svg>
<symbol id="r">
<title>Test</title>
<rect x="0" y="0" width="100" height="100" />
</symbol>
</svg>
Screen reader | voiceover (macOs) 8.0 (562.13) | ChromeVox 53 | NVDA 2017.4 | |||
---|---|---|---|---|---|---|
Browser | Firefox 57 | Chrome 62 | Firefox 57 | Chrome 63 | Edge 16 | IE 11 |
Spoken output | image | image | blank | graphic | ||
Skipped | false | false | false | false | false | false |
Symbols extend with role
Code
1
2
3
4
5
6
7
8
9
10
11
<svg role="presentation">
<use role="img" xlink:href="#link">
<title>Test</title>
</use>
</svg>
<svg hidden>
<symbol id="link">
<rect x="0" y="0" width="100" height="100" />
</symbol>
</svg>
Screen reader | voiceover (macOs) 8.0 (562.13) | ChromeVox 53 | NVDA 2017.4 | |||
---|---|---|---|---|---|---|
Browser | Chrome 57 | Chrome 62 | Firefox 57 | Chrome 63 | Edge 16 | IE 11 |
Spoken output | Test, image | Test, image | Test graphic, Test | graphic, Test | graphic Test | graphic, Test |
Skipped | false | false | false | false | false | false |
Meter
Basic
Code
1
<meter value='0.5'></meter>
Screen reader | ChromeVox 53 | NVDA 2017.4 | Narrator 10 | |||
---|---|---|---|---|---|---|
Browser | Chrome 62 | Chrome 63 | Firefox 57 | Edge 16 | Chrome 63 | Edge 16 |
Spoken output | progress bar, .5 | blank | progress bar 50 | 0% progress bar | 50% meter | |
Skipped | false | false | false | false | true | false |
Extended with aria
Code
1
2
3
<meter value='.4'
role='slider' aria-readonly='true' aria-valuemin='0' aria-valuemax='1' aria-valuenow='0.4'
></meter>
Screen reader | NVDA 2017.4 | Narrator 10 | |
---|---|---|---|
Browser | Edge 16 | Chrome 63 | Edge 16 |
Spoken output | slider 40 | slider at 0.400000005960465 | meter at Good |
Skipped | false | true | false |
Note:
Edge doesn’t work, as it doesn’t allow overriding the role within an meter element
Extended with aria including aria-valuetext
Code
1
2
3
<meter value='.4' role='slider' aria-readonly='true' aria-roledescription="score" aria-label="level"
aria-valuemin='0' aria-valuemax='1' aria-valuenow='0.4' aria-valuetext='40%'
></meter>
Screen reader | NVDA 2017.4 | Narrator 10 | |
---|---|---|---|
Browser | Edge 16 | Chrome 63 | Edge 16 |
Spoken output | slider 40 | slider at 40% | meter at 40% |
Skipped | false | true | false |
Within low range
Code
1
<meter low='0.4' value='0.2' min='0' max='1'></meter>
Screen reader | NVDA 2017.4 | Narrator 10 |
---|---|---|
Browser | Edge 16 | Edge 16 |
Spoken output | progress bar 20 | 20% meter |
Skipped | false | false |
Within low range extended with aria
Code
1
2
3
<meter value='.4' role='slider' aria-readonly='true'
aria-valuemin='0' aria-valuemax='1' aria-valuenow='0.4' aria-valuetext='low'
></meter>
Screen reader | NVDA 2017.4 | Narrator 10 |
---|---|---|
Browser | Edge 16 | Edge 16 |
Spoken output | slider 40 | meter at low |
Skipped | false | false |
Buttons
<button>
Code
1
<button>Test</button>
<input type="button">
Code
1
<input type="button" value="Test">
Toggle button
Code
1
<button type='button' aria-pressed='false'>Test</button>
Screen reader | voiceover (macOs) 7.0 (477.40.6) | ChromeVox 53 | NVDA 2017.4 | Narrator 10.0.16299.15 | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Browser | Chrome 62 | Safari 10 | Firefox 55 | Chrome 62 | Firefox 57 | Chrome 63 | Edge 16 | IE 11 | Edge 16 | IE 11 |
Spoken output | Test, toggle button | Test, toggle button | Test, button | Test, button not pressed | toggle button not pressed, Test | toggle button not pressed, Test | toggle button not pressed, Test | button, Test | off, Test, button | off, Test, button |
Skipped | false | false | false | false | false | false | false | false | false | false |
Pressed toggle button
Code
1
<button type='button' aria-pressed='true'>Test</button>
Screen reader | voiceover (macOs) browsers | ChromeVox 53 | NVDA 2017.4 | |||||
---|---|---|---|---|---|---|---|---|
Browser | Chrome 62 | Safari 10 | Firefox 55 | Chrome 62 | Firefox 57 | Chrome 63 | Edge 16 | IE 11 |
Spoken output | Test, selected, toggle button | Test, toggle button | Test, button | Test, button pressed | toggle button pressed, Test | toggle button pressed, Test | toggle button pressed, Test | button pressed, Test |
Skipped | false | false | false | false | false | false | false | false |
Menu button
Code
1
<button type="button" aria-haspopup="true">Test</button>
Screen reader | voiceover (macOs) 7.0 (477.40.6) | ChromeVox 53 | NVDA 2017.4 | |||||
---|---|---|---|---|---|---|---|---|
Browser | Chrome 62 | Safari 10 | Firefox 55 | Chrome 62 | Firefox 57 | Chrome 63 | Edge 16 | IE 11 |
Spoken output | Test, pop up button | Test, pop up button | Test, menu button | Test, pop up button | menu button subMenu, Test | menu button subMenu, Test | button, Test | button subMenu, Test |
Skipped | false | false | false | false | false | false | false | false |
Menu button with open menu
Code
1
<button type="button" aria-haspopup="true" aria-expanded="true">Test</button>
Screen reader | voiceover (macOs) 7.0 (477.40.6) | ChromeVox 53 | NVDA 2017.4 | |||||
---|---|---|---|---|---|---|---|---|
Browser | Chrome 62 | Safari 10 | Firefox 55 | Chrome 62 | Firefox 57 | Chrome 63 | Edge 16 | IE 11 |
Spoken output | Test, expanded, pop up button | Test, expanded, pop up button | Test, menu button | Test, popup button expanded | menu button expanded subMenu, Test | menu button expanded subMenu, Test | button expanded, Test | button expanded subMenu, Test |
Skipped | false | false | false | false | false | false | false | false |
- Menu item
Code
1
2
3
4
<button type="button" aria-haspopup="true" aria-expanded="true" aria-controls="menu-1">Test</button>
<ul id="menu-1" role="menu">
<li role="menuitem">Menu item</li>
</ul>
Screen reader | voiceover (macOs) 7.0 (477.40.6) | ChromeVox 53 | NVDA 2017.4 | |||||
---|---|---|---|---|---|---|---|---|
Browser | Chrome 62 | Safari 10 | Firefox 55 | Chrome 62 | Firefox 57 | Chrome 63 | Edge 16 | IE 11 |
Spoken output | Test, expanded, pop up button | Test, expanded, pop up button | Test, menu button | Test, popup button expanded | menu button expanded subMenu, Test | menu button expanded subMenu, Test | button expanded, Test | button expanded subMenu, Test |
Skipped | false | false | false | false | false | false | false | false |
Details
Closed <details>
Test
contentCode
1
2
3
4
<details>
<summary>Test</summary>
content
</details>
Screen reader | voiceover (macOs) 10 (767) | ChromeVox 53 |
---|---|---|
Browser | Firefox 90 | Chrome 62 |
Spoken output | Test, collapsed, summary | Test » content |
Skipped | false | false |
Open <details>
Test
contentCode
1
<details open><summary>Test</summary>content</details>
Screen reader | voiceover (macOs) 10 (767) | ChromeVox 53 |
---|---|---|
Browser | Firefox 90 | Chrome 62 |
Spoken output | Test, expanded, summary » content | Test » content |
Skipped | false | false |
<details> with missing <summary>
content
Code
1
<details open>content</details>
Screen reader | voiceover (macOs) 10 (767) | ChromeVox 53 | ||
---|---|---|---|---|
Browser | Chrome 91 | Safari 14 | Firefox 90 | Chrome 91 |
Spoken output | Details, disclosure triangle » content | Details, expanded, summary » content | content » Details, expanded, summary | content |
Skipped | false | false | false | false |
<details> with fallback aria attributes
Test
content
Code
1
2
3
4
5
6
7
8
<div>
<div role="button" aria-expanded="true" aria-controls="fb-details-content">
Test
</div>
<div id="fb-details-content">
content
</div>
</div>
Menu
Menubar
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<nav>
<menu role="menubar">
<li role="presentation">
<a href="#" role="menuitem">Page</a>
</li>
<li role="presentation">
<button type="button" role="menuitem" aria-expanded="false">Action</button>
<ul role="menu">
<li role="presentation">
<a href="#" role="menuitem">Submenu item</a>
</li>
</ul>
</li>
</menu>
</nav>
Screen reader | voiceover (macOs) browsers | ChromeVox browsers |
---|---|---|
Browser | Safari | Chrome |
Spoken output | ||
Skipped | false | false |
Note:
Menu
Code
1
2
3
4
5
6
7
8
9
10
11
12
<!-- menu button -->
<button type="menu" aria-controls="popup-menu" aria-expanded="false">Menu Button</button>
<!-- menu -->
<menu id="popup-menu" role="menu" hidden>
<li role="presentation">
<a href="#" role="menuitem">Page</a>
</li>
<li role="presentation">
<a href="#" role="menuitem">Another page</a>
</li>
</menu>
Old fashioned menu
Code
1
2
3
4
5
6
7
8
9
10
<nav>
<ul>
<li>
<a href="#">Page</a>
</li>
<li>
<a href="#">Another page</a>
</li>
</ul>
</nav>