testilo 43.1.5 → 43.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/procs/score/tic.js +317 -52
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testilo",
3
- "version": "43.1.5",
3
+ "version": "43.2.1",
4
4
  "description": "Prepares Testaro jobs and processes Testaro reports",
5
5
  "main": "call.js",
6
6
  "scripts": {
@@ -918,6 +918,13 @@ exports.issues = {
918
918
  wcag: '1.1.1',
919
919
  weight: 4,
920
920
  tools: {
921
+ htmlcs: {
922
+ 'AAA.4_1_2.H91.Svg.Name': {
923
+ variable: false,
924
+ quality: 1,
925
+ what: 'Element is svg but has no accessible name'
926
+ }
927
+ },
921
928
  wax: {
922
929
  'Add alternative text to <svg> elements with an img, graphics-document, or graphics-symbol role.': {
923
930
  variable: false,
@@ -1028,7 +1035,7 @@ exports.issues = {
1028
1035
  alt_color_convey_information: {
1029
1036
  variable: false,
1030
1037
  quality: 1,
1031
- what: 'Text alternative may fail to give information provided by colors'
1038
+ what: 'Text alternative fails to give information provided by colors?'
1032
1039
  }
1033
1040
  },
1034
1041
  wave: {
@@ -1242,7 +1249,7 @@ exports.issues = {
1242
1249
  'AAA.1_1_1.H67.2': {
1243
1250
  variable: false,
1244
1251
  quality: 1,
1245
- what: 'Image marked as decorative may be informative'
1252
+ what: 'Image marked as decorative is informative?'
1246
1253
  }
1247
1254
  }
1248
1255
  }
@@ -1710,7 +1717,7 @@ exports.issues = {
1710
1717
  link_button_space_key: {
1711
1718
  variable: false,
1712
1719
  quality: 1,
1713
- what: 'Element has a button role but may fail to be keyboard-operable'
1720
+ what: 'Element has a button role but fails to be keyboard-operable?'
1714
1721
  }
1715
1722
  }
1716
1723
  }
@@ -1725,7 +1732,7 @@ exports.issues = {
1725
1732
  'AAA.2_1_2.F10': {
1726
1733
  variable: false,
1727
1734
  quality: 1,
1728
- what: 'Applet or plugin may fail to enable moving the focus away with the keyboard'
1735
+ what: 'Applet or plugin fails to enable moving the focus away with the keyboard?'
1729
1736
  }
1730
1737
  }
1731
1738
  }
@@ -1740,27 +1747,34 @@ exports.issues = {
1740
1747
  'AAA.2_1_1.G90': {
1741
1748
  variable: false,
1742
1749
  quality: 1,
1743
- what: 'Event handler functionality may not be available by keyboard'
1750
+ what: 'Event handler functionality is not available by keyboard?'
1744
1751
  },
1745
1752
  'AAA.2_1_1.SCR20.MouseOut': {
1746
1753
  variable: false,
1747
1754
  quality: 1,
1748
- what: 'Mousing-out functionality may not be available by keyboard'
1755
+ what: 'Mousing-out functionality is not available by keyboard?'
1749
1756
  },
1750
1757
  'AAA.2_1_1.SCR20.MouseOver': {
1751
1758
  variable: false,
1752
1759
  quality: 1,
1753
- what: 'Mousing-over functionality may not be available by keyboard'
1760
+ what: 'Mousing-over functionality is not available by keyboard?'
1754
1761
  },
1755
1762
  'AAA.2_1_1.SCR20.MouseDown': {
1756
1763
  variable: false,
1757
1764
  quality: 1,
1758
- what: 'Mousing-down functionality may not be available by keyboard'
1765
+ what: 'Mousing-down functionality is not available by keyboard?'
1759
1766
  },
1760
1767
  'AAA.2_1_1.SCR20.MouseUp': {
1761
1768
  variable: false,
1762
1769
  quality: 1,
1763
- what: 'Mousing-up functionality may not be available by keyboard'
1770
+ what: 'Mousing-up functionality is not available by keyboard?'
1771
+ }
1772
+ },
1773
+ ibm: {
1774
+ aria_keyboard_handler_exists: {
1775
+ variable: false,
1776
+ quality: 1,
1777
+ what: 'Interactive WAI_ARIA UI components must provide keyboard access'
1764
1778
  }
1765
1779
  },
1766
1780
  qualWeb: {
@@ -1776,6 +1790,13 @@ exports.issues = {
1776
1790
  quality: 0.5,
1777
1791
  what: 'Device-dependent event handler'
1778
1792
  }
1793
+ },
1794
+ wax: {
1795
+ 'Ensure the functionality provided by an event handler for this element is available through the keyboard': {
1796
+ variable: false,
1797
+ quality: 1,
1798
+ what: 'Event handler functionality is not available by keyboard?'
1799
+ }
1779
1800
  }
1780
1801
  }
1781
1802
  },
@@ -1832,7 +1853,7 @@ exports.issues = {
1832
1853
  'AAA.1_3_1.H44.NotFormControl': {
1833
1854
  variable: false,
1834
1855
  quality: 1,
1835
- what: 'Referent of the for attribute of the label is not a form control, so may be wrong'
1856
+ what: 'Referent of the for attribute of the label is not a form control, so is wrong?'
1836
1857
  }
1837
1858
  },
1838
1859
  ibm: {
@@ -1883,7 +1904,7 @@ exports.issues = {
1883
1904
  'Possible misuse of aria-label. (If you disagree with this warning, file an issue report or send e-mail to www-validator@w3.org.)': {
1884
1905
  variable: false,
1885
1906
  quality: 1,
1886
- what: 'aria-label attribute may be misused'
1907
+ what: 'aria-label attribute is misused?'
1887
1908
  }
1888
1909
  }
1889
1910
  }
@@ -2282,6 +2303,21 @@ exports.issues = {
2282
2303
  }
2283
2304
  }
2284
2305
  },
2306
+ linkImageTextURL: {
2307
+ summary: 'text alternative of link image a URL',
2308
+ why: 'User cannot understand what a link points to',
2309
+ wcag: '2.4.4',
2310
+ weight: 3,
2311
+ tools: {
2312
+ ed11y: {
2313
+ altURLLinked: {
2314
+ variable: false,
2315
+ quality: 1,
2316
+ what: 'Text alternative of the link image is a URL'
2317
+ }
2318
+ }
2319
+ }
2320
+ },
2285
2321
  linkBrokenRisk: {
2286
2322
  summary: 'link incomplete',
2287
2323
  why: 'User may fail to reach a promised location',
@@ -2535,7 +2571,7 @@ exports.issues = {
2535
2571
  'identical-links-same-purpose': {
2536
2572
  variable: false,
2537
2573
  quality: 1,
2538
- what: 'Links with the same accessible name may serve dissimilar purposes'
2574
+ what: 'Links with the same accessible name serve dissimilar purposes?'
2539
2575
  }
2540
2576
  }
2541
2577
  }
@@ -2594,7 +2630,7 @@ exports.issues = {
2594
2630
  'AAA.1_1_1.H2.EG4': {
2595
2631
  variable: false,
2596
2632
  quality: 1,
2597
- what: 'Adjacent links, one with text and the other with a textless image, may merit combination'
2633
+ what: 'Adjacent links, one with text and the other with a textless image, merit combination?'
2598
2634
  }
2599
2635
  }
2600
2636
  }
@@ -2655,19 +2691,19 @@ exports.issues = {
2655
2691
  links_new_window_mark: {
2656
2692
  variable: false,
2657
2693
  quality: 1,
2658
- what: 'Indicator that the link opens a new window or tab may be missing'
2694
+ what: 'Indicator that the link opens a new window or tab is missing?'
2659
2695
  }
2660
2696
  },
2661
2697
  htmlcs: {
2662
2698
  'WCAG2AAA.Principle3.Guideline3_2.3_2_5.H83.3': {
2663
2699
  variable: false,
2664
2700
  quality: 1,
2665
- what: 'Link may open in a new window without notice'
2701
+ what: 'Link opens in a new window without notice?'
2666
2702
  },
2667
2703
  'AAA.3_2_5.H83.3': {
2668
2704
  variable: false,
2669
2705
  quality: 1,
2670
- what: 'Link text may fail to indicate that the link will open in a new window'
2706
+ what: 'Link text fails to indicate that the link will open in a new window?'
2671
2707
  }
2672
2708
  },
2673
2709
  testaro: {
@@ -2689,7 +2725,7 @@ exports.issues = {
2689
2725
  javascript_jumpmenu: {
2690
2726
  variable: false,
2691
2727
  quality: 1,
2692
- what: 'selection change may navigate to another page without notice'
2728
+ what: 'Selection change navigates to another page without notice?'
2693
2729
  }
2694
2730
  }
2695
2731
  }
@@ -3220,6 +3256,13 @@ exports.issues = {
3220
3256
  quality: 1,
3221
3257
  what: 'Paragraph text has an absolute font size'
3222
3258
  }
3259
+ },
3260
+ ibm: {
3261
+ style_viewport_resizable: {
3262
+ variable: false,
3263
+ quality: 1,
3264
+ what: 'Font size is specified in viewport units, preventing text resizing'
3265
+ }
3223
3266
  }
3224
3267
  }
3225
3268
  },
@@ -3392,7 +3435,7 @@ exports.issues = {
3392
3435
  'QW-ACT-R40': {
3393
3436
  variable: false,
3394
3437
  quality: 1,
3395
- what: 'Zoomed text node may be clipped by a CSS overflow declaration'
3438
+ what: 'Zoomed text node is clipped by a CSS overflow declaration?'
3396
3439
  }
3397
3440
  }
3398
3441
  }
@@ -3770,6 +3813,16 @@ exports.issues = {
3770
3813
  quality: 1,
3771
3814
  what: 'Tabbable element has a non-widget role'
3772
3815
  },
3816
+ widget_tabbable_exists: {
3817
+ variable: false,
3818
+ quality: 1,
3819
+ what: 'Components with a widget role must have at least one tabbable element'
3820
+ },
3821
+ widget_tabbable_single: {
3822
+ variable: false,
3823
+ quality: 1,
3824
+ what: 'Components with a widget role must have no more than one tabbable element'
3825
+ },
3773
3826
  Rpt_Aria_ContentinfoWithNoMain_Implicit: {
3774
3827
  variable: false,
3775
3828
  quality: 1,
@@ -4148,7 +4201,7 @@ exports.issues = {
4148
4201
  '^Element .+ is missing one or more of the following attributes: role.*$': {
4149
4202
  variable: true,
4150
4203
  quality: 1,
4151
- what: 'Element has no role attribute but may need one'
4204
+ what: 'Element has no role attribute but needs one?'
4152
4205
  }
4153
4206
  }
4154
4207
  }
@@ -4739,62 +4792,62 @@ exports.issues = {
4739
4792
  'AAA.1_4_3_F24.F24.BGColour': {
4740
4793
  variable: false,
4741
4794
  quality: 1,
4742
- what: 'Inline background color may lack a complementary foreground color'
4795
+ what: 'Inline background color lacks a complementary foreground color?'
4743
4796
  },
4744
4797
  'AAA.1_4_6.G18.BgImage': {
4745
4798
  variable: false,
4746
4799
  quality: 1,
4747
- what: 'Contrast between the text and the background image may be less than 4.5:1'
4800
+ what: 'Contrast between the text and the background image is less than 4.5:1?'
4748
4801
  },
4749
4802
  'AAA.1_4_3_F24.F24.FGColour': {
4750
4803
  variable: false,
4751
4804
  quality: 1,
4752
- what: 'Inline foreground color may lack a complementary background color'
4805
+ what: 'Inline foreground color lacks a complementary background color?'
4753
4806
  },
4754
4807
  'AAA.1_4_3.G18.Abs': {
4755
4808
  variable: false,
4756
4809
  quality: 1,
4757
- what: 'Contrast between the absolutely positioned text and its background may be inadequate'
4810
+ what: 'Contrast between the absolutely positioned text and its background is inadequate?'
4758
4811
  },
4759
4812
  'AAA.1_4_6.G18.Abs': {
4760
4813
  variable: false,
4761
4814
  quality: 1,
4762
- what: 'Contrast between the absolutely positioned text and its background may be less than 4.5:1'
4815
+ what: 'Contrast between the absolutely positioned text and its background is less than 4.5:1?'
4763
4816
  },
4764
4817
  'AAA.1_4_3.G18.Alpha': {
4765
4818
  variable: false,
4766
4819
  quality: 1,
4767
- what: 'Contrast between the text and its background may be less than 4.5:1, given the transparency'
4820
+ what: 'Contrast between the text and its background is less than 4.5:1, given the transparency?'
4768
4821
  },
4769
4822
  'AAA.1_4_3.G145.Abs': {
4770
4823
  variable: false,
4771
4824
  quality: 1,
4772
- what: 'Contrast between the absolutely positioned large text and its background may be less than 3:1'
4825
+ what: 'Contrast between the absolutely positioned large text and its background is less than 3:1?'
4773
4826
  },
4774
4827
  'AAA.1_4_3.G145.Alpha': {
4775
4828
  variable: false,
4776
4829
  quality: 1,
4777
- what: 'Contrast between the text and its background may be less than 3:1, given the transparency'
4830
+ what: 'Contrast between the text and its background is less than 3:1, given the transparency?'
4778
4831
  },
4779
4832
  'AAA.1_4_3.G145.BgImage': {
4780
4833
  variable: false,
4781
4834
  quality: 1,
4782
- what: 'Contrast between the text and its background image may be less than 3:1'
4835
+ what: 'Contrast between the text and its background image is less than 3:1?'
4783
4836
  },
4784
4837
  'AAA.1_4_3.G18.BgImage': {
4785
4838
  variable: false,
4786
4839
  quality: 1,
4787
- what: 'Contrast between the text and its background image may be less than 4.5:1'
4840
+ what: 'Contrast between the text and its background image is less than 4.5:1?',
4788
4841
  },
4789
4842
  'AAA.1_4_6.G17.Abs': {
4790
4843
  variable: false,
4791
4844
  quality: 1,
4792
- what: 'Contrast between the absolutely positioned text and its background may be less than 7:1'
4845
+ what: 'Contrast between the absolutely positioned text and its background is less than 7:1?'
4793
4846
  },
4794
4847
  'AAA.1_4_6.G17.BgImage': {
4795
4848
  variable: false,
4796
4849
  quality: 1,
4797
- what: 'Contrast between the text and its background image may be less than 7:1'
4850
+ what: 'Contrast between the text and its background image is less than 7:1?'
4798
4851
  }
4799
4852
  },
4800
4853
  qualWeb: {
@@ -4816,7 +4869,7 @@ exports.issues = {
4816
4869
  style_color_misuse: {
4817
4870
  variable: false,
4818
4871
  quality: 1,
4819
- what: 'Color may be the only classifier'
4872
+ what: 'Color is the only classifier?'
4820
4873
  }
4821
4874
  }
4822
4875
  }
@@ -4831,7 +4884,22 @@ exports.issues = {
4831
4884
  'text-color-convey-information': {
4832
4885
  variable: false,
4833
4886
  quality: 1,
4834
- what: 'Text naming a color may require the ability to distinguish colors'
4887
+ what: 'Text naming a color requires the ability to distinguish colors?'
4888
+ }
4889
+ }
4890
+ }
4891
+ },
4892
+ sensoryDependenceRisk: {
4893
+ summary: 'instruction requires particular sense?',
4894
+ why: 'Content is impossible to perceive under some conditions',
4895
+ wcag: '1.4.1',
4896
+ weight: 1,
4897
+ tools: {
4898
+ ibm: {
4899
+ text_sensory_misuse: {
4900
+ variable: false,
4901
+ quality: 1,
4902
+ what: 'Instructions should be meaningful without relying solely on shape, size, or location words'
4835
4903
  }
4836
4904
  }
4837
4905
  }
@@ -5079,6 +5147,21 @@ exports.issues = {
5079
5147
  }
5080
5148
  }
5081
5149
  },
5150
+ mouseOnlyRisk: {
5151
+ summary: 'hover functionality requires mouse?',
5152
+ why: 'Hovering-produced functionality is denied to a keyboard-only user',
5153
+ wcag: '1.3.1',
5154
+ weight: 1,
5155
+ tools: {
5156
+ wax: {
5157
+ 'Ensure the functionality provided by mousing over this element is available through the keyboard; for instance, using the focus event.': {
5158
+ variable: false,
5159
+ quality: 1,
5160
+ what: 'Element provides functionality via hovering but not keyboard?'
5161
+ }
5162
+ }
5163
+ }
5164
+ },
5082
5165
  titleRedundant: {
5083
5166
  summary: 'title attribute redundant',
5084
5167
  why: 'Helper repeats the explanation of an item',
@@ -5435,6 +5518,21 @@ exports.issues = {
5435
5518
  }
5436
5519
  }
5437
5520
  },
5521
+ headingMisuseRisk: {
5522
+ summary: 'heading used for styling?',
5523
+ why: 'User cannot understand the document structure',
5524
+ wcag: '1.3.1',
5525
+ weight: 2,
5526
+ tools: {
5527
+ ibm: {
5528
+ heading_markup_misuse: {
5529
+ variable: false,
5530
+ quality: 1,
5531
+ what: 'Heading elements must not be used for presentation'
5532
+ }
5533
+ }
5534
+ }
5535
+ },
5438
5536
  headingNone: {
5439
5537
  summary: 'headings missing',
5440
5538
  why: 'User cannot survey parts of the document',
@@ -5584,6 +5682,21 @@ exports.issues = {
5584
5682
  }
5585
5683
  }
5586
5684
  },
5685
+ blockQuoteShort: {
5686
+ summary: 'block quote abnormally short',
5687
+ why: 'Content can be made easier to read',
5688
+ wcag: '1.4.8',
5689
+ weight: 1,
5690
+ tools: {
5691
+ ed11y: {
5692
+ blockQuoteIsShort: {
5693
+ variable: false,
5694
+ quality: 1,
5695
+ what: 'Block quote is shorter than 25 characters'
5696
+ }
5697
+ }
5698
+ }
5699
+ },
5587
5700
  justification: {
5588
5701
  summary: 'text fully justified',
5589
5702
  why: 'Text is difficult to read',
@@ -5754,21 +5867,28 @@ exports.issues = {
5754
5867
  'p-as-heading': {
5755
5868
  variable: false,
5756
5869
  quality: 1,
5757
- what: 'Styled p element may be misused as a heading'
5870
+ what: 'Styled p element is misused as a heading?'
5758
5871
  }
5759
5872
  },
5760
5873
  ed11y: {
5761
5874
  textPossibleHeading: {
5762
5875
  variable: false,
5763
5876
  quality: 1,
5764
- what: 'Styled p element may be misused as a heading'
5877
+ what: 'Styled p element is misused as a heading?'
5765
5878
  }
5766
5879
  },
5767
5880
  htmlcs: {
5768
5881
  'AAA.1_3_1.H42': {
5769
5882
  variable: false,
5770
5883
  quality: 1,
5771
- what: 'Heading coding is not used but the element may be intended as a heading'
5884
+ what: 'Heading coding is not used but the element is intended as a heading?'
5885
+ }
5886
+ },
5887
+ ibm: {
5888
+ text_block_heading: {
5889
+ variable: false,
5890
+ quality: 1,
5891
+ what: 'Heading text should use a heading element or role'
5772
5892
  }
5773
5893
  },
5774
5894
  wave: {
@@ -5780,7 +5900,22 @@ exports.issues = {
5780
5900
  }
5781
5901
  }
5782
5902
  },
5783
- pseudoLinkRisk: {
5903
+ pseudoLinkScriptRisk: {
5904
+ summary: 'script used instead of link',
5905
+ why: 'Link may misbehave',
5906
+ wcag: '1.3.1',
5907
+ weight: 1,
5908
+ tools: {
5909
+ ibm: {
5910
+ script_onclick_misuse: {
5911
+ variable: false,
5912
+ quality: 1,
5913
+ what: 'Script is used to emulate a link'
5914
+ }
5915
+ }
5916
+ }
5917
+ },
5918
+ pseudoLinkUnderlineRisk: {
5784
5919
  summary: 'underlining dubious',
5785
5920
  why: 'User may be misled into believing some text is a link',
5786
5921
  wcag: '1.3.1',
@@ -5923,21 +6058,21 @@ exports.issues = {
5923
6058
  textPossibleList: {
5924
6059
  variable: false,
5925
6060
  quality: 1,
5926
- what: 'List may be miscoded as a paragraph sequence'
6061
+ what: 'List is miscoded as a paragraph sequence?'
5927
6062
  }
5928
6063
  },
5929
6064
  htmlcs: {
5930
6065
  'AAA.1_3_1.H48.1': {
5931
6066
  variable: false,
5932
6067
  quality: 1,
5933
- what: 'Content seems to simulate an unordered list without a ul'
6068
+ what: 'Content simulates an unordered list without a ul?'
5934
6069
  }
5935
6070
  },
5936
6071
  wave: {
5937
6072
  list_possible: {
5938
6073
  variable: false,
5939
6074
  quality: 1,
5940
- what: 'List may fail to be coded as such'
6075
+ what: 'List fails to be coded as such?'
5941
6076
  }
5942
6077
  }
5943
6078
  }
@@ -5952,7 +6087,7 @@ exports.issues = {
5952
6087
  'AAA.1_3_1.H48.2': {
5953
6088
  variable: false,
5954
6089
  quality: 1,
5955
- what: 'Ordered list may fail to be coded as such'
6090
+ what: 'Ordered list fails to be coded as such?'
5956
6091
  }
5957
6092
  }
5958
6093
  }
@@ -5972,6 +6107,36 @@ exports.issues = {
5972
6107
  }
5973
6108
  }
5974
6109
  },
6110
+ pseudoQuoteRisk: {
6111
+ summary: 'quotation miscoded?',
6112
+ why: 'User may be unable to get help identifying a quotation',
6113
+ wcag: '3.2.4',
6114
+ weight: 1,
6115
+ tools: {
6116
+ ibm: {
6117
+ text_quoted_correctly: {
6118
+ variable: false,
6119
+ quality: 1,
6120
+ what: 'Text not marked with a q or blockquote element is a quotation?'
6121
+ }
6122
+ }
6123
+ }
6124
+ },
6125
+ nonQuoteRisk: {
6126
+ summary: 'nonquotation coded as block quote?',
6127
+ why: 'User may misunderstand text as a quotation',
6128
+ wcag: '3.2.4',
6129
+ weight: 1,
6130
+ tools: {
6131
+ ibm: {
6132
+ blockquote_cite_exists: {
6133
+ variable: false,
6134
+ quality: 1,
6135
+ what: 'blockquote element is a nonquotation?'
6136
+ }
6137
+ }
6138
+ }
6139
+ },
5975
6140
  selectNoText: {
5976
6141
  summary: 'select not named',
5977
6142
  why: 'User cannot get help on the topic of a list of options',
@@ -6043,7 +6208,7 @@ exports.issues = {
6043
6208
  'AAA.1_3_1.H85.2': {
6044
6209
  variable: false,
6045
6210
  quality: 1,
6046
- what: 'Selection list may contain groups of related options that are not grouped with optgroup'
6211
+ what: 'Selection list contains groups of related options not grouped with optgroup?'
6047
6212
  }
6048
6213
  }
6049
6214
  }
@@ -6145,14 +6310,14 @@ exports.issues = {
6145
6310
  'AAA.1_3_1.H71.SameName': {
6146
6311
  variable: false,
6147
6312
  quality: 1,
6148
- what: 'Radio buttons or check boxes may require a group description via a fieldset element'
6313
+ what: 'Radio buttons or check boxes require a fieldset element?'
6149
6314
  }
6150
6315
  },
6151
6316
  wax: {
6152
6317
  'If these radio buttons or check boxes require a further group-level description, they should be contained within a fieldset element.': {
6153
6318
  variable: false,
6154
6319
  quality: 1,
6155
- what: 'Radio buttons or check boxes may require a group description via a fieldset element'
6320
+ what: 'Radio buttons or check boxes require a fieldset element?'
6156
6321
  }
6157
6322
  }
6158
6323
  }
@@ -6876,6 +7041,21 @@ exports.issues = {
6876
7041
  }
6877
7042
  }
6878
7043
  },
7044
+ inputLabelInvisibleRisk: {
7045
+ summary: 'input label invisible?',
7046
+ why: 'User cannot understand where to enter information',
7047
+ wcag: '2.4.6',
7048
+ weight: 1,
7049
+ tools: {
7050
+ ibm: {
7051
+ input_label_visible: {
7052
+ variable: false,
7053
+ quality: 1,
7054
+ what: 'input element label invisible?'
7055
+ }
7056
+ }
7057
+ }
7058
+ },
6879
7059
  titleAsLabel: {
6880
7060
  summary: 'control has title instead of label',
6881
7061
  why: 'User cannot get help on how to operate a form item',
@@ -7193,6 +7373,41 @@ exports.issues = {
7193
7373
  }
7194
7374
  }
7195
7375
  },
7376
+ focusIndicationRisk: {
7377
+ summary: 'focus indication poor',
7378
+ why: 'Keyboard-only user cannot choose an item to operate',
7379
+ wcag: '2.4.7',
7380
+ weight: 1,
7381
+ tools: {
7382
+ ibm: {
7383
+ element_tabbable_unobscured: {
7384
+ variable: false,
7385
+ quality: 1,
7386
+ what: 'Tabbable element obscured by another element when focused?'
7387
+ },
7388
+ element_tabbable_visible: {
7389
+ variable: false,
7390
+ quality: 1,
7391
+ what: 'Tabbable element invisible when focused?'
7392
+ }
7393
+ },
7394
+ }
7395
+ },
7396
+ boxInvisibleRisk: {
7397
+ summary: 'border or outline invisible?',
7398
+ why: 'User cannot perceive the boundary of an item',
7399
+ wcag: '2.5.8',
7400
+ weight: 1,
7401
+ tools: {
7402
+ ibm: {
7403
+ style_focus_visible: {
7404
+ variable: false,
7405
+ quality: 1,
7406
+ what: 'CSS-specified border or outline invisible?'
7407
+ }
7408
+ }
7409
+ }
7410
+ },
7196
7411
  allCaps: {
7197
7412
  summary: 'all-capital text',
7198
7413
  why: 'Text is difficult to read',
@@ -8155,6 +8370,21 @@ exports.issues = {
8155
8370
  }
8156
8371
  }
8157
8372
  },
8373
+ formSurpriseRisk: {
8374
+ summary: 'form interaction changes content?',
8375
+ why: 'User experiences unexpected document change when using a form',
8376
+ wcag: '3.2.5',
8377
+ weight: 1,
8378
+ tools: {
8379
+ ibm: {
8380
+ form_interaction_review: {
8381
+ variable: false,
8382
+ quality: 1,
8383
+ what: 'User should be informed in advance when interacting with content changes context'
8384
+ }
8385
+ }
8386
+ }
8387
+ },
8158
8388
  labelClash: {
8159
8389
  summary: 'label types incompatible',
8160
8390
  why: 'User cannot get reliable help on the topics of form items',
@@ -8455,7 +8685,7 @@ exports.issues = {
8455
8685
  animationM: {
8456
8686
  variable: false,
8457
8687
  quality: 1,
8458
- what: 'Animation may fail to give user a pause, stop, or hide mechanism'
8688
+ what: 'Animation fails to provide a pause, stop, or hide mechanism?'
8459
8689
  }
8460
8690
  },
8461
8691
  testaro: {
@@ -8819,7 +9049,7 @@ exports.issues = {
8819
9049
  audio_alternativeA: {
8820
9050
  variable: false,
8821
9051
  quality: 1,
8822
- what: 'Referenced description or another text alternative may be missing'
9052
+ what: 'Referenced description or another text alternative is missing?'
8823
9053
  }
8824
9054
  }
8825
9055
  }
@@ -8892,21 +9122,28 @@ exports.issues = {
8892
9122
  wcag: '1.2.2',
8893
9123
  weight: 1,
8894
9124
  tools: {
9125
+ ibm: {
9126
+ caption_track_exists: {
9127
+ variable: false,
9128
+ quality: 1,
9129
+ what: 'video element has no text alternative for any meaningful audio content?'
9130
+ }
9131
+ },
8895
9132
  wave: {
8896
9133
  html5_video_audio: {
8897
9134
  variable: false,
8898
9135
  quality: 1,
8899
- what: 'video or audio element may have no or incorrect captions, transcript, or audio description'
9136
+ what: 'video or audio element has no or incorrect captions, transcript, or audio description?'
8900
9137
  },
8901
9138
  audio_video: {
8902
9139
  variable: false,
8903
9140
  quality: 1,
8904
- what: 'audio or video file or link may have no or incorrect captions, transcript, or audio description'
9141
+ what: 'audio or video file or link has no or incorrect captions, transcript, or audio description?'
8905
9142
  },
8906
9143
  youtube_video: {
8907
9144
  variable: false,
8908
9145
  quality: 1,
8909
- what: 'YouTube video may have no or incorrect captions'
9146
+ what: 'YouTube video has no or incorrect captions?'
8910
9147
  }
8911
9148
  }
8912
9149
  }
@@ -9002,7 +9239,14 @@ exports.issues = {
9002
9239
  'AAA.1_4_10.C32,C31,C33,C38,SCR34,G206': {
9003
9240
  variable: false,
9004
9241
  quality: 1,
9005
- what: 'Fixed-position element may force bidirectional scrolling'
9242
+ what: 'Fixed-position element forces bidirectional scrolling?'
9243
+ }
9244
+ },
9245
+ wax: {
9246
+ 'This element has "position: fixed". This may require scrolling in two dimensions, which is considered a failure of this Success Criterion.': {
9247
+ variable: false,
9248
+ quality: 1,
9249
+ what: 'Fixed-position element requires scrolling in two dimensions?'
9006
9250
  }
9007
9251
  }
9008
9252
  }
@@ -9093,6 +9337,13 @@ exports.issues = {
9093
9337
  what: 'First focusable element is not a link to the main content'
9094
9338
  }
9095
9339
  },
9340
+ ibm: {
9341
+ html_skipnav_exists: {
9342
+ variable: false,
9343
+ quality: 1,
9344
+ what: 'Provide a way to bypass blocks of content repeated on multiple pages'
9345
+ }
9346
+ },
9096
9347
  qualWeb: {
9097
9348
  'QW-ACT-R72': {
9098
9349
  variable: false,
@@ -9128,6 +9379,13 @@ exports.issues = {
9128
9379
  quality: 1,
9129
9380
  what: 'Submit button not provided'
9130
9381
  }
9382
+ },
9383
+ wax: {
9384
+ 'This form does not contain a submit button, which creates issues for those who cannot submit the form using the keyboard. Submit buttons are INPUT elements with type attribute "submit" or "image", or BUTTON elements with type "submit" or omitted/invalid.': {
9385
+ variable: false,
9386
+ quality: 1,
9387
+ what: 'Form has no ubmit button'
9388
+ }
9131
9389
  }
9132
9390
  }
9133
9391
  },
@@ -9171,7 +9429,7 @@ exports.issues = {
9171
9429
  noscript: {
9172
9430
  variable: false,
9173
9431
  quality: 1,
9174
- what: 'noscript element may fail to contain an accessible equivalent or alternative'
9432
+ what: 'noscript element fails to contain an accessible equivalent or alternative?'
9175
9433
  }
9176
9434
  }
9177
9435
  }
@@ -9209,7 +9467,7 @@ exports.issues = {
9209
9467
  'The inputmode attribute is not supported in all browsers. Please be sure to test, and consider using a polyfill.': {
9210
9468
  variable: false,
9211
9469
  quality: 1,
9212
- what: 'inputmode attribute may be unsupported by some browsers'
9470
+ what: 'inputmode attribute is unsupported by some browsers'
9213
9471
  }
9214
9472
  }
9215
9473
  }
@@ -9331,6 +9589,13 @@ exports.issues = {
9331
9589
  what: 'font element is obsolete'
9332
9590
  }
9333
9591
  },
9592
+ ibm: {
9593
+ frame_src_valid: {
9594
+ variable: false,
9595
+ quality: 1,
9596
+ what: 'frame element is obsolete, and a frame with non-HTML content must be made accessible'
9597
+ }
9598
+ },
9334
9599
  nuVal: {
9335
9600
  'The center element is obsolete. Use CSS instead.': {
9336
9601
  variable: false,