testilo 17.0.10 → 17.0.11

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/procs/score/tic36.js +324 -34
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testilo",
3
- "version": "17.0.10",
3
+ "version": "17.0.11",
4
4
  "description": "Prepares and processes Testaro reports",
5
5
  "main": "aim.js",
6
6
  "scripts": {
@@ -24,6 +24,18 @@ exports.issues = {
24
24
  wcag: '',
25
25
  weight: 0,
26
26
  tools: {
27
+ aslint: {
28
+ 'meaningful-content-sequence': {
29
+ variable: false,
30
+ quality: 0,
31
+ what: 'The content sequence may fail to be meaningful'
32
+ },
33
+ 'flickering': {
34
+ variable: false,
35
+ quality: 0,
36
+ what: 'Excessive flashing may exist'
37
+ }
38
+ },
27
39
  nuVal: {
28
40
  'Element mediaelementwrapper not allowed as child of element div in this context. (Suppressing further errors from this subtree.)': {
29
41
  variable: false,
@@ -34,12 +46,12 @@ exports.issues = {
34
46
  qualWeb: {
35
47
  'QW-ACT-R52': {
36
48
  variable: false,
37
- quality: 1,
49
+ quality: 0,
38
50
  what: 'video element visual-only content has no description track (description tracks and this ACT rule have been deprecated)'
39
51
  },
40
52
  'QW-ACT-R57': {
41
53
  variable: false,
42
- quality: 1,
54
+ quality: 0,
43
55
  what: 'video element visual content has no description track (description tracks and this ACT rule have been deprecated)'
44
56
  },
45
57
  'QW-WCAG-T4': {
@@ -49,12 +61,12 @@ exports.issues = {
49
61
  },
50
62
  'QW-WCAG-T15': {
51
63
  variable: false,
52
- quality: 1,
64
+ quality: 0,
53
65
  what: 'link element may be used for navigation but not in the head'
54
66
  },
55
67
  'QW-WCAG-T20': {
56
68
  variable: false,
57
- quality: 1,
69
+ quality: 0,
58
70
  what: 'Link text is not supplemented with a title attribute'
59
71
  }
60
72
  }
@@ -545,6 +557,11 @@ exports.issues = {
545
557
  variable: false,
546
558
  quality: 1,
547
559
  what: 'Image may be better described by a revised text alternative and an aria-label attribute'
560
+ },
561
+ 'alt-color-convey-information': {
562
+ variable: false,
563
+ quality: 1,
564
+ what: 'Text alternative may fail to give information provided by colors'
548
565
  }
549
566
  }
550
567
  }
@@ -1140,6 +1157,20 @@ exports.issues = {
1140
1157
  }
1141
1158
  }
1142
1159
  },
1160
+ customKeyboardRisk: {
1161
+ why: 'Custom item may prevent a no-mouse user from operating it',
1162
+ wcag: '2.1.1',
1163
+ weight: 1,
1164
+ tools: {
1165
+ htmlcs: {
1166
+ 'link-button-space-key': {
1167
+ variable: false,
1168
+ quality: 1,
1169
+ what: 'Element has a button role but may fail to be keyboard-operable'
1170
+ }
1171
+ }
1172
+ }
1173
+ },
1143
1174
  objectBlurKeyboardRisk: {
1144
1175
  why: 'Custom item may trap a no-mouse user',
1145
1176
  wcag: '2.1.1',
@@ -1207,6 +1238,13 @@ exports.issues = {
1207
1238
  wcag: '1.3.1',
1208
1239
  weight: 4,
1209
1240
  tools: {
1241
+ aslint: {
1242
+ 'broken-same-page-link': {
1243
+ variable: false,
1244
+ quality: 1,
1245
+ what: 'Same-page destination of the link does not exist'
1246
+ }
1247
+ },
1210
1248
  htmlcs: {
1211
1249
  'AAA.2_4_1.G1,G123,G124.NoSuchID': {
1212
1250
  variable: false,
@@ -1228,6 +1266,13 @@ exports.issues = {
1228
1266
  wcag: '1.3.1',
1229
1267
  weight: 3,
1230
1268
  tools: {
1269
+ aslint: {
1270
+ 'label-inappropriate-associationN': {
1271
+ variable: false,
1272
+ quality: 1,
1273
+ what: 'Element referenced by the for attribute is not a form control'
1274
+ }
1275
+ },
1231
1276
  htmlcs: {
1232
1277
  'AAA.1_3_1.H44.NotFormControl': {
1233
1278
  variable: false,
@@ -1338,6 +1383,13 @@ exports.issues = {
1338
1383
  wcag: '3.3.2',
1339
1384
  weight: 1,
1340
1385
  tools: {
1386
+ aslint: {
1387
+ 'incorrect-label-placement': {
1388
+ variable: false,
1389
+ quality: 1,
1390
+ what: 'label element precedes the labeled radio button or checkbox'
1391
+ }
1392
+ },
1341
1393
  ibm: {
1342
1394
  WCAG20_Input_LabelBefore: {
1343
1395
  variable: false,
@@ -1374,6 +1426,13 @@ exports.issues = {
1374
1426
  wcag: '1.3.1',
1375
1427
  weight: 4,
1376
1428
  tools: {
1429
+ aslint: {
1430
+ 'label-inappropriate-associationM': {
1431
+ variable: false,
1432
+ quality: 1,
1433
+ what: 'Element referenced by the for attribute is missing'
1434
+ }
1435
+ },
1377
1436
  htmlcs: {
1378
1437
  'AAA.1_3_1.H44.NonExistentFragment': {
1379
1438
  variable: false,
@@ -2134,7 +2193,14 @@ exports.issues = {
2134
2193
  r47: {
2135
2194
  variable: false,
2136
2195
  quality: 1,
2137
- what: 'meta element restricts zooming'
2196
+ what: 'Element restricts zooming'
2197
+ }
2198
+ },
2199
+ aslint: {
2200
+ 'zoom-disabled': {
2201
+ variable: false,
2202
+ quality: 1,
2203
+ what: 'Element specifies a minimum or maximum scale or prohibits zooming'
2138
2204
  }
2139
2205
  },
2140
2206
  axe: {
@@ -3260,6 +3326,23 @@ exports.issues = {
3260
3326
  what: 'Text outside widget has subminimum contrast'
3261
3327
  }
3262
3328
  },
3329
+ aslint: {
3330
+ 'color-contrast-aa': {
3331
+ variable: false,
3332
+ quality: 1,
3333
+ what: 'Text has contrast less than 4.5:1'
3334
+ },
3335
+ 'color-contrast-state-pseudo-classes-abstract3': {
3336
+ variable: false,
3337
+ quality: 1,
3338
+ what: 'Text has contrast less than 3:1'
3339
+ },
3340
+ 'color-contrast-state-pseudo-classes-abstract4': {
3341
+ variable: false,
3342
+ quality: 1,
3343
+ what: 'Text has contrast less than 4.5:1'
3344
+ }
3345
+ },
3263
3346
  axe: {
3264
3347
  'color-contrast': {
3265
3348
  variable: false,
@@ -3326,6 +3409,20 @@ exports.issues = {
3326
3409
  }
3327
3410
  }
3328
3411
  },
3412
+ colorNamedRisk: {
3413
+ why: 'Content is impossible to perceive under some conditions',
3414
+ wcag: '1.4.1',
3415
+ weight: 1,
3416
+ tools: {
3417
+ qualWeb: {
3418
+ 'text-color-convey-information': {
3419
+ variable: false,
3420
+ quality: 1,
3421
+ what: 'Text naming a color may require the ability to distinguish colors'
3422
+ }
3423
+ }
3424
+ }
3425
+ },
3329
3426
  contrastAAA: {
3330
3427
  why: 'Text is difficult to read',
3331
3428
  wcag: '1.4.6',
@@ -3338,6 +3435,18 @@ exports.issues = {
3338
3435
  what: 'Text contrast less than AAA requires'
3339
3436
  }
3340
3437
  },
3438
+ aslint: {
3439
+ 'color-contrast-aaa4': {
3440
+ variable: false,
3441
+ quality: 1,
3442
+ what: 'Text has contrast less than 4.5:1'
3443
+ },
3444
+ 'color-contrast-aaa7': {
3445
+ variable: false,
3446
+ quality: 1,
3447
+ what: 'Text has contrast less than 7:1'
3448
+ }
3449
+ },
3341
3450
  axe: {
3342
3451
  'color-contrast-enhanced': {
3343
3452
  variable: false,
@@ -3371,6 +3480,23 @@ exports.issues = {
3371
3480
  wcag: '1.4.3',
3372
3481
  weight: 1,
3373
3482
  tools: {
3483
+ aslint: {
3484
+ 'color-contrast-state-pseudo-classes-abstractF': {
3485
+ variable: false,
3486
+ quality: 1,
3487
+ what: 'Fixed position of the element prevents contrast measurement'
3488
+ },
3489
+ 'color-contrast-state-pseudo-classes-abstractB': {
3490
+ variable: false,
3491
+ quality: 1,
3492
+ what: 'Transparent background color of the element prevents contrast measurement'
3493
+ },
3494
+ 'color-contrast-aaaB': {
3495
+ variable: false,
3496
+ quality: 1,
3497
+ what: 'Transparent background color of the element prevents contrast measurement'
3498
+ }
3499
+ },
3374
3500
  htmlcs: {
3375
3501
  'AAA.1_4_3_F24.F24.BGColour': {
3376
3502
  variable: false,
@@ -3726,6 +3852,27 @@ exports.issues = {
3726
3852
  }
3727
3853
  }
3728
3854
  },
3855
+ pageTitleBad: {
3856
+ why: 'Browser processes the document improperly',
3857
+ wcag: '1.3.1',
3858
+ weight: 4,
3859
+ tools: {
3860
+ aslint: {
3861
+ 'page-titleU': {
3862
+ variable: false,
3863
+ quality: 1,
3864
+ what: 'Page title does not identify the contents or purpose of the page'
3865
+ }
3866
+ },
3867
+ wave: {
3868
+ title_invalid: {
3869
+ variable: false,
3870
+ quality: 1,
3871
+ what: 'Missing or uninformative page title'
3872
+ }
3873
+ }
3874
+ }
3875
+ },
3729
3876
  pageTitle: {
3730
3877
  why: 'User is not informed of the topic of the document',
3731
3878
  wcag: '2.4.2',
@@ -3738,6 +3885,13 @@ exports.issues = {
3738
3885
  what: 'Document has no valid title element'
3739
3886
  }
3740
3887
  },
3888
+ aslint: {
3889
+ 'page-titleN': {
3890
+ variable: false,
3891
+ quality: 1,
3892
+ what: 'Page title is missing or empty'
3893
+ }
3894
+ },
3741
3895
  axe: {
3742
3896
  'document-title': {
3743
3897
  variable: false,
@@ -3777,13 +3931,6 @@ exports.issues = {
3777
3931
  quality: 1,
3778
3932
  what: 'HTML page has no title'
3779
3933
  }
3780
- },
3781
- wave: {
3782
- title_invalid: {
3783
- variable: false,
3784
- quality: 1,
3785
- what: 'Missing or uninformative page title'
3786
- }
3787
3934
  }
3788
3935
  }
3789
3936
  },
@@ -3878,7 +4025,7 @@ exports.issues = {
3878
4025
  }
3879
4026
  }
3880
4027
  },
3881
- noHeading: {
4028
+ headingNone: {
3882
4029
  why: 'User cannot survey parts of the document',
3883
4030
  wcag: '1.3.1',
3884
4031
  weight: 3,
@@ -3890,6 +4037,13 @@ exports.issues = {
3890
4037
  what: 'Document has no headings'
3891
4038
  }
3892
4039
  },
4040
+ aslint: {
4041
+ 'no-headings': {
4042
+ variable: false,
4043
+ quality: 1,
4044
+ what: 'Document has no headings'
4045
+ }
4046
+ },
3893
4047
  qualWeb: {
3894
4048
  'QW-BP1': {
3895
4049
  variable: false,
@@ -4449,6 +4603,13 @@ exports.issues = {
4449
4603
  wcag: '1.3.1',
4450
4604
  weight: 1,
4451
4605
  tools: {
4606
+ aslint: {
4607
+ 'group-elements-name-attribute': {
4608
+ variable: false,
4609
+ quality: 1,
4610
+ what: 'Element is an input with a name attribute but has no fieldset parent'
4611
+ }
4612
+ },
4452
4613
  htmlcs: {
4453
4614
  'AAA.1_3_1.H71.SameName': {
4454
4615
  variable: false,
@@ -4477,11 +4638,18 @@ exports.issues = {
4477
4638
  wcag: '4.1.2',
4478
4639
  weight: 2,
4479
4640
  tools: {
4641
+ aslint: {
4642
+ 'fieldset-no-legend': {
4643
+ variable: false,
4644
+ quality: 1,
4645
+ what: 'First child element of the element is not a legend'
4646
+ }
4647
+ },
4480
4648
  htmlcs: {
4481
4649
  'AAA.1_3_1.H71.NoLegend': {
4482
4650
  variable: false,
4483
4651
  quality: 1,
4484
- what: 'fieldset has no legend element'
4652
+ what: 'Element has no legend element'
4485
4653
  }
4486
4654
  },
4487
4655
  ibm: {
@@ -4493,7 +4661,7 @@ exports.issues = {
4493
4661
  fieldset_legend_valid: {
4494
4662
  variable: false,
4495
4663
  quality: 1,
4496
- what: 'fieldset element does not have a legend element'
4664
+ what: 'Element does not have a legend element'
4497
4665
  }
4498
4666
  },
4499
4667
  qualWeb: {
@@ -4507,7 +4675,7 @@ exports.issues = {
4507
4675
  legend_missing: {
4508
4676
  variable: false,
4509
4677
  quality: 1,
4510
- what: 'fieldset has no legend element'
4678
+ what: 'Element has no legend element'
4511
4679
  }
4512
4680
  }
4513
4681
  }
@@ -4802,6 +4970,13 @@ exports.issues = {
4802
4970
  wcag: '1.3.1',
4803
4971
  weight: 3,
4804
4972
  tools: {
4973
+ aslint: {
4974
+ 'table-row-and-column-headersRC': {
4975
+ variable: false,
4976
+ quality: 1,
4977
+ what: 'None of the cells in the table is a header'
4978
+ }
4979
+ },
4805
4980
  ibm: {
4806
4981
  RPT_Table_DataHeadingsAria: {
4807
4982
  variable: false,
@@ -4883,7 +5058,35 @@ exports.issues = {
4883
5058
  th_empty: {
4884
5059
  variable: false,
4885
5060
  quality: 1,
4886
- what: 'th (table header) contains no text'
5061
+ what: 'Element contains no text'
5062
+ }
5063
+ }
5064
+ }
5065
+ },
5066
+ tableHead: {
5067
+ why: 'User cannot get help on parts of a table',
5068
+ wcag: '1.3.1',
5069
+ weight: 1,
5070
+ tools: {
5071
+ aslint: {
5072
+ 'table-row-and-column-headersH': {
5073
+ variable: false,
5074
+ quality: 1,
5075
+ what: 'Element does not contain a thead element'
5076
+ }
5077
+ }
5078
+ }
5079
+ },
5080
+ tableBody: {
5081
+ why: 'User cannot get help on parts of a table',
5082
+ wcag: '1.3.1',
5083
+ weight: 1,
5084
+ tools: {
5085
+ aslint: {
5086
+ 'table-row-and-column-headersB': {
5087
+ variable: false,
5088
+ quality: 1,
5089
+ what: 'Element does not contain a tbody element'
4887
5090
  }
4888
5091
  }
4889
5092
  }
@@ -5981,16 +6184,23 @@ exports.issues = {
5981
6184
  wcag: '1.3.1',
5982
6185
  weight: 4,
5983
6186
  tools: {
6187
+ aslint: {
6188
+ 'label-implicitly-associatedM': {
6189
+ variable: false,
6190
+ quality: 1,
6191
+ what: 'Element contains more than 1 labelable element.'
6192
+ }
6193
+ },
5984
6194
  nuVal: {
5985
6195
  'The label element may contain at most one button, input, meter, output, progress, select, or textarea descendant.': {
5986
6196
  variable: false,
5987
6197
  quality: 1,
5988
- what: 'label element has more than 1 labelable descendant.'
6198
+ what: 'Element has more than 1 labelable descendant.'
5989
6199
  },
5990
6200
  'label element with multiple labelable descendants.': {
5991
6201
  variable: false,
5992
6202
  quality: 1,
5993
- what: 'label element has multiple labelable descendants.'
6203
+ what: 'Element has multiple labelable descendants.'
5994
6204
  }
5995
6205
  }
5996
6206
  }
@@ -6131,18 +6341,32 @@ exports.issues = {
6131
6341
  wcag: '1.3.1',
6132
6342
  weight: 2,
6133
6343
  tools: {
6134
- axe: {
6135
- 'form-field-multiple-labels': {
6344
+ testaro: {
6345
+ labClash: {
6136
6346
  variable: false,
6137
6347
  quality: 1,
6138
- what: 'Form field has multiple label elements'
6348
+ what: 'Incompatible label types'
6349
+ }
6350
+ }
6351
+ }
6352
+ },
6353
+ labelNot1: {
6354
+ why: 'User cannot get reliable help on the topics of form items',
6355
+ wcag: '1.3.1',
6356
+ weight: 1,
6357
+ tools: {
6358
+ aslint: {
6359
+ 'duplicated-for-attribute': {
6360
+ variable: false,
6361
+ quality: 1,
6362
+ what: 'More than 1 label element has the same for attribute'
6139
6363
  }
6140
6364
  },
6141
- testaro: {
6142
- labClash: {
6365
+ axe: {
6366
+ 'form-field-multiple-labels': {
6143
6367
  variable: false,
6144
6368
  quality: 1,
6145
- what: 'Incompatible label types'
6369
+ what: 'Form field has multiple label elements'
6146
6370
  }
6147
6371
  },
6148
6372
  ibm: {
@@ -6171,6 +6395,18 @@ exports.issues = {
6171
6395
  wcag: '1.3.1',
6172
6396
  weight: 3,
6173
6397
  tools: {
6398
+ aslint: {
6399
+ 'empty-label-element': {
6400
+ variable: false,
6401
+ quality: 1,
6402
+ what: 'Element has no content'
6403
+ },
6404
+ 'label-implicitly-associatedW': {
6405
+ variable: false,
6406
+ quality: 1,
6407
+ what: 'Element has no labeling content except whitespace'
6408
+ }
6409
+ },
6174
6410
  htmlcs: {
6175
6411
  'AAA.1_3_1.ARIA6': {
6176
6412
  variable: false,
@@ -6249,11 +6485,18 @@ exports.issues = {
6249
6485
  what: 'Inline link is not distinct from the surrounding text except by color'
6250
6486
  }
6251
6487
  },
6488
+ aslint: {
6489
+ 'links-not-visually-evident-without-color-vision': {
6490
+ variable: false,
6491
+ quality: 1,
6492
+ what: 'Element is a link, but its style properties do not differentiate it from its parent'
6493
+ }
6494
+ },
6252
6495
  axe: {
6253
6496
  'link-in-text-block': {
6254
6497
  variable: false,
6255
6498
  quality: 1,
6256
- what: 'Link is not distinct from surrounding text without reliance on color'
6499
+ what: 'Element is not distinct from surrounding text without reliance on color'
6257
6500
  }
6258
6501
  },
6259
6502
  testaro: {
@@ -6318,6 +6561,32 @@ exports.issues = {
6318
6561
  quality: 1,
6319
6562
  what: 'Change of visible content not requested by user'
6320
6563
  }
6564
+ },
6565
+ aslint: {
6566
+ animationM: {
6567
+ variable: false,
6568
+ quality: 1,
6569
+ what: 'Animation may fail to give user a pause, stop, or hide mechanism'
6570
+ }
6571
+ }
6572
+ }
6573
+ },
6574
+ animationLong: {
6575
+ why: 'Motion-sensitive user may suffer harm',
6576
+ wcag: '2.2.2',
6577
+ weight: 3,
6578
+ tools: {
6579
+ aslint: {
6580
+ animationD: {
6581
+ variable: false,
6582
+ quality: 1,
6583
+ what: 'Animation lasts more than 5 seconds'
6584
+ },
6585
+ animationI: {
6586
+ variable: false,
6587
+ quality: 1,
6588
+ what: 'Animation is repetitive'
6589
+ }
6321
6590
  }
6322
6591
  }
6323
6592
  },
@@ -6326,11 +6595,18 @@ exports.issues = {
6326
6595
  wcag: '2.2.2',
6327
6596
  weight: 4,
6328
6597
  tools: {
6598
+ aslint: {
6599
+ 'blink-element': {
6600
+ variable: false,
6601
+ quality: 1,
6602
+ what: 'Element is blink'
6603
+ }
6604
+ },
6329
6605
  qualWeb: {
6330
6606
  'QW-WCAG-T13': {
6331
6607
  variable: false,
6332
6608
  quality: 1,
6333
- what: 'blink element used'
6609
+ what: 'Element is blink'
6334
6610
  },
6335
6611
  'QW-WCAG-T30': {
6336
6612
  variable: false,
@@ -6345,18 +6621,25 @@ exports.issues = {
6345
6621
  wcag: '1.4.2',
6346
6622
  weight: 2,
6347
6623
  tools: {
6624
+ aslint: {
6625
+ 'autoplay-audio-video': {
6626
+ variable: false,
6627
+ quality: 1,
6628
+ what: 'Element plays automatically'
6629
+ }
6630
+ },
6348
6631
  axe: {
6349
6632
  'no-autoplay-audio': {
6350
6633
  variable: false,
6351
6634
  quality: 1,
6352
- what: 'video or audio element plays automatically'
6635
+ what: 'Element plays automatically'
6353
6636
  }
6354
6637
  },
6355
6638
  qualWeb: {
6356
6639
  'QW-ACT-R15': {
6357
6640
  variable: false,
6358
6641
  quality: 1,
6359
- what: 'audio or video has audio that plays automatically'
6642
+ what: 'Element has audio that plays automatically'
6360
6643
  }
6361
6644
  }
6362
6645
  }
@@ -6370,7 +6653,7 @@ exports.issues = {
6370
6653
  'QW-ACT-R49': {
6371
6654
  variable: false,
6372
6655
  quality: 1,
6373
- what: 'audio or video that plays automatically has audio lasting more than 3 seconds'
6656
+ what: 'Element that plays automatically has audio lasting more than 3 seconds'
6374
6657
  }
6375
6658
  }
6376
6659
  }
@@ -6390,20 +6673,27 @@ exports.issues = {
6390
6673
  }
6391
6674
  },
6392
6675
  refresh: {
6393
- why: 'Delayed document change may surprise a user',
6676
+ why: 'Document change may surprise a user',
6394
6677
  wcag: '2.2.1',
6395
6678
  weight: 3,
6396
6679
  tools: {
6680
+ aslint: {
6681
+ 'no-meta-http-equiv-refresh': {
6682
+ variable: false,
6683
+ quality: 1,
6684
+ what: 'Element forces a page reload'
6685
+ }
6686
+ },
6397
6687
  qualWeb: {
6398
6688
  'QW-ACT-R4': {
6399
6689
  variable: false,
6400
6690
  quality: 1,
6401
- what: 'meta element refreshes or redirects with delay'
6691
+ what: 'Element refreshes or redirects with delay'
6402
6692
  },
6403
6693
  'QW-ACT-R71': {
6404
6694
  variable: false,
6405
6695
  quality: 1,
6406
- what: 'meta element has a refresh delay (no exception)'
6696
+ what: 'Element has a refresh delay (no exception)'
6407
6697
  }
6408
6698
  }
6409
6699
  }
@@ -7551,7 +7841,7 @@ exports.issues = {
7551
7841
  quality: 1,
7552
7842
  what: 'longdesc attribute has a value that is not a URL (and is obsolete)'
7553
7843
  }
7554
- },
7844
+ }
7555
7845
  }
7556
7846
  },
7557
7847
  slashParseRisk: {