testilo 17.2.1 → 17.2.3
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/package.json
CHANGED
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
<tr><th>Tested by</th><td>Testaro, procedure <code>__ts__</code></td></tr>
|
|
27
27
|
<tr><th>Scored by</th><td>Testilo, procedure <code>__sp__</code></td></tr>
|
|
28
28
|
<tr><th>Digested by</th><td>Testilo, procedure <code>__dp__</code></td></tr>
|
|
29
|
+
<tr><th>Full report</th><td><a href="__reportURL__"><code>__reportURL__</code></a></td></tr>
|
|
29
30
|
</table>
|
|
30
31
|
</header>
|
|
31
32
|
<h2>Introduction</h2>
|
|
32
|
-
<p>
|
|
33
|
-
<p>Nine different
|
|
34
|
-
<p>The results were interpreted to yield an aggregate score of __total__, where 0 would be <q>perfect</q>.</p>
|
|
33
|
+
<p>How <a href="https://www.w3.org/WAI/">accessible</a> is the __org__ web page at <a href="__reportURL__"><code>__reportURL__</code></a>?</p>
|
|
34
|
+
<p>This digest can help answer that question. Nine different tools (Alfa, ASLint, Axe, Equal Access, HTML CodeSniffer, Nu Html Checker, QualWeb, Testaro, and WAVE) tested the page to check its compliance with their accessibility rules. In all, the tools define about 960 rules, which are classified here into about 290 accessibility issues. The results were interpreted to yield a score. If the page passed every test, its score would be 0. The score for this page was __total__.</p>
|
|
35
35
|
<h2>Total score</h2>
|
|
36
36
|
<p>The total score is the sum of five components.</p>
|
|
37
37
|
<table class="allBorder secondCellRight">
|
|
@@ -40,16 +40,18 @@
|
|
|
40
40
|
<tr><th>Component</th><th>Score</th><th>Description</th></tr>
|
|
41
41
|
</thead>
|
|
42
42
|
<tbody class="headersLeft">
|
|
43
|
-
<tr><th>total</th><td>__total__</td><td>Sum of the component scores</td></tr>
|
|
44
43
|
<tr><th>issue</th><td>__issue__</td><td>Severity and number of reported defects</td></tr>
|
|
45
44
|
<tr><th>tool</th><td>__tool__</td><td>Tool-by-tool defect ratings</td></tr>
|
|
46
45
|
<tr><th>prevention</th><td>__prevention__</td><td>Failed attempts by tools to test the page</td></tr>
|
|
47
46
|
<tr><th>log</th><td>__log__</td><td>Browser warnings about the page</td></tr>
|
|
48
47
|
<tr><th>latency</th><td>__latency__</td><td>Abnormal delay in page responses</td></tr>
|
|
49
48
|
</tbody>
|
|
49
|
+
<tfoot>
|
|
50
|
+
<tr><th>total</th><td>__total__</td><td>Sum of the component scores</td></tr>
|
|
51
|
+
</tfoot>
|
|
50
52
|
</table>
|
|
51
53
|
<h2>Issue scores</h2>
|
|
52
|
-
<p>The score
|
|
54
|
+
<p>The score on an issue depends on the <dfn>severity</dfn> (user impact and certainty) of the issue and on how many instances were reported (by one or more tools).</p>
|
|
53
55
|
<table class="allBorder secondCellRight">
|
|
54
56
|
<caption>Issue scores</caption>
|
|
55
57
|
<thead>
|
|
@@ -60,10 +62,8 @@
|
|
|
60
62
|
</tbody>
|
|
61
63
|
</table>
|
|
62
64
|
<h2>Itemized issues</h2>
|
|
63
|
-
<p>The reported rule violations are itemized below, issue by issue. Additional details can be inspected in the <a href="__reportURL__">
|
|
65
|
+
<p>The reported rule violations are itemized below, issue by issue. Additional details can be inspected in the <a href="__reportURL__">full report</a>.</p>
|
|
64
66
|
__issueDetailRows__
|
|
65
|
-
<h2>Complete report</h2>
|
|
66
|
-
<pre>__report__</pre>
|
|
67
67
|
<footer>
|
|
68
68
|
<p class="date">Produced <time itemprop="datePublished" datetime="__dateISO__">__dateSlash__</time></p>
|
|
69
69
|
</footer>
|
|
@@ -68,19 +68,13 @@ const populateQuery = (report, query) => {
|
|
|
68
68
|
issueDetailRows.push(`<p>Score: ${issueData.score}</p>`);
|
|
69
69
|
const toolIDs = Object.keys(issueData.tools);
|
|
70
70
|
toolIDs.forEach(toolID => {
|
|
71
|
-
issueDetailRows.push(`<h4>
|
|
71
|
+
issueDetailRows.push(`<h4>Violations of <code>${toolID}</code> rules</h5>`);
|
|
72
72
|
const ruleIDs = Object.keys(issueData.tools[toolID]);
|
|
73
73
|
ruleIDs.forEach(ruleID => {
|
|
74
74
|
const ruleData = issueData.tools[toolID][ruleID];
|
|
75
75
|
issueDetailRows.push(`<h5>Rule <code>${ruleID}</code></h5>`);
|
|
76
76
|
issueDetailRows.push(`<p>Description: ${ruleData.what}</p>`);
|
|
77
77
|
issueDetailRows.push(`<p>Count of instances: ${ruleData.complaints.countTotal}</p>`);
|
|
78
|
-
issueDetailRows.push('<h6>Complaint specifics</h6>');
|
|
79
|
-
issueDetailRows.push('<ul>');
|
|
80
|
-
ruleData.complaints.texts.forEach(text => {
|
|
81
|
-
issueDetailRows.push(` <li>${htmlEscape(text || '')}</li>`);
|
|
82
|
-
});
|
|
83
|
-
issueDetailRows.push('</ul>');
|
|
84
78
|
});
|
|
85
79
|
});
|
|
86
80
|
});
|
package/procs/score/tic36.js
CHANGED
|
@@ -1203,7 +1203,7 @@ exports.issues = {
|
|
|
1203
1203
|
}
|
|
1204
1204
|
},
|
|
1205
1205
|
customKeyboardRisk: {
|
|
1206
|
-
why: 'Custom item may prevent a
|
|
1206
|
+
why: 'Custom item may prevent a keyboard-only user from operating it',
|
|
1207
1207
|
wcag: '2.1.1',
|
|
1208
1208
|
weight: 1,
|
|
1209
1209
|
tools: {
|
|
@@ -1217,7 +1217,7 @@ exports.issues = {
|
|
|
1217
1217
|
}
|
|
1218
1218
|
},
|
|
1219
1219
|
objectBlurKeyboardRisk: {
|
|
1220
|
-
why: 'Custom item may trap a
|
|
1220
|
+
why: 'Custom item may trap a keyboard-only user',
|
|
1221
1221
|
wcag: '2.1.1',
|
|
1222
1222
|
weight: 1,
|
|
1223
1223
|
tools: {
|
|
@@ -1231,7 +1231,7 @@ exports.issues = {
|
|
|
1231
1231
|
}
|
|
1232
1232
|
},
|
|
1233
1233
|
eventKeyboardRisk: {
|
|
1234
|
-
why: '
|
|
1234
|
+
why: 'Keyboard-only user may be unable to perform an action',
|
|
1235
1235
|
wcag: '2.1.1',
|
|
1236
1236
|
weight: 1,
|
|
1237
1237
|
tools: {
|
|
@@ -1356,7 +1356,7 @@ exports.issues = {
|
|
|
1356
1356
|
}
|
|
1357
1357
|
},
|
|
1358
1358
|
activeDescendantBadID: {
|
|
1359
|
-
why: '
|
|
1359
|
+
why: 'Keyboard-only user cannot reach an item in a menu',
|
|
1360
1360
|
wcag: '1.3.1',
|
|
1361
1361
|
weight: 4,
|
|
1362
1362
|
tools: {
|
|
@@ -1370,7 +1370,7 @@ exports.issues = {
|
|
|
1370
1370
|
}
|
|
1371
1371
|
},
|
|
1372
1372
|
governedBadID: {
|
|
1373
|
-
why: '
|
|
1373
|
+
why: 'Keyboard-only user cannot reach an item',
|
|
1374
1374
|
wcag: '1.3.1',
|
|
1375
1375
|
weight: 4,
|
|
1376
1376
|
tools: {
|
|
@@ -1534,7 +1534,7 @@ exports.issues = {
|
|
|
1534
1534
|
}
|
|
1535
1535
|
},
|
|
1536
1536
|
haspopupBad: {
|
|
1537
|
-
why: '
|
|
1537
|
+
why: 'Keyboard-only user cannot operate a custom tool',
|
|
1538
1538
|
wcag: '1.3.1',
|
|
1539
1539
|
weight: 4,
|
|
1540
1540
|
tools: {
|
|
@@ -1913,7 +1913,7 @@ exports.issues = {
|
|
|
1913
1913
|
}
|
|
1914
1914
|
},
|
|
1915
1915
|
linkPair: {
|
|
1916
|
-
why: '
|
|
1916
|
+
why: 'Keyboard-only user expends extra effort to skip a link',
|
|
1917
1917
|
wcag: '2.4.4',
|
|
1918
1918
|
weight: 2,
|
|
1919
1919
|
tools: {
|
|
@@ -2147,7 +2147,7 @@ exports.issues = {
|
|
|
2147
2147
|
}
|
|
2148
2148
|
},
|
|
2149
2149
|
parentMissing: {
|
|
2150
|
-
why: '
|
|
2150
|
+
why: 'Keyboard-only user cannot operate a custom tool',
|
|
2151
2151
|
wcag: '1.3.1',
|
|
2152
2152
|
weight: 4,
|
|
2153
2153
|
tools: {
|
|
@@ -2189,7 +2189,7 @@ exports.issues = {
|
|
|
2189
2189
|
}
|
|
2190
2190
|
},
|
|
2191
2191
|
descendantMissing: {
|
|
2192
|
-
why: '
|
|
2192
|
+
why: 'Keyboard-only user cannot operate a custom tool',
|
|
2193
2193
|
wcag: '1.3.1',
|
|
2194
2194
|
weight: 4,
|
|
2195
2195
|
tools: {
|
|
@@ -2217,7 +2217,7 @@ exports.issues = {
|
|
|
2217
2217
|
}
|
|
2218
2218
|
},
|
|
2219
2219
|
presentationChild: {
|
|
2220
|
-
why: '
|
|
2220
|
+
why: 'Keyboard-only user cannot reach an item intended to be reachable',
|
|
2221
2221
|
wcag: '1.3.1',
|
|
2222
2222
|
weight: 4,
|
|
2223
2223
|
tools: {
|
|
@@ -3913,7 +3913,7 @@ exports.issues = {
|
|
|
3913
3913
|
}
|
|
3914
3914
|
},
|
|
3915
3915
|
decorativeTitle: {
|
|
3916
|
-
why: 'Hovering
|
|
3916
|
+
why: 'Hovering-produced information is denied to a keyboard-only user',
|
|
3917
3917
|
wcag: '1.3.1',
|
|
3918
3918
|
weight: 1,
|
|
3919
3919
|
tools: {
|
|
@@ -4708,7 +4708,7 @@ exports.issues = {
|
|
|
4708
4708
|
}
|
|
4709
4709
|
},
|
|
4710
4710
|
noOptionFocusable: {
|
|
4711
|
-
why: '
|
|
4711
|
+
why: 'Keyboard-only user cannot choose an option',
|
|
4712
4712
|
wcag: '2.1.1',
|
|
4713
4713
|
weight: 1,
|
|
4714
4714
|
tools: {
|
|
@@ -5552,7 +5552,7 @@ exports.issues = {
|
|
|
5552
5552
|
}
|
|
5553
5553
|
},
|
|
5554
5554
|
tabFocusability: {
|
|
5555
|
-
why: '
|
|
5555
|
+
why: 'Keyboard-only user cannot choose an item to operate',
|
|
5556
5556
|
wcag: '2.1.1',
|
|
5557
5557
|
weight: 4,
|
|
5558
5558
|
tools: {
|
|
@@ -5592,7 +5592,7 @@ exports.issues = {
|
|
|
5592
5592
|
}
|
|
5593
5593
|
},
|
|
5594
5594
|
focusIndication: {
|
|
5595
|
-
why: '
|
|
5595
|
+
why: 'Keyboard-only user cannot choose an item to operate',
|
|
5596
5596
|
wcag: '2.4.7',
|
|
5597
5597
|
weight: 4,
|
|
5598
5598
|
tools: {
|
|
@@ -6254,7 +6254,7 @@ exports.issues = {
|
|
|
6254
6254
|
}
|
|
6255
6255
|
},
|
|
6256
6256
|
operableFocusable: {
|
|
6257
|
-
why: '
|
|
6257
|
+
why: 'Keyboard-only user cannot navigate properly to an operable item',
|
|
6258
6258
|
wcag: '2.1.1',
|
|
6259
6259
|
weight: 4,
|
|
6260
6260
|
tools: {
|
|
@@ -6268,7 +6268,7 @@ exports.issues = {
|
|
|
6268
6268
|
}
|
|
6269
6269
|
},
|
|
6270
6270
|
focusableRole: {
|
|
6271
|
-
why: '
|
|
6271
|
+
why: 'Keyboard-only user cannot navigate properly to the operable items',
|
|
6272
6272
|
wcag: '4.1.2',
|
|
6273
6273
|
weight: 3,
|
|
6274
6274
|
tools: {
|
|
@@ -6289,7 +6289,7 @@ exports.issues = {
|
|
|
6289
6289
|
}
|
|
6290
6290
|
},
|
|
6291
6291
|
focusableHidden: {
|
|
6292
|
-
why: '
|
|
6292
|
+
why: 'Keyboard-only user cannot navigate properly to the operable items',
|
|
6293
6293
|
wcag: '4.1.2',
|
|
6294
6294
|
weight: 4,
|
|
6295
6295
|
tools: {
|
|
@@ -6341,7 +6341,7 @@ exports.issues = {
|
|
|
6341
6341
|
}
|
|
6342
6342
|
},
|
|
6343
6343
|
focusedAway: {
|
|
6344
|
-
why: '
|
|
6344
|
+
why: 'Keyboard-only user cannot navigate properly to the operable items',
|
|
6345
6345
|
wcag: '1.4.10',
|
|
6346
6346
|
weight: 3,
|
|
6347
6347
|
tools: {
|
|
@@ -6355,7 +6355,7 @@ exports.issues = {
|
|
|
6355
6355
|
}
|
|
6356
6356
|
},
|
|
6357
6357
|
focusableDescendants: {
|
|
6358
|
-
why: '
|
|
6358
|
+
why: 'Keyboard-only user cannot navigate properly to the operable items',
|
|
6359
6359
|
wcag: '4.1.2',
|
|
6360
6360
|
weight: 4,
|
|
6361
6361
|
tools: {
|
|
@@ -6746,7 +6746,7 @@ exports.issues = {
|
|
|
6746
6746
|
}
|
|
6747
6747
|
},
|
|
6748
6748
|
menuNavigation: {
|
|
6749
|
-
why: 'Menu items behave improperly for a
|
|
6749
|
+
why: 'Menu items behave improperly for a keyboard-only user',
|
|
6750
6750
|
wcag: '2.1.1',
|
|
6751
6751
|
weight: 2,
|
|
6752
6752
|
tools: {
|
|
@@ -6774,7 +6774,7 @@ exports.issues = {
|
|
|
6774
6774
|
}
|
|
6775
6775
|
},
|
|
6776
6776
|
tabNavigation: {
|
|
6777
|
-
why: 'Tablist items behave improperly for a
|
|
6777
|
+
why: 'Tablist items behave improperly for a keyboard-only user',
|
|
6778
6778
|
wcag: '2.1.1',
|
|
6779
6779
|
weight: 2,
|
|
6780
6780
|
tools: {
|
|
@@ -6999,7 +6999,7 @@ exports.issues = {
|
|
|
6999
6999
|
}
|
|
7000
7000
|
},
|
|
7001
7001
|
tabIndexPositive: {
|
|
7002
|
-
why: '
|
|
7002
|
+
why: 'Keyboard-only user cannot predict the navigation sequence',
|
|
7003
7003
|
wcag: '2.4.3',
|
|
7004
7004
|
weight: 1,
|
|
7005
7005
|
tools: {
|
|
@@ -7027,7 +7027,7 @@ exports.issues = {
|
|
|
7027
7027
|
}
|
|
7028
7028
|
},
|
|
7029
7029
|
tabIndexEmpty: {
|
|
7030
|
-
why: '
|
|
7030
|
+
why: 'Keyboard-only user cannot follow the intended navigation sequence',
|
|
7031
7031
|
wcag: '1.3.1',
|
|
7032
7032
|
weight: 4,
|
|
7033
7033
|
tools: {
|
|
@@ -7041,7 +7041,7 @@ exports.issues = {
|
|
|
7041
7041
|
}
|
|
7042
7042
|
},
|
|
7043
7043
|
tabIndexInt: {
|
|
7044
|
-
why: '
|
|
7044
|
+
why: 'Keyboard-only user cannot follow the intended navigation sequence',
|
|
7045
7045
|
wcag: '1.3.1',
|
|
7046
7046
|
weight: 4,
|
|
7047
7047
|
tools: {
|
|
@@ -7055,7 +7055,7 @@ exports.issues = {
|
|
|
7055
7055
|
}
|
|
7056
7056
|
},
|
|
7057
7057
|
tabIndexExtra: {
|
|
7058
|
-
why: 'Revision risks interfering with navigation by a
|
|
7058
|
+
why: 'Revision risks interfering with navigation by a keyboard-only user',
|
|
7059
7059
|
wcag: '1.3.1',
|
|
7060
7060
|
weight: 1,
|
|
7061
7061
|
tools: {
|
|
@@ -7271,7 +7271,7 @@ exports.issues = {
|
|
|
7271
7271
|
}
|
|
7272
7272
|
},
|
|
7273
7273
|
keyboardScroll: {
|
|
7274
|
-
why: '
|
|
7274
|
+
why: 'Keyboard-only user cannot scroll an item',
|
|
7275
7275
|
wcag: '2.1.1',
|
|
7276
7276
|
weight: 4,
|
|
7277
7277
|
tools: {
|
|
@@ -7334,7 +7334,7 @@ exports.issues = {
|
|
|
7334
7334
|
}
|
|
7335
7335
|
},
|
|
7336
7336
|
skipRepeatedContent: {
|
|
7337
|
-
why: '
|
|
7337
|
+
why: 'Keyboard-only user cannot easily reach the specific content of the document',
|
|
7338
7338
|
wcag: '2.4.1',
|
|
7339
7339
|
weight: 3,
|
|
7340
7340
|
tools: {
|
|
@@ -7384,7 +7384,7 @@ exports.issues = {
|
|
|
7384
7384
|
}
|
|
7385
7385
|
},
|
|
7386
7386
|
repeatedContentRisk: {
|
|
7387
|
-
why: '
|
|
7387
|
+
why: 'Keyboard-only user may be unable easily to reach the specific content of the document',
|
|
7388
7388
|
wcag: '2.4.1',
|
|
7389
7389
|
weight: 1,
|
|
7390
7390
|
tools: {
|