testilo 17.0.11 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testilo",
3
- "version": "17.0.11",
3
+ "version": "17.1.0",
4
4
  "description": "Prepares and processes Testaro reports",
5
5
  "main": "aim.js",
6
6
  "scripts": {
@@ -30,10 +30,15 @@ exports.issues = {
30
30
  quality: 0,
31
31
  what: 'The content sequence may fail to be meaningful'
32
32
  },
33
- 'flickering': {
33
+ flickering: {
34
34
  variable: false,
35
35
  quality: 0,
36
36
  what: 'Excessive flashing may exist'
37
+ },
38
+ reflow: {
39
+ variable: false,
40
+ quality: 0,
41
+ what: 'Page may require horizontal scrolling'
37
42
  }
38
43
  },
39
44
  nuVal: {
@@ -93,7 +98,7 @@ exports.issues = {
93
98
  }
94
99
  }
95
100
  },
96
- duplicateID: {
101
+ IDUnique: {
97
102
  why: 'User may be pointed to the wrong item',
98
103
  wcag: '4.1.1',
99
104
  weight: 4,
@@ -105,6 +110,13 @@ exports.issues = {
105
110
  what: 'Element id attribute value is not unique'
106
111
  }
107
112
  },
113
+ aslint: {
114
+ 'duplicated-id-attribute': {
115
+ variable: false,
116
+ quality: 1,
117
+ what: 'Element id attribute value is not unique'
118
+ }
119
+ },
108
120
  axe: {
109
121
  'duplicate-id': {
110
122
  variable: false,
@@ -791,7 +803,19 @@ exports.issues = {
791
803
  r4: {
792
804
  variable: false,
793
805
  quality: 1,
794
- what: 'Lang attribute missing, empty, or only whitespace'
806
+ what: 'lang attribute missing, empty, or only whitespace'
807
+ }
808
+ },
809
+ aslint: {
810
+ 'html-lang-attrN': {
811
+ variable: false,
812
+ quality: 1,
813
+ what: 'lang attribute missing from the html element'
814
+ },
815
+ 'html-lang-attrE': {
816
+ variable: false,
817
+ quality: 1,
818
+ what: 'lang attribute of the html element is empty'
795
819
  }
796
820
  },
797
821
  axe: {
@@ -860,6 +884,13 @@ exports.issues = {
860
884
  what: 'lang attribute has no valid primary language tag'
861
885
  }
862
886
  },
887
+ aslint: {
888
+ 'html-lang-attrP': {
889
+ variable: false,
890
+ quality: 1,
891
+ what: 'value of the lang attribute of the html element has too many segments'
892
+ }
893
+ },
863
894
  axe: {
864
895
  'html-lang-valid': {
865
896
  variable: false,
@@ -1431,6 +1462,16 @@ exports.issues = {
1431
1462
  variable: false,
1432
1463
  quality: 1,
1433
1464
  what: 'Element referenced by the for attribute is missing'
1465
+ },
1466
+ 'aria-labelledby-associationN': {
1467
+ variable: false,
1468
+ quality: 1,
1469
+ what: 'Element referenced by the aria-labelledby attribute is missing'
1470
+ },
1471
+ 'aria-labelledby-associationE': {
1472
+ variable: false,
1473
+ quality: 1,
1474
+ what: 'aria-labelledby attribute refers to no element'
1434
1475
  }
1435
1476
  },
1436
1477
  htmlcs: {
@@ -1520,6 +1561,20 @@ exports.issues = {
1520
1561
  }
1521
1562
  }
1522
1563
  },
1564
+ clickOnly: {
1565
+ why: 'User may misunderstand how to activate a link',
1566
+ wcag: '2.4.4',
1567
+ weight: 1,
1568
+ tools: {
1569
+ aslint: {
1570
+ 'click-verb': {
1571
+ variable: false,
1572
+ quality: 1,
1573
+ what: 'Mouse-specific word click is in the element text'
1574
+ }
1575
+ }
1576
+ }
1577
+ },
1523
1578
  linkNoText: {
1524
1579
  why: 'User cannot get help understanding what a link points to',
1525
1580
  wcag: '2.4.4',
@@ -1537,6 +1592,11 @@ exports.issues = {
1537
1592
  variable: false,
1538
1593
  quality: 1,
1539
1594
  what: 'Element is an image in a link but has no text alternative'
1595
+ },
1596
+ 'empty-link-element': {
1597
+ variable: false,
1598
+ quality: 1,
1599
+ what: 'Element has no visible and accessible name'
1540
1600
  }
1541
1601
  },
1542
1602
  axe: {
@@ -1651,6 +1711,13 @@ exports.issues = {
1651
1711
  wcag: '3.1.4',
1652
1712
  weight: 4,
1653
1713
  tools: {
1714
+ aslint: {
1715
+ 'title-for-abbr': {
1716
+ variable: false,
1717
+ quality: 1,
1718
+ what: 'Element as an abbr but its defining title attribute is missing or empty'
1719
+ }
1720
+ },
1654
1721
  qualWeb: {
1655
1722
  'QW-WCAG-T7': {
1656
1723
  variable: false,
@@ -1761,6 +1828,13 @@ exports.issues = {
1761
1828
  wcag: '2.4.4',
1762
1829
  weight: 2,
1763
1830
  tools: {
1831
+ aslint: {
1832
+ 'links-same-content-different-url': {
1833
+ variable: false,
1834
+ quality: 1,
1835
+ what: 'Links with the same text content have different destination URLs'
1836
+ }
1837
+ },
1764
1838
  qualWeb: {
1765
1839
  'QW-ACT-R9': {
1766
1840
  variable: false,
@@ -1876,6 +1950,13 @@ exports.issues = {
1876
1950
  wcag: '3.2.5',
1877
1951
  weight: 1,
1878
1952
  tools: {
1953
+ aslint: {
1954
+ linkExt: {
1955
+ variable: false,
1956
+ quality: 1,
1957
+ what: 'Indicator that the link opens a new window or tab may be missing'
1958
+ }
1959
+ },
1879
1960
  htmlcs: {
1880
1961
  'WCAG2AAA.Principle3.Guideline3_2.3_2_5.H83.3': {
1881
1962
  variable: false,
@@ -1911,6 +1992,20 @@ exports.issues = {
1911
1992
  }
1912
1993
  }
1913
1994
  },
1995
+ preselectedOption: {
1996
+ why: 'User may risk erroneously submitting a form',
1997
+ wcag: '4.1.2',
1998
+ weight: 1,
1999
+ tools: {
2000
+ aslint: {
2001
+ 'select-initial-option': {
2002
+ variable: false,
2003
+ quality: 1,
2004
+ what: 'No option has been made the default with a selected attribute'
2005
+ }
2006
+ }
2007
+ }
2008
+ },
1914
2009
  buttonAlt: {
1915
2010
  why: 'User cannot get help explaing a button',
1916
2011
  wcag: '4.1.2',
@@ -1937,6 +2032,13 @@ exports.issues = {
1937
2032
  what: 'Button has no accessible name'
1938
2033
  }
1939
2034
  },
2035
+ aslint: {
2036
+ 'empty-button-description': {
2037
+ variable: false,
2038
+ quality: 1,
2039
+ what: 'Button has no visible accessible name'
2040
+ }
2041
+ },
1940
2042
  axe: {
1941
2043
  'aria-command-name': {
1942
2044
  variable: false,
@@ -2168,6 +2270,13 @@ exports.issues = {
2168
2270
  wcag: '1.3.4',
2169
2271
  weight: 4,
2170
2272
  tools: {
2273
+ aslint: {
2274
+ 'orientation': {
2275
+ variable: false,
2276
+ quality: 1,
2277
+ what: 'CSS media query specifies an orientation'
2278
+ }
2279
+ },
2171
2280
  axe: {
2172
2281
  'css-orientation-lock': {
2173
2282
  variable: false,
@@ -2184,6 +2293,20 @@ exports.issues = {
2184
2293
  }
2185
2294
  }
2186
2295
  },
2296
+ orientationRisk: {
2297
+ why: 'User may need to read sideways after rotating a device',
2298
+ wcag: '1.3.4',
2299
+ weight: 1,
2300
+ tools: {
2301
+ aslint: {
2302
+ 'orientationT': {
2303
+ variable: false,
2304
+ quality: 1,
2305
+ what: 'Failure to read a stylesheet prevents testing for orientation violations'
2306
+ }
2307
+ }
2308
+ }
2309
+ },
2187
2310
  metaBansZoom: {
2188
2311
  why: 'User cannot adjust the document size for readability',
2189
2312
  wcag: '1.4.4',
@@ -2231,6 +2354,20 @@ exports.issues = {
2231
2354
  }
2232
2355
  }
2233
2356
  },
2357
+ deviceRisk: {
2358
+ why: 'User may be unable to produce required device movement',
2359
+ wcag: '2.5.4',
2360
+ weight: 1,
2361
+ tools: {
2362
+ aslint: {
2363
+ 'motion-actuation': {
2364
+ variable: false,
2365
+ quality: 1,
2366
+ what: 'Document listens for device motion or rotation'
2367
+ }
2368
+ }
2369
+ }
2370
+ },
2234
2371
  fontSizeAbsolute: {
2235
2372
  why: 'User cannot adjust the document size for readability',
2236
2373
  wcag: '1.4.4',
@@ -2556,6 +2693,13 @@ exports.issues = {
2556
2693
  what: 'iframe has no accessible name'
2557
2694
  }
2558
2695
  },
2696
+ aslint: {
2697
+ 'title-iframe': {
2698
+ variable: false,
2699
+ quality: 1,
2700
+ what: 'Element is an iframe or object but its title attribute is missing or empty'
2701
+ }
2702
+ },
2559
2703
  axe: {
2560
2704
  'frame-title': {
2561
2705
  variable: false,
@@ -3208,7 +3352,14 @@ exports.issues = {
3208
3352
  r10: {
3209
3353
  variable: false,
3210
3354
  quality: 1,
3211
- what: 'Autocomplete attribute has no valid value'
3355
+ what: 'autocomplete attribute has no valid value'
3356
+ }
3357
+ },
3358
+ aslint: {
3359
+ 'identify-input-purpose': {
3360
+ variable: false,
3361
+ quality: 1,
3362
+ what: 'autocomplete attribute has an invalid value'
3212
3363
  }
3213
3364
  },
3214
3365
  axe: {
@@ -3606,6 +3757,13 @@ exports.issues = {
3606
3757
  what: 'Heading has no non-empty accessible name'
3607
3758
  }
3608
3759
  },
3760
+ aslint: {
3761
+ 'empty-heading': {
3762
+ variable: false,
3763
+ quality: 1,
3764
+ what: 'Element is a heading but is empty'
3765
+ }
3766
+ },
3609
3767
  axe: {
3610
3768
  'empty-heading': {
3611
3769
  variable: false,
@@ -4643,6 +4801,11 @@ exports.issues = {
4643
4801
  variable: false,
4644
4802
  quality: 1,
4645
4803
  what: 'First child element of the element is not a legend'
4804
+ },
4805
+ 'legend-first-child-of-fieldset': {
4806
+ variable: false,
4807
+ quality: 1,
4808
+ what: 'First child element of the element is not a legend'
4646
4809
  }
4647
4810
  },
4648
4811
  htmlcs: {
@@ -5164,11 +5327,18 @@ exports.issues = {
5164
5327
  wcag: '2.4.6',
5165
5328
  weight: 4,
5166
5329
  tools: {
5330
+ aslint: {
5331
+ 'label-visually-hidden-only': {
5332
+ variable: false,
5333
+ quality: 1,
5334
+ what: 'Form control has a label but it is not visible'
5335
+ }
5336
+ },
5167
5337
  axe: {
5168
5338
  'label-title-only': {
5169
5339
  variable: false,
5170
5340
  quality: 1,
5171
- what: 'Form element has no visible label'
5341
+ what: 'Form control has no visible label'
5172
5342
  }
5173
5343
  }
5174
5344
  }
@@ -6360,6 +6530,11 @@ exports.issues = {
6360
6530
  variable: false,
6361
6531
  quality: 1,
6362
6532
  what: 'More than 1 label element has the same for attribute'
6533
+ },
6534
+ 'missing-labelM': {
6535
+ variable: false,
6536
+ quality: 1,
6537
+ what: 'More than 1 label element refers to the element'
6363
6538
  }
6364
6539
  },
6365
6540
  axe: {
@@ -6405,6 +6580,11 @@ exports.issues = {
6405
6580
  variable: false,
6406
6581
  quality: 1,
6407
6582
  what: 'Element has no labeling content except whitespace'
6583
+ },
6584
+ 'aria-labelledby-association-empty-element': {
6585
+ variable: false,
6586
+ quality: 1,
6587
+ what: 'Referenced label has no content'
6408
6588
  }
6409
6589
  },
6410
6590
  htmlcs: {
@@ -6428,11 +6608,37 @@ exports.issues = {
6428
6608
  }
6429
6609
  }
6430
6610
  },
6611
+ labelRisk: {
6612
+ why: 'User may misunderstand a form control',
6613
+ wcag: '3.3.2',
6614
+ weight: 1,
6615
+ tools: {
6616
+ aslint: {
6617
+ 'missing-labelI': {
6618
+ variable: false,
6619
+ quality: 1,
6620
+ what: 'Element has no id attribute for an explicit label to reference'
6621
+ },
6622
+ 'missing-labelN': {
6623
+ variable: false,
6624
+ quality: 1,
6625
+ what: 'Element has an id attribute but no explicit label references it'
6626
+ }
6627
+ }
6628
+ }
6629
+ },
6431
6630
  linkComprehensionRisk: {
6432
6631
  why: 'User may misunderstand what a link points to',
6433
6632
  wcag: '2.4.4',
6434
6633
  weight: 1,
6435
6634
  tools: {
6635
+ aslint: {
6636
+ 'link-with-unclear-purpose': {
6637
+ variable: false,
6638
+ quality: 1,
6639
+ what: 'Element is a link but has vague or generic content'
6640
+ }
6641
+ },
6436
6642
  wave: {
6437
6643
  link_suspicious: {
6438
6644
  variable: false,
@@ -6766,6 +6972,13 @@ exports.issues = {
6766
6972
  wcag: '2.4.3',
6767
6973
  weight: 1,
6768
6974
  tools: {
6975
+ aslint: {
6976
+ 'positive-tabindex': {
6977
+ variable: false,
6978
+ quality: 1,
6979
+ what: 'Element has a positive tabIndex value'
6980
+ }
6981
+ },
6769
6982
  axe: {
6770
6983
  tabindex: {
6771
6984
  variable: false,
@@ -6810,6 +7023,20 @@ exports.issues = {
6810
7023
  }
6811
7024
  }
6812
7025
  },
7026
+ tabIndexExtra: {
7027
+ why: 'Revision risks interfering with navigation by a no-mouse user',
7028
+ wcag: '1.3.1',
7029
+ weight: 1,
7030
+ tools: {
7031
+ aslint: {
7032
+ 'misused-tabindex-attribute': {
7033
+ variable: true,
7034
+ quality: 1,
7035
+ what: 'Element has an implicit tabIndex value 0, but also has a tabindex attribute'
7036
+ }
7037
+ }
7038
+ }
7039
+ },
6813
7040
  avNoText: {
6814
7041
  why: 'User cannot get help reading speech as text',
6815
7042
  wcag: '1.2.1',
@@ -7040,18 +7267,32 @@ exports.issues = {
7040
7267
  }
7041
7268
  }
7042
7269
  },
7043
- scrollRisk: {
7044
- why: 'User may be unable to see all of an item without scrolling in both dimensions',
7270
+ positionSticky: {
7271
+ why: 'User may be unable to see needed content or may be forced to scroll in both dimensions',
7045
7272
  wcag: '1.4.10',
7046
7273
  weight: 1,
7047
7274
  tools: {
7275
+ aslint: {
7276
+ 'position-sticky': {
7277
+ variable: false,
7278
+ quality: 1,
7279
+ what: 'Element has a sticky position'
7280
+ }
7281
+ },
7048
7282
  htmlcs: {
7049
7283
  'AAA.1_4_10.C32,C31,C33,C38,SCR34,G206': {
7050
7284
  variable: false,
7051
7285
  quality: 1,
7052
7286
  what: 'Fixed-position element may force bidirectional scrolling'
7053
7287
  }
7054
- },
7288
+ }
7289
+ }
7290
+ },
7291
+ scrollRisk: {
7292
+ why: 'User may be unable to see all of an item without scrolling in both dimensions',
7293
+ wcag: '1.4.10',
7294
+ weight: 1,
7295
+ tools: {
7055
7296
  qualWeb: {
7056
7297
  'QW-BP18': {
7057
7298
  variable: false,
@@ -7154,9 +7395,16 @@ exports.issues = {
7154
7395
  },
7155
7396
  submitButton: {
7156
7397
  why: 'User cannot easily submit a form',
7157
- wcag: '2.5.6',
7398
+ wcag: '3.2.2',
7158
7399
  weight: 3,
7159
7400
  tools: {
7401
+ aslint: {
7402
+ 'missing-submit-button': {
7403
+ variable: false,
7404
+ quality: 1,
7405
+ what: 'Element is a form but contains no input or button element for submission'
7406
+ }
7407
+ },
7160
7408
  htmlcs: {
7161
7409
  'AAA.3_2_2.H32.2': {
7162
7410
  variable: false,