testilo 3.6.4 → 3.7.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/package.json +1 -1
- package/procs/digest/dp11a/index.js +3 -3
- package/procs/score/sp12a.js +130 -16
package/package.json
CHANGED
|
@@ -19,9 +19,9 @@ const specialMessages = {
|
|
|
19
19
|
|
|
20
20
|
// Makes strings HTML-safe.
|
|
21
21
|
const htmlEscape = textOrNumber => textOrNumber
|
|
22
|
-
.toString()
|
|
23
|
-
.replace(/&/g, '&')
|
|
24
|
-
.replace(/</g, '<');
|
|
22
|
+
.toString()
|
|
23
|
+
.replace(/&/g, '&')
|
|
24
|
+
.replace(/</g, '<');
|
|
25
25
|
// Gets a row of the score-summary table.
|
|
26
26
|
const getScoreRow = (component, score) => `<tr><th>${component}</th><td>${score}</td></tr>`;
|
|
27
27
|
// Gets the start of a paragraph about a special score.
|
package/procs/score/sp12a.js
CHANGED
|
@@ -172,7 +172,7 @@ const groups = {
|
|
|
172
172
|
axe: {
|
|
173
173
|
'image-alt': {
|
|
174
174
|
quality: 1,
|
|
175
|
-
what: '
|
|
175
|
+
what: 'Image has no text alternative'
|
|
176
176
|
}
|
|
177
177
|
},
|
|
178
178
|
htmlcs: {
|
|
@@ -190,7 +190,7 @@ const groups = {
|
|
|
190
190
|
wave: {
|
|
191
191
|
'e:alt_missing': {
|
|
192
192
|
quality: 1,
|
|
193
|
-
what: '
|
|
193
|
+
what: 'Text alternative is missing'
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
}
|
|
@@ -206,6 +206,17 @@ const groups = {
|
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
},
|
|
209
|
+
imagesSameAlt: {
|
|
210
|
+
weight: 1,
|
|
211
|
+
packages: {
|
|
212
|
+
wave: {
|
|
213
|
+
'a:alt_duplicate': {
|
|
214
|
+
quality: 1,
|
|
215
|
+
what: 'Two images near each other have the same text alternative'
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
},
|
|
209
220
|
imageTextLong: {
|
|
210
221
|
weight: 2,
|
|
211
222
|
packages: {
|
|
@@ -239,17 +250,6 @@ const groups = {
|
|
|
239
250
|
}
|
|
240
251
|
}
|
|
241
252
|
},
|
|
242
|
-
presentationConflict: {
|
|
243
|
-
weight: 4,
|
|
244
|
-
packages: {
|
|
245
|
-
axe: {
|
|
246
|
-
'presentation-role-conflict': {
|
|
247
|
-
quality: 1,
|
|
248
|
-
what: 'Element has a none/presentation role but is focusable or has a global ARIA state or property'
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
},
|
|
253
253
|
decorativeElementExposed: {
|
|
254
254
|
weight: 1,
|
|
255
255
|
packages: {
|
|
@@ -510,6 +510,10 @@ const groups = {
|
|
|
510
510
|
57: {
|
|
511
511
|
quality: 1,
|
|
512
512
|
what: 'Link has no text inside it'
|
|
513
|
+
},
|
|
514
|
+
91: {
|
|
515
|
+
quality: 1,
|
|
516
|
+
what: 'Link has a background image but no text inside it'
|
|
513
517
|
}
|
|
514
518
|
},
|
|
515
519
|
wave: {
|
|
@@ -953,6 +957,10 @@ const groups = {
|
|
|
953
957
|
weight: 4,
|
|
954
958
|
packages: {
|
|
955
959
|
alfa: {
|
|
960
|
+
r19: {
|
|
961
|
+
quality: 1,
|
|
962
|
+
what: 'ARIA state or property has an invalid value'
|
|
963
|
+
},
|
|
956
964
|
r20: {
|
|
957
965
|
quality: 1,
|
|
958
966
|
what: 'ARIA attribute is not defined'
|
|
@@ -1326,6 +1334,32 @@ const groups = {
|
|
|
1326
1334
|
}
|
|
1327
1335
|
}
|
|
1328
1336
|
},
|
|
1337
|
+
justification: {
|
|
1338
|
+
weight: 1,
|
|
1339
|
+
packages: {
|
|
1340
|
+
wave: {
|
|
1341
|
+
'a:text_justified': {
|
|
1342
|
+
quality: 1,
|
|
1343
|
+
what: 'Text is justified'
|
|
1344
|
+
}
|
|
1345
|
+
}
|
|
1346
|
+
}
|
|
1347
|
+
},
|
|
1348
|
+
nonSemanticText: {
|
|
1349
|
+
weight: 2,
|
|
1350
|
+
packages: {
|
|
1351
|
+
htmlcs: {
|
|
1352
|
+
'w:AA.1_3_1.H49.B': {
|
|
1353
|
+
quality: 1,
|
|
1354
|
+
what: 'Bold text is coded nonsemantically'
|
|
1355
|
+
},
|
|
1356
|
+
'w:AA.1_3_1.H49.Small': {
|
|
1357
|
+
quality: 1,
|
|
1358
|
+
what: 'Small text is coded nonsemantically'
|
|
1359
|
+
}
|
|
1360
|
+
}
|
|
1361
|
+
}
|
|
1362
|
+
},
|
|
1329
1363
|
pseudoParagraphRisk: {
|
|
1330
1364
|
weight: 1,
|
|
1331
1365
|
packages: {
|
|
@@ -1368,6 +1402,12 @@ const groups = {
|
|
|
1368
1402
|
quality: 1,
|
|
1369
1403
|
what: 'CSS underline on text that is not a link'
|
|
1370
1404
|
}
|
|
1405
|
+
},
|
|
1406
|
+
wave: {
|
|
1407
|
+
'a:underline': {
|
|
1408
|
+
quality: 1,
|
|
1409
|
+
what: 'CSS underline on text that is not a link'
|
|
1410
|
+
}
|
|
1371
1411
|
}
|
|
1372
1412
|
}
|
|
1373
1413
|
},
|
|
@@ -1527,6 +1567,17 @@ const groups = {
|
|
|
1527
1567
|
}
|
|
1528
1568
|
}
|
|
1529
1569
|
},
|
|
1570
|
+
layoutTable: {
|
|
1571
|
+
weight: 2,
|
|
1572
|
+
packages: {
|
|
1573
|
+
wave: {
|
|
1574
|
+
'a:table_layout': {
|
|
1575
|
+
quality: 1,
|
|
1576
|
+
what: 'Table element is misused to arrange content'
|
|
1577
|
+
}
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
},
|
|
1530
1581
|
tableCaption: {
|
|
1531
1582
|
weight: 1,
|
|
1532
1583
|
packages: {
|
|
@@ -1538,7 +1589,18 @@ const groups = {
|
|
|
1538
1589
|
}
|
|
1539
1590
|
}
|
|
1540
1591
|
},
|
|
1541
|
-
|
|
1592
|
+
tableCellHeaderless: {
|
|
1593
|
+
weight: 4,
|
|
1594
|
+
packages: {
|
|
1595
|
+
alfa: {
|
|
1596
|
+
r77: {
|
|
1597
|
+
quality: 1,
|
|
1598
|
+
what: 'Table cell has no header'
|
|
1599
|
+
}
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
},
|
|
1603
|
+
controlLabel: {
|
|
1542
1604
|
weight: 4,
|
|
1543
1605
|
packages: {
|
|
1544
1606
|
htmlcs: {
|
|
@@ -1555,6 +1617,17 @@ const groups = {
|
|
|
1555
1617
|
}
|
|
1556
1618
|
}
|
|
1557
1619
|
},
|
|
1620
|
+
titleAsLabel: {
|
|
1621
|
+
weight: 3,
|
|
1622
|
+
packages: {
|
|
1623
|
+
wave: {
|
|
1624
|
+
'a:label_title': {
|
|
1625
|
+
quality: 1,
|
|
1626
|
+
what: 'Form control has a title but no label'
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
},
|
|
1558
1631
|
invisibleLabel: {
|
|
1559
1632
|
weight: 3,
|
|
1560
1633
|
packages: {
|
|
@@ -1603,10 +1676,16 @@ const groups = {
|
|
|
1603
1676
|
activeEmbedding: {
|
|
1604
1677
|
weight: 3,
|
|
1605
1678
|
packages: {
|
|
1679
|
+
axe: {
|
|
1680
|
+
'nested-interactive': {
|
|
1681
|
+
quality: 1,
|
|
1682
|
+
what: 'Interactive controls are nested'
|
|
1683
|
+
}
|
|
1684
|
+
},
|
|
1606
1685
|
testaro: {
|
|
1607
1686
|
embAc: {
|
|
1608
1687
|
quality: 1,
|
|
1609
|
-
what: 'Active
|
|
1688
|
+
what: 'Active element is embedded in a link or button'
|
|
1610
1689
|
}
|
|
1611
1690
|
}
|
|
1612
1691
|
}
|
|
@@ -1732,6 +1811,17 @@ const groups = {
|
|
|
1732
1811
|
}
|
|
1733
1812
|
}
|
|
1734
1813
|
},
|
|
1814
|
+
bannerLandmark: {
|
|
1815
|
+
weight: 2,
|
|
1816
|
+
packages: {
|
|
1817
|
+
axe: {
|
|
1818
|
+
'landmark-no-duplicate-banner': {
|
|
1819
|
+
quality: 1,
|
|
1820
|
+
what: 'page has more than 1 banner landmark'
|
|
1821
|
+
}
|
|
1822
|
+
}
|
|
1823
|
+
}
|
|
1824
|
+
},
|
|
1735
1825
|
footerMultiple: {
|
|
1736
1826
|
weight: 2,
|
|
1737
1827
|
packages: {
|
|
@@ -1789,6 +1879,20 @@ const groups = {
|
|
|
1789
1879
|
'aria-hidden-focus': {
|
|
1790
1880
|
quality: 1,
|
|
1791
1881
|
what: 'ARIA hidden element is focusable or contains a focusable element'
|
|
1882
|
+
},
|
|
1883
|
+
'presentation-role-conflict': {
|
|
1884
|
+
quality: 1,
|
|
1885
|
+
what: 'Element has a none/presentation role but is focusable or has a global ARIA state or property'
|
|
1886
|
+
}
|
|
1887
|
+
},
|
|
1888
|
+
tenon: {
|
|
1889
|
+
189: {
|
|
1890
|
+
quality: 1,
|
|
1891
|
+
what: 'Element is typically used for interaction but has a presentation role'
|
|
1892
|
+
},
|
|
1893
|
+
194: {
|
|
1894
|
+
quality: 1,
|
|
1895
|
+
what: 'Visible element is focusable but has a presentation role or aria-hidden=true attribute'
|
|
1792
1896
|
}
|
|
1793
1897
|
}
|
|
1794
1898
|
}
|
|
@@ -2002,9 +2106,13 @@ const groups = {
|
|
|
2002
2106
|
weight: 1,
|
|
2003
2107
|
packages: {
|
|
2004
2108
|
wave: {
|
|
2109
|
+
'a:html5_video_audio': {
|
|
2110
|
+
quality: 1,
|
|
2111
|
+
what: 'video or audio element may have no or incorrect captions, transcript, or audio description'
|
|
2112
|
+
},
|
|
2005
2113
|
'a:youtube_video': {
|
|
2006
2114
|
quality: 1,
|
|
2007
|
-
what: 'YouTube video may
|
|
2115
|
+
what: 'YouTube video may have no or incorrect captions'
|
|
2008
2116
|
}
|
|
2009
2117
|
}
|
|
2010
2118
|
}
|
|
@@ -2050,6 +2158,12 @@ const groups = {
|
|
|
2050
2158
|
quality: 0.5,
|
|
2051
2159
|
what: 'First focusable element is not a link to the main content'
|
|
2052
2160
|
}
|
|
2161
|
+
},
|
|
2162
|
+
axe: {
|
|
2163
|
+
'skip-link': {
|
|
2164
|
+
quality: 1,
|
|
2165
|
+
what: 'Skip-link target is not focusable or does not exist'
|
|
2166
|
+
}
|
|
2053
2167
|
}
|
|
2054
2168
|
}
|
|
2055
2169
|
},
|