testaro-issues 0.6.0 → 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",
@@ -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",
@@ -300,6 +312,12 @@ 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
323
  "why": "Page may include code that the browser cannot process",
@@ -308,7 +326,7 @@ const issuesData = {
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
  },
@@ -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": {
@@ -576,6 +594,12 @@ 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",
@@ -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",
@@ -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",
@@ -1560,6 +1620,12 @@ const issuesData = {
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",
@@ -1746,6 +1812,12 @@ 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
1823
  "why": "Page change may surprise a user",
@@ -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",
@@ -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",
@@ -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": "Page 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": "Page 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": "Page 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": "Page 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": "Page 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": {
8798
+ "definition-list": {
8799
+ "issueID": "listChild",
8800
+ "quality": 1,
8801
+ "what": "dl element contains a child other than dt or dd"
8802
+ },
8803
+ "dlitem-parent": {
8804
+ "issueID": "descriptionOrphan",
8805
+ "quality": 1,
8806
+ "what": "dt or dd element is not inside a dl element"
8807
+ },
8808
+ "area-alt": {
8809
+ "issueID": "imageMapAreaNoText",
8810
+ "quality": 1,
8811
+ "what": "Image map area has no text alternative"
8812
+ },
8813
+ "object-alt": {
8814
+ "issueID": "objectNoText",
8815
+ "quality": 1,
8816
+ "what": "object element has no text alternative"
8817
+ },
8818
+ "input-image-alt-present": {
8819
+ "issueID": "imageButtonNoText",
8820
+ "quality": 1,
8821
+ "what": "Image input has no alt text"
8822
+ },
8823
+ "multiple-labels": {
8824
+ "issueID": "labelNot1",
8825
+ "quality": 1,
8826
+ "what": "Form field has multiple label elements"
8827
+ },
8828
+ "meta-refresh": {
8829
+ "issueID": "refresh",
8830
+ "quality": 1,
8831
+ "what": "Page uses a timed refresh"
8832
+ },
8833
+ "link-in-text-block": {
8834
+ "issueID": "linkIndication",
8835
+ "quality": 1,
8836
+ "what": "Link is not distinguishable from surrounding text without color"
8837
+ },
8838
+ "p-as-heading": {
8839
+ "issueID": "pseudoHeadingRisk",
8840
+ "quality": 1,
8841
+ "what": "Styled paragraph is used instead of a heading"
8842
+ },
8843
+ "aria-required-children": {
8844
+ "issueID": "descendantMissing",
8845
+ "quality": 1,
8846
+ "what": "ARIA role is missing a required child"
8847
+ },
8848
+ "aria-required-parent": {
8849
+ "issueID": "parentMissing",
8850
+ "quality": 1,
8851
+ "what": "ARIA role is not inside its required parent"
8852
+ },
8853
+ "scrollable-region-focusable": {
8854
+ "issueID": "keyboardScroll",
8855
+ "quality": 1,
8856
+ "what": "Scrollable region is not reachable by keyboard"
8857
+ },
8858
+ "table-headers": {
8859
+ "issueID": "tableHeaderless",
8860
+ "quality": 1,
8861
+ "what": "Data table has no properly associated header cells"
8862
+ },
8863
+ "color-contrast-enhanced": {
8864
+ "issueID": "contrastAAA",
8865
+ "quality": 1,
8866
+ "what": "Text contrast can be improved"
8867
+ },
8868
+ "target-size-enhanced": {
8869
+ "issueID": "targetSmall",
8870
+ "quality": 1,
8871
+ "what": "Interactive target is smaller than 44 CSS pixels"
8872
+ },
8873
+ "dialog-name": {
8874
+ "issueID": "dialogNoText",
8875
+ "quality": 1,
8876
+ "what": "Dialog has no accessible name"
8877
+ },
8878
+ "control-contrast": {
8879
+ "issueID": "contrastAA",
8880
+ "quality": 1,
8881
+ "what": "Text inside a form control has insufficient contrast"
8882
+ },
8883
+ "non-text-contrast": {
8884
+ "issueID": "boxInvisibleRisk",
8885
+ "quality": 1,
8886
+ "what": "Form field boundary has contrast less than 3:1"
8887
+ },
8888
+ "text-spacing": {
8889
+ "issueID": "horizontalSpacingFrozen",
8890
+ "quality": 1,
8891
+ "what": "User adjustment of text spacing is prevented"
8892
+ },
8893
+ "reflow": {
8894
+ "issueID": "reflow",
8895
+ "quality": 1,
8896
+ "what": "Content does not reflow to permit one-dimensional scrolling"
8897
+ },
8898
+ "focus-visible": {
8899
+ "issueID": "focusIndicationBad",
8900
+ "quality": 1,
8901
+ "what": "Keyboard focus is not visible"
8902
+ },
8903
+ "focus-not-obscured": {
8904
+ "issueID": "focusCovered",
8905
+ "quality": 1,
8906
+ "what": "Focused element is fully obscured by an overlay"
8907
+ },
8908
+ "auth-field-obstruction": {
8909
+ "issueID": "autoAuthBanned",
8910
+ "quality": 1,
8911
+ "what": "Login input blocks paste or password managers"
8912
+ },
8913
+ "embed-alt": {
8914
+ "issueID": "objectNoText",
8915
+ "quality": 1,
8916
+ "what": "embed element has no accessible name"
8917
+ },
8918
+ "canvas-alt": {
8919
+ "issueID": "objectNoText",
8920
+ "quality": 1,
8921
+ "what": "canvas element has no accessible name or fallback"
8922
+ },
8923
+ "video-loop-motion": {
8924
+ "issueID": "animationLong",
8925
+ "quality": 1,
8926
+ "what": "Looping autoplay video cannot be paused"
8927
+ },
8928
+ "visual-order-divergence": {
8929
+ "issueID": "tabOrderBad",
8930
+ "quality": 1,
8931
+ "what": "CSS reordering makes the tab order diverge from the visual order"
8932
+ },
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": {
8979
+ "issueID": "buttonNoText",
8980
+ "quality": 1,
8981
+ "what": "summary element has no accessible name"
8982
+ },
8983
+ "heading-order": {
8984
+ "issueID": "headingLevelSkip",
8985
+ "quality": 1,
8986
+ "what": "Heading levels do not increase by only one"
8987
+ },
8988
+ "empty-heading": {
8989
+ "issueID": "headingEmpty",
8990
+ "quality": 1,
8991
+ "what": "Heading contains no text"
8992
+ },
8993
+ "positive-tabindex": {
8994
+ "issueID": "tabIndexPositive",
8995
+ "quality": 1,
8996
+ "what": "Positive tabindex disrupts the natural focus order"
8997
+ },
8998
+ "region": {
8999
+ "issueID": "contentBeyondLandmarks",
9000
+ "quality": 1,
9001
+ "what": "Content is not inside a landmark region"
9002
+ },
9003
+ "landmark-one-main": {
9004
+ "issueID": "mainNone",
9005
+ "quality": 1,
9006
+ "what": "Page has no main landmark"
9007
+ },
9008
+ "page-heading-one": {
9009
+ "issueID": "h1Not1",
9010
+ "quality": 1,
9011
+ "what": "Page has no h1 heading"
9012
+ },
9013
+ "landmark-unique": {
9014
+ "issueID": "landmarkConfusion",
9015
+ "quality": 1,
9016
+ "what": "Landmarks of the same type are not distinguished by a label"
9017
+ },
9018
+ "redundant-role": {
9019
+ "issueID": "roleRedundant",
9020
+ "quality": 1,
9021
+ "what": "role attribute repeats the built-in role of its element"
9022
+ },
9023
+ "redundant-aria": {
9024
+ "issueID": "ariaRedundant",
9025
+ "quality": 1,
9026
+ "what": "aria attribute duplicates a native HTML attribute"
9027
+ },
9028
+ "redundant-aria-label": {
9029
+ "issueID": "ariaRedundant",
9030
+ "quality": 1,
9031
+ "what": "aria-label repeats the visible text of its element"
9032
+ },
9033
+ "redundant-alt-phrase": {
9034
+ "issueID": "imageTextRedundant",
9035
+ "quality": 1,
9036
+ "what": "alt attribute value starts with a redundant phrase"
9037
+ },
9038
+ "redundant-tabindex": {
9039
+ "issueID": "tabIndexExtra",
9040
+ "quality": 1,
9041
+ "what": "Element is natively focused, so tabindex=0 is unnecessary"
9042
+ },
9043
+ "redundant-image-alt": {
9044
+ "issueID": "imageTextRedundant",
9045
+ "quality": 1,
9046
+ "what": "Image alt attribute value repeats adjacent link or button text"
9047
+ },
9048
+ "landmark-top-level": {
9049
+ "issueID": "mainNotTop",
9050
+ "quality": 1,
9051
+ "what": "Landmark is nested inside another landmark instead of being top-level"
9052
+ },
9053
+ "accesskeys": {
9054
+ "issueID": "accessKeyDuplicate",
9055
+ "quality": 1,
9056
+ "what": "Multiple element have the same accesskey attribute value"
9057
+ },
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": {
8746
9270
  "issueID": "duplicateID",
8747
9271
  "quality": 1,
8748
- "what": "id attribute value is shared with another element"
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"
8749
9658
  },
8750
- "QW-BP8": {
8751
- "issueID": "headingImageNoText",
9659
+ "QW-ACT-R65": {
9660
+ "issueID": "focusableDescendants",
8752
9661
  "quality": 1,
8753
- "what": "Heading with an image has no accessible name"
9662
+ "what": "Element with presentational children has focusable content"
8754
9663
  },
8755
- "QW-ACT-R6": {
8756
- "issueID": "imageButtonNoText",
9664
+ "QW-WCAG-T13": {
9665
+ "issueID": "blink",
8757
9666
  "quality": 1,
8758
- "what": "Image button has no accessible name"
9667
+ "what": "Element is blink"
8759
9668
  },
8760
- "QW-WCAG-T5": {
8761
- "issueID": "imageButtonNoText",
9669
+ "QW-WCAG-T30": {
9670
+ "issueID": "blink",
8762
9671
  "quality": 1,
8763
- "what": "alt attribute not used on an image used as a submit button"
9672
+ "what": "text-decoration:blink is used without a mechanism to stop it in less than five seconds"
8764
9673
  },
8765
- "QW-ACT-R17": {
8766
- "issueID": "imageNoText",
9674
+ "QW-ACT-R15": {
9675
+ "issueID": "autoplay",
8767
9676
  "quality": 1,
8768
- "what": "Image has no accessible name"
9677
+ "what": "Element has audio that plays automatically"
8769
9678
  },
8770
- "QW-BP6": {
8771
- "issueID": "titleLong",
9679
+ "QW-ACT-R49": {
9680
+ "issueID": "autoplayLong",
8772
9681
  "quality": 1,
8773
- "what": "title element is too long (more than 64 characters)"
9682
+ "what": "Element that plays automatically has audio lasting more than 3 seconds"
8774
9683
  },
8775
- "QW-BP7": {
8776
- "issueID": "titleNotText",
9684
+ "QW-ACT-R50": {
9685
+ "issueID": "autoplayControl",
8777
9686
  "quality": 1,
8778
- "what": "Title element contains ASCII-art"
9687
+ "what": "audio or video that plays automatically has no control mechanism"
8779
9688
  },
8780
- "QW-ACT-R48": {
8781
- "issueID": "decorativeElementExposed",
9689
+ "QW-ACT-R4": {
9690
+ "issueID": "refresh",
8782
9691
  "quality": 1,
8783
- "what": "Element marked as decorative is exposed"
9692
+ "what": "Element refreshes or redirects with delay"
8784
9693
  },
8785
- "QW-ACT-R2": {
8786
- "issueID": "pageLanguage",
9694
+ "QW-ACT-R71": {
9695
+ "issueID": "refresh",
8787
9696
  "quality": 1,
8788
- "what": "HTML page has no lang attribute"
9697
+ "what": "Element has a refresh delay (no exception)"
8789
9698
  },
8790
- "QW-ACT-R5": {
8791
- "issueID": "pageLanguageBad",
9699
+ "QW-ACT-R26": {
9700
+ "issueID": "audioNoText",
8792
9701
  "quality": 1,
8793
- "what": "HTML lang attribute is invalid"
9702
+ "what": "Auditory content of the element has no accessible alternative"
8794
9703
  },
8795
- "QW-ACT-R3": {
8796
- "issueID": "pageLanguageBad",
9704
+ "QW-ACT-R29": {
9705
+ "issueID": "audioNoText",
8797
9706
  "quality": 1,
8798
- "what": "HTML lang and xml:lang do not match"
9707
+ "what": "Content of the element has no text alternative"
8799
9708
  },
8800
- "QW-ACT-R22": {
8801
- "issueID": "elementLanguageBad",
9709
+ "QW-ACT-R58": {
9710
+ "issueID": "audioNoText",
8802
9711
  "quality": 1,
8803
- "what": "Element within the body has no valid lang attribute"
9712
+ "what": "Content of the element has no transcript"
8804
9713
  },
8805
- "QW-ACT-R42": {
8806
- "issueID": "objectNoText",
9714
+ "QW-ACT-R59": {
9715
+ "issueID": "audioNoText",
8807
9716
  "quality": 1,
8808
- "what": "Object element has no non-empty accessible name"
9717
+ "what": "Element content is not a media alternative for text"
8809
9718
  },
8810
- "QW-WCAG-T11": {
8811
- "issueID": "appletNoText",
9719
+ "QW-ACT-R60": {
9720
+ "issueID": "audioNoText",
8812
9721
  "quality": 1,
8813
- "what": "Text alternative not provided on an applet element"
9722
+ "what": "Auditory content of the element has no captions"
8814
9723
  },
8815
- "QW-WCAG-T1": {
8816
- "issueID": "imageMapAreaNoText",
9724
+ "QW-ACT-R23": {
9725
+ "issueID": "videoNoText",
8817
9726
  "quality": 1,
8818
- "what": "Text alternative for an area element of an image map is not provided"
9727
+ "what": "video element visual content has no accessible alternative"
8819
9728
  },
8820
- "QW-WCAG-T6": {
8821
- "issueID": "eventKeyboardRisk",
9729
+ "QW-ACT-R31": {
9730
+ "issueID": "videoNoText",
8822
9731
  "quality": 1,
8823
- "what": "Both keyboard and other device-specific functions are not used"
9732
+ "what": "video element visual-only content has no accessible alternative"
8824
9733
  },
8825
- "QW-WCAG-T17": {
8826
- "issueID": "labelConfusionRisk",
9734
+ "QW-ACT-R32": {
9735
+ "issueID": "videoNoText",
8827
9736
  "quality": 1,
8828
- "what": "label not positioned to maximize the predictability of the relationship"
9737
+ "what": "video element visual-only content has no strict accessible alternative"
8829
9738
  },
8830
- "QW-ACT-R12": {
8831
- "issueID": "linkNoText",
9739
+ "QW-ACT-R51": {
9740
+ "issueID": "videoNoText",
8832
9741
  "quality": 1,
8833
- "what": "Link has no accessible name"
9742
+ "what": "video element visual-only content is not a media alternative for text"
8834
9743
  },
8835
- "QW-WCAG-T21": {
8836
- "issueID": "imageLinkNoText",
9744
+ "QW-ACT-R56": {
9745
+ "issueID": "videoNoText",
8837
9746
  "quality": 1,
8838
- "what": "Accessible name is not provided for an image which is the only content in a link"
9747
+ "what": "video element content is not a media alternative for text"
8839
9748
  },
8840
- "QW-WCAG-T7": {
8841
- "issueID": "abbreviationNoTitle",
9749
+ "QW-ACT-R61": {
9750
+ "issueID": "videoNoText",
8842
9751
  "quality": 1,
8843
- "what": "Definition for an abbreviation not provided with an abbr element"
9752
+ "what": "video element visual content has no transcript"
8844
9753
  },
8845
- "QW-ACT-R9": {
8846
- "issueID": "linkTextsSame",
9754
+ "QW-ACT-R53": {
9755
+ "issueID": "videoNoTranscript",
8847
9756
  "quality": 1,
8848
- "what": "Links with identical accessible names have different purposes"
9757
+ "what": "video element visual-only content has no transcript"
8849
9758
  },
8850
- "QW-ACT-R44": {
8851
- "issueID": "linkTextsSame",
9759
+ "QW-ACT-R55": {
9760
+ "issueID": "videoNoAudioDescription",
8852
9761
  "quality": 1,
8853
- "what": "Links with identical accessible names and context serve different purposes"
9762
+ "what": "video element visual content has no audio description"
8854
9763
  },
8855
- "QW-BP4": {
8856
- "issueID": "linksNoNav",
9764
+ "QW-ACT-R54": {
9765
+ "issueID": "videoNoAudioTrack",
8857
9766
  "quality": 1,
8858
- "what": "Grouped links are not within a nav element"
9767
+ "what": "Visual-only content of the element has no audio track alternative"
8859
9768
  },
8860
- "QW-BP13": {
8861
- "issueID": "linkPair",
9769
+ "QW-ACT-R43": {
9770
+ "issueID": "keyboardScroll",
8862
9771
  "quality": 1,
8863
- "what": "Consecutive links have the same href and one contains an image"
9772
+ "what": "Scrollable element is not keyboard accessible"
8864
9773
  },
8865
- "QW-WCAG-T10": {
8866
- "issueID": "linkNameRisk",
8867
- "quality": .8,
8868
- "what": "Link name repeats its image name and/or that name is suspect"
9774
+ "QW-BP18": {
9775
+ "issueID": "scrollRisk",
9776
+ "quality": 1,
9777
+ "what": "Percentage is not used in CSS for a container size"
8869
9778
  },
8870
- "QW-WCAG-T22": {
8871
- "issueID": "pageNewWindow",
9779
+ "QW-ACT-R72": {
9780
+ "issueID": "repeatedContentRisk",
8872
9781
  "quality": 1,
8873
- "what": "New window opens as soon as a new page is loaded"
9782
+ "what": "First focusable element is not a link to the non-repeated content"
8874
9783
  },
8875
- "QW-ACT-R11": {
8876
- "issueID": "buttonNoText",
9784
+ "QW-WCAG-T19": {
9785
+ "issueID": "submitButton",
8877
9786
  "quality": 1,
8878
- "what": "button element has no accessible name"
9787
+ "what": "Submit button not provided"
8879
9788
  },
8880
- "QW-ACT-R66": {
8881
- "issueID": "menuItemNoText",
9789
+ "QW-BP10": {
9790
+ "issueID": "elementObsolete",
8882
9791
  "quality": 1,
8883
- "what": "menuitem element has no non-empty accessible name"
9792
+ "what": "HTML element is used to control the visual presentation of content"
8884
9793
  },
8885
- "QW-ACT-R33": {
8886
- "issueID": "parentMissing",
9794
+ "QW-WCAG-T16": {
9795
+ "issueID": "parseError",
8887
9796
  "quality": 1,
8888
- "what": "Element has no ARIA required context role"
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"
8889
9808
  },
8890
- "QW-ACT-R38": {
8891
- "issueID": "descendantMissing",
9809
+ "aria-allowed-attr": {
9810
+ "issueID": "ariaAttributeBad",
8892
9811
  "quality": 1,
8893
- "what": "Element has no ARIA required owned element"
9812
+ "what": "aria attribute is not permitted for the element role"
8894
9813
  },
8895
- "QW-ACT-R21": {
8896
- "issueID": "svgImageNoText",
9814
+ "aria-allowed-role": {
9815
+ "issueID": "roleBad",
8897
9816
  "quality": 1,
8898
- "what": "Element with an explicit role has no accessible name"
9817
+ "what": "Explicit role is not permitted for the element"
8899
9818
  },
8900
- "QW-ACT-R7": {
8901
- "issueID": "cssBansPageRotate",
9819
+ "aria-braille-equivalent": {
9820
+ "issueID": "brailleOnly",
8902
9821
  "quality": 1,
8903
- "what": "Orientation of the page is restricted by a CSS transform property"
9822
+ "what": "aria-braillelabel or aria-brailleroledescription has no non-braille equivalent"
8904
9823
  },
8905
- "QW-ACT-R14": {
8906
- "issueID": "metaBansZoom",
9824
+ "aria-conditional-attr": {
9825
+ "issueID": "ariaMissing",
8907
9826
  "quality": 1,
8908
- "what": "meta viewport prevents zoom"
9827
+ "what": "aria-errormessage is used without aria-invalid set to a non-false value"
8909
9828
  },
8910
- "QW-ACT-R67": {
8911
- "issueID": "horizontalSpacingFrozen",
9829
+ "aria-deprecated-role": {
9830
+ "issueID": "roleBad",
8912
9831
  "quality": 1,
8913
- "what": "Letter spacing in a style attribute is !important"
9832
+ "what": "role attribute uses a deprecated or author-discouraged ARIA role"
8914
9833
  },
8915
- "QW-ACT-R69": {
8916
- "issueID": "horizontalSpacingFrozen",
9834
+ "aria-hidden-body": {
9835
+ "issueID": "contentHidden",
8917
9836
  "quality": 1,
8918
- "what": "Word spacing in a style attribute is !important"
9837
+ "what": "The body element is aria-hidden"
8919
9838
  },
8920
- "QW-ACT-R68": {
8921
- "issueID": "verticalSpacingFrozen",
9839
+ "aria-hidden-focus": {
9840
+ "issueID": "focusableHidden",
8922
9841
  "quality": 1,
8923
- "what": "Line height in a style attribute is !important"
9842
+ "what": "aria-hidden element is focusable or contains a focusable element"
8924
9843
  },
8925
- "QW-ACT-R40": {
8926
- "issueID": "overflowHiddenRisk",
9844
+ "aria-prohibited-attr": {
9845
+ "issueID": "attributeBad",
8927
9846
  "quality": 1,
8928
- "what": "Zoomed text node is clipped by a CSS overflow declaration?"
9847
+ "what": "ARIA naming attribute is used on a role that prohibits it"
8929
9848
  },
8930
- "QW-BP14": {
8931
- "issueID": "boxSizeAbsolute",
9849
+ "aria-prohibited-children": {
9850
+ "issueID": "roleHierarchyBad",
8932
9851
  "quality": 1,
8933
- "what": "Container width is specified in px"
9852
+ "what": "Container role owns a child with a disallowed role"
8934
9853
  },
8935
- "QW-BP15": {
8936
- "issueID": "boxSizeAbsolute",
9854
+ "aria-required-attr": {
9855
+ "issueID": "ariaMissing",
8937
9856
  "quality": 1,
8938
- "what": "Element width is specified in an absolute value"
9857
+ "what": "Role is missing a required ARIA state or property"
8939
9858
  },
8940
- "QW-ACT-R19": {
8941
- "issueID": "iframeTitleBad",
9859
+ "aria-required-children": {
9860
+ "issueID": "descendantMissing",
8942
9861
  "quality": 1,
8943
- "what": "iframe element has no accessible name"
9862
+ "what": "Container role is missing a required child role"
8944
9863
  },
8945
- "QW-ACT-R20": {
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": {
8946
9875
  "issueID": "roleBad",
8947
9876
  "quality": 1,
8948
- "what": "role attribute has an invalid value"
9877
+ "what": "role attribute is not a valid non-abstract ARIA role"
8949
9878
  },
8950
- "QW-ACT-R28": {
8951
- "issueID": "ariaMissing",
9879
+ "aria-valid-attr": {
9880
+ "issueID": "ariaAttributeBad",
8952
9881
  "quality": 1,
8953
- "what": "Element with a role attribute does not have the required states and properties"
9882
+ "what": "aria attribute is not a real defined ARIA attribute"
8954
9883
  },
8955
- "QW-ACT-R25": {
9884
+ "aria-valid-attr-value": {
8956
9885
  "issueID": "ariaAttributeBad",
8957
9886
  "quality": 1,
8958
- "what": "ARIA state or property is not permitted"
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",
9896
+ "quality": 1,
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": {}