testaro-issues 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +195 -134
- package/dist/index.d.cts +74 -73
- package/dist/index.d.mts +74 -73
- package/dist/index.mjs +195 -134
- package/package.json +3 -2
package/dist/index.mjs
CHANGED
|
@@ -8,7 +8,7 @@ const issuesData = {
|
|
|
8
8
|
},
|
|
9
9
|
"duplicateAttribute": {
|
|
10
10
|
"summary": "duplicate attribute",
|
|
11
|
-
"why": "Browser processes the
|
|
11
|
+
"why": "Browser processes the page improperly",
|
|
12
12
|
"wcag": "4.1.1",
|
|
13
13
|
"weight": 2
|
|
14
14
|
},
|
|
@@ -38,7 +38,7 @@ const issuesData = {
|
|
|
38
38
|
},
|
|
39
39
|
"regionNoText": {
|
|
40
40
|
"summary": "region not named",
|
|
41
|
-
"why": "User cannot get help surveying the parts of the
|
|
41
|
+
"why": "User cannot get help surveying the parts of the page",
|
|
42
42
|
"wcag": "4.1.2",
|
|
43
43
|
"weight": 4
|
|
44
44
|
},
|
|
@@ -151,7 +151,7 @@ const issuesData = {
|
|
|
151
151
|
"weight": 4
|
|
152
152
|
},
|
|
153
153
|
"gapBad": {
|
|
154
|
-
"summary": "CSS
|
|
154
|
+
"summary": "CSS gap invalid",
|
|
155
155
|
"why": "Content is displayed improperly",
|
|
156
156
|
"wcag": "4.1",
|
|
157
157
|
"weight": 4
|
|
@@ -212,14 +212,14 @@ const issuesData = {
|
|
|
212
212
|
},
|
|
213
213
|
"pageLanguage": {
|
|
214
214
|
"summary": "page language missing",
|
|
215
|
-
"why": "Speaking helper may mispronounce the
|
|
215
|
+
"why": "Speaking helper may mispronounce the page text",
|
|
216
216
|
"wcag": "3.1.1",
|
|
217
217
|
"weight": 4,
|
|
218
218
|
"max": 1
|
|
219
219
|
},
|
|
220
220
|
"pageLanguageBad": {
|
|
221
221
|
"summary": "page language invalid",
|
|
222
|
-
"why": "Speaking helper may mispronounce the
|
|
222
|
+
"why": "Speaking helper may mispronounce the page text",
|
|
223
223
|
"wcag": "3.1.1",
|
|
224
224
|
"weight": 4,
|
|
225
225
|
"max": 1
|
|
@@ -298,7 +298,7 @@ const issuesData = {
|
|
|
298
298
|
},
|
|
299
299
|
"internalLinkBroken": {
|
|
300
300
|
"summary": "internal link broken",
|
|
301
|
-
"why": "User cannot reach a promised
|
|
301
|
+
"why": "User cannot reach a promised page location",
|
|
302
302
|
"wcag": "1.3.1",
|
|
303
303
|
"weight": 4
|
|
304
304
|
},
|
|
@@ -496,7 +496,7 @@ const issuesData = {
|
|
|
496
496
|
},
|
|
497
497
|
"pageNewWindow": {
|
|
498
498
|
"summary": "page immediately opens window",
|
|
499
|
-
"why": "User promised a
|
|
499
|
+
"why": "User promised a page gets another page, too",
|
|
500
500
|
"wcag": "3.2.5",
|
|
501
501
|
"weight": 3,
|
|
502
502
|
"max": 1
|
|
@@ -606,7 +606,7 @@ const issuesData = {
|
|
|
606
606
|
},
|
|
607
607
|
"metaBansZoom": {
|
|
608
608
|
"summary": "meta bans zoom",
|
|
609
|
-
"why": "User cannot adjust the
|
|
609
|
+
"why": "User cannot adjust the page size for readability",
|
|
610
610
|
"wcag": "1.4.4",
|
|
611
611
|
"weight": 4,
|
|
612
612
|
"max": 1
|
|
@@ -690,7 +690,7 @@ const issuesData = {
|
|
|
690
690
|
"weight": 4
|
|
691
691
|
},
|
|
692
692
|
"linkElementMisplaced": {
|
|
693
|
-
"summary": "link element
|
|
693
|
+
"summary": "link element misplaced",
|
|
694
694
|
"why": "Document fails to get a needed external resource",
|
|
695
695
|
"wcag": "1.3.1",
|
|
696
696
|
"weight": 4
|
|
@@ -739,25 +739,25 @@ const issuesData = {
|
|
|
739
739
|
},
|
|
740
740
|
"stylesheetBanned": {
|
|
741
741
|
"summary": "stylesheet prohibited",
|
|
742
|
-
"why": "Browser displays the
|
|
742
|
+
"why": "Browser displays the page improperly",
|
|
743
743
|
"wcag": "1.4",
|
|
744
744
|
"weight": 3
|
|
745
745
|
},
|
|
746
746
|
"scriptNotDeferrable": {
|
|
747
747
|
"summary": "script element invalidly deferred",
|
|
748
|
-
"why": "Browser processes the
|
|
748
|
+
"why": "Browser processes the page improperly",
|
|
749
749
|
"wcag": "1.3.1",
|
|
750
750
|
"weight": 4
|
|
751
751
|
},
|
|
752
752
|
"scriptBanned": {
|
|
753
753
|
"summary": "script prohibited",
|
|
754
|
-
"why": "Browser processes the
|
|
754
|
+
"why": "Browser processes the page improperly",
|
|
755
755
|
"wcag": "4.1",
|
|
756
756
|
"weight": 3
|
|
757
757
|
},
|
|
758
758
|
"scriptElementBad": {
|
|
759
759
|
"summary": "script element invalid",
|
|
760
|
-
"why": "Browser processes the
|
|
760
|
+
"why": "Browser processes the page improperly",
|
|
761
761
|
"wcag": "1.3.1",
|
|
762
762
|
"weight": 4
|
|
763
763
|
},
|
|
@@ -781,7 +781,7 @@ const issuesData = {
|
|
|
781
781
|
},
|
|
782
782
|
"iframeTitleBad": {
|
|
783
783
|
"summary": "iframe not named",
|
|
784
|
-
"why": "User cannot get help on the topic of an embedded
|
|
784
|
+
"why": "User cannot get help on the topic of an embedded page",
|
|
785
785
|
"wcag": "4.1.2",
|
|
786
786
|
"weight": 4
|
|
787
787
|
},
|
|
@@ -979,13 +979,13 @@ const issuesData = {
|
|
|
979
979
|
},
|
|
980
980
|
"headingEmpty": {
|
|
981
981
|
"summary": "heading empty",
|
|
982
|
-
"why": "User cannot get help on the topic of a part of the
|
|
982
|
+
"why": "User cannot get help on the topic of a part of the page",
|
|
983
983
|
"wcag": "2.4.6",
|
|
984
984
|
"weight": 3
|
|
985
985
|
},
|
|
986
986
|
"headingOfNothing": {
|
|
987
987
|
"summary": "heading heads nothing",
|
|
988
|
-
"why": "Helper misdescribes the
|
|
988
|
+
"why": "Helper misdescribes the page",
|
|
989
989
|
"wcag": "1.3.1",
|
|
990
990
|
"weight": 2
|
|
991
991
|
},
|
|
@@ -1027,112 +1027,112 @@ const issuesData = {
|
|
|
1027
1027
|
},
|
|
1028
1028
|
"docTypeMissing": {
|
|
1029
1029
|
"summary": "DOCTYPE missing",
|
|
1030
|
-
"why": "Browser processes the
|
|
1030
|
+
"why": "Browser processes the page improperly",
|
|
1031
1031
|
"wcag": "1.3.1",
|
|
1032
1032
|
"weight": 4,
|
|
1033
1033
|
"max": 1
|
|
1034
1034
|
},
|
|
1035
1035
|
"docTypeMisplaced": {
|
|
1036
1036
|
"summary": "DOCTYPE in invalid location",
|
|
1037
|
-
"why": "Browser processes the
|
|
1037
|
+
"why": "Browser processes the page improperly",
|
|
1038
1038
|
"wcag": "1.3.1",
|
|
1039
1039
|
"weight": 4,
|
|
1040
1040
|
"max": 1
|
|
1041
1041
|
},
|
|
1042
1042
|
"docTypeBad": {
|
|
1043
1043
|
"summary": "DOCTYPE invalid",
|
|
1044
|
-
"why": "Browser processes the
|
|
1044
|
+
"why": "Browser processes the page improperly",
|
|
1045
1045
|
"wcag": "1.3.1",
|
|
1046
1046
|
"weight": 3,
|
|
1047
1047
|
"max": 1
|
|
1048
1048
|
},
|
|
1049
1049
|
"pageTitleBad": {
|
|
1050
1050
|
"summary": "page title invalid",
|
|
1051
|
-
"why": "Browser processes the
|
|
1051
|
+
"why": "Browser processes the page improperly",
|
|
1052
1052
|
"wcag": "1.3.1",
|
|
1053
1053
|
"weight": 3,
|
|
1054
1054
|
"max": 1
|
|
1055
1055
|
},
|
|
1056
1056
|
"pageTitle": {
|
|
1057
1057
|
"summary": "page title missing",
|
|
1058
|
-
"why": "User is not informed of the topic of the
|
|
1058
|
+
"why": "User is not informed of the topic of the page",
|
|
1059
1059
|
"wcag": "2.4.2",
|
|
1060
1060
|
"weight": 4,
|
|
1061
1061
|
"max": 1
|
|
1062
1062
|
},
|
|
1063
1063
|
"headElementsBad": {
|
|
1064
1064
|
"summary": "element in head invalid",
|
|
1065
|
-
"why": "Browser processes the
|
|
1065
|
+
"why": "Browser processes the page improperly",
|
|
1066
1066
|
"wcag": "4.1.1",
|
|
1067
1067
|
"weight": 3
|
|
1068
1068
|
},
|
|
1069
1069
|
"headingLevelSkip": {
|
|
1070
1070
|
"summary": "heading level skipped",
|
|
1071
|
-
"why": "Helper misdescribes the
|
|
1071
|
+
"why": "Helper misdescribes the page",
|
|
1072
1072
|
"wcag": "1.3.1",
|
|
1073
1073
|
"weight": 2
|
|
1074
1074
|
},
|
|
1075
1075
|
"headingStructure": {
|
|
1076
1076
|
"summary": "heading structure illogical",
|
|
1077
|
-
"why": "Helper misdescribes the
|
|
1077
|
+
"why": "Helper misdescribes the page",
|
|
1078
1078
|
"wcag": "1.3.1",
|
|
1079
1079
|
"weight": 2
|
|
1080
1080
|
},
|
|
1081
1081
|
"headingConfusion": {
|
|
1082
1082
|
"summary": "heading names repeated",
|
|
1083
|
-
"why": "User cannot differentiate parts of the
|
|
1083
|
+
"why": "User cannot differentiate parts of the page",
|
|
1084
1084
|
"wcag": "1.3.1",
|
|
1085
1085
|
"weight": 2
|
|
1086
1086
|
},
|
|
1087
1087
|
"headingMisuseRisk": {
|
|
1088
1088
|
"summary": "heading used for styling?",
|
|
1089
|
-
"why": "User cannot understand the
|
|
1089
|
+
"why": "User cannot understand the page structure",
|
|
1090
1090
|
"wcag": "1.3.1",
|
|
1091
1091
|
"weight": 2
|
|
1092
1092
|
},
|
|
1093
1093
|
"headingNone": {
|
|
1094
1094
|
"summary": "headings missing",
|
|
1095
|
-
"why": "User cannot survey parts of the
|
|
1095
|
+
"why": "User cannot survey parts of the page",
|
|
1096
1096
|
"wcag": "1.3.1",
|
|
1097
1097
|
"weight": 3,
|
|
1098
1098
|
"max": 1
|
|
1099
1099
|
},
|
|
1100
1100
|
"h1Not1": {
|
|
1101
1101
|
"summary": "not exactly 1 h1 heading",
|
|
1102
|
-
"why": "User cannot understand the topic of the
|
|
1102
|
+
"why": "User cannot understand the topic of the page",
|
|
1103
1103
|
"wcag": "1.3.1",
|
|
1104
1104
|
"weight": 2,
|
|
1105
1105
|
"max": 1
|
|
1106
1106
|
},
|
|
1107
1107
|
"h1Not1st": {
|
|
1108
1108
|
"summary": "h1 not 1st heading",
|
|
1109
|
-
"why": "User cannot understand the topic of the
|
|
1109
|
+
"why": "User cannot understand the topic of the page",
|
|
1110
1110
|
"wcag": "1.3.1",
|
|
1111
1111
|
"weight": 3,
|
|
1112
1112
|
"max": 1
|
|
1113
1113
|
},
|
|
1114
1114
|
"docHeadingNotH1": {
|
|
1115
1115
|
"summary": "primary heading not h1",
|
|
1116
|
-
"why": "User cannot understand the topic of the
|
|
1116
|
+
"why": "User cannot understand the topic of the page",
|
|
1117
1117
|
"wcag": "1.3.1",
|
|
1118
1118
|
"weight": 2,
|
|
1119
1119
|
"max": 1
|
|
1120
1120
|
},
|
|
1121
1121
|
"articleHeadingless": {
|
|
1122
1122
|
"summary": "article heading missing",
|
|
1123
|
-
"why": "User cannot understand the topic of a part of the
|
|
1123
|
+
"why": "User cannot understand the topic of a part of the page",
|
|
1124
1124
|
"wcag": "1.3.1",
|
|
1125
1125
|
"weight": 1
|
|
1126
1126
|
},
|
|
1127
1127
|
"sectionHeadingless": {
|
|
1128
1128
|
"summary": "section heading missing",
|
|
1129
|
-
"why": "User cannot understand the topic of a part of the
|
|
1129
|
+
"why": "User cannot understand the topic of a part of the page",
|
|
1130
1130
|
"wcag": "1.3.1",
|
|
1131
1131
|
"weight": 1
|
|
1132
1132
|
},
|
|
1133
1133
|
"headingLength": {
|
|
1134
1134
|
"summary": "heading abnormally long",
|
|
1135
|
-
"why": "User has difficulty understanding the topic of a part of the
|
|
1135
|
+
"why": "User has difficulty understanding the topic of a part of the page",
|
|
1136
1136
|
"wcag": "1.3.1",
|
|
1137
1137
|
"weight": 1
|
|
1138
1138
|
},
|
|
@@ -1162,7 +1162,7 @@ const issuesData = {
|
|
|
1162
1162
|
},
|
|
1163
1163
|
"hrConfusionRisk": {
|
|
1164
1164
|
"summary": "hr misused",
|
|
1165
|
-
"why": "User cannot get help on the nature of segments of the
|
|
1165
|
+
"why": "User cannot get help on the nature of segments of the page",
|
|
1166
1166
|
"wcag": "1.3.1",
|
|
1167
1167
|
"weight": 1
|
|
1168
1168
|
},
|
|
@@ -1180,7 +1180,7 @@ const issuesData = {
|
|
|
1180
1180
|
},
|
|
1181
1181
|
"pseudoHeadingRisk": {
|
|
1182
1182
|
"summary": "heading-like styles dubious",
|
|
1183
|
-
"why": "User may be unable to understand the topic of a part of the
|
|
1183
|
+
"why": "User may be unable to understand the topic of a part of the page",
|
|
1184
1184
|
"wcag": "1.3.1",
|
|
1185
1185
|
"weight": 1
|
|
1186
1186
|
},
|
|
@@ -1510,7 +1510,7 @@ const issuesData = {
|
|
|
1510
1510
|
},
|
|
1511
1511
|
"visibleBulk": {
|
|
1512
1512
|
"summary": "large visible-element count",
|
|
1513
|
-
"why": "User cannot easily find items in the
|
|
1513
|
+
"why": "User cannot easily find items in the page",
|
|
1514
1514
|
"wcag": "2.4",
|
|
1515
1515
|
"weight": 1,
|
|
1516
1516
|
"max": 1
|
|
@@ -1577,90 +1577,90 @@ const issuesData = {
|
|
|
1577
1577
|
},
|
|
1578
1578
|
"noLandmarks": {
|
|
1579
1579
|
"summary": "no landmarks",
|
|
1580
|
-
"why": "User cannot get help on how the
|
|
1580
|
+
"why": "User cannot get help on how the page is organized",
|
|
1581
1581
|
"wcag": "1.3.6",
|
|
1582
1582
|
"weight": 2,
|
|
1583
1583
|
"max": 1
|
|
1584
1584
|
},
|
|
1585
1585
|
"contentBeyondLandmarks": {
|
|
1586
1586
|
"summary": "content beyond landmarks",
|
|
1587
|
-
"why": "User cannot get help on how some of the
|
|
1587
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1588
1588
|
"wcag": "1.3.6",
|
|
1589
1589
|
"weight": 1
|
|
1590
1590
|
},
|
|
1591
1591
|
"footerNotTop": {
|
|
1592
1592
|
"summary": "footer child of landmark",
|
|
1593
|
-
"why": "User cannot get help on how some of the
|
|
1593
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1594
1594
|
"wcag": "1.3.6",
|
|
1595
1595
|
"weight": 1
|
|
1596
1596
|
},
|
|
1597
1597
|
"asideNotTop": {
|
|
1598
1598
|
"summary": "aside child of landmark",
|
|
1599
|
-
"why": "User cannot get help on how some of the
|
|
1599
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1600
1600
|
"wcag": "1.3.6",
|
|
1601
1601
|
"weight": 2
|
|
1602
1602
|
},
|
|
1603
1603
|
"mainNotTop": {
|
|
1604
1604
|
"summary": "main child of landmark",
|
|
1605
|
-
"why": "User cannot get help on how some of the
|
|
1605
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1606
1606
|
"wcag": "1.3.6",
|
|
1607
1607
|
"weight": 2
|
|
1608
1608
|
},
|
|
1609
1609
|
"mainConfusion": {
|
|
1610
1610
|
"summary": "mains not distinctly named",
|
|
1611
|
-
"why": "User cannot get help on how some of the
|
|
1611
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1612
1612
|
"wcag": "1.3.6",
|
|
1613
1613
|
"weight": 3
|
|
1614
1614
|
},
|
|
1615
1615
|
"mainNone": {
|
|
1616
1616
|
"summary": "main missing",
|
|
1617
|
-
"why": "User cannot get help on how some of the
|
|
1617
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1618
1618
|
"wcag": "1.3.6",
|
|
1619
1619
|
"weight": 2,
|
|
1620
1620
|
"max": 1
|
|
1621
1621
|
},
|
|
1622
1622
|
"mainNot1": {
|
|
1623
1623
|
"summary": "multiple mains",
|
|
1624
|
-
"why": "User cannot get help on how some of the
|
|
1624
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1625
1625
|
"wcag": "1.3.6",
|
|
1626
1626
|
"weight": 2,
|
|
1627
1627
|
"max": 1
|
|
1628
1628
|
},
|
|
1629
1629
|
"bannerNot1": {
|
|
1630
1630
|
"summary": "multiple banners",
|
|
1631
|
-
"why": "User cannot get help on how some of the
|
|
1631
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1632
1632
|
"wcag": "1.3.6",
|
|
1633
1633
|
"weight": 2,
|
|
1634
1634
|
"max": 1
|
|
1635
1635
|
},
|
|
1636
1636
|
"bannerNotTop": {
|
|
1637
1637
|
"summary": "banner child of landmark",
|
|
1638
|
-
"why": "User cannot get help on how some of the
|
|
1638
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1639
1639
|
"wcag": "1.3.6",
|
|
1640
1640
|
"weight": 2
|
|
1641
1641
|
},
|
|
1642
1642
|
"footerConfusion": {
|
|
1643
1643
|
"summary": "contentinfos not distinctly named",
|
|
1644
|
-
"why": "User cannot get help on how some of the
|
|
1644
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1645
1645
|
"wcag": "1.3.6",
|
|
1646
1646
|
"weight": 3
|
|
1647
1647
|
},
|
|
1648
1648
|
"footerNot1": {
|
|
1649
1649
|
"summary": "multiple contentinfos",
|
|
1650
|
-
"why": "User cannot get help on how some of the
|
|
1650
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1651
1651
|
"wcag": "1.3.6",
|
|
1652
1652
|
"weight": 2,
|
|
1653
1653
|
"max": 1
|
|
1654
1654
|
},
|
|
1655
1655
|
"landmarkConfusion": {
|
|
1656
1656
|
"summary": "landmarks not distinctly named",
|
|
1657
|
-
"why": "User cannot get help on how some of the
|
|
1657
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1658
1658
|
"wcag": "1.3.6",
|
|
1659
1659
|
"weight": 3
|
|
1660
1660
|
},
|
|
1661
1661
|
"documentConfusion": {
|
|
1662
|
-
"summary": "
|
|
1663
|
-
"why": "User cannot get help on how some of the
|
|
1662
|
+
"summary": "page elements not distinctly named",
|
|
1663
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1664
1664
|
"wcag": "1.3.6",
|
|
1665
1665
|
"weight": 3
|
|
1666
1666
|
},
|
|
@@ -1672,61 +1672,61 @@ const issuesData = {
|
|
|
1672
1672
|
},
|
|
1673
1673
|
"formConfusion": {
|
|
1674
1674
|
"summary": "forms not distinctly named",
|
|
1675
|
-
"why": "User cannot get help on how some of the
|
|
1675
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1676
1676
|
"wcag": "1.3.6",
|
|
1677
1677
|
"weight": 3
|
|
1678
1678
|
},
|
|
1679
1679
|
"applicationNoText": {
|
|
1680
1680
|
"summary": "application not named",
|
|
1681
|
-
"why": "User cannot get help on how some of the
|
|
1681
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1682
1682
|
"wcag": "1.3.6",
|
|
1683
1683
|
"weight": 4
|
|
1684
1684
|
},
|
|
1685
1685
|
"applicationConfusion": {
|
|
1686
1686
|
"summary": "applications not distinctly named",
|
|
1687
|
-
"why": "User cannot get help on how some of the
|
|
1687
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1688
1688
|
"wcag": "1.3.6",
|
|
1689
1689
|
"weight": 3
|
|
1690
1690
|
},
|
|
1691
1691
|
"asideConfusion": {
|
|
1692
1692
|
"summary": "asides not distinctly named",
|
|
1693
|
-
"why": "User cannot get help on how some of the
|
|
1693
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1694
1694
|
"wcag": "1.3.6",
|
|
1695
1695
|
"weight": 3
|
|
1696
1696
|
},
|
|
1697
1697
|
"bannerConfusion": {
|
|
1698
1698
|
"summary": "banners not distinctly named",
|
|
1699
|
-
"why": "User cannot get help on how some of the
|
|
1699
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1700
1700
|
"wcag": "1.3.6",
|
|
1701
1701
|
"weight": 3
|
|
1702
1702
|
},
|
|
1703
1703
|
"navConfusion": {
|
|
1704
1704
|
"summary": "navigations not distinctly named",
|
|
1705
|
-
"why": "User cannot get help on how some of the
|
|
1705
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1706
1706
|
"wcag": "1.3.6",
|
|
1707
1707
|
"weight": 3
|
|
1708
1708
|
},
|
|
1709
1709
|
"landmarkInNav": {
|
|
1710
1710
|
"summary": "invalid landmark child of navigation role",
|
|
1711
|
-
"why": "User cannot get help on how some of the
|
|
1711
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1712
1712
|
"wcag": "1.3.6",
|
|
1713
1713
|
"weight": 4
|
|
1714
1714
|
},
|
|
1715
1715
|
"regionConfusion": {
|
|
1716
1716
|
"summary": "regions not distinctly named",
|
|
1717
|
-
"why": "User cannot get help on how some of the
|
|
1717
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1718
1718
|
"wcag": "1.3.6",
|
|
1719
1719
|
"weight": 3
|
|
1720
1720
|
},
|
|
1721
1721
|
"searchConfusion": {
|
|
1722
1722
|
"summary": "searches not distinctly named",
|
|
1723
|
-
"why": "User cannot get help on how some of the
|
|
1723
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1724
1724
|
"wcag": "1.3.6",
|
|
1725
1725
|
"weight": 3
|
|
1726
1726
|
},
|
|
1727
1727
|
"complementaryNoText": {
|
|
1728
1728
|
"summary": "complementary not named",
|
|
1729
|
-
"why": "User cannot get help on how some of the
|
|
1729
|
+
"why": "User cannot get help on how some of the page is organized",
|
|
1730
1730
|
"wcag": "1.3.6",
|
|
1731
1731
|
"weight": 1
|
|
1732
1732
|
},
|
|
@@ -1786,14 +1786,14 @@ const issuesData = {
|
|
|
1786
1786
|
},
|
|
1787
1787
|
"contentHidden": {
|
|
1788
1788
|
"summary": "page hidden",
|
|
1789
|
-
"why": "User cannot get the
|
|
1789
|
+
"why": "User cannot get the page content",
|
|
1790
1790
|
"wcag": "2.4.7",
|
|
1791
1791
|
"weight": 4,
|
|
1792
1792
|
"max": 1
|
|
1793
1793
|
},
|
|
1794
1794
|
"hideFailureRisk": {
|
|
1795
1795
|
"summary": "false aria-hidden value risky",
|
|
1796
|
-
"why": "User may be misled by erroneously hidden or revealed
|
|
1796
|
+
"why": "User may be misled by erroneously hidden or revealed page content",
|
|
1797
1797
|
"wcag": "2.4.6",
|
|
1798
1798
|
"weight": 1
|
|
1799
1799
|
},
|
|
@@ -1811,19 +1811,19 @@ const issuesData = {
|
|
|
1811
1811
|
},
|
|
1812
1812
|
"hoverIndication": {
|
|
1813
1813
|
"summary": "hover indication poor",
|
|
1814
|
-
"why": "User cannot explore the
|
|
1814
|
+
"why": "User cannot explore the page reliably with a mouse",
|
|
1815
1815
|
"wcag": "3.3.2",
|
|
1816
1816
|
"weight": 3
|
|
1817
1817
|
},
|
|
1818
1818
|
"hoverSurprise": {
|
|
1819
1819
|
"summary": "hovering changes content",
|
|
1820
|
-
"why": "User cannot explore the
|
|
1820
|
+
"why": "User cannot explore the page reliably with a mouse",
|
|
1821
1821
|
"wcag": "3.2.5",
|
|
1822
1822
|
"weight": 1
|
|
1823
1823
|
},
|
|
1824
1824
|
"formSurpriseRisk": {
|
|
1825
1825
|
"summary": "form interaction changes content?",
|
|
1826
|
-
"why": "User experiences unexpected
|
|
1826
|
+
"why": "User experiences unexpected page change when using a form",
|
|
1827
1827
|
"wcag": "3.2.5",
|
|
1828
1828
|
"weight": 1
|
|
1829
1829
|
},
|
|
@@ -2070,14 +2070,14 @@ const issuesData = {
|
|
|
2070
2070
|
},
|
|
2071
2071
|
"skipRepeatedContent": {
|
|
2072
2072
|
"summary": "skip method missing or invalid",
|
|
2073
|
-
"why": "Keyboard-only user cannot easily reach the specific content of the
|
|
2073
|
+
"why": "Keyboard-only user cannot easily reach the specific content of the page",
|
|
2074
2074
|
"wcag": "2.4.1",
|
|
2075
2075
|
"weight": 3,
|
|
2076
2076
|
"max": 2
|
|
2077
2077
|
},
|
|
2078
2078
|
"repeatedContentRisk": {
|
|
2079
2079
|
"summary": "skip method missing or invalid?",
|
|
2080
|
-
"why": "Keyboard-only user may be unable easily to reach the specific content of the
|
|
2080
|
+
"why": "Keyboard-only user may be unable easily to reach the specific content of the page",
|
|
2081
2081
|
"wcag": "2.4.1",
|
|
2082
2082
|
"weight": 1,
|
|
2083
2083
|
"max": 2
|
|
@@ -2169,25 +2169,25 @@ const issuesData = {
|
|
|
2169
2169
|
},
|
|
2170
2170
|
"characterBad": {
|
|
2171
2171
|
"summary": "invalid character",
|
|
2172
|
-
"why": "Invalid character makes the
|
|
2172
|
+
"why": "Invalid character makes the page behave incorrectly",
|
|
2173
2173
|
"wcag": "4.1",
|
|
2174
2174
|
"weight": 3
|
|
2175
2175
|
},
|
|
2176
2176
|
"entityBad": {
|
|
2177
2177
|
"summary": "named character reference invalid",
|
|
2178
|
-
"why": "User may be unable to read all the
|
|
2178
|
+
"why": "User may be unable to read all the page text",
|
|
2179
2179
|
"wcag": "4.1",
|
|
2180
2180
|
"weight": 4
|
|
2181
2181
|
},
|
|
2182
2182
|
"textContentBad": {
|
|
2183
2183
|
"summary": "element text content invalid",
|
|
2184
|
-
"why": "User may be unable to read all the
|
|
2184
|
+
"why": "User may be unable to read all the page text",
|
|
2185
2185
|
"wcag": "4.1",
|
|
2186
2186
|
"weight": 3
|
|
2187
2187
|
},
|
|
2188
2188
|
"parseError": {
|
|
2189
2189
|
"summary": "code invalid",
|
|
2190
|
-
"why": "Invalid code in the
|
|
2190
|
+
"why": "Invalid code in the page may prevent a helper from working",
|
|
2191
2191
|
"wcag": "4.1",
|
|
2192
2192
|
"weight": 3
|
|
2193
2193
|
},
|
|
@@ -2213,7 +2213,7 @@ const issuesData = {
|
|
|
2213
2213
|
},
|
|
2214
2214
|
"captcha2": {
|
|
2215
2215
|
"summary": "captcha2",
|
|
2216
|
-
"why": "User is prevented from consuming the
|
|
2216
|
+
"why": "User is prevented from consuming the page",
|
|
2217
2217
|
"wcag": "1.1.1",
|
|
2218
2218
|
"weight": 1,
|
|
2219
2219
|
"max": 1
|
|
@@ -2244,7 +2244,8 @@ const rulesData = {
|
|
|
2244
2244
|
"cantTellTextContrast": {
|
|
2245
2245
|
"issueID": "ignorable",
|
|
2246
2246
|
"quality": 1,
|
|
2247
|
-
"what": "Test of text contrast could not give a conclusive result [invalid]"
|
|
2247
|
+
"what": "Test of text contrast could not give a conclusive result [invalid]",
|
|
2248
|
+
"supersededBy": null
|
|
2248
2249
|
},
|
|
2249
2250
|
"r73": {
|
|
2250
2251
|
"issueID": "ignorable",
|
|
@@ -2559,7 +2560,8 @@ const rulesData = {
|
|
|
2559
2560
|
"cantTell": {
|
|
2560
2561
|
"issueID": "notValidatable",
|
|
2561
2562
|
"quality": 1,
|
|
2562
|
-
"what": "Test could not give a conclusive result"
|
|
2563
|
+
"what": "Test could not give a conclusive result",
|
|
2564
|
+
"supersededBy": "r66"
|
|
2563
2565
|
}
|
|
2564
2566
|
},
|
|
2565
2567
|
"variable": {}
|
|
@@ -3879,7 +3881,8 @@ const rulesData = {
|
|
|
3879
3881
|
"E-AAA.4_1_1.F77": {
|
|
3880
3882
|
"issueID": "duplicateID",
|
|
3881
3883
|
"quality": 1,
|
|
3882
|
-
"what": "Duplicate id attribute value"
|
|
3884
|
+
"what": "Duplicate id attribute value",
|
|
3885
|
+
"supersededBy": "E-WCAG2AAA.Principle4.Guideline4_1.4_1_1.F77"
|
|
3883
3886
|
},
|
|
3884
3887
|
"E-WCAG2AAA.Principle4.Guideline4_1.4_1_1.F77": {
|
|
3885
3888
|
"issueID": "duplicateID",
|
|
@@ -3929,7 +3932,8 @@ const rulesData = {
|
|
|
3929
3932
|
"E-H36": {
|
|
3930
3933
|
"issueID": "imageButtonNoText",
|
|
3931
3934
|
"quality": 1,
|
|
3932
|
-
"what": "Image submit button has no alt attribute"
|
|
3935
|
+
"what": "Image submit button has no alt attribute",
|
|
3936
|
+
"supersededBy": "E-AAA.1_1_1.H36"
|
|
3933
3937
|
},
|
|
3934
3938
|
"E-AAA.1_1_1.H36": {
|
|
3935
3939
|
"issueID": "imageButtonNoText",
|
|
@@ -3944,7 +3948,8 @@ const rulesData = {
|
|
|
3944
3948
|
"E-AAA.1_1_1.H37": {
|
|
3945
3949
|
"issueID": "imageNoText",
|
|
3946
3950
|
"quality": 1,
|
|
3947
|
-
"what": "img element has no alt attribute"
|
|
3951
|
+
"what": "img element has no alt attribute",
|
|
3952
|
+
"supersededBy": "E-WCAG2AAA.Principle1.Guideline1_1.1_1_1.H37"
|
|
3948
3953
|
},
|
|
3949
3954
|
"E-WCAG2AAA.Principle1.Guideline1_1.1_1_1.H37": {
|
|
3950
3955
|
"issueID": "imageNoText",
|
|
@@ -3969,7 +3974,8 @@ const rulesData = {
|
|
|
3969
3974
|
"E-AAA.3_1_1.H57.2": {
|
|
3970
3975
|
"issueID": "pageLanguage",
|
|
3971
3976
|
"quality": 1,
|
|
3972
|
-
"what": "html element has no lang or xml:lang attribute"
|
|
3977
|
+
"what": "html element has no lang or xml:lang attribute",
|
|
3978
|
+
"supersededBy": "E-WCAG2AAA.Principle3.Guideline3_1.3_1_1.H57.2"
|
|
3973
3979
|
},
|
|
3974
3980
|
"E-WCAG2AAA.Principle3.Guideline3_1.3_1_1.H57.2": {
|
|
3975
3981
|
"issueID": "pageLanguage",
|
|
@@ -4014,7 +4020,8 @@ const rulesData = {
|
|
|
4014
4020
|
"W-AAA.2_1_1.G90": {
|
|
4015
4021
|
"issueID": "eventKeyboardRisk",
|
|
4016
4022
|
"quality": 1,
|
|
4017
|
-
"what": "Event handler functionality is not available by keyboard?"
|
|
4023
|
+
"what": "Event handler functionality is not available by keyboard?",
|
|
4024
|
+
"supersededBy": "W-WCAG2AAA.Principle2.Guideline2_1.2_1_1.G90"
|
|
4018
4025
|
},
|
|
4019
4026
|
"W-WCAG2AAA.Principle2.Guideline2_1.2_1_1.G90": {
|
|
4020
4027
|
"issueID": "eventKeyboardRisk",
|
|
@@ -4024,7 +4031,8 @@ const rulesData = {
|
|
|
4024
4031
|
"W-AAA.2_1_1.SCR20.MouseOut": {
|
|
4025
4032
|
"issueID": "eventKeyboardRisk",
|
|
4026
4033
|
"quality": 1,
|
|
4027
|
-
"what": "Mousing-out functionality is not available by keyboard?"
|
|
4034
|
+
"what": "Mousing-out functionality is not available by keyboard?",
|
|
4035
|
+
"supersededBy": "W-WCAG2AAA.Principle2.Guideline2_1.2_1_1.SCR20.MouseOut"
|
|
4028
4036
|
},
|
|
4029
4037
|
"W-WCAG2AAA.Principle2.Guideline2_1.2_1_1.SCR20.MouseOut": {
|
|
4030
4038
|
"issueID": "eventKeyboardRisk",
|
|
@@ -4034,7 +4042,8 @@ const rulesData = {
|
|
|
4034
4042
|
"W-AAA.2_1_1.SCR20.MouseOver": {
|
|
4035
4043
|
"issueID": "eventKeyboardRisk",
|
|
4036
4044
|
"quality": 1,
|
|
4037
|
-
"what": "Mousing-over functionality is not available by keyboard?"
|
|
4045
|
+
"what": "Mousing-over functionality is not available by keyboard?",
|
|
4046
|
+
"supersededBy": "W-WCAG2AAA.Principle2.Guideline2_1.2_1_1.SCR20.MouseOver"
|
|
4038
4047
|
},
|
|
4039
4048
|
"W-WCAG2AAA.Principle2.Guideline2_1.2_1_1.SCR20.MouseOver": {
|
|
4040
4049
|
"issueID": "eventKeyboardRisk",
|
|
@@ -4054,7 +4063,8 @@ const rulesData = {
|
|
|
4054
4063
|
"E-AAA.2_4_1.G1,G123,G124.NoSuchID": {
|
|
4055
4064
|
"issueID": "internalLinkBroken",
|
|
4056
4065
|
"quality": 1,
|
|
4057
|
-
"what": "Internal link references a nonexistent destination"
|
|
4066
|
+
"what": "Internal link references a nonexistent destination",
|
|
4067
|
+
"supersededBy": "E-WCAG2AAA.Principle2.Guideline2_4.2_4_1.G1,G123,G124.NoSuchID"
|
|
4058
4068
|
},
|
|
4059
4069
|
"E-WCAG2AAA.Principle2.Guideline2_4.2_4_1.G1,G123,G124.NoSuchID": {
|
|
4060
4070
|
"issueID": "internalLinkBroken",
|
|
@@ -4079,7 +4089,8 @@ const rulesData = {
|
|
|
4079
4089
|
"E-AAA.1_3_1.ARIA16,ARIA9": {
|
|
4080
4090
|
"issueID": "labelBadID",
|
|
4081
4091
|
"quality": 1,
|
|
4082
|
-
"what": "aria-labelledby attribute references a nonexistent element"
|
|
4092
|
+
"what": "aria-labelledby attribute references a nonexistent element",
|
|
4093
|
+
"supersededBy": "W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.ARIA16,ARIA9"
|
|
4083
4094
|
},
|
|
4084
4095
|
"W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.ARIA16,ARIA9": {
|
|
4085
4096
|
"issueID": "labelBadID",
|
|
@@ -4094,7 +4105,8 @@ const rulesData = {
|
|
|
4094
4105
|
"E-AAA.4_1_2.H91.A.Empty": {
|
|
4095
4106
|
"issueID": "linkNoText",
|
|
4096
4107
|
"quality": 1,
|
|
4097
|
-
"what": "a element has an id attribute but no href attribute or text"
|
|
4108
|
+
"what": "a element has an id attribute but no href attribute or text",
|
|
4109
|
+
"supersededBy": "W-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.A.Empty"
|
|
4098
4110
|
},
|
|
4099
4111
|
"W-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.A.Empty": {
|
|
4100
4112
|
"issueID": "linkNoText",
|
|
@@ -4104,7 +4116,8 @@ const rulesData = {
|
|
|
4104
4116
|
"E-AAA.4_1_2.H91.A.EmptyNoId": {
|
|
4105
4117
|
"issueID": "linkNoText",
|
|
4106
4118
|
"quality": 1,
|
|
4107
|
-
"what": "Link has no name or id attribute or value"
|
|
4119
|
+
"what": "Link has no name or id attribute or value",
|
|
4120
|
+
"supersededBy": "E-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.A.EmptyNoId"
|
|
4108
4121
|
},
|
|
4109
4122
|
"E-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.A.EmptyNoId": {
|
|
4110
4123
|
"issueID": "linkNoText",
|
|
@@ -4129,7 +4142,8 @@ const rulesData = {
|
|
|
4129
4142
|
"E-AAA.1_1_1.H30.2": {
|
|
4130
4143
|
"issueID": "imageLinkNoText",
|
|
4131
4144
|
"quality": 1,
|
|
4132
|
-
"what": "img element is the only link content but has no text alternative"
|
|
4145
|
+
"what": "img element is the only link content but has no text alternative",
|
|
4146
|
+
"supersededBy": "E-WCAG2AAA.Principle1.Guideline1_1.1_1_1.H30.2"
|
|
4133
4147
|
},
|
|
4134
4148
|
"E-WCAG2AAA.Principle1.Guideline1_1.1_1_1.H30.2": {
|
|
4135
4149
|
"issueID": "imageLinkNoText",
|
|
@@ -4139,7 +4153,8 @@ const rulesData = {
|
|
|
4139
4153
|
"E-AAA.4_1_2.H91.A.Placeholder": {
|
|
4140
4154
|
"issueID": "linkBrokenRisk",
|
|
4141
4155
|
"quality": 1,
|
|
4142
|
-
"what": "Link has text but no href, id, or name attribute"
|
|
4156
|
+
"what": "Link has text but no href, id, or name attribute",
|
|
4157
|
+
"supersededBy": "W-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.A.Placeholder"
|
|
4143
4158
|
},
|
|
4144
4159
|
"W-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.A.Placeholder": {
|
|
4145
4160
|
"issueID": "linkBrokenRisk",
|
|
@@ -4149,7 +4164,8 @@ const rulesData = {
|
|
|
4149
4164
|
"E-AAA.2_4_8.H59.2b": {
|
|
4150
4165
|
"issueID": "linkElNoHref",
|
|
4151
4166
|
"quality": 1,
|
|
4152
|
-
"what": "link element is missing a non-empty href for the linked resource"
|
|
4167
|
+
"what": "link element is missing a non-empty href for the linked resource",
|
|
4168
|
+
"supersededBy": "E-WCAG2AAA.Principle2.Guideline2_4.2_4_8.H59.2b"
|
|
4153
4169
|
},
|
|
4154
4170
|
"E-WCAG2AAA.Principle2.Guideline2_4.2_4_8.H59.2b": {
|
|
4155
4171
|
"issueID": "linkElNoHref",
|
|
@@ -4169,7 +4185,8 @@ const rulesData = {
|
|
|
4169
4185
|
"E-AAA.4_1_2.H91.Textarea.Name": {
|
|
4170
4186
|
"issueID": "textAreaNoText",
|
|
4171
4187
|
"quality": 1,
|
|
4172
|
-
"what": "textarea element has no accessible name"
|
|
4188
|
+
"what": "textarea element has no accessible name",
|
|
4189
|
+
"supersededBy": "E-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.Textarea.Name"
|
|
4173
4190
|
},
|
|
4174
4191
|
"E-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.Textarea.Name": {
|
|
4175
4192
|
"issueID": "textAreaNoText",
|
|
@@ -4179,7 +4196,8 @@ const rulesData = {
|
|
|
4179
4196
|
"E-AAA.1_1_1.H2.EG3": {
|
|
4180
4197
|
"issueID": "linkAltSame",
|
|
4181
4198
|
"quality": 1,
|
|
4182
|
-
"what": "alt value of the link img element duplicates the text of a link beside it"
|
|
4199
|
+
"what": "alt value of the link img element duplicates the text of a link beside it",
|
|
4200
|
+
"supersededBy": "E-WCAG2AAA.Principle1.Guideline1_1.1_1_1.H2.EG3"
|
|
4183
4201
|
},
|
|
4184
4202
|
"E-WCAG2AAA.Principle1.Guideline1_1.1_1_1.H2.EG3": {
|
|
4185
4203
|
"issueID": "linkAltSame",
|
|
@@ -4209,7 +4227,8 @@ const rulesData = {
|
|
|
4209
4227
|
"E-AAA.4_1_2.H91.Div.Name": {
|
|
4210
4228
|
"issueID": "buttonNoText",
|
|
4211
4229
|
"quality": 1,
|
|
4212
|
-
"what": "div element with button role has no accessible name"
|
|
4230
|
+
"what": "div element with button role has no accessible name",
|
|
4231
|
+
"supersededBy": "E-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.Div.Name"
|
|
4213
4232
|
},
|
|
4214
4233
|
"E-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.Div.Name": {
|
|
4215
4234
|
"issueID": "buttonNoText",
|
|
@@ -4244,7 +4263,8 @@ const rulesData = {
|
|
|
4244
4263
|
"E-AAA.1_3_1.F92,ARIA4": {
|
|
4245
4264
|
"issueID": "presentationChild",
|
|
4246
4265
|
"quality": 1,
|
|
4247
|
-
"what": "Element has presentation role but semantic child"
|
|
4266
|
+
"what": "Element has presentation role but semantic child",
|
|
4267
|
+
"supersededBy": "E-WCAG2AAA.Principle1.Guideline1_3.1_3_1.F92,ARIA4"
|
|
4248
4268
|
},
|
|
4249
4269
|
"E-WCAG2AAA.Principle1.Guideline1_3.1_3_1.F92,ARIA4": {
|
|
4250
4270
|
"issueID": "presentationChild",
|
|
@@ -4264,7 +4284,8 @@ const rulesData = {
|
|
|
4264
4284
|
"E-AAA.2_4_8.H59.2a": {
|
|
4265
4285
|
"issueID": "linkElementBad",
|
|
4266
4286
|
"quality": 1,
|
|
4267
|
-
"what": "Element has no nonempty rel attribute for the type"
|
|
4287
|
+
"what": "Element has no nonempty rel attribute for the type",
|
|
4288
|
+
"supersededBy": "E-WCAG2AAA.Principle2.Guideline2_4.2_4_8.H59.2a"
|
|
4268
4289
|
},
|
|
4269
4290
|
"E-WCAG2AAA.Principle2.Guideline2_4.2_4_8.H59.2a": {
|
|
4270
4291
|
"issueID": "linkElementBad",
|
|
@@ -4289,7 +4310,8 @@ const rulesData = {
|
|
|
4289
4310
|
"E-AAA.1_3_5.H98": {
|
|
4290
4311
|
"issueID": "autocompleteBad",
|
|
4291
4312
|
"quality": 1,
|
|
4292
|
-
"what": "autocomplete attribute and the input type are mismatched"
|
|
4313
|
+
"what": "autocomplete attribute and the input type are mismatched",
|
|
4314
|
+
"supersededBy": "E-WCAG2AAA.Principle1.Guideline1_3.1_3_5.H98"
|
|
4293
4315
|
},
|
|
4294
4316
|
"E-WCAG2AAA.Principle1.Guideline1_3.1_3_5.H98": {
|
|
4295
4317
|
"issueID": "autocompleteBad",
|
|
@@ -4314,7 +4336,8 @@ const rulesData = {
|
|
|
4314
4336
|
"E-AAA.1_4_6.G18.Fail": {
|
|
4315
4337
|
"issueID": "contrastAA",
|
|
4316
4338
|
"quality": 1,
|
|
4317
|
-
"what": "Contrast between the text and its background is less than 4.5:1"
|
|
4339
|
+
"what": "Contrast between the text and its background is less than 4.5:1",
|
|
4340
|
+
"supersededBy": "E-WCAG2AAA.Principle1.Guideline1_4.1_4_6.G18.Fail"
|
|
4318
4341
|
},
|
|
4319
4342
|
"E-WCAG2AAA.Principle1.Guideline1_4.1_4_6.G18.Fail": {
|
|
4320
4343
|
"issueID": "contrastAA",
|
|
@@ -4429,7 +4452,8 @@ const rulesData = {
|
|
|
4429
4452
|
"E-AAA.1_3_1.H42.2": {
|
|
4430
4453
|
"issueID": "headingEmpty",
|
|
4431
4454
|
"quality": 1,
|
|
4432
|
-
"what": "Heading is empty"
|
|
4455
|
+
"what": "Heading is empty",
|
|
4456
|
+
"supersededBy": "E-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H42.2"
|
|
4433
4457
|
},
|
|
4434
4458
|
"E-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H42.2": {
|
|
4435
4459
|
"issueID": "headingEmpty",
|
|
@@ -4449,7 +4473,8 @@ const rulesData = {
|
|
|
4449
4473
|
"W-AAA.1_3_1.H65": {
|
|
4450
4474
|
"issueID": "titleEmpty",
|
|
4451
4475
|
"quality": .5,
|
|
4452
|
-
"what": "title attribute of the form control is empty or only whitespace"
|
|
4476
|
+
"what": "title attribute of the form control is empty or only whitespace",
|
|
4477
|
+
"supersededBy": "W-AAA.4_1_2.H65"
|
|
4453
4478
|
},
|
|
4454
4479
|
"W-AAA.4_1_2.H65": {
|
|
4455
4480
|
"issueID": "titleEmpty",
|
|
@@ -4484,7 +4509,8 @@ const rulesData = {
|
|
|
4484
4509
|
"E-AAA.1_3_1.H49.I": {
|
|
4485
4510
|
"issueID": "nonSemanticText",
|
|
4486
4511
|
"quality": 1,
|
|
4487
|
-
"what": "Special text is italicized nonsemantically"
|
|
4512
|
+
"what": "Special text is italicized nonsemantically",
|
|
4513
|
+
"supersededBy": "W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H49.I"
|
|
4488
4514
|
},
|
|
4489
4515
|
"W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H49.I": {
|
|
4490
4516
|
"issueID": "nonSemanticText",
|
|
@@ -4499,7 +4525,8 @@ const rulesData = {
|
|
|
4499
4525
|
"E-AAA.1_3_1.H49.Small": {
|
|
4500
4526
|
"issueID": "nonSemanticText",
|
|
4501
4527
|
"quality": 1,
|
|
4502
|
-
"what": "Special text is made small nonsemantically"
|
|
4528
|
+
"what": "Special text is made small nonsemantically",
|
|
4529
|
+
"supersededBy": "W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H49.Small"
|
|
4503
4530
|
},
|
|
4504
4531
|
"W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H49.Small": {
|
|
4505
4532
|
"issueID": "nonSemanticText",
|
|
@@ -4514,7 +4541,8 @@ const rulesData = {
|
|
|
4514
4541
|
"W-AAA.1_3_1.H42": {
|
|
4515
4542
|
"issueID": "pseudoHeadingRisk",
|
|
4516
4543
|
"quality": 1,
|
|
4517
|
-
"what": "Heading coding is not used but the element is intended as a heading?"
|
|
4544
|
+
"what": "Heading coding is not used but the element is intended as a heading?",
|
|
4545
|
+
"supersededBy": "W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H42"
|
|
4518
4546
|
},
|
|
4519
4547
|
"W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H42": {
|
|
4520
4548
|
"issueID": "pseudoHeadingRisk",
|
|
@@ -4524,7 +4552,8 @@ const rulesData = {
|
|
|
4524
4552
|
"W-AAA.1_3_1.H48.1": {
|
|
4525
4553
|
"issueID": "pseudoListRisk",
|
|
4526
4554
|
"quality": 1,
|
|
4527
|
-
"what": "Content simulates an unordered list without a ul?"
|
|
4555
|
+
"what": "Content simulates an unordered list without a ul?",
|
|
4556
|
+
"supersededBy": "W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H48.1"
|
|
4528
4557
|
},
|
|
4529
4558
|
"W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H48.1": {
|
|
4530
4559
|
"issueID": "pseudoListRisk",
|
|
@@ -4534,7 +4563,8 @@ const rulesData = {
|
|
|
4534
4563
|
"W-AAA.1_3_1.H48.2": {
|
|
4535
4564
|
"issueID": "pseudoOrderedListRisk",
|
|
4536
4565
|
"quality": 1,
|
|
4537
|
-
"what": "Ordered list fails to be coded as such?"
|
|
4566
|
+
"what": "Ordered list fails to be coded as such?",
|
|
4567
|
+
"supersededBy": "W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H48.2"
|
|
4538
4568
|
},
|
|
4539
4569
|
"W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H48.2": {
|
|
4540
4570
|
"issueID": "pseudoOrderedListRisk",
|
|
@@ -4559,7 +4589,8 @@ const rulesData = {
|
|
|
4559
4589
|
"E-AAA.4_1_2.H91.Select.Value": {
|
|
4560
4590
|
"issueID": "selectNoText",
|
|
4561
4591
|
"quality": 1,
|
|
4562
|
-
"what": "Element is select but its value has no accessible name"
|
|
4592
|
+
"what": "Element is select but its value has no accessible name",
|
|
4593
|
+
"supersededBy": "W-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.Select.Value"
|
|
4563
4594
|
},
|
|
4564
4595
|
"W-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.Select.Value": {
|
|
4565
4596
|
"issueID": "selectNoText",
|
|
@@ -4569,7 +4600,8 @@ const rulesData = {
|
|
|
4569
4600
|
"W-AAA.1_3_1.H85.2": {
|
|
4570
4601
|
"issueID": "selectFlatRisk",
|
|
4571
4602
|
"quality": 1,
|
|
4572
|
-
"what": "Selection list contains groups of related options not grouped with optgroup?"
|
|
4603
|
+
"what": "Selection list contains groups of related options not grouped with optgroup?",
|
|
4604
|
+
"supersededBy": "W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H85.2"
|
|
4573
4605
|
},
|
|
4574
4606
|
"W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H85.2": {
|
|
4575
4607
|
"issueID": "selectFlatRisk",
|
|
@@ -4589,7 +4621,8 @@ const rulesData = {
|
|
|
4589
4621
|
"E-AAA.1_3_1.H71.NoLegend": {
|
|
4590
4622
|
"issueID": "legendMissing",
|
|
4591
4623
|
"quality": 1,
|
|
4592
|
-
"what": "Element has no legend element"
|
|
4624
|
+
"what": "Element has no legend element",
|
|
4625
|
+
"supersededBy": "E-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H71.NoLegend"
|
|
4593
4626
|
},
|
|
4594
4627
|
"E-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H71.NoLegend": {
|
|
4595
4628
|
"issueID": "legendMissing",
|
|
@@ -4599,7 +4632,8 @@ const rulesData = {
|
|
|
4599
4632
|
"E-AAA.4_1_2.H91.Fieldset.Name": {
|
|
4600
4633
|
"issueID": "groupName",
|
|
4601
4634
|
"quality": 1,
|
|
4602
|
-
"what": "fieldset element has no accessible name"
|
|
4635
|
+
"what": "fieldset element has no accessible name",
|
|
4636
|
+
"supersededBy": "E-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.Fieldset.Name"
|
|
4603
4637
|
},
|
|
4604
4638
|
"E-WCAG2AAA.Principle4.Guideline4_1.4_1_2.H91.Fieldset.Name": {
|
|
4605
4639
|
"issueID": "groupName",
|
|
@@ -4664,7 +4698,8 @@ const rulesData = {
|
|
|
4664
4698
|
"E-AAA.1_3_1.ARIA6": {
|
|
4665
4699
|
"issueID": "labelEmpty",
|
|
4666
4700
|
"quality": 1,
|
|
4667
|
-
"what": "Value of the aria-label attribute of the form control is empty or only whitespace"
|
|
4701
|
+
"what": "Value of the aria-label attribute of the form control is empty or only whitespace",
|
|
4702
|
+
"supersededBy": "E-AAA.4_1_2.ARIA6"
|
|
4668
4703
|
},
|
|
4669
4704
|
"E-AAA.4_1_2.ARIA6": {
|
|
4670
4705
|
"issueID": "labelEmpty",
|
|
@@ -4689,7 +4724,8 @@ const rulesData = {
|
|
|
4689
4724
|
"E-AAA.3_2_2.H32.2": {
|
|
4690
4725
|
"issueID": "submitButton",
|
|
4691
4726
|
"quality": 1,
|
|
4692
|
-
"what": "Form has no submit button"
|
|
4727
|
+
"what": "Form has no submit button",
|
|
4728
|
+
"supersededBy": "E-WCAG2AAA.Principle3.Guideline3_2.3_2_2.H32.2"
|
|
4693
4729
|
},
|
|
4694
4730
|
"E-WCAG2AAA.Principle3.Guideline3_2.3_2_2.H32.2": {
|
|
4695
4731
|
"issueID": "submitButton",
|
|
@@ -4699,14 +4735,15 @@ const rulesData = {
|
|
|
4699
4735
|
"E-AAA.1_3_1.H49.AlignAttr": {
|
|
4700
4736
|
"issueID": "attributeObsolete",
|
|
4701
4737
|
"quality": 1,
|
|
4702
|
-
"what": "align attribute is obsolete"
|
|
4738
|
+
"what": "align attribute is obsolete",
|
|
4739
|
+
"supersededBy": "E-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H49.AlignAttr"
|
|
4703
4740
|
},
|
|
4704
|
-
"
|
|
4741
|
+
"E-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H49.AlignAttr": {
|
|
4705
4742
|
"issueID": "attributeObsolete",
|
|
4706
4743
|
"quality": 1,
|
|
4707
4744
|
"what": "align attribute is obsolete"
|
|
4708
4745
|
},
|
|
4709
|
-
"
|
|
4746
|
+
"W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H49.AlignAttr": {
|
|
4710
4747
|
"issueID": "attributeObsolete",
|
|
4711
4748
|
"quality": 1,
|
|
4712
4749
|
"what": "align attribute is obsolete"
|
|
@@ -4724,7 +4761,8 @@ const rulesData = {
|
|
|
4724
4761
|
"E-AAA.1_3_1.H49.Font": {
|
|
4725
4762
|
"issueID": "elementObsolete",
|
|
4726
4763
|
"quality": 1,
|
|
4727
|
-
"what": "font element is obsolete"
|
|
4764
|
+
"what": "font element is obsolete",
|
|
4765
|
+
"supersededBy": "E-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H49.Font"
|
|
4728
4766
|
},
|
|
4729
4767
|
"E-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H49.Font": {
|
|
4730
4768
|
"issueID": "elementObsolete",
|
|
@@ -4918,7 +4956,8 @@ const rulesData = {
|
|
|
4918
4956
|
"Rpt_Aria_ContentinfoWithNoMain_Implicit": {
|
|
4919
4957
|
"issueID": "roleBad",
|
|
4920
4958
|
"quality": 1,
|
|
4921
|
-
"what": "Element has a contentinfo role when no element has a main role"
|
|
4959
|
+
"what": "Element has a contentinfo role when no element has a main role",
|
|
4960
|
+
"supersededBy": "aria_contentinfo_misuse"
|
|
4922
4961
|
},
|
|
4923
4962
|
"aria_contentinfo_misuse": {
|
|
4924
4963
|
"issueID": "roleBad",
|
|
@@ -4928,22 +4967,24 @@ const rulesData = {
|
|
|
4928
4967
|
"Rpt_Aria_ValidRole": {
|
|
4929
4968
|
"issueID": "roleBad",
|
|
4930
4969
|
"quality": 1,
|
|
4931
|
-
"what": "Element has an invalid role"
|
|
4970
|
+
"what": "Element has an invalid role",
|
|
4971
|
+
"supersededBy": "aria_role_allowed"
|
|
4932
4972
|
},
|
|
4933
4973
|
"aria_role_allowed": {
|
|
4934
4974
|
"issueID": "roleBad",
|
|
4935
4975
|
"quality": 1,
|
|
4936
4976
|
"what": "Element has an invalid role"
|
|
4937
4977
|
},
|
|
4938
|
-
"
|
|
4978
|
+
"Rpt_Aria_EventHandlerMissingRole_Native_Host_Sematics": {
|
|
4939
4979
|
"issueID": "roleBad",
|
|
4940
4980
|
"quality": 1,
|
|
4941
|
-
"what": "Element
|
|
4981
|
+
"what": "Element has an event handler but no valid ARIA role",
|
|
4982
|
+
"supersededBy": "aria_eventhandler_role_valid"
|
|
4942
4983
|
},
|
|
4943
|
-
"
|
|
4984
|
+
"aria_eventhandler_role_valid": {
|
|
4944
4985
|
"issueID": "roleBad",
|
|
4945
4986
|
"quality": 1,
|
|
4946
|
-
"what": "Element
|
|
4987
|
+
"what": "Element with an onclick, onmouseout, or onmouseover attribute has no valid ARIA role"
|
|
4947
4988
|
},
|
|
4948
4989
|
"combobox_haspopup_valid": {
|
|
4949
4990
|
"issueID": "roleBad",
|
|
@@ -4970,11 +5011,6 @@ const rulesData = {
|
|
|
4970
5011
|
"quality": 1,
|
|
4971
5012
|
"what": "ARIA attribute is invalid for the role of its element"
|
|
4972
5013
|
},
|
|
4973
|
-
"aria_attribute_value_valid": {
|
|
4974
|
-
"issueID": "attributeValueBad",
|
|
4975
|
-
"quality": 1,
|
|
4976
|
-
"what": "Value of an attribute on the element is not valid"
|
|
4977
|
-
},
|
|
4978
5014
|
"aria_attribute_required": {
|
|
4979
5015
|
"issueID": "ariaMissing",
|
|
4980
5016
|
"quality": 1,
|
|
@@ -4988,7 +5024,8 @@ const rulesData = {
|
|
|
4988
5024
|
"Rpt_Aria_ValidProperty": {
|
|
4989
5025
|
"issueID": "ariaAttributeBad",
|
|
4990
5026
|
"quality": 1,
|
|
4991
|
-
"what": "ARIA attribute is invalid for the role"
|
|
5027
|
+
"what": "ARIA attribute is invalid for the role",
|
|
5028
|
+
"supersededBy": "aria_attribute_allowed"
|
|
4992
5029
|
},
|
|
4993
5030
|
"aria_attribute_allowed": {
|
|
4994
5031
|
"issueID": "ariaAttributeBad",
|
|
@@ -5001,9 +5038,15 @@ const rulesData = {
|
|
|
5001
5038
|
"what": "ARIA attribute has an empty value"
|
|
5002
5039
|
},
|
|
5003
5040
|
"Rpt_Aria_ValidPropertyValue": {
|
|
5004
|
-
"issueID": "
|
|
5041
|
+
"issueID": "attributeValueBad",
|
|
5005
5042
|
"quality": 1,
|
|
5006
|
-
"what": "ARIA property value is invalid"
|
|
5043
|
+
"what": "ARIA property value is invalid",
|
|
5044
|
+
"supersededBy": "aria_attribute_value_valid"
|
|
5045
|
+
},
|
|
5046
|
+
"aria_attribute_value_valid": {
|
|
5047
|
+
"issueID": "attributeValueBad",
|
|
5048
|
+
"quality": 1,
|
|
5049
|
+
"what": "Value of an ARIA attribute on the element is invalid"
|
|
5007
5050
|
},
|
|
5008
5051
|
"aria_attribute_redundant": {
|
|
5009
5052
|
"issueID": "ariaRedundant",
|
|
@@ -5145,12 +5188,13 @@ const rulesData = {
|
|
|
5145
5188
|
"quality": 1,
|
|
5146
5189
|
"what": "input element label invisible?"
|
|
5147
5190
|
},
|
|
5148
|
-
"
|
|
5191
|
+
"WCAG21_Label_Accessible": {
|
|
5149
5192
|
"issueID": "visibleLabelNotInName",
|
|
5150
5193
|
"quality": 1,
|
|
5151
|
-
"what": "Accessible name does not match or contain the visible label text"
|
|
5194
|
+
"what": "Accessible name does not match or contain the visible label text",
|
|
5195
|
+
"supersededBy": "label_name_visible"
|
|
5152
5196
|
},
|
|
5153
|
-
"
|
|
5197
|
+
"label_name_visible": {
|
|
5154
5198
|
"issueID": "visibleLabelNotInName",
|
|
5155
5199
|
"quality": 1,
|
|
5156
5200
|
"what": "Accessible name does not match or contain the visible label text"
|
|
@@ -9701,12 +9745,17 @@ const issues = deepFreeze(issuesData);
|
|
|
9701
9745
|
const rules = deepFreeze(rulesData);
|
|
9702
9746
|
const makeIssueRules = (ruleTable, issueTable = issues) => {
|
|
9703
9747
|
const errors = [];
|
|
9704
|
-
const checkEntry = (engineID, variabilityName, ruleID, entry) => {
|
|
9705
|
-
const { issueID, quality, what } = entry;
|
|
9748
|
+
const checkEntry = (engineID, variabilityName, ruleID, entry, engineRuleIDs) => {
|
|
9749
|
+
const { issueID, quality, what, supersededBy } = entry;
|
|
9706
9750
|
if (!ruleID.length) errors.push(`${engineID}.${variabilityName} has a rule with an empty ruleID`);
|
|
9707
9751
|
if (typeof issueID !== "string" || !issueID.length || !(issueID in issueTable)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid issueID (${JSON.stringify(issueID)})`);
|
|
9708
9752
|
if (typeof quality !== "number") errors.push(`${engineID}.${variabilityName}.${ruleID} has a non-numeric quality (${JSON.stringify(quality)})`);
|
|
9709
9753
|
if (typeof what !== "string" || !what.length) errors.push(`${engineID}.${variabilityName}.${ruleID} has a non-string or empty what (${JSON.stringify(what)})`);
|
|
9754
|
+
if (supersededBy !== void 0 && supersededBy !== null) {
|
|
9755
|
+
if (typeof supersededBy !== "string" || !supersededBy.length) errors.push(`${engineID}.${variabilityName}.${ruleID} has a non-string, non-null, or empty supersededBy (${JSON.stringify(supersededBy)})`);
|
|
9756
|
+
else if (supersededBy === ruleID) errors.push(`${engineID}.${variabilityName}.${ruleID} has supersededBy naming itself`);
|
|
9757
|
+
else if (!engineRuleIDs.has(supersededBy)) errors.push(`${engineID}.${variabilityName}.${ruleID} has supersededBy (${supersededBy}), which is not a rule of ${engineID}`);
|
|
9758
|
+
}
|
|
9710
9759
|
if (variabilityName === "variable") {
|
|
9711
9760
|
if (!/[.*+?^${}()|[\]\\]/.test(ruleID)) errors.push(`${engineID}.${variabilityName}.${ruleID} has no regex metacharacters, so it should be an invariant rule`);
|
|
9712
9761
|
else try {
|
|
@@ -9718,8 +9767,9 @@ const makeIssueRules = (ruleTable, issueTable = issues) => {
|
|
|
9718
9767
|
};
|
|
9719
9768
|
const issueRules = {};
|
|
9720
9769
|
Object.entries(ruleTable).forEach(([engineID, { invariant, variable }]) => {
|
|
9770
|
+
const engineRuleIDs = /* @__PURE__ */ new Set([...Object.keys(invariant), ...Object.keys(variable)]);
|
|
9721
9771
|
Object.entries(invariant).forEach(([ruleID, entry]) => {
|
|
9722
|
-
checkEntry(engineID, "invariant", ruleID, entry);
|
|
9772
|
+
checkEntry(engineID, "invariant", ruleID, entry, engineRuleIDs);
|
|
9723
9773
|
const { issueID } = entry;
|
|
9724
9774
|
issueRules[issueID] ??= {};
|
|
9725
9775
|
issueRules[issueID][engineID] ??= {
|
|
@@ -9729,7 +9779,7 @@ const makeIssueRules = (ruleTable, issueTable = issues) => {
|
|
|
9729
9779
|
issueRules[issueID][engineID].invariant.push(ruleID);
|
|
9730
9780
|
});
|
|
9731
9781
|
Object.entries(variable).forEach(([ruleID, entry]) => {
|
|
9732
|
-
checkEntry(engineID, "variable", ruleID, entry);
|
|
9782
|
+
checkEntry(engineID, "variable", ruleID, entry, engineRuleIDs);
|
|
9733
9783
|
const { issueID } = entry;
|
|
9734
9784
|
issueRules[issueID] ??= {};
|
|
9735
9785
|
issueRules[issueID][engineID] ??= {
|
|
@@ -9772,7 +9822,18 @@ const getEngineRuleCounts = (ruleTable = rules) => {
|
|
|
9772
9822
|
});
|
|
9773
9823
|
return counts;
|
|
9774
9824
|
};
|
|
9825
|
+
const checkIssuesData = (issueTable) => {
|
|
9826
|
+
const errors = [];
|
|
9827
|
+
const issueIDsBySummary = {};
|
|
9828
|
+
Object.entries(issueTable).forEach(([issueID, { summary }]) => {
|
|
9829
|
+
const ownerID = issueIDsBySummary[summary];
|
|
9830
|
+
if (ownerID) errors.push(`issues.${issueID} has the summary "${summary}", already used by issues.${ownerID}`);
|
|
9831
|
+
else issueIDsBySummary[summary] = issueID;
|
|
9832
|
+
});
|
|
9833
|
+
if (errors.length) throw new Error(`${errors[0]} (1 of ${errors.length} problems found)`);
|
|
9834
|
+
};
|
|
9775
9835
|
const issueRules = makeIssueRules(rules);
|
|
9776
9836
|
const issueStats = makeIssueStats(issueRules);
|
|
9837
|
+
checkIssuesData(issues);
|
|
9777
9838
|
//#endregion
|
|
9778
9839
|
export { getEditableData, getEngineRuleCounts, getSingleEngineIssues, issueRules, issueStats, issues, makeIssueRules, makeIssueStats, rules };
|