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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testilo",
3
- "version": "20.0.0",
3
+ "version": "20.0.2",
4
4
  "description": "Prepares and processes Testaro reports",
5
5
  "main": "aim.js",
6
6
  "scripts": {
@@ -2,7 +2,7 @@
2
2
  tic37
3
3
  Testilo issue classification 38
4
4
 
5
- Classifies about 980 rules of the tools of Testaro into about 300 issues.
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) providing tests for the issue
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
- axe: {
65
- 'css-orientation-lock': {
66
- variable: false,
67
- quality: 0,
68
- what: 'CSS media query locks display orientation [unreliable]'
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: 1,
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: 1,
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,
@@ -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;