testaro 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +502 -0
- package/aceconfig.js +7 -0
- package/commands.js +249 -0
- package/index.js +1248 -0
- package/package.json +39 -0
- package/procs/score/asp09.js +555 -0
- package/procs/test/allText.js +76 -0
- package/procs/test/allVis.js +17 -0
- package/procs/test/linksByType.js +90 -0
- package/procs/test/textOf.txt +73 -0
- package/scoring/correlation.js +74 -0
- package/scoring/correlations.json +327 -0
- package/scoring/data.json +26021 -0
- package/scoring/dupCounts.js +39 -0
- package/scoring/dupCounts.json +112 -0
- package/scoring/duplications.json +253 -0
- package/scoring/issues.json +304 -0
- package/scoring/packageData.js +171 -0
- package/scoring/packageIssues.js +34 -0
- package/scoring/rulesetData.json +15 -0
- package/tests/aatt.js +64 -0
- package/tests/alfa.js +107 -0
- package/tests/axe.js +109 -0
- package/tests/bulk.js +21 -0
- package/tests/embAc.js +36 -0
- package/tests/focAll.js +62 -0
- package/tests/focInd.js +99 -0
- package/tests/focOp.js +132 -0
- package/tests/hover.js +195 -0
- package/tests/ibm.js +89 -0
- package/tests/labClash.js +157 -0
- package/tests/linkUl.js +65 -0
- package/tests/menuNav.js +254 -0
- package/tests/motion.js +115 -0
- package/tests/radioSet.js +87 -0
- package/tests/role.js +164 -0
- package/tests/styleDiff.js +146 -0
- package/tests/tabNav.js +282 -0
- package/tests/wave.js +44 -0
- package/tests/zIndex.js +49 -0
- package/validation/batches/sample.json +13 -0
- package/validation/executors/sample.js +11 -0
- package/validation/scripts/app/sample.json +21 -0
- package/validation/scripts/test/bulk.json +39 -0
- package/validation/scripts/test/embAc.json +45 -0
- package/validation/scripts/test/focAll.json +59 -0
- package/validation/scripts/test/focInd.json +55 -0
- package/validation/scripts/test/focOp.json +53 -0
- package/validation/scripts/test/hover.json +47 -0
- package/validation/scripts/test/labClash.json +43 -0
- package/validation/scripts/test/linkUl.json +62 -0
- package/validation/scripts/test/menuNav.json +97 -0
- package/validation/scripts/test/motion.json +53 -0
- package/validation/scripts/test/radioSet.json +43 -0
- package/validation/scripts/test/role.json +42 -0
- package/validation/scripts/test/styleDiff.json +61 -0
- package/validation/scripts/test/tabNav.json +97 -0
- package/validation/scripts/test/zIndex.json +40 -0
- package/validation/targets/bulk/bad.html +48 -0
- package/validation/targets/bulk/good.html +15 -0
- package/validation/targets/embAc/bad.html +21 -0
- package/validation/targets/embAc/good.html +15 -0
- package/validation/targets/focAll/good.html +15 -0
- package/validation/targets/focAll/less.html +15 -0
- package/validation/targets/focAll/more.html +16 -0
- package/validation/targets/focInd/bad.html +31 -0
- package/validation/targets/focInd/good.html +22 -0
- package/validation/targets/focOp/bad.html +18 -0
- package/validation/targets/focOp/good.html +15 -0
- package/validation/targets/hover/bad.html +19 -0
- package/validation/targets/hover/good.html +15 -0
- package/validation/targets/labClash/bad.html +20 -0
- package/validation/targets/labClash/good.html +18 -0
- package/validation/targets/linkUl/bad.html +16 -0
- package/validation/targets/linkUl/good.html +30 -0
- package/validation/targets/linkUl/na.html +20 -0
- package/validation/targets/menuNav/bad.html +106 -0
- package/validation/targets/menuNav/bad.js +348 -0
- package/validation/targets/menuNav/good.html +106 -0
- package/validation/targets/menuNav/good.js +365 -0
- package/validation/targets/menuNav/style.css +22 -0
- package/validation/targets/motion/bad.css +15 -0
- package/validation/targets/motion/bad.html +16 -0
- package/validation/targets/motion/good.html +15 -0
- package/validation/targets/radioSet/bad.html +34 -0
- package/validation/targets/radioSet/good.html +27 -0
- package/validation/targets/role/bad.html +26 -0
- package/validation/targets/role/good.html +22 -0
- package/validation/targets/styleDiff/bad.html +35 -0
- package/validation/targets/styleDiff/good.html +36 -0
- package/validation/targets/tabNav/bad.html +51 -0
- package/validation/targets/tabNav/bad.js +35 -0
- package/validation/targets/tabNav/good.html +53 -0
- package/validation/targets/tabNav/good.js +83 -0
- package/validation/targets/tabNav/goodMoz.js +206 -0
- package/validation/targets/tabNav/style.css +34 -0
- package/validation/targets/zIndex/bad.html +17 -0
- package/validation/targets/zIndex/good.html +15 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"what": "validation of tabNav test",
|
|
3
|
+
"strict": true,
|
|
4
|
+
"commands": [
|
|
5
|
+
{
|
|
6
|
+
"type": "launch",
|
|
7
|
+
"which": "chromium",
|
|
8
|
+
"what": "usual browser"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "url",
|
|
12
|
+
"which": "file://__dirname/validation/targets/tabNav/good.html",
|
|
13
|
+
"what": "page with standard menu navigation"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "test",
|
|
17
|
+
"which": "tabNav",
|
|
18
|
+
"what": "tab-list navigation",
|
|
19
|
+
"withItems": false,
|
|
20
|
+
"expect": [
|
|
21
|
+
["totals.navigations.all.total", "=", 21],
|
|
22
|
+
["totals.navigations.all.correct", "=", 21],
|
|
23
|
+
["totals.navigations.all.incorrect", "=", 0],
|
|
24
|
+
["totals.navigations.specific.tab.total", "=", 3],
|
|
25
|
+
["totals.navigations.specific.tab.correct", "=", 3],
|
|
26
|
+
["totals.navigations.specific.tab.incorrect", "=", 0],
|
|
27
|
+
["totals.navigations.specific.left.total", "=", 3],
|
|
28
|
+
["totals.navigations.specific.left.correct", "=", 3],
|
|
29
|
+
["totals.navigations.specific.left.incorrect", "=", 0],
|
|
30
|
+
["totals.navigations.specific.right.total", "=", 3],
|
|
31
|
+
["totals.navigations.specific.right.correct", "=", 3],
|
|
32
|
+
["totals.navigations.specific.right.incorrect", "=", 0],
|
|
33
|
+
["totals.navigations.specific.up.total", "=", 3],
|
|
34
|
+
["totals.navigations.specific.up.correct", "=", 3],
|
|
35
|
+
["totals.navigations.specific.up.incorrect", "=", 0],
|
|
36
|
+
["totals.navigations.specific.down.total", "=", 3],
|
|
37
|
+
["totals.navigations.specific.down.correct", "=", 3],
|
|
38
|
+
["totals.navigations.specific.down.incorrect", "=", 0],
|
|
39
|
+
["totals.navigations.specific.home.total", "=", 3],
|
|
40
|
+
["totals.navigations.specific.home.correct", "=", 3],
|
|
41
|
+
["totals.navigations.specific.home.incorrect", "=", 0],
|
|
42
|
+
["totals.navigations.specific.end.total", "=", 3],
|
|
43
|
+
["totals.navigations.specific.end.correct", "=", 3],
|
|
44
|
+
["totals.navigations.specific.end.incorrect", "=", 0],
|
|
45
|
+
["totals.tabElements.total", "=", 3],
|
|
46
|
+
["totals.tabElements.correct", "=", 3],
|
|
47
|
+
["totals.tabElements.incorrect", "=", 0],
|
|
48
|
+
["totals.tabLists.total", "=", 1],
|
|
49
|
+
["totals.tabLists.correct", "=", 1],
|
|
50
|
+
["totals.tabLists.incorrect", "=", 0]
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"type": "url",
|
|
55
|
+
"which": "file://__dirname/validation/targets/tabNav/bad.html",
|
|
56
|
+
"what": "page with deviant menu navigation"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"type": "test",
|
|
60
|
+
"which": "tabNav",
|
|
61
|
+
"what": "tab-list navigation",
|
|
62
|
+
"withItems": false,
|
|
63
|
+
"expect": [
|
|
64
|
+
["totals.navigations.all.total", "=", 21],
|
|
65
|
+
["totals.navigations.all.correct", "=", 9],
|
|
66
|
+
["totals.navigations.all.incorrect", "=", 12],
|
|
67
|
+
["totals.navigations.specific.tab.total", "=", 3],
|
|
68
|
+
["totals.navigations.specific.tab.correct", "=", 1],
|
|
69
|
+
["totals.navigations.specific.tab.incorrect", "=", 2],
|
|
70
|
+
["totals.navigations.specific.left.total", "=", 3],
|
|
71
|
+
["totals.navigations.specific.left.correct", "=", 0],
|
|
72
|
+
["totals.navigations.specific.left.incorrect", "=", 3],
|
|
73
|
+
["totals.navigations.specific.right.total", "=", 3],
|
|
74
|
+
["totals.navigations.specific.right.correct", "=", 0],
|
|
75
|
+
["totals.navigations.specific.right.incorrect", "=", 3],
|
|
76
|
+
["totals.navigations.specific.up.total", "=", 3],
|
|
77
|
+
["totals.navigations.specific.up.correct", "=", 3],
|
|
78
|
+
["totals.navigations.specific.up.incorrect", "=", 0],
|
|
79
|
+
["totals.navigations.specific.down.total", "=", 3],
|
|
80
|
+
["totals.navigations.specific.down.correct", "=", 3],
|
|
81
|
+
["totals.navigations.specific.down.incorrect", "=", 0],
|
|
82
|
+
["totals.navigations.specific.home.total", "=", 3],
|
|
83
|
+
["totals.navigations.specific.home.correct", "=", 1],
|
|
84
|
+
["totals.navigations.specific.home.incorrect", "=", 2],
|
|
85
|
+
["totals.navigations.specific.end.total", "=", 3],
|
|
86
|
+
["totals.navigations.specific.end.correct", "=", 1],
|
|
87
|
+
["totals.navigations.specific.end.incorrect", "=", 2],
|
|
88
|
+
["totals.tabElements.total", "=", 3],
|
|
89
|
+
["totals.tabElements.correct", "=", 0],
|
|
90
|
+
["totals.tabElements.incorrect", "=", 3],
|
|
91
|
+
["totals.tabLists.total", "=", 1],
|
|
92
|
+
["totals.tabLists.correct", "=", 0],
|
|
93
|
+
["totals.tabLists.incorrect", "=", 1]
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"what": "validation of zIndex test",
|
|
3
|
+
"strict": true,
|
|
4
|
+
"commands": [
|
|
5
|
+
{
|
|
6
|
+
"type": "launch",
|
|
7
|
+
"which": "chromium",
|
|
8
|
+
"what": "usual browser"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "url",
|
|
12
|
+
"which": "file://__dirname/validation/targets/zIndex/good.html",
|
|
13
|
+
"what": "page with no explicit z-index attributes"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "test",
|
|
17
|
+
"which": "zIndex",
|
|
18
|
+
"what": "zIndex",
|
|
19
|
+
"withItems": false,
|
|
20
|
+
"expect": [
|
|
21
|
+
["totals.total", "=", 0]
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "url",
|
|
26
|
+
"which": "file://__dirname/validation/targets/zIndex/bad.html",
|
|
27
|
+
"what": "page with explicit z-index attributes roles"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"type": "test",
|
|
31
|
+
"which": "zIndex",
|
|
32
|
+
"what": "zIndex",
|
|
33
|
+
"withItems": false,
|
|
34
|
+
"expect": [
|
|
35
|
+
["totals.total", "=", 2],
|
|
36
|
+
["totals.tagNames.BUTTON", "=", 2]
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Large page</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Large page</h1>
|
|
12
|
+
<p>This page is large.</p>
|
|
13
|
+
<p>It contains a long list.</p>
|
|
14
|
+
<ul>
|
|
15
|
+
<li>item</li>
|
|
16
|
+
<li>item</li>
|
|
17
|
+
<li>item</li>
|
|
18
|
+
<li>item</li>
|
|
19
|
+
<li>item</li>
|
|
20
|
+
<li>item</li>
|
|
21
|
+
<li>item</li>
|
|
22
|
+
<li>item</li>
|
|
23
|
+
<li>item</li>
|
|
24
|
+
<li>item</li>
|
|
25
|
+
<li>item</li>
|
|
26
|
+
<li>item</li>
|
|
27
|
+
<li>item</li>
|
|
28
|
+
<li>item</li>
|
|
29
|
+
<li>item</li>
|
|
30
|
+
<li>item</li>
|
|
31
|
+
<li>item</li>
|
|
32
|
+
<li>item</li>
|
|
33
|
+
<li>item</li>
|
|
34
|
+
<li>item</li>
|
|
35
|
+
<li>item</li>
|
|
36
|
+
<li>item</li>
|
|
37
|
+
<li>item</li>
|
|
38
|
+
<li>item</li>
|
|
39
|
+
<li>item</li>
|
|
40
|
+
<li>item</li>
|
|
41
|
+
<li>item</li>
|
|
42
|
+
<li>item</li>
|
|
43
|
+
<li>item</li>
|
|
44
|
+
<li>item</li>
|
|
45
|
+
</ul>
|
|
46
|
+
</main>
|
|
47
|
+
</body>
|
|
48
|
+
</html>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Small page</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Small page</h1>
|
|
12
|
+
<p>This page is small.</p>
|
|
13
|
+
</main>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with embedded interactive elements</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page with embedded interactive elements</h1>
|
|
12
|
+
<p>All of the following embeddings violate the HTML specification for <a href="https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-a-element">links</a> or <a href="https://html.spec.whatwg.org/multipage/form-elements.html#the-button-element">buttons</a>.</p>
|
|
13
|
+
<p>This link to <a href="https://en.wikipedia.org/wiki/Button">information about <button type="button">buttons</button> like this</a> contains one.</p>
|
|
14
|
+
<p>This link to <a href="https://en.wikipedia.org/wiki/Input_method">information about checkboxes such as <input type="checkbox" aria-label="yes or no"> this</a> contains one.</p>
|
|
15
|
+
<p>This link to <a href="https://en.wikipedia.org/wiki/Drop-down_list">information about drop-down lists such as <select aria-label="choose one"><option>A</option><option>B</option></select></a> contains one.</p>
|
|
16
|
+
<p>This link to <a href="https://en.wikipedia.org/wiki/HTML">information about HTML text inputs (<input type="text" aria-label="input">), <button type="button">buttons</button>, etc.</a> contains a text input and a button.</p>
|
|
17
|
+
<p>This <button type="button"> I have read <a href="https://en.wikipedia.org/wiki/Button">Button</a></button> button contains a link.</p>
|
|
18
|
+
<p>This <button type="button"> Check this <input type="checkbox" aria-label="I have read the button article"> and click <a href="https://en.wikipedia.org/wiki/Button">buttons</a> button</button> contains a checkbox and a link.</p>
|
|
19
|
+
</main>
|
|
20
|
+
</body>
|
|
21
|
+
</html>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page without embedded interactive elements</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page without embedded interactive elements</h1>
|
|
12
|
+
<p>This page contains a link to <a href="https://en.wikipedia.org">information</a> and a <button type="button">button</button>. No interactive element is embedded in either of them.</p>
|
|
13
|
+
</main>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with full focusability</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page with full focusability</h1>
|
|
12
|
+
<p>This page contains a link to <a href="https://en.wikipedia.org">information</a>, a <button type="button">button</button>, and a <label>text input <input type="text"></label>. All three, and no other elements, can be focused with Tab-key navigation.</p>
|
|
13
|
+
</main>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with partial focusability</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page with partial focusability</h1>
|
|
12
|
+
<p>This page contains a link to <a id="link" href="https://en.wikipedia.org">information</a>, a <button type="button" onblur="document.getElementById('link').focus()">button</button>, and a <label>text input <input type="text"></label>. Only two of them can be focused with Tab-key navigation, because, when the button is blurred, the link becomes focused again.</p>
|
|
13
|
+
</main>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with added focusability</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page with added focusability</h1>
|
|
12
|
+
<p>This page contains a link to <a href="https://en.wikipedia.org">information</a>, a <button type="button" onfocus="document.getElementById('hiddenP').style.display = 'block'">button</button>, and a <label>text input <input type="text"></label>. All three, and no other elements, can be focused with Tab-key navigation.</p>
|
|
13
|
+
<p id="hiddenP" style="display: none">The button, when focused, makes this paragraph, and therefore this <a href="https://en.wikipedia.org/wiki/Web_accessibility">link on web accessibility</a> and this <button type="button">new button</button>, visible.</p>
|
|
14
|
+
</main>
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with mixed focus indication</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
<style>
|
|
9
|
+
input[type=text]:focus {
|
|
10
|
+
outline: none;
|
|
11
|
+
}
|
|
12
|
+
input[type=checkbox]:focus {
|
|
13
|
+
outline: 3px blue solid;
|
|
14
|
+
outline-offset: 2px;
|
|
15
|
+
}
|
|
16
|
+
#special:focus {
|
|
17
|
+
outline: none;
|
|
18
|
+
text-decoration-line: underline overline;
|
|
19
|
+
text-decoration-color: orange;
|
|
20
|
+
}
|
|
21
|
+
</style>
|
|
22
|
+
</head>
|
|
23
|
+
<body>
|
|
24
|
+
<main>
|
|
25
|
+
<h1>Page with mixed focus indication</h1>
|
|
26
|
+
<p>This paragraph contains a link to <a href="https://en.wikipedia.org">information</a>, a <button type="button">button</button>, and a <label>text input <input type="text"></label>. The link and button exhibit default focus indicators, but the input has none.</p>
|
|
27
|
+
<p>This paragraph contains a checkbox with an enhanced focus-indication outline. <label><input type="checkbox"> I am human</label></p>
|
|
28
|
+
<p>This paragraph contains a button with a non-outline focus indicator. <button id="special" type="button">special button</button></p>
|
|
29
|
+
</main>
|
|
30
|
+
</body>
|
|
31
|
+
</html>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with outline focus indication</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
<style>
|
|
9
|
+
input[type=checkbox]:focus {
|
|
10
|
+
outline: 3px blue solid;
|
|
11
|
+
outline-offset: 2px;
|
|
12
|
+
}
|
|
13
|
+
</style>
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<main>
|
|
17
|
+
<h1>Page with outline focus indication</h1>
|
|
18
|
+
<p>This paragraph contains a link to <a href="https://en.wikipedia.org">information</a>, a <button type="button">button</button>, and a <label>text input <input type="text"></label>. All three exhibit default focus indicators.</p>
|
|
19
|
+
<p>This paragraph contains a checkbox with an enhanced focus-indication outline. <label><input type="checkbox"> I am human</label></p>
|
|
20
|
+
</main>
|
|
21
|
+
</body>
|
|
22
|
+
</html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with deviant focusability and operability</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page with deviant focusability and operability</h1>
|
|
12
|
+
<p>This paragraph contains a link to <a href="https://en.wikipedia.org">information</a>, a <button type="button" tabindex="-1">button</button>, and a <label>text input <input type="text"></label>. The button is not focusable.</p>
|
|
13
|
+
<p>This paragraph contains a <span style="font-weight: bold" tabindex="0">focusable part</span> that is not operable.</p>
|
|
14
|
+
<p>If you click <span id="clickable" style="color: red" onclick="document.getElementById('clickable').style.color = 'black'">this text</span>, it will turn black, but it is not focusable.</p>
|
|
15
|
+
<p>This <span style="cursor: pointer">word</span> is not focusable, but its cursor makes you think it is operable.</p>
|
|
16
|
+
</main>
|
|
17
|
+
</body>
|
|
18
|
+
</html>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with standard focusability and operability</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page with standard focusability and operability</h1>
|
|
12
|
+
<p>This paragraph contains a link to <a href="https://en.wikipedia.org">information</a>, a <button type="button">button</button>, and a <label>text input <input type="text"></label>. All three are focusable and operable.</p>
|
|
13
|
+
</main>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with deviant hover behavior</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page with deviant hover behavior</h1>
|
|
12
|
+
<p>This page contains a link to <a href="https://en.wikipedia.org" onmouseover="document.getElementById('translucent').style.opacity = 1">information</a>, a <button type="button" onmouseover="document.getElementById('hiddenP').style.display = 'block'">button</button>, and a <label>text input <input type="text"></label>. All three elements can be hovered over.</p>
|
|
13
|
+
<p id="hiddenP" style="display: none">The button, when hovered over, makes this paragraph, and therefore this <a href="https://en.wikipedia.org/wiki/Web_accessibility">link on web accessibility</a> and this <button type="button">new button</button>, visible.</p>
|
|
14
|
+
<p id="translucent" style="opacity: 0.4">The first link, when hovered over, changes the opacity of this paragraph from 0.4 to 1. That indirectly changes the opacity of this <span>word</span>, too.</p>
|
|
15
|
+
<p>The small button is mostly covered by a large one below.</p>
|
|
16
|
+
<p style="position: relative"><button style="position: absolute; left: 10rem">button</button><button style="position: absolute; left: 11rem; top: -0.5rem; font-size: x-large">bigger button</button></p>
|
|
17
|
+
</main>
|
|
18
|
+
</body>
|
|
19
|
+
</html>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with standard hover behavior</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page with standard hover behavior</h1>
|
|
12
|
+
<p>This paragraph contains a link to <a href="https://en.wikipedia.org">information</a>, a <button type="button">button</button>, and a <label>text input <input type="text"></label>. All three can be hovered over, and hovering over any of them does not trigger any change in content.</p>
|
|
13
|
+
</main>
|
|
14
|
+
</body>
|
|
15
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with deviant labeling</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page with deviant labeling</h1>
|
|
12
|
+
<p>This paragraph contains an empty <button type="button" aria-label></button> button, with no accessible name.</p>
|
|
13
|
+
<p>This is another <button id="labButton" type="button" aria-labelledby="buttonLabel">button</button> with its text content overridden by both an explicit label and a reference label as a <label id="buttonLabel" for="labButton">special type of button</label>.</p>
|
|
14
|
+
<p>This is an implicitly and attribute-labeled <label>checkbox input <input id="cbox" type="checkbox" aria-label="a checkbox-type input"></label>.</p>
|
|
15
|
+
<p><span id="textInputLabel">Who is your favorite actor?</span> <input type="text" aria-labelledby="textInputLabel" aria-label="your favorite actor">.</p>
|
|
16
|
+
<p>What do you think? Enter your thoughts into this text area, which is unlabeled.</p>
|
|
17
|
+
<p><textarea aria-label></textarea></p>
|
|
18
|
+
</main>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with standard labeling</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page with standard labeling</h1>
|
|
12
|
+
<p>This paragraph contains a <button type="button">button</button> with its text content as accessible name, another <button id="labButton" type="button">button</button> with its text content overridden by an explicit label as a <label for="labButton">special type of button</label>, an <label>implicitly labeled text input <input type="text"></label>, and an explicitly labeled <label for="cbox">checkbox input</label>: <input id="cbox" type="checkbox">.</p>
|
|
13
|
+
<p>This <label>implicitly labeled text input <input id="textInput" type="text"></label> also has an explicit label, which validly provides <label for="textInput">additional information</label>.</p>
|
|
14
|
+
<p><span id="what">What do you think?</span> Enter your thoughts into this text area, which is labeled by reference.</p>
|
|
15
|
+
<p><textarea aria-labelledby="what"></textarea></p>
|
|
16
|
+
</main>
|
|
17
|
+
</body>
|
|
18
|
+
</html>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page without underlined inline links</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page without underlined inline links</h1>
|
|
12
|
+
<p>This paragraph contains an inline link to <a style="text-decoration: overline" href="https://en.wikipedia.org">English information</a> that has an overline instead of an underline.</p>
|
|
13
|
+
<p>This paragraph contains an inline link to <a style="text-decoration: none" href="https://fr.wikipedia.org">French information</a> without any underline.</p>
|
|
14
|
+
</main>
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with underlined inline links</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
<style>
|
|
9
|
+
.nude > li > a {
|
|
10
|
+
text-decoration: none;
|
|
11
|
+
}
|
|
12
|
+
</style>
|
|
13
|
+
</head>
|
|
14
|
+
<body>
|
|
15
|
+
<main>
|
|
16
|
+
<h1>Page with underlined inline links</h1>
|
|
17
|
+
<p>This page contains inline links to <a href="https://en.wikipedia.org">English information</a> and <a style="text-decoration: underline wavy 2px" href="https://fr.wikipedia.org">French information</a>. The latter is weird, but still an underline.</p>
|
|
18
|
+
<p>The following links, however, are not inline, so can be (and are) devoid of underlines.</p>
|
|
19
|
+
<ul class="nude">
|
|
20
|
+
<li><a href="https://sp.wikipedia.org">Spanish information</a></li>
|
|
21
|
+
<li><a href="https://eo.wikipedia.org">Esperanto information</a></li>
|
|
22
|
+
</ul>
|
|
23
|
+
<p>The following links are not inline, so can be devoid of underlines, but still have them.</p>
|
|
24
|
+
<ul>
|
|
25
|
+
<li><a href="https://eus.wikipedia.org">Basque information</a></li>
|
|
26
|
+
<li><a href="https://tr.wikipedia.org">Turkish information</a></li>
|
|
27
|
+
</ul>
|
|
28
|
+
</main>
|
|
29
|
+
</body>
|
|
30
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page without inline links</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<main>
|
|
11
|
+
<h1>Page without inline links</h1>
|
|
12
|
+
<p>This page contains no inline links.</p>
|
|
13
|
+
<p>The following links are not inline.</p>
|
|
14
|
+
<ul>
|
|
15
|
+
<li><a href="https://eus.wikipedia.org">Basque information</a></li>
|
|
16
|
+
<li><a href="https://tr.wikipedia.org">Turkish information</a></li>
|
|
17
|
+
</ul>
|
|
18
|
+
</main>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en-US">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Page with deviant menu navigation</title>
|
|
6
|
+
<meta name="description" content="tester">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
+
<link rel="stylesheet" href="style.css">
|
|
9
|
+
<script src="bad.js" defer></script>
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<main>
|
|
13
|
+
<h1>Page with deviant menu navigation</h1>
|
|
14
|
+
<p>This page contains a menu bar. In it, the personalities submenu implements pseudofocus management and the technologies menu implements true focus management. <a href="https://www.w3.org/TR/wai-aria-practices-1.1/#menu">These two patterns</a> are recommended by the Accessible Rich Internet Applications Working Group. However, the technologies menu manages focus in a nonstandard manner.</p>
|
|
15
|
+
<p id="menuBarAbout">Choose a domain to toggle that domain’s submenu open or closed. The submenu contains links to definitions (in a new tab).</p>
|
|
16
|
+
<ul id="menubar" role="menubar" class="menubar blockLink" aria-labelledby="menuBarAbout">
|
|
17
|
+
<li role="none">
|
|
18
|
+
<button
|
|
19
|
+
id="persButton"
|
|
20
|
+
role="menuitem"
|
|
21
|
+
type="button"
|
|
22
|
+
tabindex="0"
|
|
23
|
+
aria-haspopup="menu"
|
|
24
|
+
aria-expanded="false"
|
|
25
|
+
aria-controls="persMenu"
|
|
26
|
+
>
|
|
27
|
+
Personalities
|
|
28
|
+
</button>
|
|
29
|
+
<ul
|
|
30
|
+
id="persMenu"
|
|
31
|
+
role="menu"
|
|
32
|
+
aria-labelledby="persButton"
|
|
33
|
+
aria-activedescendant="introvert"
|
|
34
|
+
class="shut"
|
|
35
|
+
tabindex="-1"
|
|
36
|
+
>
|
|
37
|
+
<li role="none">
|
|
38
|
+
<a
|
|
39
|
+
id="introvert"
|
|
40
|
+
role="menuitem"
|
|
41
|
+
class="blurred"
|
|
42
|
+
tabindex="-1"
|
|
43
|
+
href="https://en.wiktionary.org/wiki/introvert"
|
|
44
|
+
target="_blank"
|
|
45
|
+
>
|
|
46
|
+
introvert
|
|
47
|
+
</a>
|
|
48
|
+
</li>
|
|
49
|
+
<li role="none">
|
|
50
|
+
<a
|
|
51
|
+
id="extravert"
|
|
52
|
+
role="menuitem"
|
|
53
|
+
class="blurred"
|
|
54
|
+
tabindex="-1"
|
|
55
|
+
href="https://en.wiktionary.org/wiki/extravert"
|
|
56
|
+
target="_blank"
|
|
57
|
+
>
|
|
58
|
+
extravert
|
|
59
|
+
</a>
|
|
60
|
+
</li>
|
|
61
|
+
</ul>
|
|
62
|
+
</li>
|
|
63
|
+
<li role="none">
|
|
64
|
+
<button
|
|
65
|
+
id="techButton"
|
|
66
|
+
role="menuitem"
|
|
67
|
+
type="button"
|
|
68
|
+
tabindex="-1"
|
|
69
|
+
aria-haspopup="menu"
|
|
70
|
+
aria-expanded="false"
|
|
71
|
+
aria-controls="techMenu"
|
|
72
|
+
>
|
|
73
|
+
Technologies
|
|
74
|
+
</button>
|
|
75
|
+
<ul
|
|
76
|
+
id="techMenu"
|
|
77
|
+
role="menu"
|
|
78
|
+
aria-labelledby="techButton"
|
|
79
|
+
class="shut"
|
|
80
|
+
>
|
|
81
|
+
<li role="none">
|
|
82
|
+
<a
|
|
83
|
+
tabindex="-1"
|
|
84
|
+
role="menuitem"
|
|
85
|
+
href="https://en.wikipedia.org/wiki/Prestressed_concrete"
|
|
86
|
+
target="_blank"
|
|
87
|
+
>
|
|
88
|
+
prestressed concrete
|
|
89
|
+
</a>
|
|
90
|
+
</li>
|
|
91
|
+
<li role="none">
|
|
92
|
+
<a
|
|
93
|
+
tabindex="-1"
|
|
94
|
+
role="menuitem"
|
|
95
|
+
href="https://en.wikipedia.org/wiki/Heat_pump"
|
|
96
|
+
target="_blank"
|
|
97
|
+
>
|
|
98
|
+
heat pump
|
|
99
|
+
</a>
|
|
100
|
+
</li>
|
|
101
|
+
</ul>
|
|
102
|
+
</li>
|
|
103
|
+
</ul>
|
|
104
|
+
</main>
|
|
105
|
+
</body>
|
|
106
|
+
</html>
|