testilo 41.4.0 → 41.5.1
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.
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
/*
|
|
24
|
-
|
|
25
|
-
Testilo issue classification
|
|
24
|
+
tic49
|
|
25
|
+
Testilo issue classification 49
|
|
26
26
|
|
|
27
27
|
Classifies about 990 rules of the tools of Testaro into about 310 issues.
|
|
28
28
|
|
|
@@ -56,6 +56,11 @@ exports.issues = {
|
|
|
56
56
|
quality: 0,
|
|
57
57
|
what: 'Text has contrast less than 4.5:1 [speculative]'
|
|
58
58
|
},
|
|
59
|
+
'color_contrast_aaa': {
|
|
60
|
+
variable: false,
|
|
61
|
+
quality: 1,
|
|
62
|
+
what: 'Text contrast may be less than enhanced but the element is invisible [invalid]'
|
|
63
|
+
},
|
|
59
64
|
css_images_convey_information: {
|
|
60
65
|
variable: false,
|
|
61
66
|
quality: 1,
|
|
@@ -212,7 +217,7 @@ exports.issues = {
|
|
|
212
217
|
'QW-BP1': {
|
|
213
218
|
variable: false,
|
|
214
219
|
quality: 0,
|
|
215
|
-
what: 'h1-h6
|
|
220
|
+
what: 'h1-h6 may fail to be used to identify headings [speculative]'
|
|
216
221
|
},
|
|
217
222
|
'QW-BP17': {
|
|
218
223
|
variable: false,
|
|
@@ -273,6 +278,13 @@ exports.issues = {
|
|
|
273
278
|
variable: false,
|
|
274
279
|
quality: 0,
|
|
275
280
|
what: 'No link at the top of the page goes directly to the main content area [invalid]'
|
|
281
|
+
},
|
|
282
|
+
qualWeb: {
|
|
283
|
+
'QW-WCAG-T32': {
|
|
284
|
+
variable: false,
|
|
285
|
+
quality: 1,
|
|
286
|
+
what: 'ol, ul or dl may fail to be used for a list or group of links [speculative]'
|
|
287
|
+
}
|
|
276
288
|
}
|
|
277
289
|
}
|
|
278
290
|
}
|
|
@@ -457,55 +469,15 @@ exports.issues = {
|
|
|
457
469
|
}
|
|
458
470
|
},
|
|
459
471
|
htmlcs: {
|
|
460
|
-
'AAA.4_1_2.H91.
|
|
472
|
+
'AAA.4_1_2.H91.Input.Name': {
|
|
461
473
|
variable: false,
|
|
462
474
|
quality: 1,
|
|
463
475
|
what: 'Text input has no accessible name'
|
|
464
476
|
},
|
|
465
|
-
'AAA.4_1_2.H91.
|
|
466
|
-
variable:
|
|
467
|
-
quality: 1,
|
|
468
|
-
what: 'Email input has no accessible name'
|
|
469
|
-
},
|
|
470
|
-
'AAA.4_1_2.H91.InputPhone.Name': {
|
|
471
|
-
variable: false,
|
|
472
|
-
quality: 1,
|
|
473
|
-
what: 'Telephone input has no accessible name'
|
|
474
|
-
},
|
|
475
|
-
'AAA.4_1_2.H91.InputFile.Name': {
|
|
476
|
-
variable: false,
|
|
477
|
-
quality: 1,
|
|
478
|
-
what: 'File input element has no accessible name'
|
|
479
|
-
},
|
|
480
|
-
'AAA.4_1_2.H91.InputTel.Name': {
|
|
481
|
-
variable: false,
|
|
482
|
-
quality: 1,
|
|
483
|
-
what: 'Telephone input has no accessible name'
|
|
484
|
-
},
|
|
485
|
-
'AAA.4_1_2.H91.InputNumber.Name': {
|
|
486
|
-
variable: false,
|
|
487
|
-
quality: 1,
|
|
488
|
-
what: 'Number input has no accessible name'
|
|
489
|
-
},
|
|
490
|
-
'AAA.4_1_2.H91.InputPassword.Name': {
|
|
491
|
-
variable: false,
|
|
492
|
-
quality: 1,
|
|
493
|
-
what: 'Password input has no accessible name'
|
|
494
|
-
},
|
|
495
|
-
'AAA.4_1_2.H91.InputSearch.Name': {
|
|
496
|
-
variable: false,
|
|
497
|
-
quality: 1,
|
|
498
|
-
what: 'Search input has no accessible name'
|
|
499
|
-
},
|
|
500
|
-
'AAA.4_1_2.H91.InputCheckbox.Name': {
|
|
501
|
-
variable: false,
|
|
502
|
-
quality: 1,
|
|
503
|
-
what: 'Checkbox input has no accessible name'
|
|
504
|
-
},
|
|
505
|
-
'AAA.4_1_2.H91.InputRadio.Name': {
|
|
506
|
-
variable: false,
|
|
477
|
+
'^AAA.4_1_2.H91.Input[-a-zA-Z]+.Name$': {
|
|
478
|
+
variable: true,
|
|
507
479
|
quality: 1,
|
|
508
|
-
what: '
|
|
480
|
+
what: 'input element has no accessible name'
|
|
509
481
|
}
|
|
510
482
|
}
|
|
511
483
|
}
|
|
@@ -710,6 +682,13 @@ exports.issues = {
|
|
|
710
682
|
quality: 1,
|
|
711
683
|
what: 'Spacer image has no text alternative'
|
|
712
684
|
}
|
|
685
|
+
},
|
|
686
|
+
wax: {
|
|
687
|
+
'Images must have alternate text': {
|
|
688
|
+
variable: false,
|
|
689
|
+
quality: 1,
|
|
690
|
+
what: 'Image has no text alternative'
|
|
691
|
+
}
|
|
713
692
|
}
|
|
714
693
|
}
|
|
715
694
|
},
|
|
@@ -739,6 +718,26 @@ exports.issues = {
|
|
|
739
718
|
variable: false,
|
|
740
719
|
quality: 1,
|
|
741
720
|
what: 'alt attribute of the element states the image is an image'
|
|
721
|
+
},
|
|
722
|
+
altImageOfLinked: {
|
|
723
|
+
variable: false,
|
|
724
|
+
quality: 1,
|
|
725
|
+
what: 'alt attribute of the intra-link element states the image is an image instead of describing the link purpose'
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
},
|
|
730
|
+
decorativeAlt: {
|
|
731
|
+
summary: 'decorative image is named',
|
|
732
|
+
why: 'User gets an uninformative image description or misses an informative image',
|
|
733
|
+
wcag: '1.1.1',
|
|
734
|
+
weight: 1,
|
|
735
|
+
tools: {
|
|
736
|
+
ibm: {
|
|
737
|
+
img_alt_decorative: {
|
|
738
|
+
variable: false,
|
|
739
|
+
quality: 1,
|
|
740
|
+
what: 'element is marked as an uninformative image but has an alt attribute'
|
|
742
741
|
}
|
|
743
742
|
}
|
|
744
743
|
}
|
|
@@ -836,6 +835,66 @@ exports.issues = {
|
|
|
836
835
|
}
|
|
837
836
|
}
|
|
838
837
|
},
|
|
838
|
+
borderBad: {
|
|
839
|
+
summary: 'CSS border invalid',
|
|
840
|
+
why: 'Border is displayed improperly',
|
|
841
|
+
wcag: '4.1',
|
|
842
|
+
weight: 4,
|
|
843
|
+
tools: {
|
|
844
|
+
nuVal: {
|
|
845
|
+
'^CSS: border-.+ negative values are not allowed.*$': {
|
|
846
|
+
variable: true,
|
|
847
|
+
quality: 1,
|
|
848
|
+
what: 'CSS border includes a negative-valued property'
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
},
|
|
853
|
+
flexBad: {
|
|
854
|
+
summary: 'CSS flex invalid',
|
|
855
|
+
why: 'Content is displayed improperly',
|
|
856
|
+
wcag: '4.1',
|
|
857
|
+
weight: 4,
|
|
858
|
+
tools: {
|
|
859
|
+
nuVal: {
|
|
860
|
+
'^CSS: flex: .+ negative values are not allowed.*$': {
|
|
861
|
+
variable: true,
|
|
862
|
+
quality: 1,
|
|
863
|
+
what: 'CSS flex value is negative'
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
},
|
|
868
|
+
paddingBad: {
|
|
869
|
+
summary: 'CSS padding invalid',
|
|
870
|
+
why: 'Content is displayed improperly',
|
|
871
|
+
wcag: '4.1',
|
|
872
|
+
weight: 4,
|
|
873
|
+
tools: {
|
|
874
|
+
nuVal: {
|
|
875
|
+
'^CSS: padding[-a-z]*: .+ negative values are not allowed\.$': {
|
|
876
|
+
variable: true,
|
|
877
|
+
quality: 1,
|
|
878
|
+
what: 'One of the CSS padding values is negative'
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
},
|
|
883
|
+
gapBad: {
|
|
884
|
+
summary: 'CSS padding invalid',
|
|
885
|
+
why: 'Content is displayed improperly',
|
|
886
|
+
wcag: '4.1',
|
|
887
|
+
weight: 4,
|
|
888
|
+
tools: {
|
|
889
|
+
nuVal: {
|
|
890
|
+
'^CSS: gap: .+ negative values are not allowed\.$': {
|
|
891
|
+
variable: true,
|
|
892
|
+
quality: 1,
|
|
893
|
+
what: 'CSS gap value is negative'
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
},
|
|
839
898
|
backgroundBad: {
|
|
840
899
|
summary: 'CSS background invalid',
|
|
841
900
|
why: 'Background is displayed improperly',
|
|
@@ -857,7 +916,7 @@ exports.issues = {
|
|
|
857
916
|
variable: true,
|
|
858
917
|
quality: 1,
|
|
859
918
|
what: 'CSS background URL is invalid'
|
|
860
|
-
}
|
|
919
|
+
}
|
|
861
920
|
}
|
|
862
921
|
}
|
|
863
922
|
},
|
|
@@ -1081,6 +1140,13 @@ exports.issues = {
|
|
|
1081
1140
|
quality: 1,
|
|
1082
1141
|
what: 'Language missing or invalid'
|
|
1083
1142
|
}
|
|
1143
|
+
},
|
|
1144
|
+
wax: {
|
|
1145
|
+
'<html> element must have a lang attribute': {
|
|
1146
|
+
variable: false,
|
|
1147
|
+
quality: 1,
|
|
1148
|
+
what: 'html element has no lang attribute'
|
|
1149
|
+
}
|
|
1084
1150
|
}
|
|
1085
1151
|
}
|
|
1086
1152
|
},
|
|
@@ -1119,6 +1185,13 @@ exports.issues = {
|
|
|
1119
1185
|
what: 'Language specified in the lang attribute of the document does not appear to be well-formed'
|
|
1120
1186
|
}
|
|
1121
1187
|
},
|
|
1188
|
+
ibm: {
|
|
1189
|
+
html_lang_valid: {
|
|
1190
|
+
variable: false,
|
|
1191
|
+
quality: 1,
|
|
1192
|
+
what: 'lang attribute of the html element does not include a valid primary language'
|
|
1193
|
+
}
|
|
1194
|
+
},
|
|
1122
1195
|
qualWeb: {
|
|
1123
1196
|
'QW-ACT-R5': {
|
|
1124
1197
|
variable: false,
|
|
@@ -1217,6 +1290,13 @@ exports.issues = {
|
|
|
1217
1290
|
quality: 1,
|
|
1218
1291
|
what: 'ARIA dialog or alertdialog node has no accessible name'
|
|
1219
1292
|
}
|
|
1293
|
+
},
|
|
1294
|
+
wax: {
|
|
1295
|
+
'ARIA dialog and alertdialog nodes should have an accessible name': {
|
|
1296
|
+
variable: false,
|
|
1297
|
+
quality: 1,
|
|
1298
|
+
what: 'Node is ARIA dialog or alertdialog but has no accessible name'
|
|
1299
|
+
}
|
|
1220
1300
|
}
|
|
1221
1301
|
}
|
|
1222
1302
|
},
|
|
@@ -1245,6 +1325,11 @@ exports.issues = {
|
|
|
1245
1325
|
variable: false,
|
|
1246
1326
|
quality: 1,
|
|
1247
1327
|
what: 'object element contains no text alternative'
|
|
1328
|
+
},
|
|
1329
|
+
'AAA.1_1_1.H53,ARIA6': {
|
|
1330
|
+
variable: false,
|
|
1331
|
+
quality: 1,
|
|
1332
|
+
what: 'object element contains no text alternative after all other alternatives are exhausted'
|
|
1248
1333
|
}
|
|
1249
1334
|
},
|
|
1250
1335
|
ibm: {
|
|
@@ -1286,7 +1371,7 @@ exports.issues = {
|
|
|
1286
1371
|
}
|
|
1287
1372
|
},
|
|
1288
1373
|
objectAudioRisk: {
|
|
1289
|
-
summary: 'non-audio element
|
|
1374
|
+
summary: 'non-audio element plays audio?',
|
|
1290
1375
|
why: 'User may get inadequate help consuming audio content',
|
|
1291
1376
|
wcag: '1.1.1',
|
|
1292
1377
|
weight: 1,
|
|
@@ -1386,7 +1471,7 @@ exports.issues = {
|
|
|
1386
1471
|
}
|
|
1387
1472
|
},
|
|
1388
1473
|
customKeyboardRisk: {
|
|
1389
|
-
summary: 'custom button
|
|
1474
|
+
summary: 'custom button keyboard-inoperable?',
|
|
1390
1475
|
why: 'Custom item may prevent a keyboard-only user from operating it',
|
|
1391
1476
|
wcag: '2.1.1',
|
|
1392
1477
|
weight: 1,
|
|
@@ -1401,7 +1486,7 @@ exports.issues = {
|
|
|
1401
1486
|
}
|
|
1402
1487
|
},
|
|
1403
1488
|
objectBlurKeyboardRisk: {
|
|
1404
|
-
summary: 'object
|
|
1489
|
+
summary: 'object not keyboard-blurrable?',
|
|
1405
1490
|
why: 'Custom item may trap a keyboard-only user',
|
|
1406
1491
|
wcag: '2.1.1',
|
|
1407
1492
|
weight: 1,
|
|
@@ -1416,7 +1501,7 @@ exports.issues = {
|
|
|
1416
1501
|
}
|
|
1417
1502
|
},
|
|
1418
1503
|
eventKeyboardRisk: {
|
|
1419
|
-
summary: 'event
|
|
1504
|
+
summary: 'event not keyboard-triggerable?',
|
|
1420
1505
|
why: 'Keyboard-only user may be unable to perform an action',
|
|
1421
1506
|
wcag: '2.1.1',
|
|
1422
1507
|
weight: 1,
|
|
@@ -1458,7 +1543,7 @@ exports.issues = {
|
|
|
1458
1543
|
wave: {
|
|
1459
1544
|
event_handler: {
|
|
1460
1545
|
variable: false,
|
|
1461
|
-
quality:
|
|
1546
|
+
quality: 0.5,
|
|
1462
1547
|
what: 'Device-dependent event handler'
|
|
1463
1548
|
}
|
|
1464
1549
|
}
|
|
@@ -1892,7 +1977,14 @@ exports.issues = {
|
|
|
1892
1977
|
variable: false,
|
|
1893
1978
|
quality: 1,
|
|
1894
1979
|
what: 'Linked image has no text alternative'
|
|
1895
|
-
}
|
|
1980
|
+
}
|
|
1981
|
+
},
|
|
1982
|
+
wax: {
|
|
1983
|
+
'Links must have discernible text': {
|
|
1984
|
+
variable: false,
|
|
1985
|
+
quality: 1,
|
|
1986
|
+
what: 'Link has no discernible text'
|
|
1987
|
+
}
|
|
1896
1988
|
}
|
|
1897
1989
|
}
|
|
1898
1990
|
},
|
|
@@ -1929,6 +2021,11 @@ exports.issues = {
|
|
|
1929
2021
|
variable: false,
|
|
1930
2022
|
quality: 1,
|
|
1931
2023
|
what: 'link element has an empty href attribute'
|
|
2024
|
+
},
|
|
2025
|
+
'Attribute href without an explicit value seen. The attribute may be dropped by IE7.': {
|
|
2026
|
+
variable: false,
|
|
2027
|
+
quality: 1,
|
|
2028
|
+
what: 'Element has an empty href attribute'
|
|
1932
2029
|
}
|
|
1933
2030
|
}
|
|
1934
2031
|
}
|
|
@@ -2231,7 +2328,7 @@ exports.issues = {
|
|
|
2231
2328
|
}
|
|
2232
2329
|
},
|
|
2233
2330
|
newTabSurpriseRisk: {
|
|
2234
|
-
summary: 'tab-opening link action
|
|
2331
|
+
summary: 'tab-opening link action unstated?',
|
|
2235
2332
|
why: 'Following a link opens a new window, possibly surprising a user',
|
|
2236
2333
|
wcag: '3.2.5',
|
|
2237
2334
|
weight: 1,
|
|
@@ -2265,7 +2362,7 @@ exports.issues = {
|
|
|
2265
2362
|
}
|
|
2266
2363
|
},
|
|
2267
2364
|
selectNavSurpriseRisk: {
|
|
2268
|
-
summary: 'navigating selection-change action
|
|
2365
|
+
summary: 'navigating selection-change action unstated?',
|
|
2269
2366
|
why: 'Changing a selected option opens a new window, possibly surprising a user',
|
|
2270
2367
|
wcag: '3.2.5',
|
|
2271
2368
|
weight: 1,
|
|
@@ -2294,6 +2391,31 @@ exports.issues = {
|
|
|
2294
2391
|
}
|
|
2295
2392
|
}
|
|
2296
2393
|
},
|
|
2394
|
+
selectBad: {
|
|
2395
|
+
summary: 'select element invalid',
|
|
2396
|
+
why: 'User cannot properly select among options',
|
|
2397
|
+
wcag: '4.1.2',
|
|
2398
|
+
weight: 4,
|
|
2399
|
+
tools: {
|
|
2400
|
+
nuVal: {
|
|
2401
|
+
'The document role is not allowed for element select without a multiple attribute and without a size attribute whose value is greater than 1.': {
|
|
2402
|
+
variable: false,
|
|
2403
|
+
quality: 1,
|
|
2404
|
+
what: 'select element is not multiple or has no size greater than 1 but has a document role'
|
|
2405
|
+
},
|
|
2406
|
+
'The first child option element of a select element with a required attribute, and without a multiple attribute, and without a size attribute whose value is greater than 1, must have either an empty value attribute, or must have no text content. Consider either adding a placeholder option label, or adding a size attribute with a value equal to the number of option elements.': {
|
|
2407
|
+
variable: false,
|
|
2408
|
+
quality: 1,
|
|
2409
|
+
what: 'option element has a nonempty value'
|
|
2410
|
+
},
|
|
2411
|
+
'The select element cannot have more than one selected option descendant unless the multiple attribute is specified.': {
|
|
2412
|
+
variable: false,
|
|
2413
|
+
quality: 1,
|
|
2414
|
+
what: 'Element is select and has no multiple attribute, but has more than 1 selected option'
|
|
2415
|
+
}
|
|
2416
|
+
}
|
|
2417
|
+
}
|
|
2418
|
+
},
|
|
2297
2419
|
buttonAlt: {
|
|
2298
2420
|
summary: 'button has alt',
|
|
2299
2421
|
why: 'User cannot get help explaing a button',
|
|
@@ -2319,14 +2441,14 @@ exports.issues = {
|
|
|
2319
2441
|
r12: {
|
|
2320
2442
|
variable: false,
|
|
2321
2443
|
quality: 1,
|
|
2322
|
-
what: '
|
|
2444
|
+
what: 'button element has no accessible name'
|
|
2323
2445
|
}
|
|
2324
2446
|
},
|
|
2325
2447
|
aslint: {
|
|
2326
2448
|
empty_button_description: {
|
|
2327
2449
|
variable: false,
|
|
2328
2450
|
quality: 1,
|
|
2329
|
-
what: '
|
|
2451
|
+
what: 'button element has no visible accessible name'
|
|
2330
2452
|
}
|
|
2331
2453
|
},
|
|
2332
2454
|
axe: {
|
|
@@ -2338,7 +2460,7 @@ exports.issues = {
|
|
|
2338
2460
|
'button-name': {
|
|
2339
2461
|
variable: false,
|
|
2340
2462
|
quality: 1,
|
|
2341
|
-
what: '
|
|
2463
|
+
what: 'button element has no discernible text'
|
|
2342
2464
|
},
|
|
2343
2465
|
'input-button-name': {
|
|
2344
2466
|
variable: false,
|
|
@@ -2360,7 +2482,7 @@ exports.issues = {
|
|
|
2360
2482
|
'AAA.4_1_2.H91.Button.Name': {
|
|
2361
2483
|
variable: false,
|
|
2362
2484
|
quality: 1,
|
|
2363
|
-
what: '
|
|
2485
|
+
what: 'button element has no accessible name'
|
|
2364
2486
|
},
|
|
2365
2487
|
'AAA.4_1_2.H91.Img.Name': {
|
|
2366
2488
|
variable: false,
|
|
@@ -2389,14 +2511,26 @@ exports.issues = {
|
|
|
2389
2511
|
'QW-ACT-R11': {
|
|
2390
2512
|
variable: false,
|
|
2391
2513
|
quality: 1,
|
|
2392
|
-
what: '
|
|
2514
|
+
what: 'button element has no accessible name'
|
|
2393
2515
|
}
|
|
2394
2516
|
},
|
|
2395
2517
|
wave: {
|
|
2396
2518
|
button_empty: {
|
|
2397
2519
|
variable: false,
|
|
2398
2520
|
quality: 1,
|
|
2399
|
-
what: '
|
|
2521
|
+
what: 'button element is empty or has no value text'
|
|
2522
|
+
}
|
|
2523
|
+
},
|
|
2524
|
+
wax: {
|
|
2525
|
+
'Buttons must have discernible text': {
|
|
2526
|
+
variable: false,
|
|
2527
|
+
quality: 1,
|
|
2528
|
+
what: 'button element has no discernible text'
|
|
2529
|
+
},
|
|
2530
|
+
'Input buttons must have discernible text': {
|
|
2531
|
+
variable: false,
|
|
2532
|
+
quality: 1,
|
|
2533
|
+
what: 'input element with button type has no discernible text'
|
|
2400
2534
|
}
|
|
2401
2535
|
}
|
|
2402
2536
|
}
|
|
@@ -2456,6 +2590,13 @@ exports.issues = {
|
|
|
2456
2590
|
quality: 1,
|
|
2457
2591
|
what: 'Element has no ARIA required context role'
|
|
2458
2592
|
}
|
|
2593
|
+
},
|
|
2594
|
+
wax: {
|
|
2595
|
+
'Certain ARIA roles must be contained by particular parents': {
|
|
2596
|
+
variable: false,
|
|
2597
|
+
quality: 1,
|
|
2598
|
+
what: 'ARIA role is not contained by a required parent'
|
|
2599
|
+
}
|
|
2459
2600
|
}
|
|
2460
2601
|
}
|
|
2461
2602
|
},
|
|
@@ -2485,6 +2626,13 @@ exports.issues = {
|
|
|
2485
2626
|
quality: 1,
|
|
2486
2627
|
what: 'Element has no ARIA required owned element'
|
|
2487
2628
|
}
|
|
2629
|
+
},
|
|
2630
|
+
wax: {
|
|
2631
|
+
'Certain ARIA roles must contain particular children': {
|
|
2632
|
+
variable: false,
|
|
2633
|
+
quality: 1,
|
|
2634
|
+
what: 'ARIA role does not contain a required child'
|
|
2635
|
+
}
|
|
2488
2636
|
}
|
|
2489
2637
|
}
|
|
2490
2638
|
},
|
|
@@ -2527,7 +2675,7 @@ exports.issues = {
|
|
|
2527
2675
|
'svg-img-alt': {
|
|
2528
2676
|
variable: false,
|
|
2529
2677
|
quality: 1,
|
|
2530
|
-
what: 'Element
|
|
2678
|
+
what: 'Element is svg and has an img role but has no text alternative'
|
|
2531
2679
|
}
|
|
2532
2680
|
},
|
|
2533
2681
|
qualWeb: {
|
|
@@ -2536,6 +2684,13 @@ exports.issues = {
|
|
|
2536
2684
|
quality: 1,
|
|
2537
2685
|
what: 'Element with an explicit role has no accessible name'
|
|
2538
2686
|
}
|
|
2687
|
+
},
|
|
2688
|
+
wax: {
|
|
2689
|
+
'<svg> elements with an img role must have an alternative text': {
|
|
2690
|
+
variable: false,
|
|
2691
|
+
quality: 1,
|
|
2692
|
+
what: 'Element is svg and has an img role but has no text alternative'
|
|
2693
|
+
}
|
|
2539
2694
|
}
|
|
2540
2695
|
}
|
|
2541
2696
|
},
|
|
@@ -2653,6 +2808,13 @@ exports.issues = {
|
|
|
2653
2808
|
quality: 1,
|
|
2654
2809
|
what: 'meta viewport prevents zoom'
|
|
2655
2810
|
}
|
|
2811
|
+
},
|
|
2812
|
+
wax: {
|
|
2813
|
+
'Zooming and scaling must not be disabled': {
|
|
2814
|
+
variable: false,
|
|
2815
|
+
quality: 1,
|
|
2816
|
+
what: 'Element disables zooming or scaling'
|
|
2817
|
+
}
|
|
2656
2818
|
}
|
|
2657
2819
|
}
|
|
2658
2820
|
},
|
|
@@ -2714,17 +2876,17 @@ exports.issues = {
|
|
|
2714
2876
|
}
|
|
2715
2877
|
}
|
|
2716
2878
|
},
|
|
2717
|
-
|
|
2718
|
-
summary: 'text spacing frozen',
|
|
2719
|
-
why: 'User cannot adjust the text spacing for readability',
|
|
2879
|
+
horizontalSpacingFrozen: {
|
|
2880
|
+
summary: 'horizontal text spacing frozen',
|
|
2881
|
+
why: 'User cannot adjust the horizontal text spacing for readability',
|
|
2720
2882
|
wcag: '1.4.12',
|
|
2721
2883
|
weight: 4,
|
|
2722
2884
|
tools: {
|
|
2723
2885
|
alfa: {
|
|
2724
|
-
|
|
2886
|
+
r91: {
|
|
2725
2887
|
variable: false,
|
|
2726
2888
|
quality: 1,
|
|
2727
|
-
what: 'Style attribute with !important
|
|
2889
|
+
what: 'Style attribute with !important makes letter spacing insufficient'
|
|
2728
2890
|
}
|
|
2729
2891
|
},
|
|
2730
2892
|
axe: {
|
|
@@ -2734,17 +2896,19 @@ exports.issues = {
|
|
|
2734
2896
|
what: 'Inline text spacing is not adjustable with a custom stylesheet'
|
|
2735
2897
|
}
|
|
2736
2898
|
},
|
|
2899
|
+
ibm: {
|
|
2900
|
+
text_spacing_valid: {
|
|
2901
|
+
variable: false,
|
|
2902
|
+
quality: 1,
|
|
2903
|
+
what: 'CSS !important is used in an inline letter-spacing style'
|
|
2904
|
+
}
|
|
2905
|
+
},
|
|
2737
2906
|
qualWeb: {
|
|
2738
2907
|
'QW-ACT-R67': {
|
|
2739
2908
|
variable: false,
|
|
2740
2909
|
quality: 1,
|
|
2741
2910
|
what: 'Letter spacing in a style attribute is !important'
|
|
2742
2911
|
},
|
|
2743
|
-
'QW-ACT-R68': {
|
|
2744
|
-
variable: false,
|
|
2745
|
-
quality: 1,
|
|
2746
|
-
what: 'Line height in a style attribute is !important'
|
|
2747
|
-
},
|
|
2748
2912
|
'QW-ACT-R69': {
|
|
2749
2913
|
variable: false,
|
|
2750
2914
|
quality: 1,
|
|
@@ -2753,6 +2917,28 @@ exports.issues = {
|
|
|
2753
2917
|
}
|
|
2754
2918
|
}
|
|
2755
2919
|
},
|
|
2920
|
+
verticalSpacingFrozen: {
|
|
2921
|
+
summary: 'vertical text spacing frozen',
|
|
2922
|
+
why: 'User cannot adjust the vertical text spacing for readability',
|
|
2923
|
+
wcag: '1.4.12',
|
|
2924
|
+
weight: 4,
|
|
2925
|
+
tools: {
|
|
2926
|
+
alfa: {
|
|
2927
|
+
r93: {
|
|
2928
|
+
variable: false,
|
|
2929
|
+
quality: 1,
|
|
2930
|
+
what: 'Style attribute with !important prevents adjusting line height'
|
|
2931
|
+
}
|
|
2932
|
+
},
|
|
2933
|
+
qualWeb: {
|
|
2934
|
+
'QW-ACT-R68': {
|
|
2935
|
+
variable: false,
|
|
2936
|
+
quality: 1,
|
|
2937
|
+
what: 'Line height in a style attribute is !important'
|
|
2938
|
+
}
|
|
2939
|
+
}
|
|
2940
|
+
}
|
|
2941
|
+
},
|
|
2756
2942
|
lineHeightAbsolute: {
|
|
2757
2943
|
summary: 'line height absolute',
|
|
2758
2944
|
why: 'User cannot adjust the line height of text for readability',
|
|
@@ -2790,6 +2976,21 @@ exports.issues = {
|
|
|
2790
2976
|
}
|
|
2791
2977
|
}
|
|
2792
2978
|
},
|
|
2979
|
+
lineHeightBad: {
|
|
2980
|
+
summary: 'line height misdefined',
|
|
2981
|
+
why: 'Text is difficult to read',
|
|
2982
|
+
wcag: '1.4.8',
|
|
2983
|
+
weight: 4,
|
|
2984
|
+
tools: {
|
|
2985
|
+
nuVal: {
|
|
2986
|
+
'^CSS: line-height: .* negative values are not allowed.*$': {
|
|
2987
|
+
variable: true,
|
|
2988
|
+
quality: 1,
|
|
2989
|
+
what: 'Text line height is negative'
|
|
2990
|
+
}
|
|
2991
|
+
}
|
|
2992
|
+
}
|
|
2993
|
+
},
|
|
2793
2994
|
overflowHidden: {
|
|
2794
2995
|
summary: 'overflow hidden',
|
|
2795
2996
|
why: 'User cannot enlarge the text for readability',
|
|
@@ -2806,7 +3007,7 @@ exports.issues = {
|
|
|
2806
3007
|
}
|
|
2807
3008
|
},
|
|
2808
3009
|
overflowHiddenRisk: {
|
|
2809
|
-
summary: 'overflow
|
|
3010
|
+
summary: 'overflow hidden?',
|
|
2810
3011
|
why: 'User may be unable to enlarge the text for readability',
|
|
2811
3012
|
wcag: '1.4.4',
|
|
2812
3013
|
weight: 1,
|
|
@@ -2840,6 +3041,21 @@ exports.issues = {
|
|
|
2840
3041
|
}
|
|
2841
3042
|
}
|
|
2842
3043
|
},
|
|
3044
|
+
elementBad: {
|
|
3045
|
+
summary: 'nonexistent element',
|
|
3046
|
+
why: 'User cannot understand the content',
|
|
3047
|
+
wcag: '4.1.2',
|
|
3048
|
+
weight: 4,
|
|
3049
|
+
tools: {
|
|
3050
|
+
nuVal: {
|
|
3051
|
+
'^Saw a start tag [a-z]+\.$': {
|
|
3052
|
+
variable: true,
|
|
3053
|
+
quality: 1,
|
|
3054
|
+
what: 'Element does not exist in HTML'
|
|
3055
|
+
}
|
|
3056
|
+
}
|
|
3057
|
+
}
|
|
3058
|
+
},
|
|
2843
3059
|
titleBad: {
|
|
2844
3060
|
summary: 'title attribute invalid',
|
|
2845
3061
|
why: 'User cannot hover to get help explaining an item',
|
|
@@ -2962,12 +3178,17 @@ exports.issues = {
|
|
|
2962
3178
|
'Element script must not have attribute defer unless attribute src is also specified.': {
|
|
2963
3179
|
variable: false,
|
|
2964
3180
|
quality: 1,
|
|
2965
|
-
what: 'script
|
|
3181
|
+
what: 'Element is script and has a defer attribute but no src attribute'
|
|
3182
|
+
},
|
|
3183
|
+
'Element script should not have attribute fetchpriority unless attribute src is also specified.': {
|
|
3184
|
+
variable: false,
|
|
3185
|
+
quality: 1,
|
|
3186
|
+
what: 'Element is script and has a fetchpriority attribute but no src attribute'
|
|
2966
3187
|
},
|
|
2967
3188
|
'A script element with a src attribute must not have a type attribute whose value is anything other than the empty string, a JavaScript MIME type, or module.': {
|
|
2968
3189
|
variable: false,
|
|
2969
3190
|
quality: 1,
|
|
2970
|
-
what: 'script
|
|
3191
|
+
what: 'Element is script and has a src attribute but its type is not empty, a JS MIME type, or module'
|
|
2971
3192
|
}
|
|
2972
3193
|
}
|
|
2973
3194
|
}
|
|
@@ -3059,6 +3280,13 @@ exports.issues = {
|
|
|
3059
3280
|
quality: 1,
|
|
3060
3281
|
what: 'iframe element has no accessible name'
|
|
3061
3282
|
}
|
|
3283
|
+
},
|
|
3284
|
+
wax: {
|
|
3285
|
+
'Frames must have an accessible name': {
|
|
3286
|
+
variable: false,
|
|
3287
|
+
quality: 1,
|
|
3288
|
+
what: 'iframe element has no accessible name'
|
|
3289
|
+
}
|
|
3062
3290
|
}
|
|
3063
3291
|
}
|
|
3064
3292
|
},
|
|
@@ -3144,6 +3372,11 @@ exports.issues = {
|
|
|
3144
3372
|
variable: false,
|
|
3145
3373
|
quality: 1,
|
|
3146
3374
|
what: 'Element has an event handler but no valid ARIA role'
|
|
3375
|
+
},
|
|
3376
|
+
combobox_haspopup_valid: {
|
|
3377
|
+
variable: false,
|
|
3378
|
+
quality: 1,
|
|
3379
|
+
what: 'Element has a combobox role but controls an element that has no listbox, grid, tree, or dialog role'
|
|
3147
3380
|
}
|
|
3148
3381
|
},
|
|
3149
3382
|
nuVal: {
|
|
@@ -3173,7 +3406,7 @@ exports.issues = {
|
|
|
3173
3406
|
}
|
|
3174
3407
|
},
|
|
3175
3408
|
roleHierarchyBad: {
|
|
3176
|
-
summary: 'ancestor and descendant
|
|
3409
|
+
summary: 'ancestor and descendant roles incompatible',
|
|
3177
3410
|
why: 'User may misunderstand or be blocked from exposure to an item',
|
|
3178
3411
|
wcag: '4.1.2',
|
|
3179
3412
|
weight: 4,
|
|
@@ -3369,7 +3602,14 @@ exports.issues = {
|
|
|
3369
3602
|
quality: 1,
|
|
3370
3603
|
what: 'Element with a srcset attribute with a width has no valid sizes attribute'
|
|
3371
3604
|
}
|
|
3372
|
-
}
|
|
3605
|
+
},
|
|
3606
|
+
wax: {
|
|
3607
|
+
'Elements must only use allowed ARIA attributes': {
|
|
3608
|
+
variable: false,
|
|
3609
|
+
quality: 1,
|
|
3610
|
+
what: 'Element has an attribute that is not allowed'
|
|
3611
|
+
}
|
|
3612
|
+
},
|
|
3373
3613
|
}
|
|
3374
3614
|
},
|
|
3375
3615
|
attributeValueBad: {
|
|
@@ -3479,7 +3719,7 @@ exports.issues = {
|
|
|
3479
3719
|
}
|
|
3480
3720
|
},
|
|
3481
3721
|
roleMissingRisk: {
|
|
3482
|
-
summary: 'role
|
|
3722
|
+
summary: 'role missing?',
|
|
3483
3723
|
why: 'Item may behave improperly',
|
|
3484
3724
|
wcag: '4.1.2',
|
|
3485
3725
|
weight: 1,
|
|
@@ -3523,7 +3763,7 @@ exports.issues = {
|
|
|
3523
3763
|
}
|
|
3524
3764
|
},
|
|
3525
3765
|
ariaMissingRisk: {
|
|
3526
|
-
summary: 'aria attribute
|
|
3766
|
+
summary: 'aria attribute missing?',
|
|
3527
3767
|
why: 'Item may behave improperly',
|
|
3528
3768
|
wcag: '4.1.2',
|
|
3529
3769
|
weight: 2,
|
|
@@ -3586,7 +3826,7 @@ exports.issues = {
|
|
|
3586
3826
|
aria_semantics_attribute: {
|
|
3587
3827
|
variable: false,
|
|
3588
3828
|
quality: 1,
|
|
3589
|
-
what: 'ARIA
|
|
3829
|
+
what: 'ARIA attribute is invalid for the element or ARIA role to which it is assigned'
|
|
3590
3830
|
},
|
|
3591
3831
|
Rpt_Aria_ValidProperty: {
|
|
3592
3832
|
variable: false,
|
|
@@ -3688,6 +3928,11 @@ exports.issues = {
|
|
|
3688
3928
|
variable: true,
|
|
3689
3929
|
quality: 1,
|
|
3690
3930
|
what: 'ARIA attribute is redundant with the synonymous native attribute'
|
|
3931
|
+
},
|
|
3932
|
+
'The aria-valuemax attribute must not be used on an element which has a max attribute.': {
|
|
3933
|
+
variable: false,
|
|
3934
|
+
quality: 1,
|
|
3935
|
+
what: 'Element has the max attribute but also the aria-valuemax attribute'
|
|
3691
3936
|
}
|
|
3692
3937
|
}
|
|
3693
3938
|
}
|
|
@@ -3924,7 +4169,7 @@ exports.issues = {
|
|
|
3924
4169
|
}
|
|
3925
4170
|
},
|
|
3926
4171
|
colorNamedRisk: {
|
|
3927
|
-
summary: 'color perception
|
|
4172
|
+
summary: 'color perception required?',
|
|
3928
4173
|
why: 'Content is impossible to perceive under some conditions',
|
|
3929
4174
|
wcag: '1.4.1',
|
|
3930
4175
|
weight: 1,
|
|
@@ -3952,11 +4197,6 @@ exports.issues = {
|
|
|
3952
4197
|
}
|
|
3953
4198
|
},
|
|
3954
4199
|
aslint: {
|
|
3955
|
-
'color_contrast_aaa': {
|
|
3956
|
-
variable: false,
|
|
3957
|
-
quality: 1,
|
|
3958
|
-
what: 'Text contrast may be less than enhanced but the element is invisible'
|
|
3959
|
-
},
|
|
3960
4200
|
'color_contrast_aaa4': {
|
|
3961
4201
|
variable: false,
|
|
3962
4202
|
quality: 1,
|
|
@@ -4125,6 +4365,21 @@ exports.issues = {
|
|
|
4125
4365
|
}
|
|
4126
4366
|
}
|
|
4127
4367
|
},
|
|
4368
|
+
headingsEmbedded: {
|
|
4369
|
+
summary: 'heading within a heading',
|
|
4370
|
+
why: 'User cannot understand the page organization',
|
|
4371
|
+
wcag: '4.1.2',
|
|
4372
|
+
weight: 4,
|
|
4373
|
+
tools: {
|
|
4374
|
+
nuVal: {
|
|
4375
|
+
'Heading cannot be a child of another heading.': {
|
|
4376
|
+
variable: false,
|
|
4377
|
+
quality: 1,
|
|
4378
|
+
what: 'Heading is within a heading'
|
|
4379
|
+
}
|
|
4380
|
+
}
|
|
4381
|
+
}
|
|
4382
|
+
},
|
|
4128
4383
|
headingEmpty: {
|
|
4129
4384
|
summary: 'heading empty',
|
|
4130
4385
|
why: 'User cannot get help on the topic of a part of the document',
|
|
@@ -4517,6 +4772,13 @@ exports.issues = {
|
|
|
4517
4772
|
quality: 1,
|
|
4518
4773
|
what: 'HTML page has no title'
|
|
4519
4774
|
}
|
|
4775
|
+
},
|
|
4776
|
+
wax: {
|
|
4777
|
+
'Documents must have <title> element to aid in navigation': {
|
|
4778
|
+
variable: false,
|
|
4779
|
+
quality: 1,
|
|
4780
|
+
what: 'Document contains no title element'
|
|
4781
|
+
}
|
|
4520
4782
|
}
|
|
4521
4783
|
}
|
|
4522
4784
|
},
|
|
@@ -4575,6 +4837,13 @@ exports.issues = {
|
|
|
4575
4837
|
quality: 1,
|
|
4576
4838
|
what: 'Skipped heading level'
|
|
4577
4839
|
}
|
|
4840
|
+
},
|
|
4841
|
+
wax: {
|
|
4842
|
+
'Heading levels should only increase by one': {
|
|
4843
|
+
variable: false,
|
|
4844
|
+
quality: 1,
|
|
4845
|
+
what: 'Heading levels do not increase by only one'
|
|
4846
|
+
}
|
|
4578
4847
|
}
|
|
4579
4848
|
}
|
|
4580
4849
|
},
|
|
@@ -4785,7 +5054,7 @@ exports.issues = {
|
|
|
4785
5054
|
}
|
|
4786
5055
|
},
|
|
4787
5056
|
justificationRisk: {
|
|
4788
|
-
summary: 'justification
|
|
5057
|
+
summary: 'justification undefined?',
|
|
4789
5058
|
why: 'Text may be difficult to read',
|
|
4790
5059
|
wcag: '1.4.8',
|
|
4791
5060
|
weight: 1,
|
|
@@ -4970,12 +5239,26 @@ exports.issues = {
|
|
|
4970
5239
|
what: 'List element dl has a child element other than properly ordered dt or dt group, script, template, or div'
|
|
4971
5240
|
}
|
|
4972
5241
|
},
|
|
5242
|
+
ibm: {
|
|
5243
|
+
list_children_valid: {
|
|
5244
|
+
variable: false,
|
|
5245
|
+
quality: 1,
|
|
5246
|
+
what: 'Element has a group role but has a child whose role is not listitem'
|
|
5247
|
+
}
|
|
5248
|
+
},
|
|
4973
5249
|
nuVal: {
|
|
4974
5250
|
'Element dl is missing a required child element.': {
|
|
4975
5251
|
variable: false,
|
|
4976
5252
|
quality: 1,
|
|
4977
5253
|
what: 'dl element has no child element'
|
|
4978
5254
|
}
|
|
5255
|
+
},
|
|
5256
|
+
wax: {
|
|
5257
|
+
'<ul> and <ol> must only directly contain <li>, <script> or <template> elements': {
|
|
5258
|
+
variable: false,
|
|
5259
|
+
quality: 1,
|
|
5260
|
+
what: 'Element is ul or ol but directly contains an element other than li, script, or template'
|
|
5261
|
+
}
|
|
4979
5262
|
}
|
|
4980
5263
|
}
|
|
4981
5264
|
},
|
|
@@ -4991,6 +5274,13 @@ exports.issues = {
|
|
|
4991
5274
|
quality: 1,
|
|
4992
5275
|
what: 'Element is not contained by a ul or ol element'
|
|
4993
5276
|
}
|
|
5277
|
+
},
|
|
5278
|
+
wax: {
|
|
5279
|
+
'<li> elements must be contained in a <ul> or <ol>': {
|
|
5280
|
+
variable: false,
|
|
5281
|
+
quality: 1,
|
|
5282
|
+
what: 'Element is li but is not contained by a ul or ol element'
|
|
5283
|
+
}
|
|
4994
5284
|
}
|
|
4995
5285
|
}
|
|
4996
5286
|
},
|
|
@@ -5040,7 +5330,7 @@ exports.issues = {
|
|
|
5040
5330
|
}
|
|
5041
5331
|
},
|
|
5042
5332
|
pseudoListRisk: {
|
|
5043
|
-
summary: 'list
|
|
5333
|
+
summary: 'list not marked as such?',
|
|
5044
5334
|
why: 'User may be unable to get help on which items are in lists',
|
|
5045
5335
|
wcag: '1.3.1',
|
|
5046
5336
|
weight: 1,
|
|
@@ -5095,13 +5385,6 @@ exports.issues = {
|
|
|
5095
5385
|
quality: 1,
|
|
5096
5386
|
what: 'Navigation links are not coded as a list'
|
|
5097
5387
|
}
|
|
5098
|
-
},
|
|
5099
|
-
qualWeb: {
|
|
5100
|
-
'QW-WCAG-T32': {
|
|
5101
|
-
variable: false,
|
|
5102
|
-
quality: 1,
|
|
5103
|
-
what: 'ol, ul or dl is not used for a list or group of links'
|
|
5104
|
-
}
|
|
5105
5388
|
}
|
|
5106
5389
|
}
|
|
5107
5390
|
},
|
|
@@ -5136,6 +5419,13 @@ exports.issues = {
|
|
|
5136
5419
|
quality: 1,
|
|
5137
5420
|
what: 'Select element has no label'
|
|
5138
5421
|
}
|
|
5422
|
+
},
|
|
5423
|
+
wax: {
|
|
5424
|
+
'Select element must have an accessible name': {
|
|
5425
|
+
variable: false,
|
|
5426
|
+
quality: 1,
|
|
5427
|
+
what: 'select element has no accessible name'
|
|
5428
|
+
}
|
|
5139
5429
|
}
|
|
5140
5430
|
}
|
|
5141
5431
|
},
|
|
@@ -5155,7 +5445,7 @@ exports.issues = {
|
|
|
5155
5445
|
}
|
|
5156
5446
|
},
|
|
5157
5447
|
selectFlatRisk: {
|
|
5158
|
-
summary: 'option groups
|
|
5448
|
+
summary: 'option groups not marked?',
|
|
5159
5449
|
why: 'User may be unable to get help recognizing groups of options',
|
|
5160
5450
|
wcag: '1.3.1',
|
|
5161
5451
|
weight: 1,
|
|
@@ -5236,7 +5526,7 @@ exports.issues = {
|
|
|
5236
5526
|
}
|
|
5237
5527
|
},
|
|
5238
5528
|
fieldSetRisk: {
|
|
5239
|
-
summary: 'fieldset
|
|
5529
|
+
summary: 'fieldset missing?',
|
|
5240
5530
|
why: 'User may be unable to get help recognizing a group of related form items',
|
|
5241
5531
|
wcag: '1.3.1',
|
|
5242
5532
|
weight: 1,
|
|
@@ -5419,6 +5709,11 @@ exports.issues = {
|
|
|
5419
5709
|
variable: true,
|
|
5420
5710
|
quality: 1,
|
|
5421
5711
|
what: 'Table row has a column count larger than that of the first row'
|
|
5712
|
+
},
|
|
5713
|
+
'^Table column \d+ established by element td has no cells beginning in it\.$': {
|
|
5714
|
+
variable: true,
|
|
5715
|
+
quality: 1,
|
|
5716
|
+
what: 'Element is td but the prior cells in its table column do not exist'
|
|
5422
5717
|
}
|
|
5423
5718
|
}
|
|
5424
5719
|
}
|
|
@@ -5461,6 +5756,13 @@ exports.issues = {
|
|
|
5461
5756
|
quality: 1,
|
|
5462
5757
|
what: 'caption element not used to associate a caption with a data table'
|
|
5463
5758
|
}
|
|
5759
|
+
},
|
|
5760
|
+
wave: {
|
|
5761
|
+
table_caption_possible: {
|
|
5762
|
+
variable: false,
|
|
5763
|
+
quality: 1,
|
|
5764
|
+
what: 'table cell apparently misused as the table caption'
|
|
5765
|
+
}
|
|
5464
5766
|
}
|
|
5465
5767
|
}
|
|
5466
5768
|
},
|
|
@@ -5561,6 +5863,13 @@ exports.issues = {
|
|
|
5561
5863
|
quality: 1,
|
|
5562
5864
|
what: 'Complex table is missing headers attributes of cells'
|
|
5563
5865
|
}
|
|
5866
|
+
},
|
|
5867
|
+
ibm: {
|
|
5868
|
+
table_headers_related: {
|
|
5869
|
+
variable: false,
|
|
5870
|
+
quality: 1,
|
|
5871
|
+
what: 'Element is a cell in a complex table but has no headers associated with headers or scope attributes'
|
|
5872
|
+
}
|
|
5564
5873
|
}
|
|
5565
5874
|
}
|
|
5566
5875
|
},
|
|
@@ -5580,7 +5889,7 @@ exports.issues = {
|
|
|
5580
5889
|
}
|
|
5581
5890
|
},
|
|
5582
5891
|
cellHeadersAmbiguityRisk: {
|
|
5583
|
-
summary: 'cell headers
|
|
5892
|
+
summary: 'cell headers ambiguous?',
|
|
5584
5893
|
why: 'User may be unable to get help on relationships in a table',
|
|
5585
5894
|
wcag: '1.3.1',
|
|
5586
5895
|
weight: 2,
|
|
@@ -5692,7 +6001,7 @@ exports.issues = {
|
|
|
5692
6001
|
}
|
|
5693
6002
|
},
|
|
5694
6003
|
TableHeaderScopeRisk: {
|
|
5695
|
-
summary: 'Table scope
|
|
6004
|
+
summary: 'Table scope ambiguous?',
|
|
5696
6005
|
why: 'User may be unable to get help on relationships in a table',
|
|
5697
6006
|
wcag: '1.3.1',
|
|
5698
6007
|
weight: 1,
|
|
@@ -5712,6 +6021,13 @@ exports.issues = {
|
|
|
5712
6021
|
wcag: '1.3.1',
|
|
5713
6022
|
weight: 2,
|
|
5714
6023
|
tools: {
|
|
6024
|
+
axe: {
|
|
6025
|
+
'empty-table-header': {
|
|
6026
|
+
variable: false,
|
|
6027
|
+
quality: 1,
|
|
6028
|
+
what: 'Element is a table header but has no text'
|
|
6029
|
+
}
|
|
6030
|
+
},
|
|
5715
6031
|
ed11y: {
|
|
5716
6032
|
tableEmptyHeaderCell: {
|
|
5717
6033
|
variable: false,
|
|
@@ -5773,6 +6089,51 @@ exports.issues = {
|
|
|
5773
6089
|
}
|
|
5774
6090
|
}
|
|
5775
6091
|
},
|
|
6092
|
+
divInTable: {
|
|
6093
|
+
summary: 'div embedded in table',
|
|
6094
|
+
why: 'Blocks of content within a table cell may confuse a user',
|
|
6095
|
+
wcag: '1.4',
|
|
6096
|
+
weight: 1,
|
|
6097
|
+
tools: {
|
|
6098
|
+
nuVal: {
|
|
6099
|
+
'Start tag div seen in table.': {
|
|
6100
|
+
variable: false,
|
|
6101
|
+
quality: 1,
|
|
6102
|
+
what: 'div element is inside a table element'
|
|
6103
|
+
}
|
|
6104
|
+
}
|
|
6105
|
+
}
|
|
6106
|
+
},
|
|
6107
|
+
formInTable: {
|
|
6108
|
+
summary: 'form embedded in table',
|
|
6109
|
+
why: 'Navigation in a form may confuse a keyboard-only user',
|
|
6110
|
+
wcag: '2.1.1',
|
|
6111
|
+
weight: 1,
|
|
6112
|
+
tools: {
|
|
6113
|
+
nuVal: {
|
|
6114
|
+
'Start tag form seen in table.': {
|
|
6115
|
+
variable: false,
|
|
6116
|
+
quality: 1,
|
|
6117
|
+
what: 'form element is inside a table element'
|
|
6118
|
+
}
|
|
6119
|
+
}
|
|
6120
|
+
}
|
|
6121
|
+
},
|
|
6122
|
+
inputInTable: {
|
|
6123
|
+
summary: 'input embedded in table',
|
|
6124
|
+
why: 'Entry of data in a form may confuse a keyboard-only user',
|
|
6125
|
+
wcag: '2.1.1',
|
|
6126
|
+
weight: 1,
|
|
6127
|
+
tools: {
|
|
6128
|
+
nuVal: {
|
|
6129
|
+
'Start tag input seen in table.': {
|
|
6130
|
+
variable: false,
|
|
6131
|
+
quality: 1,
|
|
6132
|
+
what: 'input element is inside a table element'
|
|
6133
|
+
}
|
|
6134
|
+
}
|
|
6135
|
+
}
|
|
6136
|
+
},
|
|
5776
6137
|
tableHeading: {
|
|
5777
6138
|
summary: 'heading located in table',
|
|
5778
6139
|
why: 'Complex relationships in a table may confuse a user',
|
|
@@ -5835,6 +6196,13 @@ exports.issues = {
|
|
|
5835
6196
|
quality: 1,
|
|
5836
6197
|
what: 'form element has no label'
|
|
5837
6198
|
}
|
|
6199
|
+
},
|
|
6200
|
+
wax: {
|
|
6201
|
+
'Form elements must have labels': {
|
|
6202
|
+
variable: false,
|
|
6203
|
+
quality: 1,
|
|
6204
|
+
what: 'Form input element has no label'
|
|
6205
|
+
}
|
|
5838
6206
|
}
|
|
5839
6207
|
}
|
|
5840
6208
|
},
|
|
@@ -5857,6 +6225,13 @@ exports.issues = {
|
|
|
5857
6225
|
quality: 1,
|
|
5858
6226
|
what: 'Form control has no visible label'
|
|
5859
6227
|
}
|
|
6228
|
+
},
|
|
6229
|
+
wax: {
|
|
6230
|
+
'Form elements should have a visible label': {
|
|
6231
|
+
variable: false,
|
|
6232
|
+
quality: 1,
|
|
6233
|
+
what: 'Form control has no visible label'
|
|
6234
|
+
}
|
|
5860
6235
|
}
|
|
5861
6236
|
}
|
|
5862
6237
|
},
|
|
@@ -6015,6 +6390,16 @@ exports.issues = {
|
|
|
6015
6390
|
quality: 1,
|
|
6016
6391
|
what: 'button element is a descendant of an element with a button role'
|
|
6017
6392
|
},
|
|
6393
|
+
'An element with the attribute role=button must not appear as a descendant of an element with the attribute role=button.': {
|
|
6394
|
+
variable: false,
|
|
6395
|
+
quality: 1,
|
|
6396
|
+
what: 'Element with a button role is a descendant of an element with a button role'
|
|
6397
|
+
},
|
|
6398
|
+
'An element with the attribute role=button must not appear as a descendant of the button element.': {
|
|
6399
|
+
variable: false,
|
|
6400
|
+
quality: 1,
|
|
6401
|
+
what: 'Element with a button role is a descendant of a button element'
|
|
6402
|
+
},
|
|
6018
6403
|
'The element label must not appear as a descendant of an element with the attribute role=button.': {
|
|
6019
6404
|
variable: false,
|
|
6020
6405
|
quality: 1,
|
|
@@ -6072,6 +6457,13 @@ exports.issues = {
|
|
|
6072
6457
|
quality: 1,
|
|
6073
6458
|
what: 'Active element is embedded in a link or button'
|
|
6074
6459
|
}
|
|
6460
|
+
},
|
|
6461
|
+
wax: {
|
|
6462
|
+
'Interactive controls must not be nested': {
|
|
6463
|
+
variable: false,
|
|
6464
|
+
quality: 1,
|
|
6465
|
+
what: 'Interactive controls are nested'
|
|
6466
|
+
}
|
|
6075
6467
|
}
|
|
6076
6468
|
}
|
|
6077
6469
|
},
|
|
@@ -6096,8 +6488,8 @@ exports.issues = {
|
|
|
6096
6488
|
},
|
|
6097
6489
|
'QW-WCAG-T24': {
|
|
6098
6490
|
variable: false,
|
|
6099
|
-
quality:
|
|
6100
|
-
what: 'Script removes the focus when focus is received'
|
|
6491
|
+
quality: 0.5,
|
|
6492
|
+
what: 'Script removes the focus when focus is received?'
|
|
6101
6493
|
}
|
|
6102
6494
|
},
|
|
6103
6495
|
testaro: {
|
|
@@ -6260,6 +6652,13 @@ exports.issues = {
|
|
|
6260
6652
|
quality: 1,
|
|
6261
6653
|
what: 'Content is not within a landmark element'
|
|
6262
6654
|
}
|
|
6655
|
+
},
|
|
6656
|
+
wax: {
|
|
6657
|
+
'All page content should be contained by landmarks': {
|
|
6658
|
+
variable: false,
|
|
6659
|
+
quality: 1,
|
|
6660
|
+
what: 'Content is not within a landmark element'
|
|
6661
|
+
}
|
|
6263
6662
|
}
|
|
6264
6663
|
}
|
|
6265
6664
|
},
|
|
@@ -6275,6 +6674,13 @@ exports.issues = {
|
|
|
6275
6674
|
quality: 1,
|
|
6276
6675
|
what: 'contentinfo landmark (footer) is contained in another landmark'
|
|
6277
6676
|
}
|
|
6677
|
+
},
|
|
6678
|
+
wax: {
|
|
6679
|
+
'Contentinfo landmark should not be contained in another landmark': {
|
|
6680
|
+
variable: false,
|
|
6681
|
+
quality: 1,
|
|
6682
|
+
what: 'Element is contentinfo but is within another landmark'
|
|
6683
|
+
}
|
|
6278
6684
|
}
|
|
6279
6685
|
}
|
|
6280
6686
|
},
|
|
@@ -6302,6 +6708,13 @@ exports.issues = {
|
|
|
6302
6708
|
quality: 1,
|
|
6303
6709
|
what: 'complementary landmark is not at the top level'
|
|
6304
6710
|
}
|
|
6711
|
+
},
|
|
6712
|
+
wax: {
|
|
6713
|
+
'Aside should not be contained in another landmark': {
|
|
6714
|
+
variable: false,
|
|
6715
|
+
quality: 1,
|
|
6716
|
+
what: 'Element is aside but is within another landmark'
|
|
6717
|
+
}
|
|
6305
6718
|
}
|
|
6306
6719
|
}
|
|
6307
6720
|
},
|
|
@@ -6420,6 +6833,13 @@ exports.issues = {
|
|
|
6420
6833
|
quality: 1,
|
|
6421
6834
|
what: 'More than one element with a banner role is on the page'
|
|
6422
6835
|
}
|
|
6836
|
+
},
|
|
6837
|
+
wax: {
|
|
6838
|
+
'Document should not have more than one banner landmark': {
|
|
6839
|
+
variable: false,
|
|
6840
|
+
quality: 1,
|
|
6841
|
+
what: 'Page has more than 1 banner landmark'
|
|
6842
|
+
}
|
|
6423
6843
|
}
|
|
6424
6844
|
}
|
|
6425
6845
|
},
|
|
@@ -6494,6 +6914,13 @@ exports.issues = {
|
|
|
6494
6914
|
quality: 0.5,
|
|
6495
6915
|
what: 'There are multiple contentinfo or banner landmarks'
|
|
6496
6916
|
}
|
|
6917
|
+
},
|
|
6918
|
+
wax: {
|
|
6919
|
+
'Document should not have more than one contentinfo landmark': {
|
|
6920
|
+
variable: false,
|
|
6921
|
+
quality: 1,
|
|
6922
|
+
what: 'Page has more than 1 contentinfo landmark'
|
|
6923
|
+
}
|
|
6497
6924
|
}
|
|
6498
6925
|
}
|
|
6499
6926
|
},
|
|
@@ -6521,6 +6948,13 @@ exports.issues = {
|
|
|
6521
6948
|
quality: 1,
|
|
6522
6949
|
what: 'Multiple landmarks with the same parent region are not distinguished from one another'
|
|
6523
6950
|
}
|
|
6951
|
+
},
|
|
6952
|
+
wax: {
|
|
6953
|
+
'Ensures landmarks are unique': {
|
|
6954
|
+
variable: false,
|
|
6955
|
+
quality: 1,
|
|
6956
|
+
what: 'Landmark is indistinguishable from another by role or accessible name'
|
|
6957
|
+
}
|
|
6524
6958
|
}
|
|
6525
6959
|
}
|
|
6526
6960
|
},
|
|
@@ -6569,6 +7003,21 @@ exports.issues = {
|
|
|
6569
7003
|
}
|
|
6570
7004
|
}
|
|
6571
7005
|
},
|
|
7006
|
+
applicationNoText: {
|
|
7007
|
+
summary: 'application not named',
|
|
7008
|
+
why: 'User cannot get help on how some of the document is organized',
|
|
7009
|
+
wcag: '1.3.6',
|
|
7010
|
+
weight: 4,
|
|
7011
|
+
tools: {
|
|
7012
|
+
ibm: {
|
|
7013
|
+
aria_application_labelled: {
|
|
7014
|
+
variable: false,
|
|
7015
|
+
quality: 1,
|
|
7016
|
+
what: 'Element with an application role has no purpose label'
|
|
7017
|
+
}
|
|
7018
|
+
}
|
|
7019
|
+
}
|
|
7020
|
+
},
|
|
6572
7021
|
applicationConfusion: {
|
|
6573
7022
|
summary: 'applications not distinctly named',
|
|
6574
7023
|
why: 'User cannot get help on how some of the document is organized',
|
|
@@ -7436,6 +7885,13 @@ exports.issues = {
|
|
|
7436
7885
|
quality: 1,
|
|
7437
7886
|
what: 'Element has a refresh delay (no exception)'
|
|
7438
7887
|
}
|
|
7888
|
+
},
|
|
7889
|
+
wave: {
|
|
7890
|
+
meta_refresh: {
|
|
7891
|
+
variable: false,
|
|
7892
|
+
quality: 1,
|
|
7893
|
+
what: 'Page refreshes or redirects'
|
|
7894
|
+
}
|
|
7439
7895
|
}
|
|
7440
7896
|
}
|
|
7441
7897
|
},
|
|
@@ -7532,6 +7988,13 @@ exports.issues = {
|
|
|
7532
7988
|
quality: 1,
|
|
7533
7989
|
what: 'tabIndex value positive'
|
|
7534
7990
|
}
|
|
7991
|
+
},
|
|
7992
|
+
wax: {
|
|
7993
|
+
'Elements should not have tabindex greater than zero': {
|
|
7994
|
+
variable: false,
|
|
7995
|
+
quality: 1,
|
|
7996
|
+
what: 'Element has a positive tabIndex attribute'
|
|
7997
|
+
}
|
|
7535
7998
|
}
|
|
7536
7999
|
}
|
|
7537
8000
|
},
|
|
@@ -7645,7 +8108,7 @@ exports.issues = {
|
|
|
7645
8108
|
}
|
|
7646
8109
|
},
|
|
7647
8110
|
audioTextRisk: {
|
|
7648
|
-
summary: 'audio
|
|
8111
|
+
summary: 'audio not named?',
|
|
7649
8112
|
why: 'User may be unable to get help reading speech as text',
|
|
7650
8113
|
wcag: '1.2.1',
|
|
7651
8114
|
weight: 1,
|
|
@@ -7722,7 +8185,7 @@ exports.issues = {
|
|
|
7722
8185
|
}
|
|
7723
8186
|
},
|
|
7724
8187
|
videoCaptionRisk: {
|
|
7725
|
-
summary: 'audio or video alternatives
|
|
8188
|
+
summary: 'audio or video alternatives missing?',
|
|
7726
8189
|
why: 'User may be unable to get help reading video content as text',
|
|
7727
8190
|
wcag: '1.2.2',
|
|
7728
8191
|
weight: 1,
|
|
@@ -7843,7 +8306,7 @@ exports.issues = {
|
|
|
7843
8306
|
}
|
|
7844
8307
|
},
|
|
7845
8308
|
scrollFocus: {
|
|
7846
|
-
summary: 'scrollable element and
|
|
8309
|
+
summary: 'scrollable element and children nonfocusable',
|
|
7847
8310
|
why: 'User may be unable to see all of an item without scrolling in both dimensions',
|
|
7848
8311
|
wcag: '2.1.1',
|
|
7849
8312
|
weight: 3,
|
|
@@ -7908,7 +8371,7 @@ exports.issues = {
|
|
|
7908
8371
|
}
|
|
7909
8372
|
},
|
|
7910
8373
|
repeatedContentRisk: {
|
|
7911
|
-
summary: 'skip method
|
|
8374
|
+
summary: 'skip method missing or invalid?',
|
|
7912
8375
|
why: 'Keyboard-only user may be unable easily to reach the specific content of the document',
|
|
7913
8376
|
wcag: '2.4.1',
|
|
7914
8377
|
weight: 1,
|
|
@@ -7990,7 +8453,7 @@ exports.issues = {
|
|
|
7990
8453
|
}
|
|
7991
8454
|
},
|
|
7992
8455
|
noScriptRisk: {
|
|
7993
|
-
summary: 'noscript element
|
|
8456
|
+
summary: 'noscript element not equivalent?',
|
|
7994
8457
|
why: 'User who has disabled JavaScript may be denied some content',
|
|
7995
8458
|
wcag: '4.1',
|
|
7996
8459
|
weight: 1,
|
|
@@ -8222,6 +8685,36 @@ exports.issues = {
|
|
|
8222
8685
|
}
|
|
8223
8686
|
}
|
|
8224
8687
|
},
|
|
8688
|
+
atRuleInvalid: {
|
|
8689
|
+
summary: 'invalid at-rule',
|
|
8690
|
+
why: 'Document cannot be properly displayed in particular contexts',
|
|
8691
|
+
wcag: '4.1',
|
|
8692
|
+
weight: 3,
|
|
8693
|
+
tools: {
|
|
8694
|
+
nuVal: {
|
|
8695
|
+
'^CSS: Unrecognized at-rule @.+$': {
|
|
8696
|
+
variable: true,
|
|
8697
|
+
quality: 1,
|
|
8698
|
+
what: 'At-rule not recognized by CSS'
|
|
8699
|
+
},
|
|
8700
|
+
'CSS: This profile has a very specific syntax for @charset: @charset followed by exactly one space, followed by the name of the encoding in quotes, followed immediately by a semicolon.': {
|
|
8701
|
+
variable: false,
|
|
8702
|
+
quality: 1,
|
|
8703
|
+
what: 'CSS @charset at-rule has an invalid format'
|
|
8704
|
+
},
|
|
8705
|
+
'CSS: The @charset rule may only occur at the start of the style sheet. Please check that there are no spaces before it.': {
|
|
8706
|
+
variable: false,
|
|
8707
|
+
quality: 1,
|
|
8708
|
+
what: 'CSS @charset at-rule is not at the start of its style sheet'
|
|
8709
|
+
},
|
|
8710
|
+
'CSS: @import are not allowed after any valid statement other than @charset and @import.': {
|
|
8711
|
+
variable: false,
|
|
8712
|
+
quality: 1,
|
|
8713
|
+
what: 'CSS @import at-rule is after an at-rule other than @charset or @import'
|
|
8714
|
+
}
|
|
8715
|
+
}
|
|
8716
|
+
}
|
|
8717
|
+
},
|
|
8225
8718
|
cssInvalid: {
|
|
8226
8719
|
summary: 'CSS invalid',
|
|
8227
8720
|
why: 'Document cannot be properly displayed',
|
|
@@ -8329,6 +8822,11 @@ exports.issues = {
|
|
|
8329
8822
|
quality: 1,
|
|
8330
8823
|
what: 'Space is misused as a CSS operator'
|
|
8331
8824
|
},
|
|
8825
|
+
'^CSS: .+: , is an incorrect operator\.$': {
|
|
8826
|
+
variable: true,
|
|
8827
|
+
quality: 1,
|
|
8828
|
+
what: 'Comma is misused as a CSS operator'
|
|
8829
|
+
},
|
|
8332
8830
|
'^CSS: Unknown pseudo-element or pseudo-class :.+$': {
|
|
8333
8831
|
variable: true,
|
|
8334
8832
|
quality: 1,
|
|
@@ -8339,11 +8837,6 @@ exports.issues = {
|
|
|
8339
8837
|
quality: 1,
|
|
8340
8838
|
what: 'Unrecognized media value'
|
|
8341
8839
|
},
|
|
8342
|
-
'CSS: This profile has a very specific syntax for @charset: @charset followed by exactly one space, followed by the name of the encoding in quotes, followed immediately by a semicolon.': {
|
|
8343
|
-
variable: false,
|
|
8344
|
-
quality: 1,
|
|
8345
|
-
what: 'CSS @charset at-rule has an invalid format'
|
|
8346
|
-
},
|
|
8347
8840
|
'^CSS: .+ is not a :lang.+ value.*$': {
|
|
8348
8841
|
variable: true,
|
|
8349
8842
|
quality: 1,
|
|
@@ -8354,16 +8847,6 @@ exports.issues = {
|
|
|
8354
8847
|
quality: 1,
|
|
8355
8848
|
what: 'semicolon missing in CSS'
|
|
8356
8849
|
},
|
|
8357
|
-
'CSS: The @charset rule may only occur at the start of the style sheet. Please check that there are no spaces before it.': {
|
|
8358
|
-
variable: false,
|
|
8359
|
-
quality: 1,
|
|
8360
|
-
what: 'CSS @charset at-rule is not at the start of its style sheet'
|
|
8361
|
-
},
|
|
8362
|
-
'CSS: @import are not allowed after any valid statement other than @charset and @import.': {
|
|
8363
|
-
variable: false,
|
|
8364
|
-
quality: 1,
|
|
8365
|
-
what: 'CSS @import at-rule is after an at-rule other than @charset or @import'
|
|
8366
|
-
},
|
|
8367
8850
|
'^CSS: perspective: .+ is not valid, only values greater than 0 allowed.*$': {
|
|
8368
8851
|
variable: true,
|
|
8369
8852
|
quality: 0.5,
|
|
@@ -8379,6 +8862,11 @@ exports.issues = {
|
|
|
8379
8862
|
quality: 0.5,
|
|
8380
8863
|
what: 'CSS transition property has a value greater than 1'
|
|
8381
8864
|
},
|
|
8865
|
+
'CSS: -webkit-mask: too few values for the property linear-gradient.': {
|
|
8866
|
+
variable: false,
|
|
8867
|
+
quality: 1,
|
|
8868
|
+
what: 'CSS webkit-mask linear-gradient property has too few values'
|
|
8869
|
+
},
|
|
8382
8870
|
'^CSS: In CSS1, a class name could start with a digit .+, unless it was a dimension .+ In CSS2, such classes are parsed as unknown dimensions .+ To make .+ a valid class, CSS2 requires the first digit to be escaped: .+$': {
|
|
8383
8871
|
variable: true,
|
|
8384
8872
|
quality: 0.5,
|
|
@@ -8397,13 +8885,18 @@ exports.issues = {
|
|
|
8397
8885
|
'^Stray start tag .+$': {
|
|
8398
8886
|
variable: true,
|
|
8399
8887
|
quality: 1,
|
|
8400
|
-
what: 'Invalid
|
|
8888
|
+
what: 'Invalid start tag'
|
|
8401
8889
|
},
|
|
8402
8890
|
'^Stray end tag .+$': {
|
|
8403
8891
|
variable: true,
|
|
8404
8892
|
quality: 1,
|
|
8405
8893
|
what: 'Invalid closing tag'
|
|
8406
8894
|
},
|
|
8895
|
+
'^End tag [a-z]+\.$': {
|
|
8896
|
+
variable: true,
|
|
8897
|
+
quality: 1,
|
|
8898
|
+
what: 'Closing tag of an ineligible element'
|
|
8899
|
+
},
|
|
8407
8900
|
'^Start tag .+ seen but an element of the same type was already open.*$': {
|
|
8408
8901
|
variable: true,
|
|
8409
8902
|
quality: 1,
|
|
@@ -8433,6 +8926,11 @@ exports.issues = {
|
|
|
8433
8926
|
variable: true,
|
|
8434
8927
|
quality: 1,
|
|
8435
8928
|
what: 'End tag for an element that is not in scope'
|
|
8929
|
+
},
|
|
8930
|
+
'End tag had attributes.': {
|
|
8931
|
+
variable: false,
|
|
8932
|
+
quality: 1,
|
|
8933
|
+
what: 'End tag has an attribute'
|
|
8436
8934
|
}
|
|
8437
8935
|
}
|
|
8438
8936
|
}
|
|
@@ -8522,6 +9020,21 @@ exports.issues = {
|
|
|
8522
9020
|
}
|
|
8523
9021
|
}
|
|
8524
9022
|
},
|
|
9023
|
+
entityBad: {
|
|
9024
|
+
summary: 'named character reference invalid',
|
|
9025
|
+
why: 'User may be unable to read all the document text',
|
|
9026
|
+
wcag: '4.1',
|
|
9027
|
+
weight: 4,
|
|
9028
|
+
tools: {
|
|
9029
|
+
nuVal: {
|
|
9030
|
+
'Named character reference was not terminated by a semicolon. (Or & should have been escaped as &.)': {
|
|
9031
|
+
variable: false,
|
|
9032
|
+
quality: 1,
|
|
9033
|
+
what: '& not escaped or used in an unterminated character reference'
|
|
9034
|
+
}
|
|
9035
|
+
}
|
|
9036
|
+
}
|
|
9037
|
+
},
|
|
8525
9038
|
textContentBad: {
|
|
8526
9039
|
summary: 'element text content invalid',
|
|
8527
9040
|
why: 'User may be unable to read all the document text',
|
|
@@ -8614,10 +9127,10 @@ exports.issues = {
|
|
|
8614
9127
|
quality: 1,
|
|
8615
9128
|
what: 'Invalid element name'
|
|
8616
9129
|
},
|
|
8617
|
-
'Quote
|
|
8618
|
-
variable:
|
|
9130
|
+
'^Quote . in attribute name\. Probable cause: Matching quote missing somewhere earlier\.$': {
|
|
9131
|
+
variable: true,
|
|
8619
9132
|
quality: 1,
|
|
8620
|
-
what: 'Attribute name includes
|
|
9133
|
+
what: 'Attribute name includes an apostrophe or double quotation mark'
|
|
8621
9134
|
},
|
|
8622
9135
|
'Element script must not have attribute async unless attribute src is also specified or unless attribute type is specified with value module.': {
|
|
8623
9136
|
variable: false,
|
|
@@ -8639,11 +9152,6 @@ exports.issues = {
|
|
|
8639
9152
|
quality: 1,
|
|
8640
9153
|
what: 'Element has an invalid ancestor'
|
|
8641
9154
|
},
|
|
8642
|
-
'The first child option element of a select element with a required attribute, and without a multiple attribute, and without a size attribute whose value is greater than 1, must have either an empty value attribute, or must have no text content. Consider either adding a placeholder option label, or adding a size attribute with a value equal to the number of option elements.': {
|
|
8643
|
-
variable: false,
|
|
8644
|
-
quality: 1,
|
|
8645
|
-
what: 'option element has a nonempty value'
|
|
8646
|
-
},
|
|
8647
9155
|
'Element script must not have attribute charset unless attribute src is also specified.': {
|
|
8648
9156
|
variable: false,
|
|
8649
9157
|
quality: 1,
|
|
@@ -8663,6 +9171,11 @@ exports.issues = {
|
|
|
8663
9171
|
variable: true,
|
|
8664
9172
|
quality: 1,
|
|
8665
9173
|
what: 'Element is invalid because its namespace is not HTML'
|
|
9174
|
+
},
|
|
9175
|
+
'A slash was not immediately followed by >.': {
|
|
9176
|
+
variable: false,
|
|
9177
|
+
quality: 1,
|
|
9178
|
+
what: 'Element start tag contains a nonfinal slash'
|
|
8666
9179
|
}
|
|
8667
9180
|
},
|
|
8668
9181
|
qualWeb: {
|
|
@@ -8719,15 +9232,20 @@ exports.issues = {
|
|
|
8719
9232
|
weight: 4,
|
|
8720
9233
|
tools: {
|
|
8721
9234
|
nuVal: {
|
|
9235
|
+
'^Internal encoding declaration named an unsupported chararacter encoding .*$': {
|
|
9236
|
+
variable: true,
|
|
9237
|
+
quality: 1,
|
|
9238
|
+
what: 'Encoding declaration names an unsupported character encoding'
|
|
9239
|
+
},
|
|
8722
9240
|
'Text run is not in Unicode Normalization Form C.': {
|
|
8723
9241
|
variable: false,
|
|
8724
9242
|
quality: 1,
|
|
8725
|
-
what: 'Text run is not in Unicode Normalization Form C
|
|
9243
|
+
what: 'Text run is not in Unicode Normalization Form C'
|
|
8726
9244
|
},
|
|
8727
9245
|
'^The value of attribute .+ on element .+ from namespace .+ is not in Unicode Normalization Form C.*$': {
|
|
8728
9246
|
variable: true,
|
|
8729
9247
|
quality: 1,
|
|
8730
|
-
what: 'Value of attribute is not in Unicode Normalization Form C
|
|
9248
|
+
what: 'Value of attribute is not in Unicode Normalization Form C'
|
|
8731
9249
|
},
|
|
8732
9250
|
'^Forbidden code point U+.*$': {
|
|
8733
9251
|
variable: true,
|