testaro-issues 0.5.2 → 0.7.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/dist/index.cjs CHANGED
@@ -59,6 +59,12 @@ const issuesData = {
59
59
  "wcag": "2.2.2",
60
60
  "weight": 3
61
61
  },
62
+ "animationTriggered": {
63
+ "summary": "interaction triggers unpreventable animation",
64
+ "why": "Motion-sensitive user may suffer harm",
65
+ "wcag": "2.3.3",
66
+ "weight": 3
67
+ },
62
68
  "appletNoText": {
63
69
  "summary": "applet not named",
64
70
  "why": "User cannot get help on how to use a custom item",
@@ -109,7 +115,7 @@ const issuesData = {
109
115
  },
110
116
  "ariaRedundant": {
111
117
  "summary": "aria attribute redundant",
112
- "why": "Document includes unnecessary code",
118
+ "why": "Page includes unnecessary code",
113
119
  "wcag": "4.1.2",
114
120
  "weight": 1
115
121
  },
@@ -145,7 +151,7 @@ const issuesData = {
145
151
  },
146
152
  "atRuleInvalid": {
147
153
  "summary": "invalid at-rule",
148
- "why": "Document cannot be properly displayed in particular contexts",
154
+ "why": "Page cannot be properly displayed in particular contexts",
149
155
  "wcag": "4.1",
150
156
  "weight": 3
151
157
  },
@@ -163,7 +169,7 @@ const issuesData = {
163
169
  },
164
170
  "attributeObsolete": {
165
171
  "summary": "attribute obsolete",
166
- "why": "Document includes obsolete code that the browser may fail to process",
172
+ "why": "Page includes obsolete code that the browser may fail to process",
167
173
  "wcag": "4.1",
168
174
  "weight": 3
169
175
  },
@@ -191,6 +197,12 @@ const issuesData = {
191
197
  "wcag": "1.2.1",
192
198
  "weight": 1
193
199
  },
200
+ "autoAuthBanned": {
201
+ "summary": "login automation prohibited",
202
+ "why": "User cannot get help needed for logging in",
203
+ "wcag": "3.3.8",
204
+ "weight": 4
205
+ },
194
206
  "autocompleteBad": {
195
207
  "summary": "autocomplete invalid",
196
208
  "why": "User cannot get help entering personal information in a form item",
@@ -291,7 +303,7 @@ const issuesData = {
291
303
  "boxInvisibleRisk": {
292
304
  "summary": "border or outline invisible?",
293
305
  "why": "User cannot perceive the boundary of an item",
294
- "wcag": "2.5.8",
306
+ "wcag": "1.4.11",
295
307
  "weight": 1
296
308
  },
297
309
  "boxSizeAbsolute": {
@@ -300,15 +312,21 @@ const issuesData = {
300
312
  "wcag": "1.4.4",
301
313
  "weight": 3
302
314
  },
315
+ "brailleOnly": {
316
+ "summary": "element has only a Braille name or role",
317
+ "why": "User cannot get help understanding an item",
318
+ "wcag": "4.1.2",
319
+ "weight": 4
320
+ },
303
321
  "browserSupportRisk": {
304
322
  "summary": "inputmode attribute",
305
- "why": "Document may include code that the browser cannot process",
323
+ "why": "Page may include code that the browser cannot process",
306
324
  "wcag": "4.1",
307
325
  "weight": 1
308
326
  },
309
327
  "buttonAlt": {
310
328
  "summary": "button has alt",
311
- "why": "User cannot get help explaing a button",
329
+ "why": "User cannot get help explaining a button",
312
330
  "wcag": "4.1.2",
313
331
  "weight": 4
314
332
  },
@@ -358,7 +376,7 @@ const issuesData = {
358
376
  "clickOnly": {
359
377
  "summary": "name dubiously mouse-specific",
360
378
  "why": "User may misunderstand how to activate a link",
361
- "wcag": "2.4.4",
379
+ "wcag": "2.1.1",
362
380
  "weight": 1
363
381
  },
364
382
  "colorNamedRisk": {
@@ -388,7 +406,7 @@ const issuesData = {
388
406
  "contentHidden": {
389
407
  "summary": "page hidden",
390
408
  "why": "User cannot get the page content",
391
- "wcag": "2.4.7",
409
+ "wcag": "1",
392
410
  "weight": 4,
393
411
  "max": 1
394
412
  },
@@ -442,7 +460,7 @@ const issuesData = {
442
460
  },
443
461
  "cssInvalid": {
444
462
  "summary": "CSS invalid",
445
- "why": "Document cannot be properly displayed",
463
+ "why": "Page cannot be properly displayed",
446
464
  "wcag": "4.1",
447
465
  "weight": 3
448
466
  },
@@ -531,9 +549,9 @@ const issuesData = {
531
549
  "weight": 1
532
550
  },
533
551
  "directionRisk": {
534
- "summary": "dubious direction",
535
- "why": "Item may behave incorrectly",
536
- "wcag": "1.3.2",
552
+ "summary": "text direction wrong?",
553
+ "why": "Helper may misread text to the user",
554
+ "wcag": "4.1",
537
555
  "weight": 1
538
556
  },
539
557
  "divInTable": {
@@ -552,21 +570,21 @@ const issuesData = {
552
570
  "docTypeBad": {
553
571
  "summary": "DOCTYPE invalid",
554
572
  "why": "Browser processes the page improperly",
555
- "wcag": "1.3.1",
573
+ "wcag": "4.1",
556
574
  "weight": 3,
557
575
  "max": 1
558
576
  },
559
577
  "docTypeMisplaced": {
560
578
  "summary": "DOCTYPE in invalid location",
561
579
  "why": "Browser processes the page improperly",
562
- "wcag": "1.3.1",
580
+ "wcag": "4.1",
563
581
  "weight": 4,
564
582
  "max": 1
565
583
  },
566
584
  "docTypeMissing": {
567
585
  "summary": "DOCTYPE missing",
568
586
  "why": "Browser processes the page improperly",
569
- "wcag": "1.3.1",
587
+ "wcag": "4.1",
570
588
  "weight": 4,
571
589
  "max": 1
572
590
  },
@@ -576,16 +594,22 @@ const issuesData = {
576
594
  "wcag": "1.3.6",
577
595
  "weight": 3
578
596
  },
597
+ "dragAlt": {
598
+ "summary": "no single-pointer alternative to dragging",
599
+ "why": "Click-only user cannot perform an operation",
600
+ "wcag": "2.5.7",
601
+ "weight": 4
602
+ },
579
603
  "duplicateAttribute": {
580
604
  "summary": "duplicate attribute",
581
605
  "why": "Browser processes the page improperly",
582
- "wcag": "4.1.1",
606
+ "wcag": "4.1",
583
607
  "weight": 2
584
608
  },
585
609
  "duplicateID": {
586
610
  "summary": "ID not unique",
587
611
  "why": "User may be pointed to the wrong item",
588
- "wcag": "4.1.1",
612
+ "wcag": "4.1",
589
613
  "weight": 4
590
614
  },
591
615
  "editableHow": {
@@ -602,8 +626,8 @@ const issuesData = {
602
626
  },
603
627
  "elementClosure": {
604
628
  "summary": "element closure invalid",
605
- "why": "Document contains invalid code",
606
- "wcag": "4.1.1",
629
+ "why": "Page contains invalid code",
630
+ "wcag": "4.1",
607
631
  "weight": 3
608
632
  },
609
633
  "elementLanguageBad": {
@@ -614,7 +638,7 @@ const issuesData = {
614
638
  },
615
639
  "elementObsolete": {
616
640
  "summary": "element obsolete",
617
- "why": "Document includes obsolete code that the browser may fail to process",
641
+ "why": "Page includes obsolete code that the browser may fail to process",
618
642
  "wcag": "4.1",
619
643
  "weight": 3
620
644
  },
@@ -627,7 +651,7 @@ const issuesData = {
627
651
  "encodingBad": {
628
652
  "summary": "text not Unicode-compliant",
629
653
  "why": "User cannot read all of the text",
630
- "wcag": "3.1.3",
654
+ "wcag": "4.1",
631
655
  "weight": 4
632
656
  },
633
657
  "encodingMisdeclared": {
@@ -664,7 +688,7 @@ const issuesData = {
664
688
  },
665
689
  "fatalError": {
666
690
  "summary": "fatal error",
667
- "why": "Document prevents testing for accessibility",
691
+ "why": "Page prevents testing for accessibility",
668
692
  "wcag": "4.1",
669
693
  "weight": 4,
670
694
  "max": 1
@@ -689,7 +713,7 @@ const issuesData = {
689
713
  },
690
714
  "flash": {
691
715
  "summary": "flash content",
692
- "why": "Document includes code that may not work and may jeopardize user security",
716
+ "why": "Page includes code that may not work and may jeopardize user security",
693
717
  "wcag": "4.1",
694
718
  "weight": 1,
695
719
  "max": 1
@@ -724,6 +748,12 @@ const issuesData = {
724
748
  "wcag": "4.1.2",
725
749
  "weight": 3
726
750
  },
751
+ "focusCovered": {
752
+ "summary": "focused element covered",
753
+ "why": "User cannot see which item will be operated on",
754
+ "wcag": "2.4.11",
755
+ "weight": 4
756
+ },
727
757
  "focusDiscrepancy": {
728
758
  "summary": "Tab-focusable elements wrong",
729
759
  "why": "Item selections by a keyboard-only user are useless or impossible",
@@ -754,6 +784,12 @@ const issuesData = {
754
784
  "wcag": "2.4.7",
755
785
  "weight": 1
756
786
  },
787
+ "focusSurprise": {
788
+ "summary": "autofocus unexpected",
789
+ "why": "Unexpected navigation to an item confuses the user",
790
+ "wcag": "3.2.5",
791
+ "weight": 2
792
+ },
757
793
  "fontSizeAbsolute": {
758
794
  "summary": "font size absolute",
759
795
  "why": "User cannot adjust the text size for readability",
@@ -817,7 +853,7 @@ const issuesData = {
817
853
  },
818
854
  "frameSandboxRisk": {
819
855
  "summary": "iframe sandbox attributes risky",
820
- "why": "Document may be unsafe to use",
856
+ "why": "Page may be unsafe to use",
821
857
  "wcag": "4.1",
822
858
  "weight": 2
823
859
  },
@@ -862,7 +898,7 @@ const issuesData = {
862
898
  "headElementsBad": {
863
899
  "summary": "element in head invalid",
864
900
  "why": "Browser processes the page improperly",
865
- "wcag": "4.1.1",
901
+ "wcag": "4.1",
866
902
  "weight": 3
867
903
  },
868
904
  "headingConfusion": {
@@ -929,7 +965,7 @@ const issuesData = {
929
965
  "hideFailureRisk": {
930
966
  "summary": "false aria-hidden value risky",
931
967
  "why": "User may be misled by erroneously hidden or revealed page content",
932
- "wcag": "2.4.6",
968
+ "wcag": "1.3.1",
933
969
  "weight": 1
934
970
  },
935
971
  "horizontalSpacingFrozen": {
@@ -941,7 +977,7 @@ const issuesData = {
941
977
  "hoverIndication": {
942
978
  "summary": "hover indication poor",
943
979
  "why": "User cannot explore the page reliably with a mouse",
944
- "wcag": "3.3.2",
980
+ "wcag": "2.4",
945
981
  "weight": 3
946
982
  },
947
983
  "hoverSurprise": {
@@ -962,6 +998,12 @@ const issuesData = {
962
998
  "wcag": "1.3.1",
963
999
  "weight": 4
964
1000
  },
1001
+ "iframeConfusion": {
1002
+ "summary": "different iframes named identically",
1003
+ "why": "User gets incorrect help about parts of a page",
1004
+ "wcag": "4.1.2",
1005
+ "weight": 1
1006
+ },
965
1007
  "iframeTitleBad": {
966
1008
  "summary": "iframe not named",
967
1009
  "why": "User cannot get help on the topic of an embedded page",
@@ -1010,6 +1052,12 @@ const issuesData = {
1010
1052
  "wcag": "1.1.1",
1011
1053
  "weight": 4
1012
1054
  },
1055
+ "imageMapServerSide": {
1056
+ "summary": "image map is server-side",
1057
+ "why": "Keyboard-only user cannot choose a region of an image",
1058
+ "wcag": "2.1.1",
1059
+ "weight": 4
1060
+ },
1013
1061
  "imageNoText": {
1014
1062
  "summary": "image not named",
1015
1063
  "why": "User cannot get help to know what is in an image",
@@ -1094,6 +1142,18 @@ const issuesData = {
1094
1142
  "wcag": "4.1.2",
1095
1143
  "weight": 3
1096
1144
  },
1145
+ "inputRepeat": {
1146
+ "summary": "form requires non-automatic duplicate re-entry",
1147
+ "why": "Form completion is slower and more difficult than necessary",
1148
+ "wcag": "3.3.7",
1149
+ "weight": 4
1150
+ },
1151
+ "inputSurprise": {
1152
+ "summary": "operating on an input unexpectedly alters the page",
1153
+ "why": "User cannot predict the effect of using a form",
1154
+ "wcag": "3.2.2",
1155
+ "weight": 4
1156
+ },
1097
1157
  "internalLinkBroken": {
1098
1158
  "summary": "internal link broken",
1099
1159
  "why": "User cannot reach a promised page location",
@@ -1150,7 +1210,7 @@ const issuesData = {
1150
1210
  },
1151
1211
  "labeledHidden": {
1152
1212
  "summary": "control hidden but labeled",
1153
- "why": "Document includes unnecessary code",
1213
+ "why": "Page includes unnecessary code",
1154
1214
  "wcag": "1.3.1",
1155
1215
  "weight": 1
1156
1216
  },
@@ -1258,13 +1318,13 @@ const issuesData = {
1258
1318
  },
1259
1319
  "linkElementBad": {
1260
1320
  "summary": "link element invalid",
1261
- "why": "Document fails to get a needed external resource",
1321
+ "why": "Page fails to get a needed external resource",
1262
1322
  "wcag": "1.3.1",
1263
1323
  "weight": 4
1264
1324
  },
1265
1325
  "linkElementMisplaced": {
1266
1326
  "summary": "link element misplaced",
1267
- "why": "Document fails to get a needed external resource",
1327
+ "why": "Page fails to get a needed external resource",
1268
1328
  "wcag": "1.3.1",
1269
1329
  "weight": 4
1270
1330
  },
@@ -1459,8 +1519,8 @@ const issuesData = {
1459
1519
  },
1460
1520
  "nestingBad": {
1461
1521
  "summary": "nesting invalid",
1462
- "why": "Document contains invalid code",
1463
- "wcag": "4.1.1",
1522
+ "why": "Page contains invalid code",
1523
+ "wcag": "4.1",
1464
1524
  "weight": 3
1465
1525
  },
1466
1526
  "newTabSurprise": {
@@ -1484,7 +1544,7 @@ const issuesData = {
1484
1544
  },
1485
1545
  "nonElement": {
1486
1546
  "summary": "element unknown",
1487
- "why": "Document includes an unknown element that the browser cannot process",
1547
+ "why": "Page includes an unknown element that the browser cannot process",
1488
1548
  "wcag": "4.1",
1489
1549
  "weight": 4
1490
1550
  },
@@ -1508,8 +1568,8 @@ const issuesData = {
1508
1568
  },
1509
1569
  "nonWebLink": {
1510
1570
  "summary": "link to non-web resource",
1511
- "why": "Document points to harder-to-use resources",
1512
- "wcag": "1.3.3",
1571
+ "why": "Page points to harder-to-use resources",
1572
+ "wcag": "4.1",
1513
1573
  "weight": 1
1514
1574
  },
1515
1575
  "noOptionFocusable": {
@@ -1533,7 +1593,7 @@ const issuesData = {
1533
1593
  "objectAudioRisk": {
1534
1594
  "summary": "non-audio element plays audio?",
1535
1595
  "why": "User may get inadequate help consuming audio content",
1536
- "wcag": "1.1.1",
1596
+ "wcag": "3.2",
1537
1597
  "weight": 1
1538
1598
  },
1539
1599
  "objectBlurKeyboardRisk": {
@@ -1556,10 +1616,16 @@ const issuesData = {
1556
1616
  },
1557
1617
  "obsolete": {
1558
1618
  "summary": "code obsolete",
1559
- "why": "Document contains code that is no longer standard",
1619
+ "why": "Page contains code that is no longer standard",
1560
1620
  "wcag": "4.1",
1561
1621
  "weight": 3
1562
1622
  },
1623
+ "obsoleteMotion": {
1624
+ "summary": "obsolete element creates non-stoppable motion",
1625
+ "why": "Motion-sensitive user suffers harm",
1626
+ "wcag": "2.2.2",
1627
+ "weight": 4
1628
+ },
1563
1629
  "optionNoText": {
1564
1630
  "summary": "option not named",
1565
1631
  "why": "User cannot get help to understand an option",
@@ -1622,7 +1688,7 @@ const issuesData = {
1622
1688
  "pageTitleBad": {
1623
1689
  "summary": "page title invalid",
1624
1690
  "why": "Browser processes the page improperly",
1625
- "wcag": "1.3.1",
1691
+ "wcag": "2.4.2",
1626
1692
  "weight": 3,
1627
1693
  "max": 1
1628
1694
  },
@@ -1746,9 +1812,15 @@ const issuesData = {
1746
1812
  "wcag": "3.2.4",
1747
1813
  "weight": 1
1748
1814
  },
1815
+ "reflow": {
1816
+ "summary": "non-reflowing content forces 2D scrolling",
1817
+ "why": "Reading content is slow and difficult",
1818
+ "wcag": "1.4.10",
1819
+ "weight": 4
1820
+ },
1749
1821
  "refresh": {
1750
1822
  "summary": "element reloads or redirects",
1751
- "why": "Document change may surprise a user",
1823
+ "why": "Page change may surprise a user",
1752
1824
  "wcag": "2.2.1",
1753
1825
  "weight": 3
1754
1826
  },
@@ -1821,7 +1893,7 @@ const issuesData = {
1821
1893
  },
1822
1894
  "roleRedundant": {
1823
1895
  "summary": "role redundant",
1824
- "why": "Document includes unnecessary code",
1896
+ "why": "Page includes unnecessary code",
1825
1897
  "wcag": "4.1.2",
1826
1898
  "weight": 1
1827
1899
  },
@@ -1918,7 +1990,7 @@ const issuesData = {
1918
1990
  },
1919
1991
  "specRulesScriptBad": {
1920
1992
  "summary": "speculation rules script element invalid",
1921
- "why": "Document navigation performs poorly",
1993
+ "why": "Page navigation performs poorly",
1922
1994
  "wcag": "1.3.1",
1923
1995
  "weight": 1
1924
1996
  },
@@ -2091,6 +2163,12 @@ const issuesData = {
2091
2163
  "wcag": "2.1.1",
2092
2164
  "weight": 2
2093
2165
  },
2166
+ "tabOrderBad": {
2167
+ "summary": "keyboard navigation sequence wrong",
2168
+ "why": "Sequential navigation moves in a meaningless or useless order",
2169
+ "wcag": "2.4.3",
2170
+ "weight": 3
2171
+ },
2094
2172
  "tabularTableless": {
2095
2173
  "summary": "table not marked as such",
2096
2174
  "why": "Helper misinforms a user about whether items are cells of a table",
@@ -2124,7 +2202,7 @@ const issuesData = {
2124
2202
  "textAreaNoText": {
2125
2203
  "summary": "text area not named",
2126
2204
  "why": "User cannot get help on what information to enter in a form item",
2127
- "wcag": "1.3.1",
2205
+ "wcag": "4.1.2",
2128
2206
  "weight": 4
2129
2207
  },
2130
2208
  "textContentBad": {
@@ -2160,13 +2238,13 @@ const issuesData = {
2160
2238
  "titleLong": {
2161
2239
  "summary": "title long",
2162
2240
  "why": "Hovering makes an overly verbose explanation pop up",
2163
- "wcag": "3.1.5",
2241
+ "wcag": "1.3.1",
2164
2242
  "weight": 2
2165
2243
  },
2166
2244
  "titleNotText": {
2167
2245
  "summary": "title contains ASCII art",
2168
2246
  "why": "Hovering makes a hard-to-understand explanation pop up",
2169
- "wcag": "3.1.5",
2247
+ "wcag": "1.3.1",
2170
2248
  "weight": 2
2171
2249
  },
2172
2250
  "titleRedundant": {
@@ -2177,13 +2255,13 @@ const issuesData = {
2177
2255
  },
2178
2256
  "typeBad": {
2179
2257
  "summary": "type invalid",
2180
- "why": "Document styles are at risk of corruption",
2258
+ "why": "Page styles are at risk of corruption",
2181
2259
  "wcag": "1.3.1",
2182
2260
  "weight": 4
2183
2261
  },
2184
2262
  "typeRedundant": {
2185
2263
  "summary": "type redundant",
2186
- "why": "Document includes unnecessary code",
2264
+ "why": "Page includes unnecessary code",
2187
2265
  "wcag": "1.3.1",
2188
2266
  "weight": 1
2189
2267
  },
@@ -2214,7 +2292,7 @@ const issuesData = {
2214
2292
  "videoNoAudioDescription": {
2215
2293
  "summary": "video audio description missing",
2216
2294
  "why": "User cannot get help hearing video content as speech",
2217
- "wcag": "1.2.1",
2295
+ "wcag": "1.2.5",
2218
2296
  "weight": 4
2219
2297
  },
2220
2298
  "videoNoAudioTrack": {
@@ -2224,7 +2302,7 @@ const issuesData = {
2224
2302
  "weight": 4
2225
2303
  },
2226
2304
  "videoNoText": {
2227
- "summary": "video not named",
2305
+ "summary": "no video text alternative",
2228
2306
  "why": "User cannot get help reading video content as text",
2229
2307
  "wcag": "1.2.2",
2230
2308
  "weight": 4
@@ -2232,7 +2310,7 @@ const issuesData = {
2232
2310
  "videoNoTranscript": {
2233
2311
  "summary": "video transcript missing",
2234
2312
  "why": "User cannot get help reading video content as text",
2235
- "wcag": "1.2.2",
2313
+ "wcag": "1.2.1",
2236
2314
  "weight": 4
2237
2315
  },
2238
2316
  "visibleBulk": {
@@ -2248,6 +2326,12 @@ const issuesData = {
2248
2326
  "wcag": "2.5.3",
2249
2327
  "weight": 3
2250
2328
  },
2329
+ "visualSequenceDeviant": {
2330
+ "summary": "visual and programmatic content sequences differ",
2331
+ "why": "Sequence of page items confuses the user",
2332
+ "wcag": "1.3.2",
2333
+ "weight": 2
2334
+ },
2251
2335
  "zIndexNotZero": {
2252
2336
  "summary": "z-index not zero",
2253
2337
  "why": "User cannot predict the effect of clicking",
@@ -2460,7 +2544,7 @@ const rulesData = {
2460
2544
  "r1": {
2461
2545
  "issueID": "pageTitle",
2462
2546
  "quality": 1,
2463
- "what": "Document has no valid title element"
2547
+ "what": "Page has no valid title element"
2464
2548
  },
2465
2549
  "r53": {
2466
2550
  "issueID": "headingLevelSkip",
@@ -2470,7 +2554,7 @@ const rulesData = {
2470
2554
  "r59": {
2471
2555
  "issueID": "headingNone",
2472
2556
  "quality": 1,
2473
- "what": "Document has no headings"
2557
+ "what": "Page has no headings"
2474
2558
  },
2475
2559
  "r61": {
2476
2560
  "issueID": "h1Not1st",
@@ -2663,13 +2747,13 @@ const rulesData = {
2663
2747
  "motion_actuation": {
2664
2748
  "issueID": "ignorable",
2665
2749
  "quality": 0,
2666
- "what": "Document listens for device motion or rotation",
2750
+ "what": "Page listens for device motion or rotation",
2667
2751
  "whyIgnore": "speculative"
2668
2752
  },
2669
2753
  "overlay": {
2670
2754
  "issueID": "ignorable",
2671
2755
  "quality": 0,
2672
- "what": "Document contains a commercial overlay modifier that may fail or invalidate test results",
2756
+ "what": "Page contains a commercial overlay modifier that may fail or invalidate test results",
2673
2757
  "whyIgnore": "unreliable"
2674
2758
  },
2675
2759
  "object_missing_body": {
@@ -3018,7 +3102,7 @@ const rulesData = {
3018
3102
  "no_headings": {
3019
3103
  "issueID": "headingNone",
3020
3104
  "quality": 1,
3021
- "what": "Document has no headings"
3105
+ "what": "Page has no headings"
3022
3106
  },
3023
3107
  "h1_must_be": {
3024
3108
  "issueID": "h1Not1",
@@ -3118,7 +3202,7 @@ const rulesData = {
3118
3202
  "main_element_only_one": {
3119
3203
  "issueID": "mainNot1",
3120
3204
  "quality": 1,
3121
- "what": "Document has more than 1 main landmark"
3205
+ "what": "Page has more than 1 main landmark"
3122
3206
  },
3123
3207
  "contentinfo_landmark_only_one": {
3124
3208
  "issueID": "footerNot1",
@@ -3278,7 +3362,7 @@ const rulesData = {
3278
3362
  "flash_content": {
3279
3363
  "issueID": "flash",
3280
3364
  "quality": 1,
3281
- "what": "Document contains Adobe Flash content"
3365
+ "what": "Page contains Adobe Flash content"
3282
3366
  },
3283
3367
  "obsolete_html_attributes": {
3284
3368
  "issueID": "attributeObsolete",
@@ -3298,7 +3382,7 @@ const rulesData = {
3298
3382
  "captcha_google": {
3299
3383
  "issueID": "captcha2",
3300
3384
  "quality": 1,
3301
- "what": "Document employs Google CAPTCHA version 2"
3385
+ "what": "Page employs Google CAPTCHA version 2"
3302
3386
  }
3303
3387
  },
3304
3388
  "variable": {}
@@ -3531,7 +3615,7 @@ const rulesData = {
3531
3615
  "document-title": {
3532
3616
  "issueID": "pageTitle",
3533
3617
  "quality": 1,
3534
- "what": "Document contains no title element"
3618
+ "what": "Page contains no title element"
3535
3619
  },
3536
3620
  "heading-order": {
3537
3621
  "issueID": "headingLevelSkip",
@@ -3541,7 +3625,7 @@ const rulesData = {
3541
3625
  "page-has-heading-one": {
3542
3626
  "issueID": "h1Not1",
3543
3627
  "quality": 1,
3544
- "what": "Document contains no level-one heading"
3628
+ "what": "Page contains no level-one heading"
3545
3629
  },
3546
3630
  "p-as-heading": {
3547
3631
  "issueID": "pseudoHeadingRisk",
@@ -4532,12 +4616,12 @@ const rulesData = {
4532
4616
  "E-AAA.2_4_2.H25.1.NoTitleEl": {
4533
4617
  "issueID": "pageTitle",
4534
4618
  "quality": 1,
4535
- "what": "Document head element contains no title element"
4619
+ "what": "Page head element contains no title element"
4536
4620
  },
4537
4621
  "E-AAA.2_4_2.H25.1.EmptyTitle": {
4538
4622
  "issueID": "pageTitle",
4539
4623
  "quality": 1,
4540
- "what": "Document head element contains an empty title element"
4624
+ "what": "Page head element contains an empty title element"
4541
4625
  },
4542
4626
  "E-AAA.1_3_1_AAA.G141": {
4543
4627
  "issueID": "headingStructure",
@@ -8549,723 +8633,1568 @@ const rulesData = {
8549
8633
  }
8550
8634
  }
8551
8635
  },
8552
- "qualWeb": {
8636
+ "pour": {
8553
8637
  "invariant": {
8554
- "QW-ACT-R10": {
8555
- "issueID": "ignorable",
8638
+ "document-title": {
8639
+ "issueID": "pageTitle",
8556
8640
  "quality": 1,
8557
- "what": "iframe elements with identical accessible names have different purposes (on invisible elements)",
8558
- "whyIgnore": "invalid"
8641
+ "what": "Page has no title element"
8559
8642
  },
8560
- "QW-ACT-R13": {
8561
- "issueID": "ignorable",
8643
+ "html-lang": {
8644
+ "issueID": "pageLanguage",
8562
8645
  "quality": 1,
8563
- "what": "Element with aria-hidden has focusable content",
8564
- "whyIgnore": "invalid"
8646
+ "what": "html element has no lang attribute or an invalid one"
8565
8647
  },
8566
- "QW-ACT-R41": {
8567
- "issueID": "ignorable",
8648
+ "valid-lang-parts": {
8649
+ "issueID": "languageChange",
8568
8650
  "quality": 1,
8569
- "what": "Error message describes no invalid form field value",
8570
- "whyIgnore": "speculative"
8651
+ "what": "lang attribute on an element has an invalid value"
8571
8652
  },
8572
- "QW-ACT-R52": {
8573
- "issueID": "ignorable",
8574
- "quality": 0,
8575
- "what": "video element visual-only content has no description track (description tracks and this ACT rule have been deprecated)",
8576
- "whyIgnore": "irrelevant"
8653
+ "image-alt": {
8654
+ "issueID": "imageNoText",
8655
+ "quality": 1,
8656
+ "what": "Image has no text alternative"
8577
8657
  },
8578
- "QW-ACT-R57": {
8579
- "issueID": "ignorable",
8580
- "quality": 0,
8581
- "what": "video element visual content has no description track (description tracks and this ACT rule have been deprecated)",
8582
- "whyIgnore": "irrelevant"
8658
+ "svg-img-alt": {
8659
+ "issueID": "svgImageNoText",
8660
+ "quality": 1,
8661
+ "what": "SVG element has no accessible name"
8583
8662
  },
8584
- "QW-ACT-R62": {
8585
- "issueID": "ignorable",
8586
- "quality": 0,
8587
- "what": "Element in the sequential focus order may have no visible focus",
8588
- "whyIgnore": "speculative"
8663
+ "button-name": {
8664
+ "issueID": "buttonNoText",
8665
+ "quality": 1,
8666
+ "what": "Button has no accessible name"
8589
8667
  },
8590
- "QW-ACT-R63": {
8591
- "issueID": "ignorable",
8592
- "quality": 0,
8593
- "what": "Document has no landmark with non-repeated content",
8594
- "whyIgnore": "invalid"
8668
+ "link-name": {
8669
+ "issueID": "linkNoText",
8670
+ "quality": 1,
8671
+ "what": "Link has no accessible name"
8595
8672
  },
8596
- "QW-ACT-R64": {
8597
- "issueID": "ignorable",
8598
- "quality": 0,
8599
- "what": "Document has no heading for non-repeated content",
8600
- "whyIgnore": "invalid"
8673
+ "link-text-generic": {
8674
+ "issueID": "linkVaguenessRisk",
8675
+ "quality": 1,
8676
+ "what": "Link text does not describe the destination"
8601
8677
  },
8602
- "QW-ACT-R73": {
8603
- "issueID": "ignorable",
8604
- "quality": 0,
8605
- "what": "Block of repeated content is not collapsible",
8606
- "whyIgnore": "invalid"
8678
+ "link-text-generic-only": {
8679
+ "issueID": "linkVaguenessRisk",
8680
+ "quality": 1,
8681
+ "what": "Link text alone does not identify its destination"
8607
8682
  },
8608
- "QW-ACT-R74": {
8609
- "issueID": "ignorable",
8610
- "quality": 0,
8611
- "what": "Document has no instrument to move focus to non-repeated content",
8612
- "whyIgnore": "invalid"
8683
+ "form-label": {
8684
+ "issueID": "controlNoText",
8685
+ "quality": 1,
8686
+ "what": "Form control has no label"
8613
8687
  },
8614
- "QW-ACT-R75": {
8615
- "issueID": "ignorable",
8616
- "quality": 0,
8617
- "what": "Blocks of repeated content cannot be bypassed",
8618
- "whyIgnore": "invalid"
8688
+ "autocomplete-valid": {
8689
+ "issueID": "autocompleteBad",
8690
+ "quality": 1,
8691
+ "what": "autocomplete attribute has invalid tokens"
8619
8692
  },
8620
- "QW-BP1": {
8621
- "issueID": "ignorable",
8622
- "quality": 0,
8623
- "what": "h1-h6 may fail to be used to identify headings",
8624
- "whyIgnore": "speculative"
8693
+ "orientation-lock": {
8694
+ "issueID": "cssBansPageRotate",
8695
+ "quality": 1,
8696
+ "what": "CSS locks content to one display orientation"
8625
8697
  },
8626
- "QW-BP2": {
8627
- "issueID": "ignorable",
8698
+ "meta-viewport": {
8699
+ "issueID": "metaBansZoom",
8628
8700
  "quality": 1,
8629
- "what": "Image text alternative is not concise",
8630
- "whyIgnore": "invalid"
8701
+ "what": "Viewport prevents user zoom"
8631
8702
  },
8632
- "QW-BP17": {
8633
- "issueID": "ignorable",
8703
+ "color-contrast": {
8704
+ "issueID": "contrastAA",
8634
8705
  "quality": 1,
8635
- "what": "No link at the beginning of a block of repeated content goes to the end of the block",
8636
- "whyIgnore": "invalid"
8706
+ "what": "Text has insufficient contrast against its background"
8637
8707
  },
8638
- "QW-BP20": {
8639
- "issueID": "ignorable",
8708
+ "frame-title": {
8709
+ "issueID": "iframeTitleBad",
8640
8710
  "quality": 1,
8641
- "what": "Document has more than 1 banner landmark (counts hidden elements)",
8642
- "whyIgnore": "invalid"
8711
+ "what": "Frame has no accessible name"
8643
8712
  },
8644
- "QW-BP22": {
8645
- "issueID": "ignorable",
8713
+ "aria-valid-refs": {
8714
+ "issueID": "ariaReferenceBad",
8646
8715
  "quality": 1,
8647
- "what": "Document has more than 1 element with a main role",
8648
- "whyIgnore": "invalid"
8716
+ "what": "ARIA id refers to no element"
8649
8717
  },
8650
- "QW-BP23": {
8651
- "issueID": "ignorable",
8652
- "quality": .1,
8653
- "what": "Element is not in a true list",
8654
- "whyIgnore": "invalid"
8718
+ "valid-role": {
8719
+ "issueID": "roleBad",
8720
+ "quality": 1,
8721
+ "what": "Element has an invalid role"
8655
8722
  },
8656
- "QW-BP24": {
8657
- "issueID": "ignorable",
8723
+ "aria-hidden-focus": {
8724
+ "issueID": "focusableHidden",
8658
8725
  "quality": 1,
8659
- "what": "ul or ol element has a child other than li, script, or template",
8660
- "whyIgnore": "invalid"
8726
+ "what": "Element has an aria-hidden attribute but is or has a focusable element"
8661
8727
  },
8662
- "QW-BP28": {
8663
- "issueID": "ignorable",
8728
+ "list-structure": {
8729
+ "issueID": "listChild",
8664
8730
  "quality": 1,
8665
- "what": "h1 element missing or used more than once",
8666
- "whyIgnore": "invalid"
8731
+ "what": "List contains a child other than a list item"
8667
8732
  },
8668
- "QW-BP29": {
8669
- "issueID": "ignorable",
8670
- "quality": 0,
8671
- "what": "lang and xml:lang attribute of html element differ",
8672
- "whyIgnore": "invalid"
8733
+ "nested-interactive": {
8734
+ "issueID": "activeEmbedding",
8735
+ "quality": 1,
8736
+ "what": "Interactive control contains another interactive control"
8673
8737
  },
8674
- "QW-WCAG-T4": {
8675
- "issueID": "ignorable",
8676
- "quality": 0,
8677
- "what": "summary attribute is not used to give an overview of a data table",
8678
- "whyIgnore": "invalid"
8738
+ "bypass-blocks": {
8739
+ "issueID": "skipRepeatedContent",
8740
+ "quality": 1,
8741
+ "what": "Page has no way to bypass repeated blocks"
8679
8742
  },
8680
- "QW-WCAG-T8": {
8681
- "issueID": "ignorable",
8743
+ "target-size": {
8744
+ "issueID": "targetTiny",
8682
8745
  "quality": 1,
8683
- "what": "Text alternative is suspect",
8684
- "whyIgnore": "invalid"
8746
+ "what": "Interactive target is smaller than 24 CSS pixels"
8685
8747
  },
8686
- "QW-WCAG-T9": {
8687
- "issueID": "ignorable",
8688
- "quality": 0,
8689
- "what": "Page may fail to be organized using headings",
8690
- "whyIgnore": "speculative"
8748
+ "audio-control": {
8749
+ "issueID": "autoplay",
8750
+ "quality": 1,
8751
+ "what": "Auto-playing audio cannot be stopped or muted"
8691
8752
  },
8692
- "QW-WCAG-T15": {
8693
- "issueID": "ignorable",
8694
- "quality": 0,
8695
- "what": "link element may be used for navigation but not in the head",
8696
- "whyIgnore": "invalid"
8753
+ "pause-stop-hide": {
8754
+ "issueID": "animationLong",
8755
+ "quality": 1,
8756
+ "what": "Moving content cannot be paused"
8697
8757
  },
8698
- "QW-WCAG-T20": {
8699
- "issueID": "ignorable",
8700
- "quality": 0,
8701
- "what": "Link title may fail to describe the link correctly",
8702
- "whyIgnore": "speculative"
8758
+ "media-captions": {
8759
+ "issueID": "videoNoText",
8760
+ "quality": 1,
8761
+ "what": "Video has no captions"
8703
8762
  },
8704
- "QW-WCAG-T23": {
8705
- "issueID": "ignorable",
8706
- "quality": 0,
8707
- "what": "No link at the top of the page goes directly to the main content area",
8708
- "whyIgnore": "invalid"
8763
+ "aria-attr-valid": {
8764
+ "issueID": "ariaAttributeBad",
8765
+ "quality": 1,
8766
+ "what": "ARIA attribute gives the element an invalid name or value"
8709
8767
  },
8710
- "QW-WCAG-T24": {
8711
- "issueID": "ignorable",
8712
- "quality": .5,
8713
- "what": "Script removes the focus when focus is received",
8714
- "whyIgnore": "invalid"
8768
+ "aria-allowed-attr": {
8769
+ "issueID": "ariaAttributeBad",
8770
+ "quality": 1,
8771
+ "what": "ARIA attribute is not allowed for the role of its element"
8715
8772
  },
8716
- "QW-WCAG-T28": {
8717
- "issueID": "ignorable",
8718
- "quality": .8,
8719
- "what": "Font size set to an absolute unit value",
8720
- "whyIgnore": "invalid"
8773
+ "aria-field-name": {
8774
+ "issueID": "inputNoText",
8775
+ "quality": 1,
8776
+ "what": "ARIA field or value widget has no accessible name"
8721
8777
  },
8722
- "QW-WCAG-T31": {
8723
- "issueID": "ignorable",
8778
+ "aria-label-misuse": {
8779
+ "issueID": "nonLabelableRole",
8724
8780
  "quality": 1,
8725
- "what": "Foreground or background color is specified but not both (on invisible elements)",
8726
- "whyIgnore": "invalid"
8781
+ "what": "Plain container has an aria-label or aria-labelledby attribute"
8727
8782
  },
8728
- "QW-WCAG-T32": {
8729
- "issueID": "ignorable",
8783
+ "role-required-aria": {
8784
+ "issueID": "ariaMissing",
8730
8785
  "quality": 1,
8731
- "what": "ol, ul or dl may fail to be used for a list or group of links",
8732
- "whyIgnore": "speculative"
8786
+ "what": "Role is missing a required state or property attribute"
8733
8787
  },
8734
- "QW-WCAG-T35": {
8735
- "issueID": "ignorable",
8788
+ "label-for-valid": {
8789
+ "issueID": "labelForBad",
8736
8790
  "quality": 1,
8737
- "what": "Several elements have this id attribute value",
8738
- "whyIgnore": "invalid"
8791
+ "what": "for attribute of a label refers to no form control"
8739
8792
  },
8740
- "QW-ACT-R18": {
8741
- "issueID": "duplicateID",
8793
+ "listitem-parent": {
8794
+ "issueID": "listItemOrphan",
8742
8795
  "quality": 1,
8743
- "what": "id attribute value is not unique"
8796
+ "what": "li element is not inside a ul or ol element"
8744
8797
  },
8745
- "QW-BP30": {
8746
- "issueID": "duplicateID",
8798
+ "definition-list": {
8799
+ "issueID": "listChild",
8747
8800
  "quality": 1,
8748
- "what": "id attribute value is shared with another element"
8801
+ "what": "dl element contains a child other than dt or dd"
8749
8802
  },
8750
- "QW-BP8": {
8751
- "issueID": "headingImageNoText",
8803
+ "dlitem-parent": {
8804
+ "issueID": "descriptionOrphan",
8752
8805
  "quality": 1,
8753
- "what": "Heading with an image has no accessible name"
8806
+ "what": "dt or dd element is not inside a dl element"
8754
8807
  },
8755
- "QW-ACT-R6": {
8756
- "issueID": "imageButtonNoText",
8808
+ "area-alt": {
8809
+ "issueID": "imageMapAreaNoText",
8757
8810
  "quality": 1,
8758
- "what": "Image button has no accessible name"
8811
+ "what": "Image map area has no text alternative"
8759
8812
  },
8760
- "QW-WCAG-T5": {
8813
+ "object-alt": {
8814
+ "issueID": "objectNoText",
8815
+ "quality": 1,
8816
+ "what": "object element has no text alternative"
8817
+ },
8818
+ "input-image-alt-present": {
8761
8819
  "issueID": "imageButtonNoText",
8762
8820
  "quality": 1,
8763
- "what": "alt attribute not used on an image used as a submit button"
8821
+ "what": "Image input has no alt text"
8764
8822
  },
8765
- "QW-ACT-R17": {
8766
- "issueID": "imageNoText",
8823
+ "multiple-labels": {
8824
+ "issueID": "labelNot1",
8767
8825
  "quality": 1,
8768
- "what": "Image has no accessible name"
8826
+ "what": "Form field has multiple label elements"
8769
8827
  },
8770
- "QW-BP6": {
8771
- "issueID": "titleLong",
8828
+ "meta-refresh": {
8829
+ "issueID": "refresh",
8772
8830
  "quality": 1,
8773
- "what": "title element is too long (more than 64 characters)"
8831
+ "what": "Page uses a timed refresh"
8774
8832
  },
8775
- "QW-BP7": {
8776
- "issueID": "titleNotText",
8833
+ "link-in-text-block": {
8834
+ "issueID": "linkIndication",
8777
8835
  "quality": 1,
8778
- "what": "Title element contains ASCII-art"
8836
+ "what": "Link is not distinguishable from surrounding text without color"
8779
8837
  },
8780
- "QW-ACT-R48": {
8781
- "issueID": "decorativeElementExposed",
8838
+ "p-as-heading": {
8839
+ "issueID": "pseudoHeadingRisk",
8782
8840
  "quality": 1,
8783
- "what": "Element marked as decorative is exposed"
8841
+ "what": "Styled paragraph is used instead of a heading"
8784
8842
  },
8785
- "QW-ACT-R2": {
8786
- "issueID": "pageLanguage",
8843
+ "aria-required-children": {
8844
+ "issueID": "descendantMissing",
8787
8845
  "quality": 1,
8788
- "what": "HTML page has no lang attribute"
8846
+ "what": "ARIA role is missing a required child"
8789
8847
  },
8790
- "QW-ACT-R5": {
8791
- "issueID": "pageLanguageBad",
8848
+ "aria-required-parent": {
8849
+ "issueID": "parentMissing",
8792
8850
  "quality": 1,
8793
- "what": "HTML lang attribute is invalid"
8851
+ "what": "ARIA role is not inside its required parent"
8794
8852
  },
8795
- "QW-ACT-R3": {
8796
- "issueID": "pageLanguageBad",
8853
+ "scrollable-region-focusable": {
8854
+ "issueID": "keyboardScroll",
8797
8855
  "quality": 1,
8798
- "what": "HTML lang and xml:lang do not match"
8856
+ "what": "Scrollable region is not reachable by keyboard"
8799
8857
  },
8800
- "QW-ACT-R22": {
8801
- "issueID": "elementLanguageBad",
8858
+ "table-headers": {
8859
+ "issueID": "tableHeaderless",
8802
8860
  "quality": 1,
8803
- "what": "Element within the body has no valid lang attribute"
8861
+ "what": "Data table has no properly associated header cells"
8804
8862
  },
8805
- "QW-ACT-R42": {
8806
- "issueID": "objectNoText",
8863
+ "color-contrast-enhanced": {
8864
+ "issueID": "contrastAAA",
8807
8865
  "quality": 1,
8808
- "what": "Object element has no non-empty accessible name"
8866
+ "what": "Text contrast can be improved"
8809
8867
  },
8810
- "QW-WCAG-T11": {
8811
- "issueID": "appletNoText",
8868
+ "target-size-enhanced": {
8869
+ "issueID": "targetSmall",
8812
8870
  "quality": 1,
8813
- "what": "Text alternative not provided on an applet element"
8871
+ "what": "Interactive target is smaller than 44 CSS pixels"
8814
8872
  },
8815
- "QW-WCAG-T1": {
8816
- "issueID": "imageMapAreaNoText",
8873
+ "dialog-name": {
8874
+ "issueID": "dialogNoText",
8817
8875
  "quality": 1,
8818
- "what": "Text alternative for an area element of an image map is not provided"
8876
+ "what": "Dialog has no accessible name"
8819
8877
  },
8820
- "QW-WCAG-T6": {
8821
- "issueID": "eventKeyboardRisk",
8878
+ "control-contrast": {
8879
+ "issueID": "contrastAA",
8822
8880
  "quality": 1,
8823
- "what": "Both keyboard and other device-specific functions are not used"
8881
+ "what": "Text inside a form control has insufficient contrast"
8824
8882
  },
8825
- "QW-WCAG-T17": {
8826
- "issueID": "labelConfusionRisk",
8883
+ "non-text-contrast": {
8884
+ "issueID": "boxInvisibleRisk",
8827
8885
  "quality": 1,
8828
- "what": "label not positioned to maximize the predictability of the relationship"
8886
+ "what": "Form field boundary has contrast less than 3:1"
8829
8887
  },
8830
- "QW-ACT-R12": {
8831
- "issueID": "linkNoText",
8888
+ "text-spacing": {
8889
+ "issueID": "horizontalSpacingFrozen",
8832
8890
  "quality": 1,
8833
- "what": "Link has no accessible name"
8891
+ "what": "User adjustment of text spacing is prevented"
8834
8892
  },
8835
- "QW-WCAG-T21": {
8836
- "issueID": "imageLinkNoText",
8893
+ "reflow": {
8894
+ "issueID": "reflow",
8837
8895
  "quality": 1,
8838
- "what": "Accessible name is not provided for an image which is the only content in a link"
8896
+ "what": "Content does not reflow to permit one-dimensional scrolling"
8839
8897
  },
8840
- "QW-WCAG-T7": {
8841
- "issueID": "abbreviationNoTitle",
8898
+ "focus-visible": {
8899
+ "issueID": "focusIndicationBad",
8842
8900
  "quality": 1,
8843
- "what": "Definition for an abbreviation not provided with an abbr element"
8901
+ "what": "Keyboard focus is not visible"
8844
8902
  },
8845
- "QW-ACT-R9": {
8846
- "issueID": "linkTextsSame",
8903
+ "focus-not-obscured": {
8904
+ "issueID": "focusCovered",
8847
8905
  "quality": 1,
8848
- "what": "Links with identical accessible names have different purposes"
8906
+ "what": "Focused element is fully obscured by an overlay"
8849
8907
  },
8850
- "QW-ACT-R44": {
8851
- "issueID": "linkTextsSame",
8908
+ "auth-field-obstruction": {
8909
+ "issueID": "autoAuthBanned",
8852
8910
  "quality": 1,
8853
- "what": "Links with identical accessible names and context serve different purposes"
8911
+ "what": "Login input blocks paste or password managers"
8854
8912
  },
8855
- "QW-BP4": {
8856
- "issueID": "linksNoNav",
8913
+ "embed-alt": {
8914
+ "issueID": "objectNoText",
8857
8915
  "quality": 1,
8858
- "what": "Grouped links are not within a nav element"
8916
+ "what": "embed element has no accessible name"
8859
8917
  },
8860
- "QW-BP13": {
8861
- "issueID": "linkPair",
8918
+ "canvas-alt": {
8919
+ "issueID": "objectNoText",
8862
8920
  "quality": 1,
8863
- "what": "Consecutive links have the same href and one contains an image"
8921
+ "what": "canvas element has no accessible name or fallback"
8864
8922
  },
8865
- "QW-WCAG-T10": {
8866
- "issueID": "linkNameRisk",
8867
- "quality": .8,
8868
- "what": "Link name repeats its image name and/or that name is suspect"
8923
+ "video-loop-motion": {
8924
+ "issueID": "animationLong",
8925
+ "quality": 1,
8926
+ "what": "Looping autoplay video cannot be paused"
8869
8927
  },
8870
- "QW-WCAG-T22": {
8871
- "issueID": "pageNewWindow",
8928
+ "visual-order-divergence": {
8929
+ "issueID": "tabOrderBad",
8872
8930
  "quality": 1,
8873
- "what": "New window opens as soon as a new page is loaded"
8931
+ "what": "CSS reordering makes the tab order diverge from the visual order"
8874
8932
  },
8875
- "QW-ACT-R11": {
8933
+ "audio-transcript": {
8934
+ "issueID": "videoNoTranscript",
8935
+ "quality": 1,
8936
+ "what": "Prerecorded audio-only content has no transcript"
8937
+ },
8938
+ "reading-order-divergence": {
8939
+ "issueID": "visualSequenceDeviant",
8940
+ "quality": 1,
8941
+ "what": "CSS reordering makes the reading order diverge from the visual order"
8942
+ },
8943
+ "drag-alternative": {
8944
+ "issueID": "dragAlt",
8945
+ "quality": 1,
8946
+ "what": "Dragging has no click alternative"
8947
+ },
8948
+ "redundant-entry": {
8949
+ "issueID": "inputRepeat",
8950
+ "quality": 1,
8951
+ "what": "Form asks for the same information twice"
8952
+ },
8953
+ "invoker-target": {
8954
+ "issueID": "ariaReferenceBad",
8955
+ "quality": 1,
8956
+ "what": "popovertarget or commandfor attribute refers to no valid element"
8957
+ },
8958
+ "reduced-motion": {
8959
+ "issueID": "animationTriggered",
8960
+ "quality": 1,
8961
+ "what": "Interaction-triggered motion cannot be switched off"
8962
+ },
8963
+ "on-input-navigation": {
8964
+ "issueID": "inputSurprise",
8965
+ "quality": 1,
8966
+ "what": "Changing a control unexpectedly changes the context"
8967
+ },
8968
+ "error-message-linkage": {
8969
+ "issueID": "errorReferenceBad",
8970
+ "quality": 1,
8971
+ "what": "Field marked invalid has no text error description"
8972
+ },
8973
+ "composite-widget-name": {
8974
+ "issueID": "componentNoText",
8975
+ "quality": 1,
8976
+ "what": "Tab, menu item, option, or tree item has no accessible name"
8977
+ },
8978
+ "summary-name": {
8876
8979
  "issueID": "buttonNoText",
8877
8980
  "quality": 1,
8878
- "what": "button element has no accessible name"
8981
+ "what": "summary element has no accessible name"
8879
8982
  },
8880
- "QW-ACT-R66": {
8881
- "issueID": "menuItemNoText",
8983
+ "heading-order": {
8984
+ "issueID": "headingLevelSkip",
8882
8985
  "quality": 1,
8883
- "what": "menuitem element has no non-empty accessible name"
8986
+ "what": "Heading levels do not increase by only one"
8884
8987
  },
8885
- "QW-ACT-R33": {
8886
- "issueID": "parentMissing",
8988
+ "empty-heading": {
8989
+ "issueID": "headingEmpty",
8887
8990
  "quality": 1,
8888
- "what": "Element has no ARIA required context role"
8991
+ "what": "Heading contains no text"
8889
8992
  },
8890
- "QW-ACT-R38": {
8891
- "issueID": "descendantMissing",
8993
+ "positive-tabindex": {
8994
+ "issueID": "tabIndexPositive",
8892
8995
  "quality": 1,
8893
- "what": "Element has no ARIA required owned element"
8996
+ "what": "Positive tabindex disrupts the natural focus order"
8894
8997
  },
8895
- "QW-ACT-R21": {
8896
- "issueID": "svgImageNoText",
8998
+ "region": {
8999
+ "issueID": "contentBeyondLandmarks",
8897
9000
  "quality": 1,
8898
- "what": "Element with an explicit role has no accessible name"
9001
+ "what": "Content is not inside a landmark region"
8899
9002
  },
8900
- "QW-ACT-R7": {
8901
- "issueID": "cssBansPageRotate",
9003
+ "landmark-one-main": {
9004
+ "issueID": "mainNone",
8902
9005
  "quality": 1,
8903
- "what": "Orientation of the page is restricted by a CSS transform property"
9006
+ "what": "Page has no main landmark"
8904
9007
  },
8905
- "QW-ACT-R14": {
8906
- "issueID": "metaBansZoom",
9008
+ "page-heading-one": {
9009
+ "issueID": "h1Not1",
8907
9010
  "quality": 1,
8908
- "what": "meta viewport prevents zoom"
9011
+ "what": "Page has no h1 heading"
8909
9012
  },
8910
- "QW-ACT-R67": {
8911
- "issueID": "horizontalSpacingFrozen",
9013
+ "landmark-unique": {
9014
+ "issueID": "landmarkConfusion",
8912
9015
  "quality": 1,
8913
- "what": "Letter spacing in a style attribute is !important"
9016
+ "what": "Landmarks of the same type are not distinguished by a label"
8914
9017
  },
8915
- "QW-ACT-R69": {
8916
- "issueID": "horizontalSpacingFrozen",
9018
+ "redundant-role": {
9019
+ "issueID": "roleRedundant",
8917
9020
  "quality": 1,
8918
- "what": "Word spacing in a style attribute is !important"
9021
+ "what": "role attribute repeats the built-in role of its element"
8919
9022
  },
8920
- "QW-ACT-R68": {
8921
- "issueID": "verticalSpacingFrozen",
9023
+ "redundant-aria": {
9024
+ "issueID": "ariaRedundant",
8922
9025
  "quality": 1,
8923
- "what": "Line height in a style attribute is !important"
9026
+ "what": "aria attribute duplicates a native HTML attribute"
8924
9027
  },
8925
- "QW-ACT-R40": {
8926
- "issueID": "overflowHiddenRisk",
9028
+ "redundant-aria-label": {
9029
+ "issueID": "ariaRedundant",
8927
9030
  "quality": 1,
8928
- "what": "Zoomed text node is clipped by a CSS overflow declaration?"
9031
+ "what": "aria-label repeats the visible text of its element"
8929
9032
  },
8930
- "QW-BP14": {
8931
- "issueID": "boxSizeAbsolute",
9033
+ "redundant-alt-phrase": {
9034
+ "issueID": "imageTextRedundant",
8932
9035
  "quality": 1,
8933
- "what": "Container width is specified in px"
9036
+ "what": "alt attribute value starts with a redundant phrase"
8934
9037
  },
8935
- "QW-BP15": {
8936
- "issueID": "boxSizeAbsolute",
9038
+ "redundant-tabindex": {
9039
+ "issueID": "tabIndexExtra",
8937
9040
  "quality": 1,
8938
- "what": "Element width is specified in an absolute value"
9041
+ "what": "Element is natively focused, so tabindex=0 is unnecessary"
8939
9042
  },
8940
- "QW-ACT-R19": {
8941
- "issueID": "iframeTitleBad",
9043
+ "redundant-image-alt": {
9044
+ "issueID": "imageTextRedundant",
8942
9045
  "quality": 1,
8943
- "what": "iframe element has no accessible name"
9046
+ "what": "Image alt attribute value repeats adjacent link or button text"
8944
9047
  },
8945
- "QW-ACT-R20": {
8946
- "issueID": "roleBad",
9048
+ "landmark-top-level": {
9049
+ "issueID": "mainNotTop",
8947
9050
  "quality": 1,
8948
- "what": "role attribute has an invalid value"
9051
+ "what": "Landmark is nested inside another landmark instead of being top-level"
8949
9052
  },
8950
- "QW-ACT-R28": {
8951
- "issueID": "ariaMissing",
9053
+ "accesskeys": {
9054
+ "issueID": "accessKeyDuplicate",
8952
9055
  "quality": 1,
8953
- "what": "Element with a role attribute does not have the required states and properties"
9056
+ "what": "Multiple element have the same accesskey attribute value"
8954
9057
  },
8955
- "QW-ACT-R25": {
8956
- "issueID": "ariaAttributeBad",
9058
+ "button-type": {
9059
+ "issueID": "typeBad",
9060
+ "quality": 1,
9061
+ "what": "Button inside a form has no type attribute declared"
9062
+ },
9063
+ "no-autofocus": {
9064
+ "issueID": "focusSurprise",
9065
+ "quality": 1,
9066
+ "what": "autofocus attribute disorients assistive-technology users"
9067
+ },
9068
+ "new-window-link": {
9069
+ "issueID": "newTabSurpriseRisk",
9070
+ "quality": 1,
9071
+ "what": "Link opens a new window without warning"
9072
+ },
9073
+ "fieldset-legend": {
9074
+ "issueID": "legendMissing",
9075
+ "quality": 1,
9076
+ "what": "Radio or checkbox group has no fieldset legend"
9077
+ }
9078
+ },
9079
+ "variable": {}
9080
+ },
9081
+ "qualWeb": {
9082
+ "invariant": {
9083
+ "QW-ACT-R10": {
9084
+ "issueID": "ignorable",
9085
+ "quality": 1,
9086
+ "what": "iframe elements with identical accessible names have different purposes (on invisible elements)",
9087
+ "whyIgnore": "invalid"
9088
+ },
9089
+ "QW-ACT-R13": {
9090
+ "issueID": "ignorable",
9091
+ "quality": 1,
9092
+ "what": "Element with aria-hidden has focusable content",
9093
+ "whyIgnore": "invalid"
9094
+ },
9095
+ "QW-ACT-R41": {
9096
+ "issueID": "ignorable",
9097
+ "quality": 1,
9098
+ "what": "Error message describes no invalid form field value",
9099
+ "whyIgnore": "speculative"
9100
+ },
9101
+ "QW-ACT-R52": {
9102
+ "issueID": "ignorable",
9103
+ "quality": 0,
9104
+ "what": "video element visual-only content has no description track (description tracks and this ACT rule have been deprecated)",
9105
+ "whyIgnore": "irrelevant"
9106
+ },
9107
+ "QW-ACT-R57": {
9108
+ "issueID": "ignorable",
9109
+ "quality": 0,
9110
+ "what": "video element visual content has no description track (description tracks and this ACT rule have been deprecated)",
9111
+ "whyIgnore": "irrelevant"
9112
+ },
9113
+ "QW-ACT-R62": {
9114
+ "issueID": "ignorable",
9115
+ "quality": 0,
9116
+ "what": "Element in the sequential focus order may have no visible focus",
9117
+ "whyIgnore": "speculative"
9118
+ },
9119
+ "QW-ACT-R63": {
9120
+ "issueID": "ignorable",
9121
+ "quality": 0,
9122
+ "what": "Page has no landmark with non-repeated content",
9123
+ "whyIgnore": "invalid"
9124
+ },
9125
+ "QW-ACT-R64": {
9126
+ "issueID": "ignorable",
9127
+ "quality": 0,
9128
+ "what": "Page has no heading for non-repeated content",
9129
+ "whyIgnore": "invalid"
9130
+ },
9131
+ "QW-ACT-R73": {
9132
+ "issueID": "ignorable",
9133
+ "quality": 0,
9134
+ "what": "Block of repeated content is not collapsible",
9135
+ "whyIgnore": "invalid"
9136
+ },
9137
+ "QW-ACT-R74": {
9138
+ "issueID": "ignorable",
9139
+ "quality": 0,
9140
+ "what": "Page has no instrument to move focus to non-repeated content",
9141
+ "whyIgnore": "invalid"
9142
+ },
9143
+ "QW-ACT-R75": {
9144
+ "issueID": "ignorable",
9145
+ "quality": 0,
9146
+ "what": "Blocks of repeated content cannot be bypassed",
9147
+ "whyIgnore": "invalid"
9148
+ },
9149
+ "QW-BP1": {
9150
+ "issueID": "ignorable",
9151
+ "quality": 0,
9152
+ "what": "h1-h6 may fail to be used to identify headings",
9153
+ "whyIgnore": "speculative"
9154
+ },
9155
+ "QW-BP2": {
9156
+ "issueID": "ignorable",
9157
+ "quality": 1,
9158
+ "what": "Image text alternative is not concise",
9159
+ "whyIgnore": "invalid"
9160
+ },
9161
+ "QW-BP17": {
9162
+ "issueID": "ignorable",
9163
+ "quality": 1,
9164
+ "what": "No link at the beginning of a block of repeated content goes to the end of the block",
9165
+ "whyIgnore": "invalid"
9166
+ },
9167
+ "QW-BP20": {
9168
+ "issueID": "ignorable",
9169
+ "quality": 1,
9170
+ "what": "Page has more than 1 banner landmark (counts hidden elements)",
9171
+ "whyIgnore": "invalid"
9172
+ },
9173
+ "QW-BP22": {
9174
+ "issueID": "ignorable",
9175
+ "quality": 1,
9176
+ "what": "Page has more than 1 element with a main role",
9177
+ "whyIgnore": "invalid"
9178
+ },
9179
+ "QW-BP23": {
9180
+ "issueID": "ignorable",
9181
+ "quality": .1,
9182
+ "what": "Element is not in a true list",
9183
+ "whyIgnore": "invalid"
9184
+ },
9185
+ "QW-BP24": {
9186
+ "issueID": "ignorable",
9187
+ "quality": 1,
9188
+ "what": "ul or ol element has a child other than li, script, or template",
9189
+ "whyIgnore": "invalid"
9190
+ },
9191
+ "QW-BP28": {
9192
+ "issueID": "ignorable",
9193
+ "quality": 1,
9194
+ "what": "h1 element missing or used more than once",
9195
+ "whyIgnore": "invalid"
9196
+ },
9197
+ "QW-BP29": {
9198
+ "issueID": "ignorable",
9199
+ "quality": 0,
9200
+ "what": "lang and xml:lang attribute of html element differ",
9201
+ "whyIgnore": "invalid"
9202
+ },
9203
+ "QW-WCAG-T4": {
9204
+ "issueID": "ignorable",
9205
+ "quality": 0,
9206
+ "what": "summary attribute is not used to give an overview of a data table",
9207
+ "whyIgnore": "invalid"
9208
+ },
9209
+ "QW-WCAG-T8": {
9210
+ "issueID": "ignorable",
9211
+ "quality": 1,
9212
+ "what": "Text alternative is suspect",
9213
+ "whyIgnore": "invalid"
9214
+ },
9215
+ "QW-WCAG-T9": {
9216
+ "issueID": "ignorable",
9217
+ "quality": 0,
9218
+ "what": "Page may fail to be organized using headings",
9219
+ "whyIgnore": "speculative"
9220
+ },
9221
+ "QW-WCAG-T15": {
9222
+ "issueID": "ignorable",
9223
+ "quality": 0,
9224
+ "what": "link element may be used for navigation but not in the head",
9225
+ "whyIgnore": "invalid"
9226
+ },
9227
+ "QW-WCAG-T20": {
9228
+ "issueID": "ignorable",
9229
+ "quality": 0,
9230
+ "what": "Link title may fail to describe the link correctly",
9231
+ "whyIgnore": "speculative"
9232
+ },
9233
+ "QW-WCAG-T23": {
9234
+ "issueID": "ignorable",
9235
+ "quality": 0,
9236
+ "what": "No link at the top of the page goes directly to the main content area",
9237
+ "whyIgnore": "invalid"
9238
+ },
9239
+ "QW-WCAG-T24": {
9240
+ "issueID": "ignorable",
9241
+ "quality": .5,
9242
+ "what": "Script removes the focus when focus is received",
9243
+ "whyIgnore": "invalid"
9244
+ },
9245
+ "QW-WCAG-T28": {
9246
+ "issueID": "ignorable",
9247
+ "quality": .8,
9248
+ "what": "Font size set to an absolute unit value",
9249
+ "whyIgnore": "invalid"
9250
+ },
9251
+ "QW-WCAG-T31": {
9252
+ "issueID": "ignorable",
9253
+ "quality": 1,
9254
+ "what": "Foreground or background color is specified but not both (on invisible elements)",
9255
+ "whyIgnore": "invalid"
9256
+ },
9257
+ "QW-WCAG-T32": {
9258
+ "issueID": "ignorable",
9259
+ "quality": 1,
9260
+ "what": "ol, ul or dl may fail to be used for a list or group of links",
9261
+ "whyIgnore": "speculative"
9262
+ },
9263
+ "QW-WCAG-T35": {
9264
+ "issueID": "ignorable",
9265
+ "quality": 1,
9266
+ "what": "Several elements have this id attribute value",
9267
+ "whyIgnore": "invalid"
9268
+ },
9269
+ "QW-ACT-R18": {
9270
+ "issueID": "duplicateID",
9271
+ "quality": 1,
9272
+ "what": "id attribute value is not unique"
9273
+ },
9274
+ "QW-BP30": {
9275
+ "issueID": "duplicateID",
9276
+ "quality": 1,
9277
+ "what": "id attribute value is shared with another element"
9278
+ },
9279
+ "QW-BP8": {
9280
+ "issueID": "headingImageNoText",
9281
+ "quality": 1,
9282
+ "what": "Heading with an image has no accessible name"
9283
+ },
9284
+ "QW-ACT-R6": {
9285
+ "issueID": "imageButtonNoText",
9286
+ "quality": 1,
9287
+ "what": "Image button has no accessible name"
9288
+ },
9289
+ "QW-WCAG-T5": {
9290
+ "issueID": "imageButtonNoText",
9291
+ "quality": 1,
9292
+ "what": "alt attribute not used on an image used as a submit button"
9293
+ },
9294
+ "QW-ACT-R17": {
9295
+ "issueID": "imageNoText",
9296
+ "quality": 1,
9297
+ "what": "Image has no accessible name"
9298
+ },
9299
+ "QW-BP6": {
9300
+ "issueID": "titleLong",
9301
+ "quality": 1,
9302
+ "what": "title element is too long (more than 64 characters)"
9303
+ },
9304
+ "QW-BP7": {
9305
+ "issueID": "titleNotText",
9306
+ "quality": 1,
9307
+ "what": "Title element contains ASCII-art"
9308
+ },
9309
+ "QW-ACT-R48": {
9310
+ "issueID": "decorativeElementExposed",
9311
+ "quality": 1,
9312
+ "what": "Element marked as decorative is exposed"
9313
+ },
9314
+ "QW-ACT-R2": {
9315
+ "issueID": "pageLanguage",
9316
+ "quality": 1,
9317
+ "what": "HTML page has no lang attribute"
9318
+ },
9319
+ "QW-ACT-R5": {
9320
+ "issueID": "pageLanguageBad",
9321
+ "quality": 1,
9322
+ "what": "HTML lang attribute is invalid"
9323
+ },
9324
+ "QW-ACT-R3": {
9325
+ "issueID": "pageLanguageBad",
9326
+ "quality": 1,
9327
+ "what": "HTML lang and xml:lang do not match"
9328
+ },
9329
+ "QW-ACT-R22": {
9330
+ "issueID": "elementLanguageBad",
9331
+ "quality": 1,
9332
+ "what": "Element within the body has no valid lang attribute"
9333
+ },
9334
+ "QW-ACT-R42": {
9335
+ "issueID": "objectNoText",
9336
+ "quality": 1,
9337
+ "what": "Object element has no non-empty accessible name"
9338
+ },
9339
+ "QW-WCAG-T11": {
9340
+ "issueID": "appletNoText",
9341
+ "quality": 1,
9342
+ "what": "Text alternative not provided on an applet element"
9343
+ },
9344
+ "QW-WCAG-T1": {
9345
+ "issueID": "imageMapAreaNoText",
9346
+ "quality": 1,
9347
+ "what": "Text alternative for an area element of an image map is not provided"
9348
+ },
9349
+ "QW-WCAG-T6": {
9350
+ "issueID": "eventKeyboardRisk",
9351
+ "quality": 1,
9352
+ "what": "Both keyboard and other device-specific functions are not used"
9353
+ },
9354
+ "QW-WCAG-T17": {
9355
+ "issueID": "labelConfusionRisk",
9356
+ "quality": 1,
9357
+ "what": "label not positioned to maximize the predictability of the relationship"
9358
+ },
9359
+ "QW-ACT-R12": {
9360
+ "issueID": "linkNoText",
9361
+ "quality": 1,
9362
+ "what": "Link has no accessible name"
9363
+ },
9364
+ "QW-WCAG-T21": {
9365
+ "issueID": "imageLinkNoText",
9366
+ "quality": 1,
9367
+ "what": "Accessible name is not provided for an image which is the only content in a link"
9368
+ },
9369
+ "QW-WCAG-T7": {
9370
+ "issueID": "abbreviationNoTitle",
9371
+ "quality": 1,
9372
+ "what": "Definition for an abbreviation not provided with an abbr element"
9373
+ },
9374
+ "QW-ACT-R9": {
9375
+ "issueID": "linkTextsSame",
9376
+ "quality": 1,
9377
+ "what": "Links with identical accessible names have different purposes"
9378
+ },
9379
+ "QW-ACT-R44": {
9380
+ "issueID": "linkTextsSame",
9381
+ "quality": 1,
9382
+ "what": "Links with identical accessible names and context serve different purposes"
9383
+ },
9384
+ "QW-BP4": {
9385
+ "issueID": "linksNoNav",
9386
+ "quality": 1,
9387
+ "what": "Grouped links are not within a nav element"
9388
+ },
9389
+ "QW-BP13": {
9390
+ "issueID": "linkPair",
9391
+ "quality": 1,
9392
+ "what": "Consecutive links have the same href and one contains an image"
9393
+ },
9394
+ "QW-WCAG-T10": {
9395
+ "issueID": "linkNameRisk",
9396
+ "quality": .8,
9397
+ "what": "Link name repeats its image name and/or that name is suspect"
9398
+ },
9399
+ "QW-WCAG-T22": {
9400
+ "issueID": "pageNewWindow",
9401
+ "quality": 1,
9402
+ "what": "New window opens as soon as a new page is loaded"
9403
+ },
9404
+ "QW-ACT-R11": {
9405
+ "issueID": "buttonNoText",
9406
+ "quality": 1,
9407
+ "what": "button element has no accessible name"
9408
+ },
9409
+ "QW-ACT-R66": {
9410
+ "issueID": "menuItemNoText",
9411
+ "quality": 1,
9412
+ "what": "menuitem element has no non-empty accessible name"
9413
+ },
9414
+ "QW-ACT-R33": {
9415
+ "issueID": "parentMissing",
9416
+ "quality": 1,
9417
+ "what": "Element has no ARIA required context role"
9418
+ },
9419
+ "QW-ACT-R38": {
9420
+ "issueID": "descendantMissing",
9421
+ "quality": 1,
9422
+ "what": "Element has no ARIA required owned element"
9423
+ },
9424
+ "QW-ACT-R21": {
9425
+ "issueID": "svgImageNoText",
9426
+ "quality": 1,
9427
+ "what": "Element with an explicit role has no accessible name"
9428
+ },
9429
+ "QW-ACT-R7": {
9430
+ "issueID": "cssBansPageRotate",
9431
+ "quality": 1,
9432
+ "what": "Orientation of the page is restricted by a CSS transform property"
9433
+ },
9434
+ "QW-ACT-R14": {
9435
+ "issueID": "metaBansZoom",
9436
+ "quality": 1,
9437
+ "what": "meta viewport prevents zoom"
9438
+ },
9439
+ "QW-ACT-R67": {
9440
+ "issueID": "horizontalSpacingFrozen",
9441
+ "quality": 1,
9442
+ "what": "Letter spacing in a style attribute is !important"
9443
+ },
9444
+ "QW-ACT-R69": {
9445
+ "issueID": "horizontalSpacingFrozen",
9446
+ "quality": 1,
9447
+ "what": "Word spacing in a style attribute is !important"
9448
+ },
9449
+ "QW-ACT-R68": {
9450
+ "issueID": "verticalSpacingFrozen",
9451
+ "quality": 1,
9452
+ "what": "Line height in a style attribute is !important"
9453
+ },
9454
+ "QW-ACT-R40": {
9455
+ "issueID": "overflowHiddenRisk",
9456
+ "quality": 1,
9457
+ "what": "Zoomed text node is clipped by a CSS overflow declaration?"
9458
+ },
9459
+ "QW-BP14": {
9460
+ "issueID": "boxSizeAbsolute",
9461
+ "quality": 1,
9462
+ "what": "Container width is specified in px"
9463
+ },
9464
+ "QW-BP15": {
9465
+ "issueID": "boxSizeAbsolute",
9466
+ "quality": 1,
9467
+ "what": "Element width is specified in an absolute value"
9468
+ },
9469
+ "QW-ACT-R19": {
9470
+ "issueID": "iframeTitleBad",
9471
+ "quality": 1,
9472
+ "what": "iframe element has no accessible name"
9473
+ },
9474
+ "QW-ACT-R20": {
9475
+ "issueID": "roleBad",
9476
+ "quality": 1,
9477
+ "what": "role attribute has an invalid value"
9478
+ },
9479
+ "QW-ACT-R28": {
9480
+ "issueID": "ariaMissing",
9481
+ "quality": 1,
9482
+ "what": "Element with a role attribute does not have the required states and properties"
9483
+ },
9484
+ "QW-ACT-R25": {
9485
+ "issueID": "ariaAttributeBad",
9486
+ "quality": 1,
9487
+ "what": "ARIA state or property is not permitted"
9488
+ },
9489
+ "QW-ACT-R27": {
9490
+ "issueID": "ariaAttributeBad",
9491
+ "quality": 1,
9492
+ "what": "aria- attribute is not defined in ARIA 1.1"
9493
+ },
9494
+ "QW-ACT-R34": {
9495
+ "issueID": "ariaAttributeBad",
9496
+ "quality": 1,
9497
+ "what": "ARIA state or property has an invalid value"
9498
+ },
9499
+ "QW-ACT-R24": {
9500
+ "issueID": "autocompleteBad",
9501
+ "quality": 1,
9502
+ "what": "autocomplete attribute has no valid value"
9503
+ },
9504
+ "QW-ACT-R76": {
9505
+ "issueID": "contrastAAA",
9506
+ "quality": 1,
9507
+ "what": "Text has less than the enhanced minimum contrast"
9508
+ },
9509
+ "QW-ACT-R37": {
9510
+ "issueID": "contrastRisk",
9511
+ "quality": 1,
9512
+ "what": "Text has less than the minimum contrast or has an image background"
9513
+ },
9514
+ "text-color-convey-information": {
9515
+ "issueID": "colorNamedRisk",
9516
+ "quality": 1,
9517
+ "what": "Text naming a color requires the ability to distinguish colors?"
9518
+ },
9519
+ "QW-ACT-R35": {
9520
+ "issueID": "headingEmpty",
9521
+ "quality": 1,
9522
+ "what": "Heading has no accessible name"
9523
+ },
9524
+ "QW-BP3": {
9525
+ "issueID": "titleRedundant",
9526
+ "quality": 1,
9527
+ "what": "Link text content is equal to the title attribute"
9528
+ },
9529
+ "QW-ACT-R1": {
9530
+ "issueID": "pageTitle",
9531
+ "quality": 1,
9532
+ "what": "HTML page has no title"
9533
+ },
9534
+ "QW-WCAG-T27": {
9535
+ "issueID": "justification",
9536
+ "quality": 1,
9537
+ "what": "Text is justified (aligned to both the left and the right margins)"
9538
+ },
9539
+ "QW-WCAG-T29": {
9540
+ "issueID": "justificationRisk",
9541
+ "quality": 1,
9542
+ "what": "Alignment either to the left or right is not specified in CSS"
9543
+ },
9544
+ "QW-WCAG-T33": {
9545
+ "issueID": "descriptionOrphan",
9546
+ "quality": 1,
9547
+ "what": "Element is not contained by a valid dl element"
9548
+ },
9549
+ "QW-WCAG-T34": {
9550
+ "issueID": "descriptionOrder",
9551
+ "quality": 1,
9552
+ "what": "Description list element is not ordered correctly"
9553
+ },
9554
+ "QW-BP11": {
9555
+ "issueID": "pseudoList",
9556
+ "quality": 1,
9557
+ "what": "br is used to make a list"
9558
+ },
9559
+ "QW-WCAG-T3": {
9560
+ "issueID": "legendMissing",
9561
+ "quality": 1,
9562
+ "what": "Description for a group of form controls using fieldset and legend elements is not provided"
9563
+ },
9564
+ "QW-WCAG-T12": {
9565
+ "issueID": "layoutTable",
9566
+ "quality": 1,
9567
+ "what": "th or caption element or non-empty summary attribute used in a layout table"
9568
+ },
9569
+ "QW-BP9": {
9570
+ "issueID": "layoutTable",
9571
+ "quality": 1,
9572
+ "what": "Table element without header cells has a caption"
9573
+ },
9574
+ "QW-WCAG-T18": {
9575
+ "issueID": "tabularTableless",
9576
+ "quality": 1,
9577
+ "what": "Table markup not used to present tabular information"
9578
+ },
9579
+ "QW-WCAG-T2": {
9580
+ "issueID": "tableCaption",
9581
+ "quality": 1,
9582
+ "what": "caption element not used to associate a caption with a data table"
9583
+ },
9584
+ "QW-ACT-R36": {
9585
+ "issueID": "cellHeadersOutsideTable",
9586
+ "quality": 1,
9587
+ "what": "Headers attribute does not refer to a cell in the same table element"
9588
+ },
9589
+ "QW-WCAG-T14": {
9590
+ "issueID": "cellHeadersAmbiguityRisk",
9591
+ "quality": 1,
9592
+ "what": "id and headers attributes not used to associate data cells with header cells in a data table"
9593
+ },
9594
+ "QW-WCAG-T25": {
9595
+ "issueID": "cellHeadersAmbiguityRisk",
9596
+ "quality": 1,
9597
+ "what": "scope attribute not used to associate header cells and data cells in a data table"
9598
+ },
9599
+ "QW-BP12": {
9600
+ "issueID": "cellHeadersAmbiguityRisk",
9601
+ "quality": 1,
9602
+ "what": "scope col and row are not used"
9603
+ },
9604
+ "QW-ACT-R39": {
9605
+ "issueID": "tableHeaderCellless",
9606
+ "quality": 1,
9607
+ "what": "Table header cell has no assigned data cell"
9608
+ },
9609
+ "QW-BP5": {
9610
+ "issueID": "tableEmbedded",
9611
+ "quality": 1,
9612
+ "what": "table element is inside another table element"
9613
+ },
9614
+ "QW-ACT-R16": {
9615
+ "issueID": "controlNoText",
9616
+ "quality": 1,
9617
+ "what": "Form control has no accessible name"
9618
+ },
9619
+ "QW-ACT-R30": {
9620
+ "issueID": "visibleLabelNotInName",
9621
+ "quality": 1,
9622
+ "what": "Visible label is not part of the accessible name"
9623
+ },
9624
+ "QW-ACT-R70": {
9625
+ "issueID": "unfocusability",
9626
+ "quality": 1,
9627
+ "what": "iframe with negative tabindex has interactive elements"
9628
+ },
9629
+ "QW-BP25": {
9630
+ "issueID": "asideNotTop",
9631
+ "quality": 1,
9632
+ "what": "complementary landmark is not at the top level"
9633
+ },
9634
+ "QW-BP26": {
9635
+ "issueID": "asideNotTop",
9636
+ "quality": 1,
9637
+ "what": "complementary landmark is not at the top level"
9638
+ },
9639
+ "QW-BP27": {
9640
+ "issueID": "mainNotTop",
9641
+ "quality": 1,
9642
+ "what": "main landmark is not at the top level"
9643
+ },
9644
+ "QW-BP19": {
9645
+ "issueID": "bannerNotTop",
9646
+ "quality": 1,
9647
+ "what": "banner landmark is not at the top level"
9648
+ },
9649
+ "QW-BP21": {
9650
+ "issueID": "footerNot1",
9651
+ "quality": .5,
9652
+ "what": "There are multiple contentinfo or banner landmarks"
9653
+ },
9654
+ "QW-WCAG-T26": {
9655
+ "issueID": "focusableRole",
9656
+ "quality": 1,
9657
+ "what": "Script makes a div or span a user interface control without providing a role for the control"
9658
+ },
9659
+ "QW-ACT-R65": {
9660
+ "issueID": "focusableDescendants",
9661
+ "quality": 1,
9662
+ "what": "Element with presentational children has focusable content"
9663
+ },
9664
+ "QW-WCAG-T13": {
9665
+ "issueID": "blink",
9666
+ "quality": 1,
9667
+ "what": "Element is blink"
9668
+ },
9669
+ "QW-WCAG-T30": {
9670
+ "issueID": "blink",
9671
+ "quality": 1,
9672
+ "what": "text-decoration:blink is used without a mechanism to stop it in less than five seconds"
9673
+ },
9674
+ "QW-ACT-R15": {
9675
+ "issueID": "autoplay",
9676
+ "quality": 1,
9677
+ "what": "Element has audio that plays automatically"
9678
+ },
9679
+ "QW-ACT-R49": {
9680
+ "issueID": "autoplayLong",
9681
+ "quality": 1,
9682
+ "what": "Element that plays automatically has audio lasting more than 3 seconds"
9683
+ },
9684
+ "QW-ACT-R50": {
9685
+ "issueID": "autoplayControl",
9686
+ "quality": 1,
9687
+ "what": "audio or video that plays automatically has no control mechanism"
9688
+ },
9689
+ "QW-ACT-R4": {
9690
+ "issueID": "refresh",
9691
+ "quality": 1,
9692
+ "what": "Element refreshes or redirects with delay"
9693
+ },
9694
+ "QW-ACT-R71": {
9695
+ "issueID": "refresh",
9696
+ "quality": 1,
9697
+ "what": "Element has a refresh delay (no exception)"
9698
+ },
9699
+ "QW-ACT-R26": {
9700
+ "issueID": "audioNoText",
9701
+ "quality": 1,
9702
+ "what": "Auditory content of the element has no accessible alternative"
9703
+ },
9704
+ "QW-ACT-R29": {
9705
+ "issueID": "audioNoText",
9706
+ "quality": 1,
9707
+ "what": "Content of the element has no text alternative"
9708
+ },
9709
+ "QW-ACT-R58": {
9710
+ "issueID": "audioNoText",
9711
+ "quality": 1,
9712
+ "what": "Content of the element has no transcript"
9713
+ },
9714
+ "QW-ACT-R59": {
9715
+ "issueID": "audioNoText",
9716
+ "quality": 1,
9717
+ "what": "Element content is not a media alternative for text"
9718
+ },
9719
+ "QW-ACT-R60": {
9720
+ "issueID": "audioNoText",
9721
+ "quality": 1,
9722
+ "what": "Auditory content of the element has no captions"
9723
+ },
9724
+ "QW-ACT-R23": {
9725
+ "issueID": "videoNoText",
9726
+ "quality": 1,
9727
+ "what": "video element visual content has no accessible alternative"
9728
+ },
9729
+ "QW-ACT-R31": {
9730
+ "issueID": "videoNoText",
9731
+ "quality": 1,
9732
+ "what": "video element visual-only content has no accessible alternative"
9733
+ },
9734
+ "QW-ACT-R32": {
9735
+ "issueID": "videoNoText",
9736
+ "quality": 1,
9737
+ "what": "video element visual-only content has no strict accessible alternative"
9738
+ },
9739
+ "QW-ACT-R51": {
9740
+ "issueID": "videoNoText",
9741
+ "quality": 1,
9742
+ "what": "video element visual-only content is not a media alternative for text"
9743
+ },
9744
+ "QW-ACT-R56": {
9745
+ "issueID": "videoNoText",
9746
+ "quality": 1,
9747
+ "what": "video element content is not a media alternative for text"
9748
+ },
9749
+ "QW-ACT-R61": {
9750
+ "issueID": "videoNoText",
9751
+ "quality": 1,
9752
+ "what": "video element visual content has no transcript"
9753
+ },
9754
+ "QW-ACT-R53": {
9755
+ "issueID": "videoNoTranscript",
9756
+ "quality": 1,
9757
+ "what": "video element visual-only content has no transcript"
9758
+ },
9759
+ "QW-ACT-R55": {
9760
+ "issueID": "videoNoAudioDescription",
9761
+ "quality": 1,
9762
+ "what": "video element visual content has no audio description"
9763
+ },
9764
+ "QW-ACT-R54": {
9765
+ "issueID": "videoNoAudioTrack",
9766
+ "quality": 1,
9767
+ "what": "Visual-only content of the element has no audio track alternative"
9768
+ },
9769
+ "QW-ACT-R43": {
9770
+ "issueID": "keyboardScroll",
9771
+ "quality": 1,
9772
+ "what": "Scrollable element is not keyboard accessible"
9773
+ },
9774
+ "QW-BP18": {
9775
+ "issueID": "scrollRisk",
9776
+ "quality": 1,
9777
+ "what": "Percentage is not used in CSS for a container size"
9778
+ },
9779
+ "QW-ACT-R72": {
9780
+ "issueID": "repeatedContentRisk",
9781
+ "quality": 1,
9782
+ "what": "First focusable element is not a link to the non-repeated content"
9783
+ },
9784
+ "QW-WCAG-T19": {
9785
+ "issueID": "submitButton",
9786
+ "quality": 1,
9787
+ "what": "Submit button not provided"
9788
+ },
9789
+ "QW-BP10": {
9790
+ "issueID": "elementObsolete",
9791
+ "quality": 1,
9792
+ "what": "HTML element is used to control the visual presentation of content"
9793
+ },
9794
+ "QW-WCAG-T16": {
9795
+ "issueID": "parseError",
9796
+ "quality": 1,
9797
+ "what": "HTML is not used according to spec"
9798
+ }
9799
+ },
9800
+ "variable": {}
9801
+ },
9802
+ "sureA11y": {
9803
+ "invariant": {
9804
+ "area-alt-present": {
9805
+ "issueID": "imageMapAreaNoText",
9806
+ "quality": 1,
9807
+ "what": "area element has no alt attribute"
9808
+ },
9809
+ "aria-allowed-attr": {
9810
+ "issueID": "ariaAttributeBad",
9811
+ "quality": 1,
9812
+ "what": "aria attribute is not permitted for the element role"
9813
+ },
9814
+ "aria-allowed-role": {
9815
+ "issueID": "roleBad",
9816
+ "quality": 1,
9817
+ "what": "Explicit role is not permitted for the element"
9818
+ },
9819
+ "aria-braille-equivalent": {
9820
+ "issueID": "brailleOnly",
9821
+ "quality": 1,
9822
+ "what": "aria-braillelabel or aria-brailleroledescription has no non-braille equivalent"
9823
+ },
9824
+ "aria-conditional-attr": {
9825
+ "issueID": "ariaMissing",
9826
+ "quality": 1,
9827
+ "what": "aria-errormessage is used without aria-invalid set to a non-false value"
9828
+ },
9829
+ "aria-deprecated-role": {
9830
+ "issueID": "roleBad",
9831
+ "quality": 1,
9832
+ "what": "role attribute uses a deprecated or author-discouraged ARIA role"
9833
+ },
9834
+ "aria-hidden-body": {
9835
+ "issueID": "contentHidden",
9836
+ "quality": 1,
9837
+ "what": "The body element is aria-hidden"
9838
+ },
9839
+ "aria-hidden-focus": {
9840
+ "issueID": "focusableHidden",
9841
+ "quality": 1,
9842
+ "what": "aria-hidden element is focusable or contains a focusable element"
9843
+ },
9844
+ "aria-prohibited-attr": {
9845
+ "issueID": "attributeBad",
9846
+ "quality": 1,
9847
+ "what": "ARIA naming attribute is used on a role that prohibits it"
9848
+ },
9849
+ "aria-prohibited-children": {
9850
+ "issueID": "roleHierarchyBad",
9851
+ "quality": 1,
9852
+ "what": "Container role owns a child with a disallowed role"
9853
+ },
9854
+ "aria-required-attr": {
9855
+ "issueID": "ariaMissing",
9856
+ "quality": 1,
9857
+ "what": "Role is missing a required ARIA state or property"
9858
+ },
9859
+ "aria-required-children": {
9860
+ "issueID": "descendantMissing",
9861
+ "quality": 1,
9862
+ "what": "Container role is missing a required child role"
9863
+ },
9864
+ "aria-required-parent": {
9865
+ "issueID": "parentMissing",
9866
+ "quality": 1,
9867
+ "what": "Role requiring a specific context is not in that context"
9868
+ },
9869
+ "aria-role-name-present": {
9870
+ "issueID": "roleNoText",
9871
+ "quality": 1,
9872
+ "what": "ARIA role that requires an accessible name has none"
9873
+ },
9874
+ "aria-roles-valid": {
9875
+ "issueID": "roleBad",
9876
+ "quality": 1,
9877
+ "what": "role attribute is not a valid non-abstract ARIA role"
9878
+ },
9879
+ "aria-valid-attr": {
9880
+ "issueID": "ariaAttributeBad",
9881
+ "quality": 1,
9882
+ "what": "aria attribute is not a real defined ARIA attribute"
9883
+ },
9884
+ "aria-valid-attr-value": {
9885
+ "issueID": "ariaAttributeBad",
9886
+ "quality": 1,
9887
+ "what": "aria attribute value does not match its declared type"
9888
+ },
9889
+ "autocomplete-valid": {
9890
+ "issueID": "autocompleteBad",
9891
+ "quality": 1,
9892
+ "what": "autocomplete attribute is not a valid autofill value"
9893
+ },
9894
+ "avoid-inline-spacing": {
9895
+ "issueID": "horizontalSpacingFrozen",
8957
9896
  "quality": 1,
8958
- "what": "ARIA state or property is not permitted"
9897
+ "what": "Inline style forces text spacing below the WCAG metric"
8959
9898
  },
8960
- "QW-ACT-R27": {
8961
- "issueID": "ariaAttributeBad",
9899
+ "binary-control-name-present": {
9900
+ "issueID": "inputNoText",
8962
9901
  "quality": 1,
8963
- "what": "aria- attribute is not defined in ARIA 1.1"
9902
+ "what": "Binary control has no accessible name"
8964
9903
  },
8965
- "QW-ACT-R34": {
8966
- "issueID": "ariaAttributeBad",
9904
+ "button-name-present": {
9905
+ "issueID": "buttonNoText",
8967
9906
  "quality": 1,
8968
- "what": "ARIA state or property has an invalid value"
9907
+ "what": "Button has no accessible name"
8969
9908
  },
8970
- "QW-ACT-R24": {
8971
- "issueID": "autocompleteBad",
9909
+ "canvas-text-alternative-present": {
9910
+ "issueID": "objectNoText",
8972
9911
  "quality": 1,
8973
- "what": "autocomplete attribute has no valid value"
9912
+ "what": "canvas element has no text alternative"
8974
9913
  },
8975
- "QW-ACT-R76": {
8976
- "issueID": "contrastAAA",
9914
+ "combobox-name-present": {
9915
+ "issueID": "componentNoText",
8977
9916
  "quality": 1,
8978
- "what": "Text has less than the enhanced minimum contrast"
9917
+ "what": "Combobox has no accessible name"
8979
9918
  },
8980
- "QW-ACT-R37": {
9919
+ "contrast-computable": {
8981
9920
  "issueID": "contrastRisk",
8982
9921
  "quality": 1,
8983
- "what": "Text has less than the minimum contrast or has an image background"
9922
+ "what": "Color contrast cannot be computed for rendered text"
8984
9923
  },
8985
- "text-color-convey-information": {
8986
- "issueID": "colorNamedRisk",
9924
+ "contrast-enhanced": {
9925
+ "issueID": "contrastAAA",
8987
9926
  "quality": 1,
8988
- "what": "Text naming a color requires the ability to distinguish colors?"
9927
+ "what": "Text does not meet enhanced color contrast"
8989
9928
  },
8990
- "QW-ACT-R35": {
8991
- "issueID": "headingEmpty",
9929
+ "contrast-minimum": {
9930
+ "issueID": "contrastAA",
8992
9931
  "quality": 1,
8993
- "what": "Heading has no accessible name"
9932
+ "what": "Text does not meet minimum color contrast"
8994
9933
  },
8995
- "QW-BP3": {
8996
- "issueID": "titleRedundant",
9934
+ "css-orientation-lock": {
9935
+ "issueID": "cssBansPageRotate",
8997
9936
  "quality": 1,
8998
- "what": "Link text content is equal to the title attribute"
9937
+ "what": "CSS locks the page to a single orientation"
8999
9938
  },
9000
- "QW-ACT-R1": {
9001
- "issueID": "pageTitle",
9939
+ "definition-list-children-valid": {
9940
+ "issueID": "listChild",
9002
9941
  "quality": 1,
9003
- "what": "HTML page has no title"
9942
+ "what": "Description list contains a child other than dt or dd"
9004
9943
  },
9005
- "QW-WCAG-T27": {
9006
- "issueID": "justification",
9944
+ "deprecated-elements-not-used": {
9945
+ "issueID": "obsoleteMotion",
9007
9946
  "quality": 1,
9008
- "what": "Text is justified (aligned to both the left and the right margins)"
9947
+ "what": "Obsolete non-stoppable motion element (blink or marquee) is used"
9009
9948
  },
9010
- "QW-WCAG-T29": {
9011
- "issueID": "justificationRisk",
9949
+ "dialog-name-present": {
9950
+ "issueID": "dialogNoText",
9012
9951
  "quality": 1,
9013
- "what": "Alignment either to the left or right is not specified in CSS"
9952
+ "what": "Dialog has no accessible name"
9014
9953
  },
9015
- "QW-WCAG-T33": {
9954
+ "dlitem-parent-valid": {
9016
9955
  "issueID": "descriptionOrphan",
9017
9956
  "quality": 1,
9018
- "what": "Element is not contained by a valid dl element"
9019
- },
9020
- "QW-WCAG-T34": {
9021
- "issueID": "descriptionOrder",
9022
- "quality": 1,
9023
- "what": "Description list element is not ordered correctly"
9957
+ "what": "dt or dd element is not inside a dl element"
9024
9958
  },
9025
- "QW-BP11": {
9026
- "issueID": "pseudoList",
9959
+ "duplicate-id": {
9960
+ "issueID": "duplicateID",
9027
9961
  "quality": 1,
9028
- "what": "br is used to make a list"
9962
+ "what": "id attribute is not unique"
9029
9963
  },
9030
- "QW-WCAG-T3": {
9031
- "issueID": "legendMissing",
9964
+ "duplicate-id-aria": {
9965
+ "issueID": "duplicateID",
9032
9966
  "quality": 1,
9033
- "what": "Description for a group of form controls using fieldset and legend elements is not provided"
9967
+ "what": "id referenced by ARIA is not unique"
9034
9968
  },
9035
- "QW-WCAG-T12": {
9036
- "issueID": "layoutTable",
9969
+ "embed-text-alternative-present": {
9970
+ "issueID": "objectNoText",
9037
9971
  "quality": 1,
9038
- "what": "th or caption element or non-empty summary attribute used in a layout table"
9972
+ "what": "embed element has no text alternative"
9039
9973
  },
9040
- "QW-BP9": {
9041
- "issueID": "layoutTable",
9974
+ "form-control-programmatic-label-present": {
9975
+ "issueID": "controlNoText",
9042
9976
  "quality": 1,
9043
- "what": "Table element without header cells has a caption"
9977
+ "what": "Form control has no programmatic label"
9044
9978
  },
9045
- "QW-WCAG-T18": {
9046
- "issueID": "tabularTableless",
9979
+ "form-control-single-label": {
9980
+ "issueID": "labelNot1",
9047
9981
  "quality": 1,
9048
- "what": "Table markup not used to present tabular information"
9982
+ "what": "Form control has multiple labels"
9049
9983
  },
9050
- "QW-WCAG-T2": {
9051
- "issueID": "tableCaption",
9984
+ "html-lang-attr-present": {
9985
+ "issueID": "pageLanguage",
9052
9986
  "quality": 1,
9053
- "what": "caption element not used to associate a caption with a data table"
9987
+ "what": "html element has no lang attribute"
9054
9988
  },
9055
- "QW-ACT-R36": {
9056
- "issueID": "cellHeadersOutsideTable",
9989
+ "html-xml-lang-mismatch": {
9990
+ "issueID": "pageLanguageBad",
9057
9991
  "quality": 1,
9058
- "what": "Headers attribute does not refer to a cell in the same table element"
9992
+ "what": "lang and xml:lang attributes disagree"
9059
9993
  },
9060
- "QW-WCAG-T14": {
9061
- "issueID": "cellHeadersAmbiguityRisk",
9994
+ "identical-iframes-same-purpose": {
9995
+ "issueID": "iframeConfusion",
9062
9996
  "quality": 1,
9063
- "what": "id and headers attributes not used to associate data cells with header cells in a data table"
9997
+ "what": "Frames with the same accessible name embed different resources"
9064
9998
  },
9065
- "QW-WCAG-T25": {
9066
- "issueID": "cellHeadersAmbiguityRisk",
9999
+ "iframe-focusable-content": {
10000
+ "issueID": "focusableHidden",
9067
10001
  "quality": 1,
9068
- "what": "scope attribute not used to associate header cells and data cells in a data table"
10002
+ "what": "Frame with tabindex of -1 contains focusable content"
9069
10003
  },
9070
- "QW-BP12": {
9071
- "issueID": "cellHeadersAmbiguityRisk",
10004
+ "iframe-name-present": {
10005
+ "issueID": "iframeTitleBad",
9072
10006
  "quality": 1,
9073
- "what": "scope col and row are not used"
10007
+ "what": "Frame has no accessible name"
9074
10008
  },
9075
- "QW-ACT-R39": {
9076
- "issueID": "tableHeaderCellless",
10009
+ "iframe-title-unique": {
10010
+ "issueID": "iframeTitleBad",
9077
10011
  "quality": 1,
9078
- "what": "Table header cell has no assigned data cell"
10012
+ "what": "Frame title is not unique"
9079
10013
  },
9080
- "QW-BP5": {
9081
- "issueID": "tableEmbedded",
10014
+ "img-alt-present": {
10015
+ "issueID": "imageNoText",
9082
10016
  "quality": 1,
9083
- "what": "table element is inside another table element"
10017
+ "what": "img element has no alt attribute"
9084
10018
  },
9085
- "QW-ACT-R16": {
9086
- "issueID": "controlNoText",
10019
+ "input-image-alt-present": {
10020
+ "issueID": "imageButtonNoText",
9087
10021
  "quality": 1,
9088
- "what": "Form control has no accessible name"
10022
+ "what": "Image input has no text alternative"
9089
10023
  },
9090
- "QW-ACT-R30": {
10024
+ "label-in-name": {
9091
10025
  "issueID": "visibleLabelNotInName",
9092
10026
  "quality": 1,
9093
- "what": "Visible label is not part of the accessible name"
10027
+ "what": "Accessible name does not contain the visible text"
9094
10028
  },
9095
- "QW-ACT-R70": {
9096
- "issueID": "unfocusability",
10029
+ "link-in-text-block": {
10030
+ "issueID": "linkIndication",
9097
10031
  "quality": 1,
9098
- "what": "iframe with negative tabindex has interactive elements"
10032
+ "what": "Link is not distinguishable from surrounding text without color"
9099
10033
  },
9100
- "QW-BP25": {
9101
- "issueID": "asideNotTop",
10034
+ "link-name-present": {
10035
+ "issueID": "linkNoText",
9102
10036
  "quality": 1,
9103
- "what": "complementary landmark is not at the top level"
10037
+ "what": "Link has no accessible name"
9104
10038
  },
9105
- "QW-BP26": {
9106
- "issueID": "asideNotTop",
10039
+ "list-children-valid": {
10040
+ "issueID": "listChild",
9107
10041
  "quality": 1,
9108
- "what": "complementary landmark is not at the top level"
10042
+ "what": "List contains a child other than a list item"
9109
10043
  },
9110
- "QW-BP27": {
9111
- "issueID": "mainNotTop",
10044
+ "listbox-name-present": {
10045
+ "issueID": "componentNoText",
9112
10046
  "quality": 1,
9113
- "what": "main landmark is not at the top level"
10047
+ "what": "Listbox has no accessible name"
9114
10048
  },
9115
- "QW-BP19": {
9116
- "issueID": "bannerNotTop",
10049
+ "listitem-parent-valid": {
10050
+ "issueID": "listItemOrphan",
9117
10051
  "quality": 1,
9118
- "what": "banner landmark is not at the top level"
9119
- },
9120
- "QW-BP21": {
9121
- "issueID": "footerNot1",
9122
- "quality": .5,
9123
- "what": "There are multiple contentinfo or banner landmarks"
10052
+ "what": "li element is not inside a ul or ol element"
9124
10053
  },
9125
- "QW-WCAG-T26": {
9126
- "issueID": "focusableRole",
10054
+ "menuitem-name-present": {
10055
+ "issueID": "menuItemNoText",
9127
10056
  "quality": 1,
9128
- "what": "Script makes a div or span a user interface control without providing a role for the control"
10057
+ "what": "Menu item has no accessible name"
9129
10058
  },
9130
- "QW-ACT-R65": {
9131
- "issueID": "focusableDescendants",
10059
+ "meta-refresh-no-exceptions": {
10060
+ "issueID": "refresh",
9132
10061
  "quality": 1,
9133
- "what": "Element with presentational children has focusable content"
10062
+ "what": "Page uses a meta refresh"
9134
10063
  },
9135
- "QW-WCAG-T13": {
9136
- "issueID": "blink",
10064
+ "meta-refresh-timing-absent": {
10065
+ "issueID": "refresh",
9137
10066
  "quality": 1,
9138
- "what": "Element is blink"
10067
+ "what": "Page uses a timed meta refresh"
9139
10068
  },
9140
- "QW-WCAG-T30": {
9141
- "issueID": "blink",
10069
+ "meta-viewport-zoom-enabled": {
10070
+ "issueID": "metaBansZoom",
9142
10071
  "quality": 1,
9143
- "what": "text-decoration:blink is used without a mechanism to stop it in less than five seconds"
10072
+ "what": "Viewport meta tag disables zoom"
9144
10073
  },
9145
- "QW-ACT-R15": {
9146
- "issueID": "autoplay",
10074
+ "meter-name-present": {
10075
+ "issueID": "progressNoText",
9147
10076
  "quality": 1,
9148
- "what": "Element has audio that plays automatically"
10077
+ "what": "Meter has no accessible name"
9149
10078
  },
9150
- "QW-ACT-R49": {
9151
- "issueID": "autoplayLong",
10079
+ "nested-interactive-controls-absent": {
10080
+ "issueID": "activeEmbedding",
9152
10081
  "quality": 1,
9153
- "what": "Element that plays automatically has audio lasting more than 3 seconds"
10082
+ "what": "Interactive control contains another interactive control"
9154
10083
  },
9155
- "QW-ACT-R50": {
9156
- "issueID": "autoplayControl",
10084
+ "object-text-alternative-present": {
10085
+ "issueID": "objectNoText",
9157
10086
  "quality": 1,
9158
- "what": "audio or video that plays automatically has no control mechanism"
10087
+ "what": "object element has no text alternative"
9159
10088
  },
9160
- "QW-ACT-R4": {
9161
- "issueID": "refresh",
10089
+ "option-name-present": {
10090
+ "issueID": "componentNoText",
9162
10091
  "quality": 1,
9163
- "what": "Element refreshes or redirects with delay"
10092
+ "what": "Option has no accessible name"
9164
10093
  },
9165
- "QW-ACT-R71": {
9166
- "issueID": "refresh",
10094
+ "page-title-present": {
10095
+ "issueID": "pageTitle",
9167
10096
  "quality": 1,
9168
- "what": "Element has a refresh delay (no exception)"
10097
+ "what": "Page has no title or an empty title"
9169
10098
  },
9170
- "QW-ACT-R26": {
9171
- "issueID": "audioNoText",
10099
+ "presentational-children-focusable-absent": {
10100
+ "issueID": "focusableDescendants",
9172
10101
  "quality": 1,
9173
- "what": "Auditory content of the element has no accessible alternative"
10102
+ "what": "Role with presentational children contains focusable content"
9174
10103
  },
9175
- "QW-ACT-R29": {
9176
- "issueID": "audioNoText",
10104
+ "progressbar-name-present": {
10105
+ "issueID": "progressNoText",
9177
10106
  "quality": 1,
9178
- "what": "Content of the element has no text alternative"
10107
+ "what": "Progress bar has no accessible name"
9179
10108
  },
9180
- "QW-ACT-R58": {
9181
- "issueID": "audioNoText",
10109
+ "role-img-text-alternative-present": {
10110
+ "issueID": "imageNoText",
9182
10111
  "quality": 1,
9183
- "what": "Content of the element has no transcript"
10112
+ "what": "Element with role of img has no text alternative"
9184
10113
  },
9185
- "QW-ACT-R59": {
9186
- "issueID": "audioNoText",
10114
+ "searchbox-name-present": {
10115
+ "issueID": "inputNoText",
9187
10116
  "quality": 1,
9188
- "what": "Element content is not a media alternative for text"
10117
+ "what": "Searchbox has no accessible name"
9189
10118
  },
9190
- "QW-ACT-R60": {
9191
- "issueID": "audioNoText",
10119
+ "server-side-image-map-absent": {
10120
+ "issueID": "imageMapServerSide",
9192
10121
  "quality": 1,
9193
- "what": "Auditory content of the element has no captions"
10122
+ "what": "img element has an ismap attribute"
9194
10123
  },
9195
- "QW-ACT-R23": {
9196
- "issueID": "videoNoText",
10124
+ "slider-name-present": {
10125
+ "issueID": "inputNoText",
9197
10126
  "quality": 1,
9198
- "what": "video element visual content has no accessible alternative"
10127
+ "what": "Slider has no accessible name"
9199
10128
  },
9200
- "QW-ACT-R31": {
9201
- "issueID": "videoNoText",
10129
+ "spinbutton-name-present": {
10130
+ "issueID": "inputNoText",
9202
10131
  "quality": 1,
9203
- "what": "video element visual-only content has no accessible alternative"
10132
+ "what": "Spinbutton has no accessible name"
9204
10133
  },
9205
- "QW-ACT-R32": {
9206
- "issueID": "videoNoText",
10134
+ "summary-name-present": {
10135
+ "issueID": "buttonNoText",
9207
10136
  "quality": 1,
9208
- "what": "video element visual-only content has no strict accessible alternative"
10137
+ "what": "summary element has no accessible name"
9209
10138
  },
9210
- "QW-ACT-R51": {
9211
- "issueID": "videoNoText",
10139
+ "svg-image-text-alternative-present": {
10140
+ "issueID": "svgImageNoText",
9212
10141
  "quality": 1,
9213
- "what": "video element visual-only content is not a media alternative for text"
10142
+ "what": "SVG image element has no text alternative"
9214
10143
  },
9215
- "QW-ACT-R56": {
9216
- "issueID": "videoNoText",
10144
+ "svg-text-alternative-present": {
10145
+ "issueID": "svgImageNoText",
9217
10146
  "quality": 1,
9218
- "what": "video element content is not a media alternative for text"
10147
+ "what": "SVG element has no text alternative"
9219
10148
  },
9220
- "QW-ACT-R61": {
9221
- "issueID": "videoNoText",
10149
+ "tab-name-present": {
10150
+ "issueID": "componentNoText",
9222
10151
  "quality": 1,
9223
- "what": "video element visual content has no transcript"
10152
+ "what": "Tab has no accessible name"
9224
10153
  },
9225
- "QW-ACT-R53": {
9226
- "issueID": "videoNoTranscript",
10154
+ "table-headers-attr-valid": {
10155
+ "issueID": "tableHeaderless",
9227
10156
  "quality": 1,
9228
- "what": "video element visual-only content has no transcript"
10157
+ "what": "Table header attributes are invalid"
9229
10158
  },
9230
- "QW-ACT-R55": {
9231
- "issueID": "videoNoAudioDescription",
10159
+ "table-th-has-data-cells": {
10160
+ "issueID": "tableHeaderCellless",
9232
10161
  "quality": 1,
9233
- "what": "video element visual content has no audio description"
10162
+ "what": "th element does not describe any data cell"
9234
10163
  },
9235
- "QW-ACT-R54": {
9236
- "issueID": "videoNoAudioTrack",
10164
+ "target-size-minimum": {
10165
+ "issueID": "targetTiny",
9237
10166
  "quality": 1,
9238
- "what": "Visual-only content of the element has no audio track alternative"
10167
+ "what": "Pointer target is smaller than 24 CSS pixels"
9239
10168
  },
9240
- "QW-ACT-R43": {
9241
- "issueID": "keyboardScroll",
10169
+ "td-has-header": {
10170
+ "issueID": "tableCellHeaderless",
9242
10171
  "quality": 1,
9243
- "what": "Scrollable element is not keyboard accessible"
10172
+ "what": "Data cell in a large table has no associated header"
9244
10173
  },
9245
- "QW-BP18": {
9246
- "issueID": "scrollRisk",
10174
+ "textbox-name-present": {
10175
+ "issueID": "inputNoText",
9247
10176
  "quality": 1,
9248
- "what": "Percentage is not used in CSS for a container size"
10177
+ "what": "Textbox has no accessible name"
9249
10178
  },
9250
- "QW-ACT-R72": {
9251
- "issueID": "repeatedContentRisk",
10179
+ "tooltip-name-present": {
10180
+ "issueID": "componentNoText",
9252
10181
  "quality": 1,
9253
- "what": "First focusable element is not a link to the non-repeated content"
10182
+ "what": "Tooltip has no accessible name"
9254
10183
  },
9255
- "QW-WCAG-T19": {
9256
- "issueID": "submitButton",
10184
+ "treeitem-name-present": {
10185
+ "issueID": "componentNoText",
9257
10186
  "quality": 1,
9258
- "what": "Submit button not provided"
10187
+ "what": "Tree item has no accessible name"
9259
10188
  },
9260
- "QW-BP10": {
9261
- "issueID": "elementObsolete",
10189
+ "valid-lang": {
10190
+ "issueID": "elementLanguageBad",
9262
10191
  "quality": 1,
9263
- "what": "HTML element is used to control the visual presentation of content"
10192
+ "what": "Element lang attribute is not syntactically valid"
9264
10193
  },
9265
- "QW-WCAG-T16": {
9266
- "issueID": "parseError",
10194
+ "video-poster-text-alternative-present": {
10195
+ "issueID": "imageNoText",
9267
10196
  "quality": 1,
9268
- "what": "HTML is not used according to spec"
10197
+ "what": "Video poster has no text alternative"
9269
10198
  }
9270
10199
  },
9271
10200
  "variable": {}