testilo 20.0.0 → 20.0.2
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/score/tic38.js +43 -412
- package/procs/score/tsp38.js +1 -1
package/package.json
CHANGED
package/procs/score/tic38.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
tic37
|
|
3
3
|
Testilo issue classification 38
|
|
4
4
|
|
|
5
|
-
Classifies about
|
|
5
|
+
Classifies about 900 rules of the tools of Testaro into about 300 issues.
|
|
6
6
|
|
|
7
7
|
Issue properties:
|
|
8
8
|
summary: minimal description
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
wcag: most relevant WCAG Principle, Guideline, Success Criterion, or Technique
|
|
11
11
|
weight: weight of the issue in score computation
|
|
12
12
|
max?: maximum possible count of instances if finite
|
|
13
|
-
tools: tools (including Testaro)
|
|
13
|
+
tools: tools (including Testaro) defining rules for the issue
|
|
14
14
|
|
|
15
15
|
Each property of tools is data about one of the tools that test for the issue. The key is the name
|
|
16
16
|
of the tool. The value is an object containing data about the rules of the tool that pertain to
|
|
@@ -61,12 +61,20 @@ exports.issues = {
|
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
63
|
axe: {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
'css-orientation-lock': {
|
|
65
|
+
variable: false,
|
|
66
|
+
quality: 0,
|
|
67
|
+
what: 'CSS media query locks display orientation [unreliable]'
|
|
68
|
+
},
|
|
69
|
+
'frame-tested': {
|
|
70
|
+
variable: false,
|
|
71
|
+
quality: 0.2,
|
|
72
|
+
what: 'Some content is in an iframe and so may not be testable for accessibility [speculative]'
|
|
73
|
+
},
|
|
74
|
+
'hidden-content': {
|
|
75
|
+
variable: false,
|
|
76
|
+
quality: 1,
|
|
77
|
+
what: 'Some content is hidden and so may not be testable for accessibility [speculative]'
|
|
70
78
|
}
|
|
71
79
|
},
|
|
72
80
|
nuVal: {
|
|
@@ -97,6 +105,26 @@ exports.issues = {
|
|
|
97
105
|
quality: 0,
|
|
98
106
|
what: 'Document has no landmark with non-repeated content [invalid]'
|
|
99
107
|
},
|
|
108
|
+
'QW-ACT-R64': {
|
|
109
|
+
variable: false,
|
|
110
|
+
quality: 1,
|
|
111
|
+
what: 'Document has no heading for non-repeated content'
|
|
112
|
+
},
|
|
113
|
+
'QW-ACT-R73': {
|
|
114
|
+
variable: false,
|
|
115
|
+
quality: 1,
|
|
116
|
+
what: 'Block of repeated content is not collapsible [invalid]'
|
|
117
|
+
},
|
|
118
|
+
'QW-ACT-R74': {
|
|
119
|
+
variable: false,
|
|
120
|
+
quality: 1,
|
|
121
|
+
what: 'Document has no instrument to move focus to non-repeated content [invalid]'
|
|
122
|
+
},
|
|
123
|
+
'QW-ACT-R75': {
|
|
124
|
+
variable: false,
|
|
125
|
+
quality: 1,
|
|
126
|
+
what: 'Blocks of repeated content cannot be bypassed [invalid]'
|
|
127
|
+
},
|
|
100
128
|
'QW-WCAG-T4': {
|
|
101
129
|
variable: false,
|
|
102
130
|
quality: 0,
|
|
@@ -116,6 +144,11 @@ exports.issues = {
|
|
|
116
144
|
variable: false,
|
|
117
145
|
quality: 0,
|
|
118
146
|
what: 'Link text is not supplemented with a title attribute [invalid]'
|
|
147
|
+
},
|
|
148
|
+
'QW-WCAG-T23': {
|
|
149
|
+
variable: false,
|
|
150
|
+
quality: 1,
|
|
151
|
+
what: 'No link at the top of the page goes directly to the main content area [invalid]'
|
|
119
152
|
}
|
|
120
153
|
}
|
|
121
154
|
}
|
|
@@ -187,11 +220,6 @@ exports.issues = {
|
|
|
187
220
|
}
|
|
188
221
|
},
|
|
189
222
|
ibm: {
|
|
190
|
-
RPT_Elem_UniqueId: {
|
|
191
|
-
variable: false,
|
|
192
|
-
quality: 1,
|
|
193
|
-
what: 'Element id attribute value is not unique within the document'
|
|
194
|
-
},
|
|
195
223
|
element_id_unique: {
|
|
196
224
|
variable: false,
|
|
197
225
|
quality: 1,
|
|
@@ -236,11 +264,6 @@ exports.issues = {
|
|
|
236
264
|
weight: 4,
|
|
237
265
|
tools: {
|
|
238
266
|
ibm: {
|
|
239
|
-
Rpt_Aria_WidgetLabels_Implicit: {
|
|
240
|
-
variable: false,
|
|
241
|
-
quality: 1,
|
|
242
|
-
what: 'Interactive component has no programmatically associated name'
|
|
243
|
-
},
|
|
244
267
|
aria_widget_labelled: {
|
|
245
268
|
variable: false,
|
|
246
269
|
quality: 1,
|
|
@@ -263,11 +286,6 @@ exports.issues = {
|
|
|
263
286
|
}
|
|
264
287
|
},
|
|
265
288
|
ibm: {
|
|
266
|
-
Rpt_Aria_RegionLabel_Implicit: {
|
|
267
|
-
variable: false,
|
|
268
|
-
quality: 1,
|
|
269
|
-
what: 'Element with a region role has no label that describes its purpose'
|
|
270
|
-
},
|
|
271
289
|
aria_region_labelled: {
|
|
272
290
|
variable: false,
|
|
273
291
|
quality: 1,
|
|
@@ -452,11 +470,6 @@ exports.issues = {
|
|
|
452
470
|
}
|
|
453
471
|
},
|
|
454
472
|
ibm: {
|
|
455
|
-
WCAG20_Input_ExplicitLabelImage: {
|
|
456
|
-
variable: false,
|
|
457
|
-
quality: 1,
|
|
458
|
-
what: 'Element is an input of type image but has no text alternative'
|
|
459
|
-
},
|
|
460
473
|
imagebutton_alt_exists: {
|
|
461
474
|
variable: false,
|
|
462
475
|
quality: 1,
|
|
@@ -472,11 +485,6 @@ exports.issues = {
|
|
|
472
485
|
weight: 4,
|
|
473
486
|
tools: {
|
|
474
487
|
ibm: {
|
|
475
|
-
HAAC_Figure_label: {
|
|
476
|
-
variable: false,
|
|
477
|
-
quality: 1,
|
|
478
|
-
what: 'figure element has no associated label'
|
|
479
|
-
},
|
|
480
488
|
figure_label_exists: {
|
|
481
489
|
variable: false,
|
|
482
490
|
quality: 1,
|
|
@@ -525,21 +533,11 @@ exports.issues = {
|
|
|
525
533
|
}
|
|
526
534
|
},
|
|
527
535
|
ibm: {
|
|
528
|
-
HAAC_Aria_ImgAlt: {
|
|
529
|
-
variable: false,
|
|
530
|
-
quality: 1,
|
|
531
|
-
what: 'Element with an img role has no non-empty label'
|
|
532
|
-
},
|
|
533
536
|
aria_img_labelled: {
|
|
534
537
|
variable: false,
|
|
535
538
|
quality: 1,
|
|
536
539
|
what: 'Element with an img role has no label or an empty label'
|
|
537
540
|
},
|
|
538
|
-
WCAG20_Img_HasAlt: {
|
|
539
|
-
variable: false,
|
|
540
|
-
quality: 1,
|
|
541
|
-
what: 'Image has no alt attribute conveying its meaning, or alt="" if decorative'
|
|
542
|
-
},
|
|
543
541
|
img_alt_valid: {
|
|
544
542
|
variable: false,
|
|
545
543
|
quality: 1,
|
|
@@ -579,21 +577,6 @@ exports.issues = {
|
|
|
579
577
|
}
|
|
580
578
|
}
|
|
581
579
|
},
|
|
582
|
-
decorativeImageAltBad: {
|
|
583
|
-
summary: 'decorative image has no alt',
|
|
584
|
-
why: 'Helper alerts a user to an uninformative image instead of ignoring it',
|
|
585
|
-
wcag: '1.1.1',
|
|
586
|
-
weight: 4,
|
|
587
|
-
tools: {
|
|
588
|
-
ibm: {
|
|
589
|
-
WCAG20_Img_PresentationImgHasNonNullAlt: {
|
|
590
|
-
variable: false,
|
|
591
|
-
quality: 1,
|
|
592
|
-
what: 'Image designated as decorative has no alt=""'
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
},
|
|
597
580
|
imageTextBad: {
|
|
598
581
|
summary: 'image named with filename',
|
|
599
582
|
why: 'Helper gives a user the filename of an image instead of describing it',
|
|
@@ -912,11 +895,6 @@ exports.issues = {
|
|
|
912
895
|
}
|
|
913
896
|
},
|
|
914
897
|
ibm: {
|
|
915
|
-
WCAG20_Html_HasLang: {
|
|
916
|
-
variable: false,
|
|
917
|
-
quality: 1,
|
|
918
|
-
what: 'Page detected as HTML, but has no lang attribute'
|
|
919
|
-
},
|
|
920
898
|
html_lang_exists: {
|
|
921
899
|
variable: false,
|
|
922
900
|
quality: 1,
|
|
@@ -986,13 +964,6 @@ exports.issues = {
|
|
|
986
964
|
what: 'Language specified in the lang attribute of the document does not appear to be well-formed'
|
|
987
965
|
}
|
|
988
966
|
},
|
|
989
|
-
ibm: {
|
|
990
|
-
WCAG20_Elem_Lang_Valid: {
|
|
991
|
-
variable: false,
|
|
992
|
-
quality: 1,
|
|
993
|
-
what: 'lang attribute does not include a valid primary language'
|
|
994
|
-
}
|
|
995
|
-
},
|
|
996
967
|
qualWeb: {
|
|
997
968
|
'QW-ACT-R5': {
|
|
998
969
|
variable: false,
|
|
@@ -1087,21 +1058,6 @@ exports.issues = {
|
|
|
1087
1058
|
}
|
|
1088
1059
|
}
|
|
1089
1060
|
},
|
|
1090
|
-
applicationNoText: {
|
|
1091
|
-
summary: 'application not named',
|
|
1092
|
-
why: 'User cannot get help on how to use a custom item',
|
|
1093
|
-
wcag: '4.1.2',
|
|
1094
|
-
weight: 4,
|
|
1095
|
-
tools: {
|
|
1096
|
-
ibm: {
|
|
1097
|
-
Rpt_Aria_ApplicationLandmarkLabel: {
|
|
1098
|
-
variable: false,
|
|
1099
|
-
quality: 1,
|
|
1100
|
-
what: 'Element with an application role has no purpose label'
|
|
1101
|
-
}
|
|
1102
|
-
}
|
|
1103
|
-
}
|
|
1104
|
-
},
|
|
1105
1061
|
objectNoText: {
|
|
1106
1062
|
summary: 'object not named',
|
|
1107
1063
|
why: 'User cannot get help explaining a custom item',
|
|
@@ -1129,13 +1085,6 @@ exports.issues = {
|
|
|
1129
1085
|
what: 'object element contains no text alternative'
|
|
1130
1086
|
}
|
|
1131
1087
|
},
|
|
1132
|
-
ibm: {
|
|
1133
|
-
WCAG20_Object_HasText: {
|
|
1134
|
-
variable: false,
|
|
1135
|
-
quality: 1,
|
|
1136
|
-
what: 'object element has no text alternative'
|
|
1137
|
-
}
|
|
1138
|
-
},
|
|
1139
1088
|
qualWeb: {
|
|
1140
1089
|
'QW-ACT-R42': {
|
|
1141
1090
|
variable: false,
|
|
@@ -1251,18 +1200,6 @@ exports.issues = {
|
|
|
1251
1200
|
what: 'Element is an area in an image map but has no alt attribute'
|
|
1252
1201
|
}
|
|
1253
1202
|
},
|
|
1254
|
-
ibm: {
|
|
1255
|
-
HAAC_Img_UsemapAlt: {
|
|
1256
|
-
variable: false,
|
|
1257
|
-
quality: 1,
|
|
1258
|
-
what: 'Image map or child area has no text alternative'
|
|
1259
|
-
},
|
|
1260
|
-
'WCAG20_Area_HasAlt': {
|
|
1261
|
-
variable: false,
|
|
1262
|
-
quality: 1,
|
|
1263
|
-
what: 'Element is an area in an image map but has no text alternative'
|
|
1264
|
-
}
|
|
1265
|
-
},
|
|
1266
1203
|
qualWeb: {
|
|
1267
1204
|
'QW-WCAG-T1': {
|
|
1268
1205
|
variable: false,
|
|
@@ -1445,11 +1382,6 @@ exports.issues = {
|
|
|
1445
1382
|
weight: 4,
|
|
1446
1383
|
tools: {
|
|
1447
1384
|
ibm: {
|
|
1448
|
-
HAAC_ActiveDescendantCheck: {
|
|
1449
|
-
variable: false,
|
|
1450
|
-
quality: 1,
|
|
1451
|
-
what: 'aria-activedescendant property does not reference the id of a non-empty, non-hidden active child element'
|
|
1452
|
-
},
|
|
1453
1385
|
aria_activedescendant_valid: {
|
|
1454
1386
|
variable: false,
|
|
1455
1387
|
quality: 1,
|
|
@@ -1535,21 +1467,11 @@ exports.issues = {
|
|
|
1535
1467
|
}
|
|
1536
1468
|
},
|
|
1537
1469
|
ibm: {
|
|
1538
|
-
WCAG20_Input_LabelBefore: {
|
|
1539
|
-
variable: false,
|
|
1540
|
-
quality: 1,
|
|
1541
|
-
what: 'Text input or select element label follows the input control'
|
|
1542
|
-
},
|
|
1543
1470
|
input_label_before: {
|
|
1544
1471
|
variable: false,
|
|
1545
1472
|
quality: 1,
|
|
1546
1473
|
what: 'Label text is after its text input or select element'
|
|
1547
1474
|
},
|
|
1548
|
-
WCAG20_Input_LabelAfter: {
|
|
1549
|
-
variable: false,
|
|
1550
|
-
quality: 1,
|
|
1551
|
-
what: 'Checkbox or radio button label precedes the input control'
|
|
1552
|
-
},
|
|
1553
1475
|
input_label_after: {
|
|
1554
1476
|
variable: false,
|
|
1555
1477
|
quality: 1,
|
|
@@ -1605,13 +1527,6 @@ exports.issues = {
|
|
|
1605
1527
|
what: 'aria-labelledby attribute references a nonexistent element'
|
|
1606
1528
|
}
|
|
1607
1529
|
},
|
|
1608
|
-
ibm: {
|
|
1609
|
-
WCAG20_Label_RefValid: {
|
|
1610
|
-
variable: false,
|
|
1611
|
-
quality: 1,
|
|
1612
|
-
what: 'for attribute does not reference a non-empty, unique id attribute of an input element'
|
|
1613
|
-
}
|
|
1614
|
-
},
|
|
1615
1530
|
nuVal: {
|
|
1616
1531
|
'Any input descendant of a label element with a for attribute must have an ID value that matches that for attribute.': {
|
|
1617
1532
|
variable: false,
|
|
@@ -1753,11 +1668,6 @@ exports.issues = {
|
|
|
1753
1668
|
}
|
|
1754
1669
|
},
|
|
1755
1670
|
ibm: {
|
|
1756
|
-
WCAG20_A_HasText: {
|
|
1757
|
-
variable: false,
|
|
1758
|
-
quality: 1,
|
|
1759
|
-
what: 'Hyperlink has no text description'
|
|
1760
|
-
},
|
|
1761
1671
|
a_text_purpose: {
|
|
1762
1672
|
variable: false,
|
|
1763
1673
|
quality: 1,
|
|
@@ -2307,13 +2217,6 @@ exports.issues = {
|
|
|
2307
2217
|
what: 'ARIA role is not contained by a required parent'
|
|
2308
2218
|
}
|
|
2309
2219
|
},
|
|
2310
|
-
ibm: {
|
|
2311
|
-
Rpt_Aria_RequiredParent_Native_Host_Sematics: {
|
|
2312
|
-
variable: false,
|
|
2313
|
-
quality: 1,
|
|
2314
|
-
what: 'Element is not contained within a role-valid element'
|
|
2315
|
-
}
|
|
2316
|
-
},
|
|
2317
2220
|
nuVal: {
|
|
2318
2221
|
'^An element with role=.+ must be contained in, or owned by, an element with role=.+$': {
|
|
2319
2222
|
variable: true,
|
|
@@ -2430,7 +2333,6 @@ exports.issues = {
|
|
|
2430
2333
|
why: 'User must read sideways after rotating a device',
|
|
2431
2334
|
wcag: '1.3.4',
|
|
2432
2335
|
weight: 4,
|
|
2433
|
-
max: 1,
|
|
2434
2336
|
tools: {
|
|
2435
2337
|
aslint: {
|
|
2436
2338
|
orientation: {
|
|
@@ -2879,11 +2781,6 @@ exports.issues = {
|
|
|
2879
2781
|
}
|
|
2880
2782
|
},
|
|
2881
2783
|
ibm: {
|
|
2882
|
-
WCAG20_Frame_HasTitle: {
|
|
2883
|
-
variable: false,
|
|
2884
|
-
quality: 1,
|
|
2885
|
-
what: 'Inline frame has an empty or nonunique title attribute'
|
|
2886
|
-
},
|
|
2887
2784
|
frame_title_exists: {
|
|
2888
2785
|
variable: false,
|
|
2889
2786
|
quality: 1,
|
|
@@ -3085,13 +2982,6 @@ exports.issues = {
|
|
|
3085
2982
|
quality: 1,
|
|
3086
2983
|
what: 'Element has a dir attribute with a value other than rtl, ltr, or auto'
|
|
3087
2984
|
}
|
|
3088
|
-
},
|
|
3089
|
-
ibm: {
|
|
3090
|
-
Valerie_Elem_DirValid: {
|
|
3091
|
-
variable: false,
|
|
3092
|
-
quality: 1,
|
|
3093
|
-
what: 'dir attribute has a value other than ltr, rtl, or auto'
|
|
3094
|
-
}
|
|
3095
2985
|
}
|
|
3096
2986
|
}
|
|
3097
2987
|
},
|
|
@@ -3225,11 +3115,6 @@ exports.issues = {
|
|
|
3225
3115
|
}
|
|
3226
3116
|
},
|
|
3227
3117
|
ibm: {
|
|
3228
|
-
Rpt_Aria_RequiredProperties: {
|
|
3229
|
-
variable: false,
|
|
3230
|
-
quality: 1,
|
|
3231
|
-
what: 'ARIA role on an element does not have a required attribute'
|
|
3232
|
-
},
|
|
3233
3118
|
aria_attribute_required: {
|
|
3234
3119
|
variable: false,
|
|
3235
3120
|
quality: 1,
|
|
@@ -3501,11 +3386,6 @@ exports.issues = {
|
|
|
3501
3386
|
weight: 4,
|
|
3502
3387
|
tools: {
|
|
3503
3388
|
ibm: {
|
|
3504
|
-
Rpt_Aria_ValidIdRef: {
|
|
3505
|
-
variable: false,
|
|
3506
|
-
quality: 1,
|
|
3507
|
-
what: 'ARIA property does not reference the non-empty unique id of a visible element'
|
|
3508
|
-
},
|
|
3509
3389
|
aria_id_unique: {
|
|
3510
3390
|
variable: false,
|
|
3511
3391
|
quality: 1,
|
|
@@ -3556,11 +3436,6 @@ exports.issues = {
|
|
|
3556
3436
|
}
|
|
3557
3437
|
},
|
|
3558
3438
|
ibm: {
|
|
3559
|
-
WCAG21_Input_Autocomplete: {
|
|
3560
|
-
variable: false,
|
|
3561
|
-
quality: 1,
|
|
3562
|
-
what: 'autocomplete attribute token is not appropriate for the input form field'
|
|
3563
|
-
},
|
|
3564
3439
|
input_autocomplete_valid: {
|
|
3565
3440
|
variable: false,
|
|
3566
3441
|
quality: 1,
|
|
@@ -3698,11 +3573,6 @@ exports.issues = {
|
|
|
3698
3573
|
}
|
|
3699
3574
|
},
|
|
3700
3575
|
ibm: {
|
|
3701
|
-
IBMA_Color_Contrast_WCAG2AA: {
|
|
3702
|
-
variable: false,
|
|
3703
|
-
quality: 1,
|
|
3704
|
-
what: 'Contrast ratio of text with background does not meet WCAG 2.1 AA'
|
|
3705
|
-
},
|
|
3706
3576
|
text_contrast_sufficient: {
|
|
3707
3577
|
variable: false,
|
|
3708
3578
|
quality: 1,
|
|
@@ -3970,11 +3840,6 @@ exports.issues = {
|
|
|
3970
3840
|
}
|
|
3971
3841
|
},
|
|
3972
3842
|
ibm: {
|
|
3973
|
-
RPT_Header_HasContent: {
|
|
3974
|
-
variable: false,
|
|
3975
|
-
quality: 1,
|
|
3976
|
-
what: 'Heading element provides no descriptive text'
|
|
3977
|
-
},
|
|
3978
3843
|
heading_content_exists: {
|
|
3979
3844
|
variable: false,
|
|
3980
3845
|
quality: 1,
|
|
@@ -4060,11 +3925,6 @@ exports.issues = {
|
|
|
4060
3925
|
}
|
|
4061
3926
|
},
|
|
4062
3927
|
ibm: {
|
|
4063
|
-
WCAG20_Img_LinkTextNotRedundant: {
|
|
4064
|
-
variable: false,
|
|
4065
|
-
quality: 1,
|
|
4066
|
-
what: 'Text alternative for the image in a link repeats text of the same or an adjacent link'
|
|
4067
|
-
},
|
|
4068
3928
|
img_alt_redundant: {
|
|
4069
3929
|
variable: false,
|
|
4070
3930
|
quality: 1,
|
|
@@ -4100,13 +3960,6 @@ exports.issues = {
|
|
|
4100
3960
|
what: 'Element has an empty alt attribute but has a nonempty title attribute'
|
|
4101
3961
|
}
|
|
4102
3962
|
},
|
|
4103
|
-
ibm: {
|
|
4104
|
-
WCAG20_Img_TitleEmptyWhenAltNull: {
|
|
4105
|
-
variable: false,
|
|
4106
|
-
quality: 1,
|
|
4107
|
-
what: 'Image alt attribute is empty, but its title attribute is not'
|
|
4108
|
-
}
|
|
4109
|
-
},
|
|
4110
3963
|
wave: {
|
|
4111
3964
|
image_title: {
|
|
4112
3965
|
variable: false,
|
|
@@ -4272,13 +4125,6 @@ exports.issues = {
|
|
|
4272
4125
|
what: 'Document head element contains an empty title element'
|
|
4273
4126
|
}
|
|
4274
4127
|
},
|
|
4275
|
-
ibm: {
|
|
4276
|
-
WCAG20_Doc_HasTitle: {
|
|
4277
|
-
variable: false,
|
|
4278
|
-
quality: 1,
|
|
4279
|
-
what: 'Page has no subject-identifying title'
|
|
4280
|
-
}
|
|
4281
|
-
},
|
|
4282
4128
|
nuVal: {
|
|
4283
4129
|
'Element head is missing a required instance of child element title.': {
|
|
4284
4130
|
variable: false,
|
|
@@ -4733,13 +4579,6 @@ exports.issues = {
|
|
|
4733
4579
|
what: 'List element dl has a child element other than properly ordered dt and dt group, script, template, and div'
|
|
4734
4580
|
}
|
|
4735
4581
|
},
|
|
4736
|
-
ibm: {
|
|
4737
|
-
HAAC_List_Group_ListItem: {
|
|
4738
|
-
variable: false,
|
|
4739
|
-
quality: 1,
|
|
4740
|
-
what: 'List component with a group role has a non-listitem child'
|
|
4741
|
-
}
|
|
4742
|
-
},
|
|
4743
4582
|
nuVal: {
|
|
4744
4583
|
'Element dl is missing a required child element.': {
|
|
4745
4584
|
variable: false,
|
|
@@ -4945,13 +4784,6 @@ exports.issues = {
|
|
|
4945
4784
|
what: 'accesskey attribute value is not unique'
|
|
4946
4785
|
}
|
|
4947
4786
|
},
|
|
4948
|
-
ibm: {
|
|
4949
|
-
WCAG20_Elem_UniqueAccessKey: {
|
|
4950
|
-
variable: false,
|
|
4951
|
-
quality: 1,
|
|
4952
|
-
what: 'Accesskey attribute value on an element is not unique for the page'
|
|
4953
|
-
}
|
|
4954
|
-
},
|
|
4955
4787
|
wave: {
|
|
4956
4788
|
accesskey: {
|
|
4957
4789
|
variable: false,
|
|
@@ -4968,11 +4800,6 @@ exports.issues = {
|
|
|
4968
4800
|
weight: 2,
|
|
4969
4801
|
tools: {
|
|
4970
4802
|
ibm: {
|
|
4971
|
-
WCAG20_Input_RadioChkInFieldSet: {
|
|
4972
|
-
variable: false,
|
|
4973
|
-
quality: 1,
|
|
4974
|
-
what: 'Input is in a different group than another with the name'
|
|
4975
|
-
},
|
|
4976
4803
|
input_checkboxes_grouped: {
|
|
4977
4804
|
variable: false,
|
|
4978
4805
|
quality: 1,
|
|
@@ -5058,11 +4885,6 @@ exports.issues = {
|
|
|
5058
4885
|
}
|
|
5059
4886
|
},
|
|
5060
4887
|
ibm: {
|
|
5061
|
-
WCAG20_Fieldset_HasLegend: {
|
|
5062
|
-
variable: false,
|
|
5063
|
-
quality: 1,
|
|
5064
|
-
what: 'fieldset element has no single, non-empty legend element as a label'
|
|
5065
|
-
},
|
|
5066
4888
|
fieldset_legend_valid: {
|
|
5067
4889
|
variable: false,
|
|
5068
4890
|
quality: 1,
|
|
@@ -5326,13 +5148,6 @@ exports.issues = {
|
|
|
5326
5148
|
quality: 1,
|
|
5327
5149
|
what: 'Complex table is missing headers attributes of cells'
|
|
5328
5150
|
}
|
|
5329
|
-
},
|
|
5330
|
-
ibm: {
|
|
5331
|
-
Valerie_Table_DataCellRelationships: {
|
|
5332
|
-
variable: false,
|
|
5333
|
-
quality: 1,
|
|
5334
|
-
what: 'Not all th and td elements in the complex table have header or scope attributes'
|
|
5335
|
-
}
|
|
5336
5151
|
}
|
|
5337
5152
|
}
|
|
5338
5153
|
},
|
|
@@ -5395,13 +5210,6 @@ exports.issues = {
|
|
|
5395
5210
|
quality: 1,
|
|
5396
5211
|
what: 'None of the cells in the table is a header'
|
|
5397
5212
|
}
|
|
5398
|
-
},
|
|
5399
|
-
ibm: {
|
|
5400
|
-
RPT_Table_DataHeadingsAria: {
|
|
5401
|
-
variable: false,
|
|
5402
|
-
quality: 1,
|
|
5403
|
-
what: 'Data table does not identify headers'
|
|
5404
|
-
}
|
|
5405
5213
|
}
|
|
5406
5214
|
}
|
|
5407
5215
|
},
|
|
@@ -5559,11 +5367,6 @@ exports.issues = {
|
|
|
5559
5367
|
}
|
|
5560
5368
|
},
|
|
5561
5369
|
ibm: {
|
|
5562
|
-
WCAG20_Input_ExplicitLabel: {
|
|
5563
|
-
variable: false,
|
|
5564
|
-
quality: 1,
|
|
5565
|
-
what: 'Form control has no associated label'
|
|
5566
|
-
},
|
|
5567
5370
|
input_label_exists: {
|
|
5568
5371
|
variable: false,
|
|
5569
5372
|
quality: 1,
|
|
@@ -5809,13 +5612,6 @@ exports.issues = {
|
|
|
5809
5612
|
what: 'iframe element with a negative tabindex attribute contains an interactive element'
|
|
5810
5613
|
}
|
|
5811
5614
|
},
|
|
5812
|
-
ibm: {
|
|
5813
|
-
Rpt_Aria_MissingFocusableChild: {
|
|
5814
|
-
variable: false,
|
|
5815
|
-
quality: 1,
|
|
5816
|
-
what: 'UI component has no focusable child element for keyboard access'
|
|
5817
|
-
}
|
|
5818
|
-
},
|
|
5819
5615
|
qualWeb: {
|
|
5820
5616
|
'QW-ACT-R70': {
|
|
5821
5617
|
variable: false,
|
|
@@ -5976,11 +5772,6 @@ exports.issues = {
|
|
|
5976
5772
|
}
|
|
5977
5773
|
},
|
|
5978
5774
|
ibm: {
|
|
5979
|
-
Rpt_Aria_OrphanedContent_Native_Host_Sematics: {
|
|
5980
|
-
variable: false,
|
|
5981
|
-
quality: 1,
|
|
5982
|
-
what: 'Content does not reside within an element with a landmark role'
|
|
5983
|
-
},
|
|
5984
5775
|
aria_content_in_landmark: {
|
|
5985
5776
|
variable: false,
|
|
5986
5777
|
quality: 1,
|
|
@@ -6067,16 +5858,6 @@ exports.issues = {
|
|
|
6067
5858
|
weight: 3,
|
|
6068
5859
|
tools: {
|
|
6069
5860
|
ibm: {
|
|
6070
|
-
Rpt_Aria_MultipleMainsRequireLabel_Implicit_2: {
|
|
6071
|
-
variable: false,
|
|
6072
|
-
quality: 1,
|
|
6073
|
-
what: 'Element with main role has no unique label among the main-role elements'
|
|
6074
|
-
},
|
|
6075
|
-
Rpt_Aria_MultipleMainsVisibleLabel_Implicit: {
|
|
6076
|
-
variable: false,
|
|
6077
|
-
quality: 1,
|
|
6078
|
-
what: 'Element with main role has no unique visible label among the main-role elements'
|
|
6079
|
-
},
|
|
6080
5861
|
aria_main_label_visible: {
|
|
6081
5862
|
variable: false,
|
|
6082
5863
|
quality: 1,
|
|
@@ -6158,11 +5939,6 @@ exports.issues = {
|
|
|
6158
5939
|
}
|
|
6159
5940
|
},
|
|
6160
5941
|
ibm: {
|
|
6161
|
-
Rpt_Aria_OneBannerInSiblingSet_Implicit: {
|
|
6162
|
-
variable: false,
|
|
6163
|
-
quality: 1,
|
|
6164
|
-
what: 'Multiple elements with a banner role are on the page'
|
|
6165
|
-
},
|
|
6166
5942
|
aria_banner_single: {
|
|
6167
5943
|
variable: false,
|
|
6168
5944
|
quality: 1,
|
|
@@ -6207,11 +5983,6 @@ exports.issues = {
|
|
|
6207
5983
|
weight: 3,
|
|
6208
5984
|
tools: {
|
|
6209
5985
|
ibm: {
|
|
6210
|
-
Rpt_Aria_MultipleContentinfoLandmarks_Implicit: {
|
|
6211
|
-
variable: false,
|
|
6212
|
-
quality: 1,
|
|
6213
|
-
what: 'Element with a contentinfo role has no unique purpose label among the contentinfo-role elements'
|
|
6214
|
-
},
|
|
6215
5986
|
aria_contentinfo_label_unique: {
|
|
6216
5987
|
variable: false,
|
|
6217
5988
|
quality: 1,
|
|
@@ -6242,11 +6013,6 @@ exports.issues = {
|
|
|
6242
6013
|
}
|
|
6243
6014
|
},
|
|
6244
6015
|
ibm: {
|
|
6245
|
-
Rpt_Aria_MultipleContentinfoInSiblingSet_Implicit: {
|
|
6246
|
-
variable: false,
|
|
6247
|
-
quality: 1,
|
|
6248
|
-
what: 'Page, document, or application has more than one element with a contentinfo role'
|
|
6249
|
-
},
|
|
6250
6016
|
aria_contentinfo_single: {
|
|
6251
6017
|
variable: false,
|
|
6252
6018
|
quality: 1,
|
|
@@ -6289,21 +6055,6 @@ exports.issues = {
|
|
|
6289
6055
|
}
|
|
6290
6056
|
}
|
|
6291
6057
|
},
|
|
6292
|
-
articleConfusion: {
|
|
6293
|
-
summary: 'articles not distinctly named',
|
|
6294
|
-
why: 'User cannot get help on how some of the document is organized',
|
|
6295
|
-
wcag: '1.3.6',
|
|
6296
|
-
weight: 3,
|
|
6297
|
-
tools: {
|
|
6298
|
-
ibm: {
|
|
6299
|
-
Rpt_Aria_MultipleArticleRoles_Implicit: {
|
|
6300
|
-
variable: false,
|
|
6301
|
-
quality: 1,
|
|
6302
|
-
what: 'Element with an article role has no unique purpose label among the article-role elements'
|
|
6303
|
-
}
|
|
6304
|
-
}
|
|
6305
|
-
}
|
|
6306
|
-
},
|
|
6307
6058
|
formConfusion: {
|
|
6308
6059
|
summary: 'forms not distinctly named',
|
|
6309
6060
|
why: 'User cannot get help on how some of the document is organized',
|
|
@@ -6311,11 +6062,6 @@ exports.issues = {
|
|
|
6311
6062
|
weight: 3,
|
|
6312
6063
|
tools: {
|
|
6313
6064
|
ibm: {
|
|
6314
|
-
Rpt_Aria_MultipleFormLandmarks_Implicit: {
|
|
6315
|
-
variable: false,
|
|
6316
|
-
quality: 1,
|
|
6317
|
-
what: 'Element with a form role has no unique purpose label among the form-role elements'
|
|
6318
|
-
},
|
|
6319
6065
|
aria_form_label_unique: {
|
|
6320
6066
|
variable: false,
|
|
6321
6067
|
quality: 1,
|
|
@@ -6331,11 +6077,6 @@ exports.issues = {
|
|
|
6331
6077
|
weight: 3,
|
|
6332
6078
|
tools: {
|
|
6333
6079
|
ibm: {
|
|
6334
|
-
Rpt_Aria_MultipleApplicationLandmarks: {
|
|
6335
|
-
variable: false,
|
|
6336
|
-
quality: 1,
|
|
6337
|
-
what: 'Element with an application role has no unique purpose label among the application-role elements'
|
|
6338
|
-
},
|
|
6339
6080
|
aria_application_label_unique: {
|
|
6340
6081
|
variable: false,
|
|
6341
6082
|
quality: 1,
|
|
@@ -6351,11 +6092,6 @@ exports.issues = {
|
|
|
6351
6092
|
weight: 3,
|
|
6352
6093
|
tools: {
|
|
6353
6094
|
ibm: {
|
|
6354
|
-
Rpt_Aria_MultipleComplementaryLandmarks_Implicit: {
|
|
6355
|
-
variable: false,
|
|
6356
|
-
quality: 1,
|
|
6357
|
-
what: 'Element with a complementary role has no unique purpose label among the complementary-role elements'
|
|
6358
|
-
},
|
|
6359
6095
|
aria_complementary_label_unique: {
|
|
6360
6096
|
variable: false,
|
|
6361
6097
|
quality: 1,
|
|
@@ -6371,11 +6107,6 @@ exports.issues = {
|
|
|
6371
6107
|
weight: 3,
|
|
6372
6108
|
tools: {
|
|
6373
6109
|
ibm: {
|
|
6374
|
-
Rpt_Aria_MultipleBannerLandmarks_Implicit: {
|
|
6375
|
-
variable: false,
|
|
6376
|
-
quality: 1,
|
|
6377
|
-
what: 'Element with a banner role has no unique purpose label among the banner-role elements'
|
|
6378
|
-
},
|
|
6379
6110
|
aria_banner_label_unique: {
|
|
6380
6111
|
variable: false,
|
|
6381
6112
|
quality: 1,
|
|
@@ -6391,11 +6122,6 @@ exports.issues = {
|
|
|
6391
6122
|
weight: 3,
|
|
6392
6123
|
tools: {
|
|
6393
6124
|
ibm: {
|
|
6394
|
-
Rpt_Aria_MultipleNavigationLandmarks_Implicit: {
|
|
6395
|
-
variable: false,
|
|
6396
|
-
quality: 1,
|
|
6397
|
-
what: 'Element with a navigation role has no unique purpose label among the navigation-role elements'
|
|
6398
|
-
},
|
|
6399
6125
|
aria_navigation_label_unique: {
|
|
6400
6126
|
variable: false,
|
|
6401
6127
|
quality: 1,
|
|
@@ -6426,11 +6152,6 @@ exports.issues = {
|
|
|
6426
6152
|
weight: 3,
|
|
6427
6153
|
tools: {
|
|
6428
6154
|
ibm: {
|
|
6429
|
-
Rpt_Aria_MultipleRegionsUniqueLabel_Implicit: {
|
|
6430
|
-
variable: false,
|
|
6431
|
-
quality: 1,
|
|
6432
|
-
what: 'Element with a region role has no unique label among the region-role elements'
|
|
6433
|
-
},
|
|
6434
6155
|
aria_region_label_unique: {
|
|
6435
6156
|
variable: false,
|
|
6436
6157
|
quality: 1,
|
|
@@ -6446,11 +6167,6 @@ exports.issues = {
|
|
|
6446
6167
|
weight: 3,
|
|
6447
6168
|
tools: {
|
|
6448
6169
|
ibm: {
|
|
6449
|
-
Rpt_Aria_MultipleSearchLandmarks: {
|
|
6450
|
-
variable: false,
|
|
6451
|
-
quality: 1,
|
|
6452
|
-
what: 'Element with a search role has no unique purpose label among the search-role elements'
|
|
6453
|
-
},
|
|
6454
6170
|
aria_search_label_unique: {
|
|
6455
6171
|
variable: false,
|
|
6456
6172
|
quality: 1,
|
|
@@ -6466,21 +6182,11 @@ exports.issues = {
|
|
|
6466
6182
|
weight: 1,
|
|
6467
6183
|
tools: {
|
|
6468
6184
|
ibm: {
|
|
6469
|
-
Rpt_Aria_ComplementaryRequiredLabel_Implicit: {
|
|
6470
|
-
variable: false,
|
|
6471
|
-
quality: 1,
|
|
6472
|
-
what: 'Element with a complementary role has no label'
|
|
6473
|
-
},
|
|
6474
6185
|
aria_complementary_labelled: {
|
|
6475
6186
|
variable: false,
|
|
6476
6187
|
quality: 1,
|
|
6477
6188
|
what: 'Element with a complementary role has no label'
|
|
6478
6189
|
},
|
|
6479
|
-
Rpt_Aria_ComplementaryLandmarkLabel_Implicit: {
|
|
6480
|
-
variable: false,
|
|
6481
|
-
quality: 1,
|
|
6482
|
-
what: 'Element with a complementary role has no visible purpose label'
|
|
6483
|
-
},
|
|
6484
6190
|
aria_complementary_label_visible: {
|
|
6485
6191
|
variable: false,
|
|
6486
6192
|
quality: 1,
|
|
@@ -6496,11 +6202,6 @@ exports.issues = {
|
|
|
6496
6202
|
weight: 4,
|
|
6497
6203
|
tools: {
|
|
6498
6204
|
ibm: {
|
|
6499
|
-
Valerie_Label_HasContent: {
|
|
6500
|
-
variable: false,
|
|
6501
|
-
quality: 1,
|
|
6502
|
-
what: 'label element has no non-empty purpose-descriptive text'
|
|
6503
|
-
},
|
|
6504
6205
|
label_content_exists: {
|
|
6505
6206
|
variable: false,
|
|
6506
6207
|
quality: 1,
|
|
@@ -6734,22 +6435,6 @@ exports.issues = {
|
|
|
6734
6435
|
}
|
|
6735
6436
|
}
|
|
6736
6437
|
},
|
|
6737
|
-
hiddenContentRisk: {
|
|
6738
|
-
summary: 'hidden content possibly not testable',
|
|
6739
|
-
why: 'Some barriers in the document may be undetected',
|
|
6740
|
-
wcag: '4.1',
|
|
6741
|
-
weight: 1,
|
|
6742
|
-
max: 1,
|
|
6743
|
-
tools: {
|
|
6744
|
-
axe: {
|
|
6745
|
-
'hidden-content': {
|
|
6746
|
-
variable: false,
|
|
6747
|
-
quality: 1,
|
|
6748
|
-
what: 'Some content is hidden and so may not be testable for accessibility'
|
|
6749
|
-
}
|
|
6750
|
-
}
|
|
6751
|
-
}
|
|
6752
|
-
},
|
|
6753
6438
|
negativeIndent: {
|
|
6754
6439
|
summary: 'negative text-indent',
|
|
6755
6440
|
why: 'Helper may hide content from the user',
|
|
@@ -6765,22 +6450,6 @@ exports.issues = {
|
|
|
6765
6450
|
}
|
|
6766
6451
|
}
|
|
6767
6452
|
},
|
|
6768
|
-
frameContentRisk: {
|
|
6769
|
-
summary: 'iframe content possibly not testable',
|
|
6770
|
-
why: 'Some barriers in the document may be undetected',
|
|
6771
|
-
wcag: '4.1',
|
|
6772
|
-
weight: 1,
|
|
6773
|
-
max: 1,
|
|
6774
|
-
tools: {
|
|
6775
|
-
axe: {
|
|
6776
|
-
'frame-tested': {
|
|
6777
|
-
variable: false,
|
|
6778
|
-
quality: 0.2,
|
|
6779
|
-
what: 'Some content is in an iframe and so may not be testable for accessibility'
|
|
6780
|
-
}
|
|
6781
|
-
}
|
|
6782
|
-
}
|
|
6783
|
-
},
|
|
6784
6453
|
frameSandboxRisk: {
|
|
6785
6454
|
summary: 'iframe sandbox attributes risky',
|
|
6786
6455
|
why: 'Document may be unsafe to use',
|
|
@@ -6867,11 +6536,6 @@ exports.issues = {
|
|
|
6867
6536
|
}
|
|
6868
6537
|
},
|
|
6869
6538
|
ibm: {
|
|
6870
|
-
RPT_Label_UniqueFor: {
|
|
6871
|
-
variable: false,
|
|
6872
|
-
quality: 1,
|
|
6873
|
-
what: 'Form control does not have exactly one label'
|
|
6874
|
-
},
|
|
6875
6539
|
form_label_unique: {
|
|
6876
6540
|
variable: false,
|
|
6877
6541
|
quality: 1,
|
|
@@ -7274,7 +6938,6 @@ exports.issues = {
|
|
|
7274
6938
|
why: 'User cannot easily distinguish items of different types',
|
|
7275
6939
|
wcag: '3.2.4',
|
|
7276
6940
|
weight: 1,
|
|
7277
|
-
max: 9,
|
|
7278
6941
|
tools: {
|
|
7279
6942
|
testaro: {
|
|
7280
6943
|
styleDiff: {
|
|
@@ -7686,7 +7349,7 @@ exports.issues = {
|
|
|
7686
7349
|
why: 'Keyboard-only user cannot easily reach the specific content of the document',
|
|
7687
7350
|
wcag: '2.4.1',
|
|
7688
7351
|
weight: 3,
|
|
7689
|
-
max:
|
|
7352
|
+
max: 2,
|
|
7690
7353
|
tools: {
|
|
7691
7354
|
axe: {
|
|
7692
7355
|
bypass: {
|
|
@@ -7701,29 +7364,12 @@ exports.issues = {
|
|
|
7701
7364
|
}
|
|
7702
7365
|
},
|
|
7703
7366
|
ibm: {
|
|
7704
|
-
WCAG20_Body_FirstASkips_Native_Host_Sematics: {
|
|
7705
|
-
variable: false,
|
|
7706
|
-
quality: 0.5,
|
|
7707
|
-
what: 'Page provides no way to skip directly to the main content'
|
|
7708
|
-
},
|
|
7709
7367
|
skip_main_exists: {
|
|
7710
7368
|
variable: false,
|
|
7711
7369
|
quality: 0.5,
|
|
7712
7370
|
what: 'Page provides no way to quickly navigate to the main content'
|
|
7713
7371
|
}
|
|
7714
7372
|
},
|
|
7715
|
-
qualWeb: {
|
|
7716
|
-
'QW-ACT-R64': {
|
|
7717
|
-
variable: false,
|
|
7718
|
-
quality: 1,
|
|
7719
|
-
what: 'Document has no heading for non-repeated content'
|
|
7720
|
-
},
|
|
7721
|
-
'QW-ACT-R75': {
|
|
7722
|
-
variable: false,
|
|
7723
|
-
quality: 1,
|
|
7724
|
-
what: 'Blocks of repeated content cannot be bypassed'
|
|
7725
|
-
}
|
|
7726
|
-
},
|
|
7727
7373
|
wave: {
|
|
7728
7374
|
link_skip_broken: {
|
|
7729
7375
|
variable: false,
|
|
@@ -7738,7 +7384,7 @@ exports.issues = {
|
|
|
7738
7384
|
why: 'Keyboard-only user may be unable easily to reach the specific content of the document',
|
|
7739
7385
|
wcag: '2.4.1',
|
|
7740
7386
|
weight: 1,
|
|
7741
|
-
max:
|
|
7387
|
+
max: 2,
|
|
7742
7388
|
tools: {
|
|
7743
7389
|
alfa: {
|
|
7744
7390
|
'r87': {
|
|
@@ -7753,21 +7399,6 @@ exports.issues = {
|
|
|
7753
7399
|
quality: 1,
|
|
7754
7400
|
what: 'First focusable element is not a link to the non-repeated content'
|
|
7755
7401
|
},
|
|
7756
|
-
'QW-ACT-R73': {
|
|
7757
|
-
variable: false,
|
|
7758
|
-
quality: 1,
|
|
7759
|
-
what: 'Block of repeated content is not collapsible'
|
|
7760
|
-
},
|
|
7761
|
-
'QW-ACT-R74': {
|
|
7762
|
-
variable: false,
|
|
7763
|
-
quality: 1,
|
|
7764
|
-
what: 'Document has no instrument to move focus to non-repeated content'
|
|
7765
|
-
},
|
|
7766
|
-
'QW-WCAG-T23': {
|
|
7767
|
-
variable: false,
|
|
7768
|
-
quality: 1,
|
|
7769
|
-
what: 'No link at the top of the page that goes directly to the main content area'
|
|
7770
|
-
},
|
|
7771
7402
|
'QW-BP17': {
|
|
7772
7403
|
variable: false,
|
|
7773
7404
|
quality: 1,
|
package/procs/score/tsp38.js
CHANGED
|
@@ -213,7 +213,7 @@ exports.scorer = report => {
|
|
|
213
213
|
const issueData = details.issue[issueName];
|
|
214
214
|
// For each tool with any complaints for the issue:
|
|
215
215
|
Object.keys(issueData.tools).forEach(toolID => {
|
|
216
|
-
// Get the sum of the weighted counts of its issue rules.
|
|
216
|
+
// Get the sum of the quality-weighted counts of its issue rules.
|
|
217
217
|
let weightedCount = 0;
|
|
218
218
|
Object.values(issueData.tools[toolID]).forEach(ruleData => {
|
|
219
219
|
weightedCount += ruleData.quality * ruleData.complaints.countTotal;
|