testaro-issues 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. package/dist/index.cjs +1799 -1724
  2. package/dist/index.d.cts +1634 -1634
  3. package/dist/index.d.mts +1634 -1634
  4. package/dist/index.mjs +1799 -1724
  5. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -9,622 +9,749 @@ const uncertainties = [
9
9
  "out-of-scope"
10
10
  ];
11
11
  const whyIgnore = [
12
+ "duplicative",
12
13
  "invalid",
13
14
  "irrelevant",
14
- "duplicative",
15
+ "speculative",
15
16
  "unreliable"
16
17
  ];
17
18
  const issuesData = {
18
- "ignorable": {
19
- "summary": "ignorable",
20
- "why": "No known impact, because the test is unreliable or invalid",
21
- "wcag": "",
22
- "weight": 1
23
- },
24
- "duplicateAttribute": {
25
- "summary": "duplicate attribute",
26
- "why": "Browser processes the page improperly",
27
- "wcag": "4.1.1",
28
- "weight": 2
29
- },
30
- "duplicateID": {
31
- "summary": "ID not unique",
32
- "why": "User may be pointed to the wrong item",
33
- "wcag": "4.1.1",
34
- "weight": 4
35
- },
36
- "roleNoText": {
37
- "summary": "no role-required name",
38
- "why": "User cannot get help understanding an item",
39
- "wcag": "4.1.2",
40
- "weight": 4
41
- },
42
- "progressNoText": {
43
- "summary": "progress bar not named",
44
- "why": "User cannot get help understanding the state of a process",
45
- "wcag": "4.1.2",
19
+ "abbreviationNoTitle": {
20
+ "summary": "abbr title missing",
21
+ "why": "User cannot get help understanding an abbreviation",
22
+ "wcag": "3.1.4",
46
23
  "weight": 4
47
24
  },
48
- "componentNoText": {
49
- "summary": "interactive component not named",
50
- "why": "User cannot get help understanding a custom item",
51
- "wcag": "4.1.2",
52
- "weight": 4
25
+ "accessKeyDuplicate": {
26
+ "summary": "duplicate access key",
27
+ "why": "Keyboard shortcut does not reliably trigger the intended action",
28
+ "wcag": "1.3.1",
29
+ "weight": 3
53
30
  },
54
- "regionNoText": {
55
- "summary": "region not named",
56
- "why": "User cannot get help surveying the parts of the page",
57
- "wcag": "4.1.2",
31
+ "activeDescendantBadID": {
32
+ "summary": "aria-activedescendant invalid",
33
+ "why": "Keyboard-only user cannot reach an item in a menu",
34
+ "wcag": "1.3.1",
58
35
  "weight": 4
59
36
  },
60
- "headingImageNoText": {
61
- "summary": "heading image not named",
62
- "why": "User cannot get help understanding an image used as a heading",
63
- "wcag": "1.1.1",
64
- "weight": 4
37
+ "activeEmbedding": {
38
+ "summary": "control child of link or button",
39
+ "why": "User cannot reliably choose an item to click or tap",
40
+ "wcag": "2.5.5",
41
+ "weight": 3
65
42
  },
66
- "inputNoText": {
67
- "summary": "input not named",
68
- "why": "User cannot get help on what information to enter in a form item",
69
- "wcag": "4.1.2",
70
- "weight": 4
43
+ "allCaps": {
44
+ "summary": "all-capital text",
45
+ "why": "Text is difficult to read",
46
+ "wcag": "3.1.5",
47
+ "weight": 1
71
48
  },
72
- "inputOnlyPlaceholder": {
73
- "summary": "input has placeholder instead of name",
74
- "why": "User cannot get reliable help on what information to enter in a form item",
75
- "wcag": "4.1.2",
76
- "weight": 3
49
+ "allItalics": {
50
+ "summary": "all-italic text",
51
+ "why": "Text is difficult to read",
52
+ "wcag": "3.1.5",
53
+ "weight": 1
77
54
  },
78
- "placeholderPlusAria": {
79
- "summary": "element has competing placeholder attributes",
80
- "why": "User gets conflicting help on what information to enter in a form item",
81
- "wcag": "4.1.2",
55
+ "animationLong": {
56
+ "summary": "animation long or repetitive",
57
+ "why": "Motion-sensitive user may suffer harm",
58
+ "wcag": "2.2.2",
82
59
  "weight": 3
83
60
  },
84
- "imageButtonNoText": {
85
- "summary": "image button not named",
86
- "why": "User cannot get help understanding an image used as a button",
87
- "wcag": "1.1.1",
88
- "weight": 4
89
- },
90
- "imageInputNoText": {
91
- "summary": "image input not named",
92
- "why": "User cannot get help understanding an image used as a submission button",
61
+ "appletNoText": {
62
+ "summary": "applet not named",
63
+ "why": "User cannot get help on how to use a custom item",
93
64
  "wcag": "1.1.1",
94
65
  "weight": 4
95
66
  },
96
- "figureNoText": {
97
- "summary": "figure not named",
98
- "why": "User cannot get help on the topic of a figure",
99
- "wcag": "1.1.1",
100
- "weight": 4
67
+ "applicationConfusion": {
68
+ "summary": "applications not distinctly named",
69
+ "why": "User cannot get help on how some of the page is organized",
70
+ "wcag": "1.3.6",
71
+ "weight": 3
101
72
  },
102
- "imageNoText": {
103
- "summary": "image not named",
104
- "why": "User cannot get help to know what is in an image",
105
- "wcag": "1.1.1",
73
+ "applicationNoText": {
74
+ "summary": "application not named",
75
+ "why": "User cannot get help on how some of the page is organized",
76
+ "wcag": "1.3.6",
106
77
  "weight": 4
107
78
  },
108
- "svgNoText": {
109
- "summary": "SVG image not named",
110
- "why": "User cannot get help to know what is in an image",
111
- "wcag": "1.1.1",
112
- "weight": 4
79
+ "applicationRisk": {
80
+ "summary": "dubious application role",
81
+ "why": "User actions may have unexpected effects",
82
+ "wcag": "1.3.1",
83
+ "weight": 1
113
84
  },
114
- "imageTextSpaces": {
115
- "summary": "image name contains only spacing characters",
116
- "why": "User cannot get help understanding an image",
117
- "wcag": "1.1.1",
85
+ "ariaAttributeBad": {
86
+ "summary": "aria attribute invalid",
87
+ "why": "Item behavior violates user expectations",
88
+ "wcag": "4.1.2",
118
89
  "weight": 4
119
90
  },
120
- "imageTextImage": {
121
- "summary": "image name contains image",
122
- "why": "User is redundantly told an image is an image",
123
- "wcag": "1.1.1",
91
+ "ariaLabelWrongRisk": {
92
+ "summary": "dubious aria-label",
93
+ "why": "User may fail to get help understanding an item in a form",
94
+ "wcag": "1.3.1",
124
95
  "weight": 1
125
96
  },
126
- "decorativeAlt": {
127
- "summary": "decorative image is named",
128
- "why": "User gets an uninformative image description or misses an informative image",
129
- "wcag": "1.1.1",
130
- "weight": 1
97
+ "ariaMissing": {
98
+ "summary": "aria attribute missing",
99
+ "why": "Item behaves improperly",
100
+ "wcag": "4.1.2",
101
+ "weight": 4
131
102
  },
132
- "imageTextBad": {
133
- "summary": "image named with filename",
134
- "why": "Helper gives a user the filename of an image instead of describing it",
135
- "wcag": "1.1.1",
136
- "weight": 3
103
+ "ariaMissingRisk": {
104
+ "summary": "aria attribute missing?",
105
+ "why": "Item may behave improperly",
106
+ "wcag": "4.1.2",
107
+ "weight": 2
137
108
  },
138
- "imageTextRisk": {
139
- "summary": "image dubiously named",
140
- "why": "Helper may describe an image inadequately",
141
- "wcag": "1.1.1",
109
+ "ariaRedundant": {
110
+ "summary": "aria attribute redundant",
111
+ "why": "Document includes unnecessary code",
112
+ "wcag": "4.1.2",
142
113
  "weight": 1
143
114
  },
144
- "sourceEmpty": {
145
- "summary": "src empty",
146
- "why": "Image, audio, or video to be shown cannot be found",
115
+ "ariaReferenceBad": {
116
+ "summary": "aria reference invalid",
117
+ "why": "Item behavior violates user expectations",
147
118
  "wcag": "1.3.1",
148
119
  "weight": 4
149
120
  },
150
- "borderBad": {
151
- "summary": "CSS border invalid",
152
- "why": "Border is displayed improperly",
153
- "wcag": "4.1",
121
+ "ariaVersusHTML": {
122
+ "summary": "aria and HTML attributes have conflicting value",
123
+ "why": "User gets erroneous help with content",
124
+ "wcag": "4.1.2",
154
125
  "weight": 4
155
126
  },
156
- "flexBad": {
157
- "summary": "CSS flex invalid",
158
- "why": "Content is displayed improperly",
159
- "wcag": "4.1",
160
- "weight": 4
127
+ "articleHeadingless": {
128
+ "summary": "article heading missing",
129
+ "why": "User cannot understand the topic of a part of the page",
130
+ "wcag": "1.3.1",
131
+ "weight": 1
161
132
  },
162
- "paddingBad": {
163
- "summary": "CSS padding invalid",
164
- "why": "Content is displayed improperly",
165
- "wcag": "4.1",
166
- "weight": 4
133
+ "asideConfusion": {
134
+ "summary": "asides not distinctly named",
135
+ "why": "User cannot get help on how some of the page is organized",
136
+ "wcag": "1.3.6",
137
+ "weight": 3
167
138
  },
168
- "gapBad": {
169
- "summary": "CSS gap invalid",
170
- "why": "Content is displayed improperly",
139
+ "asideNotTop": {
140
+ "summary": "aside child of landmark",
141
+ "why": "User cannot get help on how some of the page is organized",
142
+ "wcag": "1.3.6",
143
+ "weight": 2
144
+ },
145
+ "atRuleInvalid": {
146
+ "summary": "invalid at-rule",
147
+ "why": "Document cannot be properly displayed in particular contexts",
171
148
  "wcag": "4.1",
149
+ "weight": 3
150
+ },
151
+ "attributeBad": {
152
+ "summary": "attribute invalid",
153
+ "why": "Item behaves improperly",
154
+ "wcag": "1.3.1",
172
155
  "weight": 4
173
156
  },
174
- "backgroundBad": {
175
- "summary": "CSS background invalid",
176
- "why": "Background is displayed improperly",
177
- "wcag": "4.1",
157
+ "attributeMissing": {
158
+ "summary": "attribute missing",
159
+ "why": "Item behaves improperly",
160
+ "wcag": "4.1.2",
178
161
  "weight": 4
179
162
  },
180
- "backgroundImageBad": {
181
- "summary": "background image invalid",
182
- "why": "Background image is displayed improperly",
163
+ "attributeObsolete": {
164
+ "summary": "attribute obsolete",
165
+ "why": "Document includes obsolete code that the browser may fail to process",
183
166
  "wcag": "4.1",
167
+ "weight": 3
168
+ },
169
+ "attributeValueBad": {
170
+ "summary": "attribute value invalid",
171
+ "why": "Item behaves improperly",
172
+ "wcag": "1.3.1",
184
173
  "weight": 4
185
174
  },
186
- "imagesSameAlt": {
187
- "summary": "nearby images have same alt",
188
- "why": "User cannot get help differentiating two adjacent images",
189
- "wcag": "1.1.1",
175
+ "attributeValueRisk": {
176
+ "summary": "attribute value bad?",
177
+ "why": "Item may behave improperly",
178
+ "wcag": "4.1.2",
190
179
  "weight": 1
191
180
  },
192
- "imageTextLong": {
193
- "summary": "image alt long",
194
- "why": "Helper gives a user an overly verbose explanation of an image",
195
- "wcag": "1.1.1",
196
- "weight": 2
181
+ "audioNoText": {
182
+ "summary": "audio track missing",
183
+ "why": "User cannot get help reading speech as text",
184
+ "wcag": "1.2.1",
185
+ "weight": 4
197
186
  },
198
- "imageBanned": {
199
- "summary": "image prohibited",
200
- "why": "Browser fails to display an image",
201
- "wcag": "1.4",
202
- "weight": 3
187
+ "audioTextRisk": {
188
+ "summary": "audio not named?",
189
+ "why": "User may be unable to get help reading speech as text",
190
+ "wcag": "1.2.1",
191
+ "weight": 1
203
192
  },
204
- "titleLong": {
205
- "summary": "title long",
206
- "why": "Hovering makes an overly verbose explanation pop up",
207
- "wcag": "3.1.5",
208
- "weight": 2
193
+ "autocompleteBad": {
194
+ "summary": "autocomplete invalid",
195
+ "why": "User cannot get help entering personal information in a form item",
196
+ "wcag": "1.3.5",
197
+ "weight": 3
209
198
  },
210
- "titleNotText": {
211
- "summary": "title contains ASCII art",
212
- "why": "Hovering makes a hard-to-understand explanation pop up",
213
- "wcag": "3.1.5",
214
- "weight": 2
199
+ "autocompleteNone": {
200
+ "summary": "autocomplete missing",
201
+ "why": "User cannot get help entering personal information in a form",
202
+ "wcag": "1.3.5",
203
+ "weight": 4
215
204
  },
216
- "decorativeImageRisk": {
217
- "summary": "image dubiously marked decorative",
218
- "why": "Helper ignores an image that is apparently informative",
219
- "wcag": "1.1.1",
205
+ "autocompleteRisk": {
206
+ "summary": "autocomplete dubious",
207
+ "why": "User may fail to get help entering personal information in a form item",
208
+ "wcag": "1.3.5",
220
209
  "weight": 1
221
210
  },
222
- "decorativeElementExposed": {
223
- "summary": "decorative element exposed",
224
- "why": "Helper alerts a user to an uninformative image",
225
- "wcag": "1.3.1",
211
+ "autoplay": {
212
+ "summary": "autoplay",
213
+ "why": "Motion- or noise-sensitive user may suffer harm",
214
+ "wcag": "1.4.2",
226
215
  "weight": 2
227
216
  },
228
- "pageLanguage": {
229
- "summary": "page language missing",
230
- "why": "Speaking helper may mispronounce the page text",
231
- "wcag": "3.1.1",
232
- "weight": 4,
233
- "max": 1
217
+ "autoplayControl": {
218
+ "summary": "autoplay control",
219
+ "why": "Motion- or noise-sensitive user may suffer harm",
220
+ "wcag": "1.4.2",
221
+ "weight": 2
234
222
  },
235
- "pageLanguageBad": {
236
- "summary": "page language invalid",
237
- "why": "Speaking helper may mispronounce the page text",
238
- "wcag": "3.1.1",
239
- "weight": 4,
240
- "max": 1
223
+ "autoplayLong": {
224
+ "summary": "autoplay long",
225
+ "why": "Motion- or noise-sensitive user may suffer harm",
226
+ "wcag": "1.4.2",
227
+ "weight": 2
241
228
  },
242
- "elementLanguageBad": {
243
- "summary": "element language invalid",
244
- "why": "Speaking helper may mispronounce the text of an item",
245
- "wcag": "3.1.2",
229
+ "avNoText": {
230
+ "summary": "audio or video caption track missing",
231
+ "why": "User cannot get help reading speech as text",
232
+ "wcag": "1.2.1",
246
233
  "weight": 4
247
234
  },
248
- "languageChange": {
249
- "summary": "language change invalid",
250
- "why": "Speaking helper may mispronounce the text of an item",
251
- "wcag": "3.1.2",
252
- "weight": 3
253
- },
254
- "dialogNoText": {
255
- "summary": "dialog not named",
256
- "why": "User cannot get help explaining a pop-up window",
257
- "wcag": "4.1.2",
235
+ "backgroundBad": {
236
+ "summary": "CSS background invalid",
237
+ "why": "Background is displayed improperly",
238
+ "wcag": "4.1",
258
239
  "weight": 4
259
240
  },
260
- "objectNoText": {
261
- "summary": "object not named",
262
- "why": "User cannot get help explaining a custom item",
263
- "wcag": "1.1.1",
241
+ "backgroundImageBad": {
242
+ "summary": "background image invalid",
243
+ "why": "Background image is displayed improperly",
244
+ "wcag": "4.1",
264
245
  "weight": 4
265
246
  },
266
- "objectTextRisk": {
267
- "summary": "object dubiously named",
268
- "why": "Helper may explain a custom item inadequately",
269
- "wcag": "1.1.1",
270
- "weight": 1
247
+ "bannerConfusion": {
248
+ "summary": "banners not distinctly named",
249
+ "why": "User cannot get help on how some of the page is organized",
250
+ "wcag": "1.3.6",
251
+ "weight": 3
271
252
  },
272
- "objectAudioRisk": {
273
- "summary": "non-audio element plays audio?",
274
- "why": "User may get inadequate help consuming audio content",
275
- "wcag": "1.1.1",
276
- "weight": 1
253
+ "bannerNot1": {
254
+ "summary": "multiple banners",
255
+ "why": "User cannot get help on how some of the page is organized",
256
+ "wcag": "1.3.6",
257
+ "weight": 2,
258
+ "max": 1
277
259
  },
278
- "appletNoText": {
279
- "summary": "applet not named",
280
- "why": "User cannot get help on how to use a custom item",
281
- "wcag": "1.1.1",
282
- "weight": 4
260
+ "bannerNotTop": {
261
+ "summary": "banner child of landmark",
262
+ "why": "User cannot get help on how some of the page is organized",
263
+ "wcag": "1.3.6",
264
+ "weight": 2
283
265
  },
284
- "imageMapNoText": {
285
- "summary": "image map not named",
286
- "why": "User cannot get help on the topic of an interactive image",
287
- "wcag": "1.1.1",
266
+ "baseElementMissing": {
267
+ "summary": "base element missing where required",
268
+ "why": "Browser cannot find a needed external resource",
269
+ "wcag": "1.3.1",
288
270
  "weight": 4
289
271
  },
290
- "imageMapAreaNoText": {
291
- "summary": "image map area not named",
292
- "why": "User cannot get help on how to use an interactive image",
293
- "wcag": "1.1.1",
272
+ "blink": {
273
+ "summary": "blink element",
274
+ "why": "Motion-sensitive user may suffer harm",
275
+ "wcag": "2.2.2",
294
276
  "weight": 4
295
277
  },
296
- "customKeyboardRisk": {
297
- "summary": "custom button keyboard-inoperable?",
298
- "why": "Custom item may prevent a keyboard-only user from operating it",
299
- "wcag": "2.1.1",
278
+ "blockQuoteShort": {
279
+ "summary": "block quote abnormally short",
280
+ "why": "Content can be made easier to read",
281
+ "wcag": "1.4.8",
300
282
  "weight": 1
301
283
  },
302
- "objectBlurKeyboardRisk": {
303
- "summary": "object not keyboard-blurrable?",
304
- "why": "Custom item may trap a keyboard-only user",
305
- "wcag": "2.1.1",
284
+ "borderBad": {
285
+ "summary": "CSS border invalid",
286
+ "why": "Border is displayed improperly",
287
+ "wcag": "4.1",
288
+ "weight": 4
289
+ },
290
+ "boxInvisibleRisk": {
291
+ "summary": "border or outline invisible?",
292
+ "why": "User cannot perceive the boundary of an item",
293
+ "wcag": "2.5.8",
306
294
  "weight": 1
307
295
  },
308
- "eventKeyboardRisk": {
309
- "summary": "event not keyboard-triggerable?",
310
- "why": "Keyboard-only user may be unable to perform an action",
311
- "wcag": "2.1.1",
296
+ "boxSizeAbsolute": {
297
+ "summary": "box size absolute",
298
+ "why": "User cannot enlarge the content of an item for readability",
299
+ "wcag": "1.4.4",
300
+ "weight": 3
301
+ },
302
+ "browserSupportRisk": {
303
+ "summary": "inputmode attribute",
304
+ "why": "Document may include code that the browser cannot process",
305
+ "wcag": "4.1",
312
306
  "weight": 1
313
307
  },
314
- "internalLinkBroken": {
315
- "summary": "internal link broken",
316
- "why": "User cannot reach a promised page location",
317
- "wcag": "1.3.1",
308
+ "buttonAlt": {
309
+ "summary": "button has alt",
310
+ "why": "User cannot get help explaing a button",
311
+ "wcag": "4.1.2",
318
312
  "weight": 4
319
313
  },
320
- "labelForBad": {
321
- "summary": "label referent ineligible",
322
- "why": "User cannot get help understanding an item in a form",
323
- "wcag": "1.3.1",
324
- "weight": 4
314
+ "buttonNoContent": {
315
+ "summary": "button name not visible",
316
+ "why": "User cannot get help explaining a button",
317
+ "wcag": "4.1.2",
318
+ "weight": 1
325
319
  },
326
- "controlIDInLabelBad": {
327
- "summary": "label contains control with nonmatching ID",
328
- "why": "User cannot get help understanding an item in a form",
329
- "wcag": "1.3.1",
320
+ "buttonNoText": {
321
+ "summary": "button not named",
322
+ "why": "User cannot get help explaining a button",
323
+ "wcag": "4.1.2",
330
324
  "weight": 4
331
325
  },
332
- "nonLabelableRole": {
333
- "summary": "aria-label on non-labelable role",
334
- "why": "User is misinformed about an item",
335
- "wcag": "1.3.1",
336
- "weight": 1
326
+ "captcha2": {
327
+ "summary": "captcha2",
328
+ "why": "User is prevented from consuming the page",
329
+ "wcag": "1.1.1",
330
+ "weight": 1,
331
+ "max": 1
337
332
  },
338
- "ariaLabelWrongRisk": {
339
- "summary": "dubious aria-label",
340
- "why": "User may fail to get help understanding an item in a form",
333
+ "cellHeadersAmbiguityRisk": {
334
+ "summary": "cell headers ambiguous?",
335
+ "why": "User may be unable to get help on relationships in a table",
341
336
  "wcag": "1.3.1",
342
- "weight": 1
337
+ "weight": 2
343
338
  },
344
- "activeDescendantBadID": {
345
- "summary": "aria-activedescendant invalid",
346
- "why": "Keyboard-only user cannot reach an item in a menu",
339
+ "cellHeadersNotInferrable": {
340
+ "summary": "cell headers not inferrable",
341
+ "why": "User cannot get help on relationships in a table",
347
342
  "wcag": "1.3.1",
348
343
  "weight": 4
349
344
  },
350
- "governedBadID": {
351
- "summary": "aria-controls or -owns invalid",
352
- "why": "Keyboard-only user cannot reach an item",
345
+ "cellHeadersOutsideTable": {
346
+ "summary": "cell headers outside table",
347
+ "why": "User cannot get help on relationships in a table",
353
348
  "wcag": "1.3.1",
354
349
  "weight": 4
355
350
  },
356
- "descriptionBadID": {
357
- "summary": "aria-describedby invalid",
358
- "why": "User cannot get help understanding an item in detail",
359
- "wcag": "1.3.1",
360
- "weight": 4
351
+ "characterBad": {
352
+ "summary": "invalid character",
353
+ "why": "Invalid character makes the page behave incorrectly",
354
+ "wcag": "4.1",
355
+ "weight": 3
361
356
  },
362
- "labelConfusionRisk": {
363
- "summary": "label location dubious",
364
- "why": "User may fail to notice the explanation of an item in a form",
365
- "wcag": "3.3.2",
357
+ "clickOnly": {
358
+ "summary": "name dubiously mouse-specific",
359
+ "why": "User may misunderstand how to activate a link",
360
+ "wcag": "2.4.4",
366
361
  "weight": 1
367
362
  },
368
- "labelBadID": {
369
- "summary": "label reference invalid",
370
- "why": "User cannot get help understanding an item in a form",
371
- "wcag": "1.3.1",
372
- "weight": 4
363
+ "colorNamedRisk": {
364
+ "summary": "color perception required?",
365
+ "why": "Content is impossible to perceive under some conditions",
366
+ "wcag": "1.4.1",
367
+ "weight": 1
373
368
  },
374
- "haspopupBad": {
375
- "summary": "aria-haspopup invalid",
376
- "why": "Keyboard-only user cannot operate a custom tool",
377
- "wcag": "1.3.1",
369
+ "complementaryNoText": {
370
+ "summary": "complementary not named",
371
+ "why": "User cannot get help on how some of the page is organized",
372
+ "wcag": "1.3.6",
373
+ "weight": 1
374
+ },
375
+ "componentNoText": {
376
+ "summary": "interactive component not named",
377
+ "why": "User cannot get help understanding a custom item",
378
+ "wcag": "4.1.2",
378
379
  "weight": 4
379
380
  },
380
- "applicationRisk": {
381
- "summary": "dubious application role",
382
- "why": "User actions may have unexpected effects",
383
- "wcag": "1.3.1",
381
+ "contentBeyondLandmarks": {
382
+ "summary": "content beyond landmarks",
383
+ "why": "User cannot get help on how some of the page is organized",
384
+ "wcag": "1.3.6",
384
385
  "weight": 1
385
386
  },
386
- "directionRisk": {
387
- "summary": "dubious direction",
388
- "why": "Item may behave incorrectly",
389
- "wcag": "1.3.2",
387
+ "contentHidden": {
388
+ "summary": "page hidden",
389
+ "why": "User cannot get the page content",
390
+ "wcag": "2.4.7",
391
+ "weight": 4,
392
+ "max": 1
393
+ },
394
+ "contrastAA": {
395
+ "summary": "contrast poor",
396
+ "why": "Content is difficult to understand",
397
+ "wcag": "1.4.3",
398
+ "weight": 4
399
+ },
400
+ "contrastAAA": {
401
+ "summary": "text contrast improvable",
402
+ "why": "Content is not easy to understand",
403
+ "wcag": "1.4.6",
390
404
  "weight": 1
391
405
  },
392
- "clickOnly": {
393
- "summary": "name dubiously mouse-specific",
394
- "why": "User may misunderstand how to activate a link",
395
- "wcag": "2.4.4",
406
+ "contrastRisk": {
407
+ "summary": "text contrast not testable",
408
+ "why": "Text may be difficult to read",
409
+ "wcag": "1.4.3",
396
410
  "weight": 1
397
411
  },
398
- "linkNoText": {
399
- "summary": "link not named",
400
- "why": "User cannot get help understanding what a link points to",
401
- "wcag": "2.4.4",
412
+ "controlIDInLabelBad": {
413
+ "summary": "label contains control with nonmatching ID",
414
+ "why": "User cannot get help understanding an item in a form",
415
+ "wcag": "1.3.1",
402
416
  "weight": 4
403
417
  },
404
- "imageLinkNoText": {
405
- "summary": "image link not named",
406
- "why": "User cannot get help understanding what a link points to",
407
- "wcag": "2.4.4",
418
+ "controlLabelInvisible": {
419
+ "summary": "control label invisible",
420
+ "why": "User cannot understand how to operate a form item",
421
+ "wcag": "2.4.6",
408
422
  "weight": 4
409
423
  },
410
- "linkImageTextURL": {
411
- "summary": "text alternative of link image a URL",
412
- "why": "User cannot understand what a link points to",
413
- "wcag": "2.4.4",
414
- "weight": 3
415
- },
416
- "linkBrokenRisk": {
417
- "summary": "link incomplete",
418
- "why": "User may fail to reach a promised location",
424
+ "controlNoText": {
425
+ "summary": "control not named",
426
+ "why": "User cannot get help on how to operate a form item",
419
427
  "wcag": "1.3.1",
420
- "weight": 2
428
+ "weight": 4
421
429
  },
422
- "linkElNoHref": {
423
- "summary": "link element href missing",
424
- "why": "User cannot reach a promised location",
425
- "wcag": "4.1",
426
- "weight": 3
430
+ "cssBansElementRotate": {
431
+ "summary": "CSS bans element rotation",
432
+ "why": "User must read sideways after rotating a device",
433
+ "wcag": "1.3.4",
434
+ "weight": 4
427
435
  },
428
- "linkElNoSource": {
429
- "summary": "link element href or imagesrcset missing",
430
- "why": "User cannot reach a promised location",
436
+ "cssBansPageRotate": {
437
+ "summary": "CSS bans page rotation",
438
+ "why": "User must read sideways after rotating a device",
439
+ "wcag": "1.3.4",
440
+ "weight": 4
441
+ },
442
+ "cssInvalid": {
443
+ "summary": "CSS invalid",
444
+ "why": "Document cannot be properly displayed",
431
445
  "wcag": "4.1",
432
446
  "weight": 3
433
447
  },
434
- "destinationNotURL": {
435
- "summary": "link destination not URL",
436
- "why": "Helper cannot properly explain a link to a user",
448
+ "customKeyboardRisk": {
449
+ "summary": "custom button keyboard-inoperable?",
450
+ "why": "Custom item may prevent a keyboard-only user from operating it",
451
+ "wcag": "2.1.1",
452
+ "weight": 1
453
+ },
454
+ "datalistRef": {
455
+ "summary": "ambiguous or missing datalist reference",
456
+ "why": "User cannot get help on the permitted input values",
457
+ "wcag": "3.3.2",
458
+ "weight": 4
459
+ },
460
+ "decorativeAlt": {
461
+ "summary": "decorative image is named",
462
+ "why": "User gets an uninformative image description or misses an informative image",
463
+ "wcag": "1.1.1",
464
+ "weight": 1
465
+ },
466
+ "decorativeElementExposed": {
467
+ "summary": "decorative element exposed",
468
+ "why": "Helper alerts a user to an uninformative image",
437
469
  "wcag": "1.3.1",
470
+ "weight": 2
471
+ },
472
+ "decorativeImageRisk": {
473
+ "summary": "image dubiously marked decorative",
474
+ "why": "Helper ignores an image that is apparently informative",
475
+ "wcag": "1.1.1",
438
476
  "weight": 1
439
477
  },
440
- "destinationLink": {
441
- "summary": "link href missing",
442
- "why": "Helper cannot properly explain a link to a user",
478
+ "decorativeTitle": {
479
+ "summary": "decorative element has title",
480
+ "why": "Hovering-produced information is denied to a keyboard-only user",
443
481
  "wcag": "1.3.1",
444
482
  "weight": 2
445
483
  },
446
- "emailLinkBad": {
447
- "summary": "Microsoft will bounce email from link",
448
- "why": "User cannot send email",
449
- "wcag": "2.4.4",
484
+ "descendantMissing": {
485
+ "summary": "descendant missing",
486
+ "why": "Keyboard-only user cannot operate a custom tool",
487
+ "wcag": "1.3.1",
450
488
  "weight": 4
451
489
  },
452
- "abbreviationNoTitle": {
453
- "summary": "abbr title missing",
454
- "why": "User cannot get help understanding an abbreviation",
455
- "wcag": "3.1.4",
490
+ "descriptionBadID": {
491
+ "summary": "aria-describedby invalid",
492
+ "why": "User cannot get help understanding an item in detail",
493
+ "wcag": "1.3.1",
456
494
  "weight": 4
457
495
  },
458
- "editableHow": {
459
- "summary": "contenteditable element incomplete",
460
- "why": "User cannot get help on how to edit editable content",
496
+ "descriptionOrder": {
497
+ "summary": "description list misordered",
498
+ "why": "User cannot get help on the structure of a list",
461
499
  "wcag": "1.3.1",
462
- "weight": 3
500
+ "weight": 4
463
501
  },
464
- "textAreaNoText": {
465
- "summary": "text area not named",
466
- "why": "User cannot get help on what information to enter in a form item",
502
+ "descriptionOrphan": {
503
+ "summary": "description list orphan",
504
+ "why": "User cannot get help on whether an item is in a list",
467
505
  "wcag": "1.3.1",
468
506
  "weight": 4
469
507
  },
470
- "linkAltSame": {
471
- "summary": "link image alt duplicative",
472
- "why": "Helper repeats the explanation of a link",
473
- "wcag": "1.1.1",
474
- "weight": 2
475
- },
476
- "linkTextsSame": {
477
- "summary": "links named identically",
478
- "why": "User cannot get help differentiating links",
479
- "wcag": "2.4.4",
508
+ "destinationLink": {
509
+ "summary": "link href missing",
510
+ "why": "Helper cannot properly explain a link to a user",
511
+ "wcag": "1.3.1",
480
512
  "weight": 2
481
513
  },
482
- "linkConfusionRisk": {
483
- "summary": "links dubiously share name",
484
- "why": "User may be unable to get help differentiating links",
485
- "wcag": "2.4.4",
514
+ "destinationNotURL": {
515
+ "summary": "link destination not URL",
516
+ "why": "Helper cannot properly explain a link to a user",
517
+ "wcag": "1.3.1",
486
518
  "weight": 1
487
519
  },
488
- "linksNoNav": {
489
- "summary": "links not grouped as nav",
490
- "why": "User cannot get help identifying links as a navigation tool",
491
- "wcag": "1.3.1",
492
- "weight": 2
520
+ "dialogNoText": {
521
+ "summary": "dialog not named",
522
+ "why": "User cannot get help explaining a pop-up window",
523
+ "wcag": "4.1.2",
524
+ "weight": 4
493
525
  },
494
- "linkPair": {
495
- "summary": "adjacent links not combined",
496
- "why": "Keyboard-only user expends extra effort to skip a link",
497
- "wcag": "2.4.4",
498
- "weight": 2
526
+ "dirBad": {
527
+ "summary": "dir invalid",
528
+ "why": "Item may behave improperly",
529
+ "wcag": "4.1.2",
530
+ "weight": 1
499
531
  },
500
- "linkPairRisk": {
501
- "summary": "text and image link may merit combination",
502
- "why": "Keyboard-only user may expend extra effort to skip a link",
503
- "wcag": "2.4.4",
532
+ "directionRisk": {
533
+ "summary": "dubious direction",
534
+ "why": "Item may behave incorrectly",
535
+ "wcag": "1.3.2",
504
536
  "weight": 1
505
537
  },
506
- "linkNameRisk": {
507
- "summary": "image link text suspect",
508
- "why": "Keyboard-only user may misunderstand the effect of following a link",
509
- "wcag": "2.4.4",
538
+ "divInTable": {
539
+ "summary": "div embedded in table",
540
+ "why": "Blocks of content within a table cell may confuse a user",
541
+ "wcag": "1.4",
510
542
  "weight": 1
511
543
  },
512
- "pageNewWindow": {
513
- "summary": "page immediately opens window",
514
- "why": "User promised a page gets another page, too",
515
- "wcag": "3.2.5",
516
- "weight": 3,
544
+ "docHeadingNotH1": {
545
+ "summary": "primary heading not h1",
546
+ "why": "User cannot understand the topic of the page",
547
+ "wcag": "1.3.1",
548
+ "weight": 2,
517
549
  "max": 1
518
550
  },
519
- "newTabSurprise": {
520
- "summary": "tab-opening link action unstated",
521
- "why": "Following a link opens a new window, surprising a user",
522
- "wcag": "3.2.5",
551
+ "docTypeBad": {
552
+ "summary": "DOCTYPE invalid",
553
+ "why": "Browser processes the page improperly",
554
+ "wcag": "1.3.1",
555
+ "weight": 3,
556
+ "max": 1
557
+ },
558
+ "docTypeMisplaced": {
559
+ "summary": "DOCTYPE in invalid location",
560
+ "why": "Browser processes the page improperly",
561
+ "wcag": "1.3.1",
562
+ "weight": 4,
563
+ "max": 1
564
+ },
565
+ "docTypeMissing": {
566
+ "summary": "DOCTYPE missing",
567
+ "why": "Browser processes the page improperly",
568
+ "wcag": "1.3.1",
569
+ "weight": 4,
570
+ "max": 1
571
+ },
572
+ "documentConfusion": {
573
+ "summary": "page elements not distinctly named",
574
+ "why": "User cannot get help on how some of the page is organized",
575
+ "wcag": "1.3.6",
523
576
  "weight": 3
524
577
  },
525
- "newTabSurpriseRisk": {
526
- "summary": "tab-opening link action unstated?",
527
- "why": "Following a link opens a new window, possibly surprising a user",
528
- "wcag": "3.2.5",
529
- "weight": 1
578
+ "duplicateAttribute": {
579
+ "summary": "duplicate attribute",
580
+ "why": "Browser processes the page improperly",
581
+ "wcag": "4.1.1",
582
+ "weight": 2
530
583
  },
531
- "selectNavSurpriseRisk": {
532
- "summary": "navigating selection-change action unstated?",
533
- "why": "Changing a selected option opens a new window, possibly surprising a user",
534
- "wcag": "3.2.5",
535
- "weight": 1
584
+ "duplicateID": {
585
+ "summary": "ID not unique",
586
+ "why": "User may be pointed to the wrong item",
587
+ "wcag": "4.1.1",
588
+ "weight": 4
536
589
  },
537
- "preselectedOption": {
538
- "summary": "no default option",
539
- "why": "User may risk erroneously submitting a form",
540
- "wcag": "4.1.2",
541
- "weight": 1
590
+ "editableHow": {
591
+ "summary": "contenteditable element incomplete",
592
+ "why": "User cannot get help on how to edit editable content",
593
+ "wcag": "1.3.1",
594
+ "weight": 3
542
595
  },
543
- "selectBad": {
544
- "summary": "select element invalid",
545
- "why": "User cannot properly select among options",
596
+ "elementBad": {
597
+ "summary": "nonexistent element",
598
+ "why": "User cannot understand the content",
546
599
  "wcag": "4.1.2",
547
600
  "weight": 4
548
601
  },
549
- "buttonAlt": {
550
- "summary": "button has alt",
551
- "why": "User cannot get help explaing a button",
552
- "wcag": "4.1.2",
602
+ "elementClosure": {
603
+ "summary": "element closure invalid",
604
+ "why": "Document contains invalid code",
605
+ "wcag": "4.1.1",
606
+ "weight": 3
607
+ },
608
+ "elementLanguageBad": {
609
+ "summary": "element language invalid",
610
+ "why": "Speaking helper may mispronounce the text of an item",
611
+ "wcag": "3.1.2",
553
612
  "weight": 4
554
613
  },
555
- "buttonNoContent": {
556
- "summary": "button name not visible",
557
- "why": "User cannot get help explaining a button",
558
- "wcag": "4.1.2",
559
- "weight": 1
614
+ "elementObsolete": {
615
+ "summary": "element obsolete",
616
+ "why": "Document includes obsolete code that the browser may fail to process",
617
+ "wcag": "4.1",
618
+ "weight": 3
560
619
  },
561
- "buttonNoText": {
562
- "summary": "button not named",
563
- "why": "User cannot get help explaining a button",
564
- "wcag": "4.1.2",
620
+ "emailLinkBad": {
621
+ "summary": "Microsoft will bounce email from link",
622
+ "why": "User cannot send email",
623
+ "wcag": "2.4.4",
565
624
  "weight": 4
566
625
  },
567
- "menuItemNoText": {
568
- "summary": "menu item not named",
569
- "why": "User cannot get help explaing a menu item",
570
- "wcag": "4.1.2",
626
+ "encodingBad": {
627
+ "summary": "text not Unicode-compliant",
628
+ "why": "User cannot read all of the text",
629
+ "wcag": "3.1.3",
571
630
  "weight": 4
572
631
  },
573
- "parentMissing": {
574
- "summary": "parent missing",
575
- "why": "Keyboard-only user cannot operate a custom tool",
576
- "wcag": "1.3.1",
632
+ "encodingMisdeclared": {
633
+ "summary": "text encoding wrongly declared",
634
+ "why": "User cannot read all of the text",
635
+ "wcag": "3.1.3",
636
+ "weight": 4,
637
+ "max": 1
638
+ },
639
+ "encodingPrivate": {
640
+ "summary": "text in Private Use Area",
641
+ "why": "User cannot read all of the text",
642
+ "wcag": "3.1.3",
643
+ "weight": 4,
644
+ "max": 1
645
+ },
646
+ "entityBad": {
647
+ "summary": "named character reference invalid",
648
+ "why": "User may be unable to read all the page text",
649
+ "wcag": "4.1",
577
650
  "weight": 4
578
651
  },
579
- "descendantMissing": {
580
- "summary": "descendant missing",
581
- "why": "Keyboard-only user cannot operate a custom tool",
582
- "wcag": "1.3.1",
652
+ "errorReferenceBad": {
653
+ "summary": "error reference invalid",
654
+ "why": "User cannot correct a form error",
655
+ "wcag": "3.3.1",
583
656
  "weight": 4
584
657
  },
585
- "presentationChild": {
586
- "summary": "presentation element has child",
587
- "why": "Keyboard-only user cannot reach an item intended to be reachable",
658
+ "eventKeyboardRisk": {
659
+ "summary": "event not keyboard-triggerable?",
660
+ "why": "Keyboard-only user may be unable to perform an action",
661
+ "wcag": "2.1.1",
662
+ "weight": 1
663
+ },
664
+ "fatalError": {
665
+ "summary": "fatal error",
666
+ "why": "Document prevents testing for accessibility",
667
+ "wcag": "4.1",
668
+ "weight": 4,
669
+ "max": 1
670
+ },
671
+ "fieldSetMissing": {
672
+ "summary": "fieldset missing",
673
+ "why": "User cannot get help recognizing a group of related form items",
588
674
  "wcag": "1.3.1",
589
- "weight": 4
675
+ "weight": 2
590
676
  },
591
- "svgImageNoText": {
592
- "summary": "svg image not named",
593
- "why": "User cannot get help understanding an image",
677
+ "fieldSetRisk": {
678
+ "summary": "fieldset missing?",
679
+ "why": "User may be unable to get help recognizing a group of related form items",
680
+ "wcag": "1.3.1",
681
+ "weight": 1
682
+ },
683
+ "figureNoText": {
684
+ "summary": "figure not named",
685
+ "why": "User cannot get help on the topic of a figure",
594
686
  "wcag": "1.1.1",
595
687
  "weight": 4
596
688
  },
597
- "svgLabelID": {
598
- "summary": "svg label referent invalid",
599
- "why": "User cannot get help understanding an image",
600
- "wcag": "1.1.1",
689
+ "flash": {
690
+ "summary": "flash content",
691
+ "why": "Document includes code that may not work and may jeopardize user security",
692
+ "wcag": "4.1",
693
+ "weight": 1,
694
+ "max": 1
695
+ },
696
+ "flexBad": {
697
+ "summary": "CSS flex invalid",
698
+ "why": "Content is displayed improperly",
699
+ "wcag": "4.1",
601
700
  "weight": 4
602
701
  },
603
- "cssBansPageRotate": {
604
- "summary": "CSS bans page rotation",
605
- "why": "User must read sideways after rotating a device",
606
- "wcag": "1.3.4",
702
+ "focusableDescendants": {
703
+ "summary": "presentational child focusable",
704
+ "why": "Keyboard-only user cannot navigate properly to the operable items",
705
+ "wcag": "4.1.2",
607
706
  "weight": 4
608
707
  },
609
- "cssBansElementRotate": {
610
- "summary": "CSS bans element rotation",
611
- "why": "User must read sideways after rotating a device",
612
- "wcag": "1.3.4",
708
+ "focusableHidden": {
709
+ "summary": "focusable element hidden",
710
+ "why": "Keyboard-only user cannot navigate properly to the operable items",
711
+ "wcag": "4.1.2",
613
712
  "weight": 4
614
713
  },
615
- "orientationRisk": {
616
- "summary": "orientation issues not testable",
617
- "why": "User may need to read sideways after rotating a device",
618
- "wcag": "1.3.4",
619
- "weight": 1,
620
- "max": 1
714
+ "focusableOperable": {
715
+ "summary": "element focusability and operability conflict",
716
+ "why": "Keyboard-only user cannot operate an item",
717
+ "wcag": "2.1.1",
718
+ "weight": 3
621
719
  },
622
- "metaBansZoom": {
623
- "summary": "meta bans zoom",
624
- "why": "User cannot adjust the page size for readability",
625
- "wcag": "1.4.4",
626
- "weight": 4,
627
- "max": 1
720
+ "focusableRole": {
721
+ "summary": "focusable element not active",
722
+ "why": "Keyboard-only user cannot navigate properly to the operable items",
723
+ "wcag": "4.1.2",
724
+ "weight": 3
725
+ },
726
+ "focusDiscrepancy": {
727
+ "summary": "Tab-focusable elements wrong",
728
+ "why": "Item selections by a keyboard-only user are useless or impossible",
729
+ "wcag": "2.1.1",
730
+ "weight": 4
731
+ },
732
+ "focusedAway": {
733
+ "summary": "element beyond display when focused",
734
+ "why": "Keyboard-only user cannot navigate properly to the operable items",
735
+ "wcag": "1.4.10",
736
+ "weight": 3
737
+ },
738
+ "focusIndicationBad": {
739
+ "summary": "focus indication poor",
740
+ "why": "Keyboard-only user cannot choose an item to operate",
741
+ "wcag": "2.4.7",
742
+ "weight": 4
743
+ },
744
+ "focusIndicationImprovable": {
745
+ "summary": "focus indication improvable",
746
+ "why": "Keyboard-only user cannot easily choose an item to operate",
747
+ "wcag": "2.4.7",
748
+ "weight": 2
749
+ },
750
+ "focusIndicationRisk": {
751
+ "summary": "focus indication poor?",
752
+ "why": "Keyboard-only user cannot choose an item to operate",
753
+ "wcag": "2.4.7",
754
+ "weight": 1
628
755
  },
629
756
  "fontSizeAbsolute": {
630
757
  "summary": "font size absolute",
@@ -638,322 +765,302 @@ const issuesData = {
638
765
  "wcag": "1.4",
639
766
  "weight": 3
640
767
  },
641
- "horizontalSpacingFrozen": {
642
- "summary": "horizontal text spacing frozen",
643
- "why": "User cannot adjust the horizontal text spacing for readability",
644
- "wcag": "1.4.12",
645
- "weight": 4
646
- },
647
- "verticalSpacingFrozen": {
648
- "summary": "vertical text spacing frozen",
649
- "why": "User cannot adjust the vertical text spacing for readability",
650
- "wcag": "1.4.12",
651
- "weight": 4
652
- },
653
- "lineHeightAbsolute": {
654
- "summary": "line height absolute",
655
- "why": "User cannot adjust the line height of text for readability",
656
- "wcag": "1.4.12",
657
- "weight": 2
658
- },
659
- "lineHeightLow": {
660
- "summary": "line height low",
661
- "why": "Text is difficult to read",
662
- "wcag": "1.4.8",
663
- "weight": 2
664
- },
665
- "lineHeightBad": {
666
- "summary": "line height misdefined",
667
- "why": "Text is difficult to read",
668
- "wcag": "1.4.8",
669
- "weight": 4
768
+ "footerConfusion": {
769
+ "summary": "contentinfos not distinctly named",
770
+ "why": "User cannot get help on how some of the page is organized",
771
+ "wcag": "1.3.6",
772
+ "weight": 3
670
773
  },
671
- "overflowHidden": {
672
- "summary": "overflow hidden",
673
- "why": "User cannot enlarge the text for readability",
674
- "wcag": "1.4.4",
675
- "weight": 4
774
+ "footerNot1": {
775
+ "summary": "multiple contentinfos",
776
+ "why": "User cannot get help on how some of the page is organized",
777
+ "wcag": "1.3.6",
778
+ "weight": 2,
779
+ "max": 1
676
780
  },
677
- "overflowHiddenRisk": {
678
- "summary": "overflow hidden?",
679
- "why": "User may be unable to enlarge the text for readability",
680
- "wcag": "1.4.4",
781
+ "footerNotTop": {
782
+ "summary": "footer child of landmark",
783
+ "why": "User cannot get help on how some of the page is organized",
784
+ "wcag": "1.3.6",
681
785
  "weight": 1
682
786
  },
683
- "boxSizeAbsolute": {
684
- "summary": "box size absolute",
685
- "why": "User cannot enlarge the content of an item for readability",
686
- "wcag": "1.4.4",
787
+ "formConfusion": {
788
+ "summary": "forms not distinctly named",
789
+ "why": "User cannot get help on how some of the page is organized",
790
+ "wcag": "1.3.6",
687
791
  "weight": 3
688
792
  },
689
- "elementBad": {
690
- "summary": "nonexistent element",
691
- "why": "User cannot understand the content",
692
- "wcag": "4.1.2",
693
- "weight": 4
694
- },
695
- "titleBad": {
696
- "summary": "title attribute invalid",
697
- "why": "User gets too little, too much, or repeated help explaining an item",
698
- "wcag": "1.3.1",
793
+ "formInTable": {
794
+ "summary": "form embedded in table",
795
+ "why": "Navigation in a form may confuse a keyboard-only user",
796
+ "wcag": "2.1.1",
699
797
  "weight": 1
700
798
  },
701
- "baseElementMissing": {
702
- "summary": "base element missing where required",
703
- "why": "Browser cannot find a needed external resource",
704
- "wcag": "1.3.1",
705
- "weight": 4
706
- },
707
- "linkElementMisplaced": {
708
- "summary": "link element misplaced",
709
- "why": "Document fails to get a needed external resource",
710
- "wcag": "1.3.1",
799
+ "formsNested": {
800
+ "summary": "form nested in another form",
801
+ "why": "User cannot predict effect of actions in a form",
802
+ "wcag": "4.1",
711
803
  "weight": 4
712
804
  },
713
- "linkElementBad": {
714
- "summary": "link element invalid",
715
- "why": "Document fails to get a needed external resource",
716
- "wcag": "1.3.1",
717
- "weight": 4
805
+ "formSurpriseRisk": {
806
+ "summary": "form interaction changes content?",
807
+ "why": "User experiences unexpected page change when using a form",
808
+ "wcag": "3.2.5",
809
+ "weight": 1
718
810
  },
719
- "metaAttributesWrong": {
720
- "summary": "prohibited or missing meta attributes",
721
- "why": "Browser processes the page incorrectly",
722
- "wcag": "4.1",
723
- "weight": 3
811
+ "fragmentaryNoticeRisk": {
812
+ "summary": "assertive region not atomic",
813
+ "why": "User may be unable to get help on what content has changed",
814
+ "wcag": "4.1.3",
815
+ "weight": 2
724
816
  },
725
- "metaAttributeBad": {
726
- "summary": "meta attribute value invalid",
727
- "why": "Browser processes the page incorrectly",
817
+ "frameSandboxRisk": {
818
+ "summary": "iframe sandbox attributes risky",
819
+ "why": "Document may be unsafe to use",
728
820
  "wcag": "4.1",
729
- "weight": 3
821
+ "weight": 2
730
822
  },
731
- "metaDuplicated": {
732
- "summary": "meta element duplicated",
733
- "why": "Browser may process the page incorrectly",
823
+ "gapBad": {
824
+ "summary": "CSS gap invalid",
825
+ "why": "Content is displayed improperly",
734
826
  "wcag": "4.1",
735
- "weight": 3
827
+ "weight": 4
736
828
  },
737
- "metaCharsetLate": {
738
- "summary": "meta charset declared too late",
739
- "why": "Browser may display incorrect text",
740
- "wcag": "4.1",
829
+ "governedBadID": {
830
+ "summary": "aria-controls or -owns invalid",
831
+ "why": "Keyboard-only user cannot reach an item",
832
+ "wcag": "1.3.1",
741
833
  "weight": 4
742
834
  },
743
- "metaXUACompatible": {
744
- "summary": "meta X-UA-Compatible incomplete",
745
- "why": "Internet Explorer may display the page incorrectly",
746
- "wcag": "4.1",
835
+ "groupName": {
836
+ "summary": "group not named",
837
+ "why": "User cannot get help on the topic of a group of form items",
838
+ "wcag": "4.1.2",
747
839
  "weight": 3
748
840
  },
749
- "metaMisplaced": {
750
- "summary": "meta element in invalid location",
751
- "why": "Browser may process the page incorrectly",
752
- "wcag": "4.1",
753
- "weight": 4
841
+ "h1Not1": {
842
+ "summary": "not exactly 1 h1 heading",
843
+ "why": "User cannot understand the topic of the page",
844
+ "wcag": "1.3.1",
845
+ "weight": 2,
846
+ "max": 1
754
847
  },
755
- "stylesheetBanned": {
756
- "summary": "stylesheet prohibited",
757
- "why": "Browser displays the page improperly",
758
- "wcag": "1.4",
759
- "weight": 3
848
+ "h1Not1st": {
849
+ "summary": "h1 not 1st heading",
850
+ "why": "User cannot understand the topic of the page",
851
+ "wcag": "1.3.1",
852
+ "weight": 3,
853
+ "max": 1
760
854
  },
761
- "scriptNotDeferrable": {
762
- "summary": "script element invalidly deferred",
763
- "why": "Browser processes the page improperly",
855
+ "haspopupBad": {
856
+ "summary": "aria-haspopup invalid",
857
+ "why": "Keyboard-only user cannot operate a custom tool",
764
858
  "wcag": "1.3.1",
765
859
  "weight": 4
766
860
  },
767
- "scriptBanned": {
768
- "summary": "script prohibited",
861
+ "headElementsBad": {
862
+ "summary": "element in head invalid",
769
863
  "why": "Browser processes the page improperly",
770
- "wcag": "4.1",
864
+ "wcag": "4.1.1",
771
865
  "weight": 3
772
866
  },
773
- "scriptElementBad": {
774
- "summary": "script element invalid",
775
- "why": "Browser processes the page improperly",
867
+ "headingConfusion": {
868
+ "summary": "heading names repeated",
869
+ "why": "User cannot differentiate parts of the page",
776
870
  "wcag": "1.3.1",
871
+ "weight": 2
872
+ },
873
+ "headingEmpty": {
874
+ "summary": "heading empty",
875
+ "why": "User cannot get help on the topic of a part of the page",
876
+ "wcag": "2.4.6",
877
+ "weight": 3
878
+ },
879
+ "headingImageNoText": {
880
+ "summary": "heading image not named",
881
+ "why": "User cannot get help understanding an image used as a heading",
882
+ "wcag": "1.1.1",
777
883
  "weight": 4
778
884
  },
779
- "specRulesScriptBad": {
780
- "summary": "speculation rules script element invalid",
781
- "why": "Document navigation performs poorly",
885
+ "headingLength": {
886
+ "summary": "heading abnormally long",
887
+ "why": "User has difficulty understanding the topic of a part of the page",
782
888
  "wcag": "1.3.1",
783
889
  "weight": 1
784
890
  },
785
- "itemIDBad": {
786
- "summary": "itemid invalid",
787
- "why": "User cannot get help to identify a referent",
891
+ "headingLevelSkip": {
892
+ "summary": "heading level skipped",
893
+ "why": "Helper misdescribes the page",
788
894
  "wcag": "1.3.1",
789
- "weight": 4
895
+ "weight": 2
790
896
  },
791
- "itemTypeBad": {
792
- "summary": "itemtype invalid",
793
- "why": "User cannot get help on the definition of a term",
897
+ "headingMisuseRisk": {
898
+ "summary": "heading used for styling?",
899
+ "why": "User cannot understand the page structure",
794
900
  "wcag": "1.3.1",
795
- "weight": 4
901
+ "weight": 2
796
902
  },
797
- "iframeTitleBad": {
798
- "summary": "iframe not named",
799
- "why": "User cannot get help on the topic of an embedded page",
800
- "wcag": "4.1.2",
801
- "weight": 4
903
+ "headingNone": {
904
+ "summary": "headings missing",
905
+ "why": "User cannot survey parts of the page",
906
+ "wcag": "1.3.1",
907
+ "weight": 3,
908
+ "max": 1
802
909
  },
803
- "roleBad": {
804
- "summary": "role invalid",
805
- "why": "User cannot get help on the nature of an item",
806
- "wcag": "4.1.2",
807
- "weight": 3
910
+ "headingOfNothing": {
911
+ "summary": "heading heads nothing",
912
+ "why": "Helper misdescribes the page",
913
+ "wcag": "1.3.1",
914
+ "weight": 2
808
915
  },
809
- "roleHierarchyBad": {
810
- "summary": "ancestor and descendant roles incompatible",
811
- "why": "User may misunderstand or be blocked from exposure to an item",
916
+ "headingsEmbedded": {
917
+ "summary": "heading within a heading",
918
+ "why": "User cannot understand the page organization",
812
919
  "wcag": "4.1.2",
813
920
  "weight": 4
814
921
  },
815
- "roleRedundant": {
816
- "summary": "role redundant",
817
- "why": "Document includes unnecessary code",
818
- "wcag": "4.1.2",
819
- "weight": 1
922
+ "headingStructure": {
923
+ "summary": "heading structure illogical",
924
+ "why": "Helper misdescribes the page",
925
+ "wcag": "1.3.1",
926
+ "weight": 2
820
927
  },
821
- "roleConfusion": {
822
- "summary": "role assigned instead of implicit",
823
- "why": "User may misunderstand the purpose of an item",
824
- "wcag": "4.1.2",
928
+ "hideFailureRisk": {
929
+ "summary": "false aria-hidden value risky",
930
+ "why": "User may be misled by erroneously hidden or revealed page content",
931
+ "wcag": "2.4.6",
825
932
  "weight": 1
826
933
  },
827
- "dirBad": {
828
- "summary": "dir invalid",
829
- "why": "Item may behave improperly",
830
- "wcag": "4.1.2",
934
+ "horizontalSpacingFrozen": {
935
+ "summary": "horizontal text spacing frozen",
936
+ "why": "User cannot adjust the horizontal text spacing for readability",
937
+ "wcag": "1.4.12",
938
+ "weight": 4
939
+ },
940
+ "hoverIndication": {
941
+ "summary": "hover indication poor",
942
+ "why": "User cannot explore the page reliably with a mouse",
943
+ "wcag": "3.3.2",
944
+ "weight": 3
945
+ },
946
+ "hoverSurprise": {
947
+ "summary": "hovering changes content",
948
+ "why": "User cannot explore the page reliably with a mouse",
949
+ "wcag": "3.2.5",
831
950
  "weight": 1
832
951
  },
833
- "attributeBad": {
834
- "summary": "attribute invalid",
835
- "why": "Item behaves improperly",
952
+ "hrConfusionRisk": {
953
+ "summary": "hr misused",
954
+ "why": "User cannot get help on the nature of segments of the page",
836
955
  "wcag": "1.3.1",
837
- "weight": 4
956
+ "weight": 1
838
957
  },
839
- "sizesAttributeBad": {
840
- "summary": "sizes attribute invalid",
958
+ "idEmpty": {
959
+ "summary": "ID empty",
841
960
  "why": "Item behaves improperly",
842
961
  "wcag": "1.3.1",
843
962
  "weight": 4
844
963
  },
845
- "attributeValueBad": {
846
- "summary": "attribute value invalid",
847
- "why": "Item behaves improperly",
848
- "wcag": "1.3.1",
964
+ "iframeTitleBad": {
965
+ "summary": "iframe not named",
966
+ "why": "User cannot get help on the topic of an embedded page",
967
+ "wcag": "4.1.2",
849
968
  "weight": 4
850
969
  },
851
- "attributeValueRisk": {
852
- "summary": "attribute value bad?",
853
- "why": "Item may behave improperly",
854
- "wcag": "4.1.2",
970
+ "ignorable": {
971
+ "summary": "ignorable",
972
+ "why": "No known impact, because the test is unreliable or invalid",
973
+ "wcag": "",
855
974
  "weight": 1
856
975
  },
857
- "attributeMissing": {
858
- "summary": "attribute missing",
859
- "why": "Item behaves improperly",
860
- "wcag": "4.1.2",
861
- "weight": 4
862
- },
863
- "roleMissing": {
864
- "summary": "role missing",
865
- "why": "Item behaves improperly",
866
- "wcag": "4.1.2",
976
+ "imageBanned": {
977
+ "summary": "image prohibited",
978
+ "why": "Browser fails to display an image",
979
+ "wcag": "1.4",
867
980
  "weight": 3
868
981
  },
869
- "roleMissingRisk": {
870
- "summary": "role missing?",
871
- "why": "Item may behave improperly",
872
- "wcag": "4.1.2",
873
- "weight": 1
874
- },
875
- "ariaMissing": {
876
- "summary": "aria attribute missing",
877
- "why": "Item behaves improperly",
878
- "wcag": "4.1.2",
982
+ "imageButtonNoText": {
983
+ "summary": "image button not named",
984
+ "why": "User cannot get help understanding an image used as a button",
985
+ "wcag": "1.1.1",
879
986
  "weight": 4
880
987
  },
881
- "ariaMissingRisk": {
882
- "summary": "aria attribute missing?",
883
- "why": "Item may behave improperly",
884
- "wcag": "4.1.2",
885
- "weight": 2
886
- },
887
- "ariaAttributeBad": {
888
- "summary": "aria attribute invalid",
889
- "why": "Item behavior violates user expectations",
890
- "wcag": "4.1.2",
988
+ "imageInputNoText": {
989
+ "summary": "image input not named",
990
+ "why": "User cannot get help understanding an image used as a submission button",
991
+ "wcag": "1.1.1",
891
992
  "weight": 4
892
993
  },
893
- "ariaRedundant": {
894
- "summary": "aria attribute redundant",
895
- "why": "Document includes unnecessary code",
896
- "wcag": "4.1.2",
897
- "weight": 1
898
- },
899
- "ariaVersusHTML": {
900
- "summary": "aria and HTML attributes have conflicting value",
901
- "why": "User gets erroneous help with content",
902
- "wcag": "4.1.2",
994
+ "imageLinkNoText": {
995
+ "summary": "image link not named",
996
+ "why": "User cannot get help understanding what a link points to",
997
+ "wcag": "2.4.4",
903
998
  "weight": 4
904
999
  },
905
- "ariaReferenceBad": {
906
- "summary": "aria reference invalid",
907
- "why": "Item behavior violates user expectations",
908
- "wcag": "1.3.1",
1000
+ "imageMapAreaNoText": {
1001
+ "summary": "image map area not named",
1002
+ "why": "User cannot get help on how to use an interactive image",
1003
+ "wcag": "1.1.1",
909
1004
  "weight": 4
910
1005
  },
911
- "autocompleteBad": {
912
- "summary": "autocomplete invalid",
913
- "why": "User cannot get help entering personal information in a form item",
914
- "wcag": "1.3.5",
915
- "weight": 3
1006
+ "imageMapNoText": {
1007
+ "summary": "image map not named",
1008
+ "why": "User cannot get help on the topic of an interactive image",
1009
+ "wcag": "1.1.1",
1010
+ "weight": 4
916
1011
  },
917
- "autocompleteNone": {
918
- "summary": "autocomplete missing",
919
- "why": "User cannot get help entering personal information in a form",
920
- "wcag": "1.3.5",
1012
+ "imageNoText": {
1013
+ "summary": "image not named",
1014
+ "why": "User cannot get help to know what is in an image",
1015
+ "wcag": "1.1.1",
921
1016
  "weight": 4
922
1017
  },
923
- "autocompleteRisk": {
924
- "summary": "autocomplete dubious",
925
- "why": "User may fail to get help entering personal information in a form item",
926
- "wcag": "1.3.5",
1018
+ "imagesSameAlt": {
1019
+ "summary": "nearby images have same alt",
1020
+ "why": "User cannot get help differentiating two adjacent images",
1021
+ "wcag": "1.1.1",
927
1022
  "weight": 1
928
1023
  },
929
- "requirementBad": {
930
- "summary": "requirement invalid",
931
- "why": "User may fail to get help determining whether a form item must be completed",
932
- "wcag": "1.3.5",
933
- "weight": 4
1024
+ "imageTextBad": {
1025
+ "summary": "image named with filename",
1026
+ "why": "Helper gives a user the filename of an image instead of describing it",
1027
+ "wcag": "1.1.1",
1028
+ "weight": 3
934
1029
  },
935
- "requirementRedundant": {
936
- "summary": "requirement redundant",
937
- "why": "Help determining whether a form item must be completed is at risk of corruption",
938
- "wcag": "1.3.5",
1030
+ "imageTextImage": {
1031
+ "summary": "image name contains image",
1032
+ "why": "User is redundantly told an image is an image",
1033
+ "wcag": "1.1.1",
939
1034
  "weight": 1
940
1035
  },
941
- "contrastAA": {
942
- "summary": "contrast poor",
943
- "why": "Content is difficult to understand",
944
- "wcag": "1.4.3",
945
- "weight": 4
1036
+ "imageTextLong": {
1037
+ "summary": "image alt long",
1038
+ "why": "Helper gives a user an overly verbose explanation of an image",
1039
+ "wcag": "1.1.1",
1040
+ "weight": 2
946
1041
  },
947
- "contrastAAA": {
948
- "summary": "text contrast improvable",
949
- "why": "Content is not easy to understand",
950
- "wcag": "1.4.6",
1042
+ "imageTextRedundant": {
1043
+ "summary": "image name redundant",
1044
+ "why": "Helper repeats the explanation of an image",
1045
+ "wcag": "1.1.1",
951
1046
  "weight": 1
952
1047
  },
953
- "contrastRisk": {
954
- "summary": "text contrast not testable",
955
- "why": "Text may be difficult to read",
956
- "wcag": "1.4.3",
1048
+ "imageTextRisk": {
1049
+ "summary": "image dubiously named",
1050
+ "why": "Helper may describe an image inadequately",
1051
+ "wcag": "1.1.1",
1052
+ "weight": 1
1053
+ },
1054
+ "imageTextSpaces": {
1055
+ "summary": "image name contains only spacing characters",
1056
+ "why": "User cannot get help understanding an image",
1057
+ "wcag": "1.1.1",
1058
+ "weight": 4
1059
+ },
1060
+ "inconsistentStyles": {
1061
+ "summary": "inconsistent heading, link, or button styles",
1062
+ "why": "User cannot easily distinguish items of different types",
1063
+ "wcag": "3.2.4",
957
1064
  "weight": 1
958
1065
  },
959
1066
  "infoNeedsColor": {
@@ -962,253 +1069,274 @@ const issuesData = {
962
1069
  "wcag": "1.4.1",
963
1070
  "weight": 1
964
1071
  },
965
- "colorNamedRisk": {
966
- "summary": "color perception required?",
967
- "why": "Content is impossible to perceive under some conditions",
968
- "wcag": "1.4.1",
1072
+ "inputInTable": {
1073
+ "summary": "input embedded in table",
1074
+ "why": "Entry of data in a form may confuse a keyboard-only user",
1075
+ "wcag": "2.1.1",
969
1076
  "weight": 1
970
1077
  },
971
- "sensoryDependenceRisk": {
972
- "summary": "instruction requires particular sense?",
973
- "why": "Content is impossible to perceive under some conditions",
974
- "wcag": "1.4.1",
1078
+ "inputLabelInvisibleRisk": {
1079
+ "summary": "input label invisible?",
1080
+ "why": "User cannot understand where to enter information",
1081
+ "wcag": "2.4.6",
975
1082
  "weight": 1
976
1083
  },
977
- "idEmpty": {
978
- "summary": "ID empty",
979
- "why": "Item behaves improperly",
980
- "wcag": "1.3.1",
981
- "weight": 4
982
- },
983
- "targetEmpty": {
984
- "summary": "target empty",
985
- "why": "Item is displayed improperly",
986
- "wcag": "1.3.1",
987
- "weight": 4
988
- },
989
- "headingsEmbedded": {
990
- "summary": "heading within a heading",
991
- "why": "User cannot understand the page organization",
1084
+ "inputNoText": {
1085
+ "summary": "input not named",
1086
+ "why": "User cannot get help on what information to enter in a form item",
992
1087
  "wcag": "4.1.2",
993
1088
  "weight": 4
994
1089
  },
995
- "headingEmpty": {
996
- "summary": "heading empty",
997
- "why": "User cannot get help on the topic of a part of the page",
998
- "wcag": "2.4.6",
1090
+ "inputOnlyPlaceholder": {
1091
+ "summary": "input has placeholder instead of name",
1092
+ "why": "User cannot get reliable help on what information to enter in a form item",
1093
+ "wcag": "4.1.2",
999
1094
  "weight": 3
1000
1095
  },
1001
- "headingOfNothing": {
1002
- "summary": "heading heads nothing",
1003
- "why": "Helper misdescribes the page",
1096
+ "internalLinkBroken": {
1097
+ "summary": "internal link broken",
1098
+ "why": "User cannot reach a promised page location",
1004
1099
  "wcag": "1.3.1",
1005
- "weight": 2
1100
+ "weight": 4
1006
1101
  },
1007
- "typeBad": {
1008
- "summary": "type invalid",
1009
- "why": "Document styles are at risk of corruption",
1102
+ "itemIDBad": {
1103
+ "summary": "itemid invalid",
1104
+ "why": "User cannot get help to identify a referent",
1010
1105
  "wcag": "1.3.1",
1011
1106
  "weight": 4
1012
1107
  },
1013
- "typeRedundant": {
1014
- "summary": "type redundant",
1015
- "why": "Document includes unnecessary code",
1108
+ "itemTypeBad": {
1109
+ "summary": "itemtype invalid",
1110
+ "why": "User cannot get help on the definition of a term",
1016
1111
  "wcag": "1.3.1",
1017
- "weight": 1
1112
+ "weight": 4
1018
1113
  },
1019
- "imageTextRedundant": {
1020
- "summary": "image name redundant",
1021
- "why": "Helper repeats the explanation of an image",
1022
- "wcag": "1.1.1",
1023
- "weight": 1
1024
- },
1025
- "decorativeTitle": {
1026
- "summary": "decorative element has title",
1027
- "why": "Hovering-produced information is denied to a keyboard-only user",
1028
- "wcag": "1.3.1",
1114
+ "justification": {
1115
+ "summary": "text fully justified",
1116
+ "why": "Text is difficult to read",
1117
+ "wcag": "1.4.8",
1029
1118
  "weight": 2
1030
1119
  },
1031
- "titleRedundant": {
1032
- "summary": "title attribute redundant",
1033
- "why": "Helper repeats the explanation of an item",
1034
- "wcag": "1.3.1",
1120
+ "justificationRisk": {
1121
+ "summary": "justification undefined?",
1122
+ "why": "Text may be difficult to read",
1123
+ "wcag": "1.4.8",
1035
1124
  "weight": 1
1036
1125
  },
1037
- "titleEmpty": {
1038
- "summary": "title attribute empty",
1039
- "why": "Hovering does not get the promised explanation of an item",
1040
- "wcag": "1.3.1",
1041
- "weight": 1
1126
+ "keyboardScroll": {
1127
+ "summary": "element not scrollable",
1128
+ "why": "Keyboard-only user cannot scroll an item",
1129
+ "wcag": "2.1.1",
1130
+ "weight": 4
1042
1131
  },
1043
- "docTypeMissing": {
1044
- "summary": "DOCTYPE missing",
1045
- "why": "Browser processes the page improperly",
1132
+ "labelBadID": {
1133
+ "summary": "label reference invalid",
1134
+ "why": "User cannot get help understanding an item in a form",
1046
1135
  "wcag": "1.3.1",
1047
- "weight": 4,
1048
- "max": 1
1136
+ "weight": 4
1049
1137
  },
1050
- "docTypeMisplaced": {
1051
- "summary": "DOCTYPE in invalid location",
1052
- "why": "Browser processes the page improperly",
1138
+ "labelClash": {
1139
+ "summary": "label types incompatible",
1140
+ "why": "User cannot get reliable help on the topics of form items",
1053
1141
  "wcag": "1.3.1",
1054
- "weight": 4,
1055
- "max": 1
1142
+ "weight": 2
1056
1143
  },
1057
- "docTypeBad": {
1058
- "summary": "DOCTYPE invalid",
1059
- "why": "Browser processes the page improperly",
1060
- "wcag": "1.3.1",
1061
- "weight": 3,
1062
- "max": 1
1144
+ "labelConfusionRisk": {
1145
+ "summary": "label location dubious",
1146
+ "why": "User may fail to notice the explanation of an item in a form",
1147
+ "wcag": "3.3.2",
1148
+ "weight": 1
1063
1149
  },
1064
- "pageTitleBad": {
1065
- "summary": "page title invalid",
1066
- "why": "Browser processes the page improperly",
1150
+ "labeledHidden": {
1151
+ "summary": "control hidden but labeled",
1152
+ "why": "Document includes unnecessary code",
1067
1153
  "wcag": "1.3.1",
1068
- "weight": 3,
1069
- "max": 1
1070
- },
1071
- "pageTitle": {
1072
- "summary": "page title missing",
1073
- "why": "User is not informed of the topic of the page",
1074
- "wcag": "2.4.2",
1075
- "weight": 4,
1076
- "max": 1
1154
+ "weight": 1
1077
1155
  },
1078
- "headElementsBad": {
1079
- "summary": "element in head invalid",
1080
- "why": "Browser processes the page improperly",
1081
- "wcag": "4.1.1",
1156
+ "labelEmpty": {
1157
+ "summary": "label empty",
1158
+ "why": "User cannot get help on the topics of form items",
1159
+ "wcag": "1.3.1",
1082
1160
  "weight": 3
1083
1161
  },
1084
- "headingLevelSkip": {
1085
- "summary": "heading level skipped",
1086
- "why": "Helper misdescribes the page",
1162
+ "labelForBad": {
1163
+ "summary": "label referent ineligible",
1164
+ "why": "User cannot get help understanding an item in a form",
1087
1165
  "wcag": "1.3.1",
1088
- "weight": 2
1166
+ "weight": 4
1089
1167
  },
1090
- "headingStructure": {
1091
- "summary": "heading structure illogical",
1092
- "why": "Helper misdescribes the page",
1168
+ "labelNot1": {
1169
+ "summary": "element referenced by multiple labels",
1170
+ "why": "User cannot get reliable help on the topics of form items",
1093
1171
  "wcag": "1.3.1",
1094
- "weight": 2
1172
+ "weight": 1
1095
1173
  },
1096
- "headingConfusion": {
1097
- "summary": "heading names repeated",
1098
- "why": "User cannot differentiate parts of the page",
1174
+ "labelNoText": {
1175
+ "summary": "label not named",
1176
+ "why": "User cannot get help on the topic of a form item",
1099
1177
  "wcag": "1.3.1",
1100
- "weight": 2
1178
+ "weight": 4
1101
1179
  },
1102
- "headingMisuseRisk": {
1103
- "summary": "heading used for styling?",
1104
- "why": "User cannot understand the page structure",
1105
- "wcag": "1.3.1",
1106
- "weight": 2
1180
+ "labelRisk": {
1181
+ "summary": "labeling risky",
1182
+ "why": "User may misunderstand a form control",
1183
+ "wcag": "3.3.2",
1184
+ "weight": 1
1107
1185
  },
1108
- "headingNone": {
1109
- "summary": "headings missing",
1110
- "why": "User cannot survey parts of the page",
1111
- "wcag": "1.3.1",
1112
- "weight": 3,
1113
- "max": 1
1186
+ "landmarkConfusion": {
1187
+ "summary": "landmarks not distinctly named",
1188
+ "why": "User cannot get help on how some of the page is organized",
1189
+ "wcag": "1.3.6",
1190
+ "weight": 3
1114
1191
  },
1115
- "h1Not1": {
1116
- "summary": "not exactly 1 h1 heading",
1117
- "why": "User cannot understand the topic of the page",
1118
- "wcag": "1.3.1",
1119
- "weight": 2,
1120
- "max": 1
1192
+ "landmarkInNav": {
1193
+ "summary": "invalid landmark child of navigation role",
1194
+ "why": "User cannot get help on how some of the page is organized",
1195
+ "wcag": "1.3.6",
1196
+ "weight": 4
1121
1197
  },
1122
- "h1Not1st": {
1123
- "summary": "h1 not 1st heading",
1124
- "why": "User cannot understand the topic of the page",
1125
- "wcag": "1.3.1",
1126
- "weight": 3,
1127
- "max": 1
1198
+ "languageChange": {
1199
+ "summary": "language change invalid",
1200
+ "why": "Speaking helper may mispronounce the text of an item",
1201
+ "wcag": "3.1.2",
1202
+ "weight": 3
1128
1203
  },
1129
- "docHeadingNotH1": {
1130
- "summary": "primary heading not h1",
1131
- "why": "User cannot understand the topic of the page",
1204
+ "layoutTable": {
1205
+ "summary": "table misused",
1206
+ "why": "Helper misinforms a user about whether items are cells of a table",
1132
1207
  "wcag": "1.3.1",
1133
- "weight": 2,
1134
- "max": 1
1208
+ "weight": 2
1135
1209
  },
1136
- "articleHeadingless": {
1137
- "summary": "article heading missing",
1138
- "why": "User cannot understand the topic of a part of the page",
1139
- "wcag": "1.3.1",
1140
- "weight": 1
1210
+ "legendMisplaced": {
1211
+ "summary": "legend location invalid",
1212
+ "why": "User cannot get help on the topic of a group of form items",
1213
+ "wcag": "4.1.2",
1214
+ "weight": 4
1141
1215
  },
1142
- "sectionHeadingless": {
1143
- "summary": "section heading missing",
1144
- "why": "User cannot understand the topic of a part of the page",
1145
- "wcag": "1.3.1",
1146
- "weight": 1
1216
+ "legendMissing": {
1217
+ "summary": "legend missing",
1218
+ "why": "User cannot get help on the topic of a group of form items",
1219
+ "wcag": "4.1.2",
1220
+ "weight": 2
1147
1221
  },
1148
- "headingLength": {
1149
- "summary": "heading abnormally long",
1150
- "why": "User has difficulty understanding the topic of a part of the page",
1151
- "wcag": "1.3.1",
1152
- "weight": 1
1222
+ "lineHeightAbsolute": {
1223
+ "summary": "line height absolute",
1224
+ "why": "User cannot adjust the line height of text for readability",
1225
+ "wcag": "1.4.12",
1226
+ "weight": 2
1153
1227
  },
1154
- "blockQuoteShort": {
1155
- "summary": "block quote abnormally short",
1156
- "why": "Content can be made easier to read",
1228
+ "lineHeightBad": {
1229
+ "summary": "line height misdefined",
1230
+ "why": "Text is difficult to read",
1157
1231
  "wcag": "1.4.8",
1158
- "weight": 1
1232
+ "weight": 4
1159
1233
  },
1160
- "justification": {
1161
- "summary": "text fully justified",
1234
+ "lineHeightLow": {
1235
+ "summary": "line height low",
1162
1236
  "why": "Text is difficult to read",
1163
1237
  "wcag": "1.4.8",
1164
1238
  "weight": 2
1165
1239
  },
1166
- "justificationRisk": {
1167
- "summary": "justification undefined?",
1168
- "why": "Text may be difficult to read",
1169
- "wcag": "1.4.8",
1170
- "weight": 1
1240
+ "linkAltSame": {
1241
+ "summary": "link image alt duplicative",
1242
+ "why": "Helper repeats the explanation of a link",
1243
+ "wcag": "1.1.1",
1244
+ "weight": 2
1171
1245
  },
1172
- "nonSemanticText": {
1173
- "summary": "semantic properties represented with styles",
1174
- "why": "User cannot get help to fully understand the text",
1246
+ "linkBrokenRisk": {
1247
+ "summary": "link incomplete",
1248
+ "why": "User may fail to reach a promised location",
1175
1249
  "wcag": "1.3.1",
1176
1250
  "weight": 2
1177
1251
  },
1178
- "hrConfusionRisk": {
1179
- "summary": "hr misused",
1180
- "why": "User cannot get help on the nature of segments of the page",
1181
- "wcag": "1.3.1",
1252
+ "linkConfusionRisk": {
1253
+ "summary": "links dubiously share name",
1254
+ "why": "User may be unable to get help differentiating links",
1255
+ "wcag": "2.4.4",
1182
1256
  "weight": 1
1183
1257
  },
1184
- "pseudoCodeRisk": {
1185
- "summary": "pre use dubious",
1186
- "why": "User may be unable to get help to fully understand the text",
1258
+ "linkElementBad": {
1259
+ "summary": "link element invalid",
1260
+ "why": "Document fails to get a needed external resource",
1187
1261
  "wcag": "1.3.1",
1188
- "weight": 1
1262
+ "weight": 4
1189
1263
  },
1190
- "pseudoParagraphRisk": {
1191
- "summary": "double br use dubious",
1192
- "why": "User may be unable to get help to fully understand the text",
1264
+ "linkElementMisplaced": {
1265
+ "summary": "link element misplaced",
1266
+ "why": "Document fails to get a needed external resource",
1193
1267
  "wcag": "1.3.1",
1194
- "weight": 1
1268
+ "weight": 4
1195
1269
  },
1196
- "pseudoHeadingRisk": {
1197
- "summary": "heading-like styles dubious",
1198
- "why": "User may be unable to understand the topic of a part of the page",
1199
- "wcag": "1.3.1",
1200
- "weight": 1
1270
+ "linkElNoHref": {
1271
+ "summary": "link element href missing",
1272
+ "why": "User cannot reach a promised location",
1273
+ "wcag": "4.1",
1274
+ "weight": 3
1201
1275
  },
1202
- "pseudoLinkScriptRisk": {
1203
- "summary": "script used instead of link",
1204
- "why": "Link may misbehave",
1205
- "wcag": "1.3.1",
1276
+ "linkElNoSource": {
1277
+ "summary": "link element href or imagesrcset missing",
1278
+ "why": "User cannot reach a promised location",
1279
+ "wcag": "4.1",
1280
+ "weight": 3
1281
+ },
1282
+ "linkFileName": {
1283
+ "summary": "link names a file instead of a purpose",
1284
+ "why": "User may fail to understand what a link points to",
1285
+ "wcag": "2.4.4",
1206
1286
  "weight": 1
1207
1287
  },
1208
- "pseudoLinkUnderlineRisk": {
1209
- "summary": "underlining dubious",
1210
- "why": "User may be misled into believing some text is a link",
1288
+ "linkImageTextURL": {
1289
+ "summary": "text alternative of link image a URL",
1290
+ "why": "User cannot understand what a link points to",
1291
+ "wcag": "2.4.4",
1292
+ "weight": 3
1293
+ },
1294
+ "linkIndication": {
1295
+ "summary": "link indication poor",
1296
+ "why": "User cannot differentiate a link from plain text",
1297
+ "wcag": "1.3.3",
1298
+ "weight": 2
1299
+ },
1300
+ "linkNameRisk": {
1301
+ "summary": "image link text suspect",
1302
+ "why": "Keyboard-only user may misunderstand the effect of following a link",
1303
+ "wcag": "2.4.4",
1304
+ "weight": 1
1305
+ },
1306
+ "linkNoText": {
1307
+ "summary": "link not named",
1308
+ "why": "User cannot get help understanding what a link points to",
1309
+ "wcag": "2.4.4",
1310
+ "weight": 4
1311
+ },
1312
+ "linkPair": {
1313
+ "summary": "adjacent links not combined",
1314
+ "why": "Keyboard-only user expends extra effort to skip a link",
1315
+ "wcag": "2.4.4",
1316
+ "weight": 2
1317
+ },
1318
+ "linkPairRisk": {
1319
+ "summary": "text and image link may merit combination",
1320
+ "why": "Keyboard-only user may expend extra effort to skip a link",
1321
+ "wcag": "2.4.4",
1322
+ "weight": 1
1323
+ },
1324
+ "linksNoNav": {
1325
+ "summary": "links not grouped as nav",
1326
+ "why": "User cannot get help identifying links as a navigation tool",
1211
1327
  "wcag": "1.3.1",
1328
+ "weight": 2
1329
+ },
1330
+ "linkTextsSame": {
1331
+ "summary": "links named identically",
1332
+ "why": "User cannot get help differentiating links",
1333
+ "wcag": "2.4.4",
1334
+ "weight": 2
1335
+ },
1336
+ "linkVaguenessRisk": {
1337
+ "summary": "link name vague",
1338
+ "why": "User may misunderstand what a link points to",
1339
+ "wcag": "2.4.4",
1212
1340
  "weight": 1
1213
1341
  },
1214
1342
  "listChild": {
@@ -1223,46 +1351,146 @@ const issuesData = {
1223
1351
  "wcag": "1.3.1",
1224
1352
  "weight": 4
1225
1353
  },
1226
- "descriptionOrphan": {
1227
- "summary": "description list orphan",
1228
- "why": "User cannot get help on whether an item is in a list",
1354
+ "mainConfusion": {
1355
+ "summary": "mains not distinctly named",
1356
+ "why": "User cannot get help on how some of the page is organized",
1357
+ "wcag": "1.3.6",
1358
+ "weight": 3
1359
+ },
1360
+ "mainNone": {
1361
+ "summary": "main missing",
1362
+ "why": "User cannot get help on how some of the page is organized",
1363
+ "wcag": "1.3.6",
1364
+ "weight": 2,
1365
+ "max": 1
1366
+ },
1367
+ "mainNot1": {
1368
+ "summary": "multiple mains",
1369
+ "why": "User cannot get help on how some of the page is organized",
1370
+ "wcag": "1.3.6",
1371
+ "weight": 2,
1372
+ "max": 1
1373
+ },
1374
+ "mainNotTop": {
1375
+ "summary": "main child of landmark",
1376
+ "why": "User cannot get help on how some of the page is organized",
1377
+ "wcag": "1.3.6",
1378
+ "weight": 2
1379
+ },
1380
+ "menuItemless": {
1381
+ "summary": "menu items missing",
1382
+ "why": "User cannot reach promised menu items",
1229
1383
  "wcag": "1.3.1",
1230
1384
  "weight": 4
1231
1385
  },
1232
- "descriptionOrder": {
1233
- "summary": "description list misordered",
1234
- "why": "User cannot get help on the structure of a list",
1235
- "wcag": "1.3.1",
1386
+ "menuItemNoText": {
1387
+ "summary": "menu item not named",
1388
+ "why": "User cannot get help explaing a menu item",
1389
+ "wcag": "4.1.2",
1236
1390
  "weight": 4
1237
1391
  },
1238
- "pseudoList": {
1239
- "summary": "list-like br use dubious",
1240
- "why": "User cannot get help recognizing a list of items",
1241
- "wcag": "1.3.1",
1242
- "weight": 1
1392
+ "menuNavigation": {
1393
+ "summary": "menu navigation nonstandard",
1394
+ "why": "Menus behave improperly for a keyboard-only user",
1395
+ "wcag": "2.1.1",
1396
+ "weight": 2
1243
1397
  },
1244
- "pseudoListRisk": {
1245
- "summary": "list not marked as such?",
1246
- "why": "User may be unable to get help on which items are in lists",
1247
- "wcag": "1.3.1",
1248
- "weight": 1
1398
+ "metaAttributeBad": {
1399
+ "summary": "meta attribute value invalid",
1400
+ "why": "Browser processes the page incorrectly",
1401
+ "wcag": "4.1",
1402
+ "weight": 3
1249
1403
  },
1250
- "pseudoOrderedListRisk": {
1251
- "summary": "ordered list not coded as such?",
1252
- "why": "User may be unable to get help on whether a list is ordered",
1404
+ "metaAttributesWrong": {
1405
+ "summary": "prohibited or missing meta attributes",
1406
+ "why": "Browser processes the page incorrectly",
1407
+ "wcag": "4.1",
1408
+ "weight": 3
1409
+ },
1410
+ "metaBansZoom": {
1411
+ "summary": "meta bans zoom",
1412
+ "why": "User cannot adjust the page size for readability",
1413
+ "wcag": "1.4.4",
1414
+ "weight": 4,
1415
+ "max": 1
1416
+ },
1417
+ "metaCharsetLate": {
1418
+ "summary": "meta charset declared too late",
1419
+ "why": "Browser may display incorrect text",
1420
+ "wcag": "4.1",
1421
+ "weight": 4
1422
+ },
1423
+ "metaDuplicated": {
1424
+ "summary": "meta element duplicated",
1425
+ "why": "Browser may process the page incorrectly",
1426
+ "wcag": "4.1",
1427
+ "weight": 3
1428
+ },
1429
+ "metaMisplaced": {
1430
+ "summary": "meta element in invalid location",
1431
+ "why": "Browser may process the page incorrectly",
1432
+ "wcag": "4.1",
1433
+ "weight": 4
1434
+ },
1435
+ "metaXUACompatible": {
1436
+ "summary": "meta X-UA-Compatible incomplete",
1437
+ "why": "Internet Explorer may display the page incorrectly",
1438
+ "wcag": "4.1",
1439
+ "weight": 3
1440
+ },
1441
+ "multipleLabelees": {
1442
+ "summary": "labeled element ambiguous",
1443
+ "why": "User cannot get help on the topic of a form item",
1253
1444
  "wcag": "1.3.1",
1445
+ "weight": 4
1446
+ },
1447
+ "navConfusion": {
1448
+ "summary": "navigations not distinctly named",
1449
+ "why": "User cannot get help on how some of the page is organized",
1450
+ "wcag": "1.3.6",
1451
+ "weight": 3
1452
+ },
1453
+ "negativeIndent": {
1454
+ "summary": "negative text-indent",
1455
+ "why": "Helper may hide content from a user",
1456
+ "wcag": "4.1",
1457
+ "weight": 3
1458
+ },
1459
+ "nestingBad": {
1460
+ "summary": "nesting invalid",
1461
+ "why": "Document contains invalid code",
1462
+ "wcag": "4.1.1",
1463
+ "weight": 3
1464
+ },
1465
+ "newTabSurprise": {
1466
+ "summary": "tab-opening link action unstated",
1467
+ "why": "Following a link opens a new window, surprising a user",
1468
+ "wcag": "3.2.5",
1469
+ "weight": 3
1470
+ },
1471
+ "newTabSurpriseRisk": {
1472
+ "summary": "tab-opening link action unstated?",
1473
+ "why": "Following a link opens a new window, possibly surprising a user",
1474
+ "wcag": "3.2.5",
1254
1475
  "weight": 1
1255
1476
  },
1256
- "pseudoNavList": {
1257
- "summary": "nav links not list",
1258
- "why": "User cannot get help recognizing a list of navigation links",
1259
- "wcag": "1.3.1",
1260
- "weight": 2
1477
+ "noLandmarks": {
1478
+ "summary": "no landmarks",
1479
+ "why": "User cannot get help on how the page is organized",
1480
+ "wcag": "1.3.6",
1481
+ "weight": 2,
1482
+ "max": 1
1261
1483
  },
1262
- "pseudoQuoteRisk": {
1263
- "summary": "quotation miscoded?",
1264
- "why": "User may be unable to get help identifying a quotation",
1265
- "wcag": "3.2.4",
1484
+ "nonElement": {
1485
+ "summary": "element unknown",
1486
+ "why": "Document includes an unknown element that the browser cannot process",
1487
+ "wcag": "4.1",
1488
+ "weight": 4
1489
+ },
1490
+ "nonLabelableRole": {
1491
+ "summary": "aria-label on non-labelable role",
1492
+ "why": "User is misinformed about an item",
1493
+ "wcag": "1.3.1",
1266
1494
  "weight": 1
1267
1495
  },
1268
1496
  "nonQuoteRisk": {
@@ -1271,22 +1499,16 @@ const issuesData = {
1271
1499
  "wcag": "3.2.4",
1272
1500
  "weight": 1
1273
1501
  },
1274
- "selectNoText": {
1275
- "summary": "select not named",
1276
- "why": "User cannot get help on the topic of a list of options",
1277
- "wcag": "4.1.2",
1278
- "weight": 3
1279
- },
1280
- "optionNoText": {
1281
- "summary": "option not named",
1282
- "why": "User cannot get help to understand an option",
1283
- "wcag": "4.1.2",
1284
- "weight": 4
1285
- },
1286
- "selectFlatRisk": {
1287
- "summary": "option groups not marked?",
1288
- "why": "User may be unable to get help recognizing groups of options",
1502
+ "nonSemanticText": {
1503
+ "summary": "semantic properties represented with styles",
1504
+ "why": "User cannot get help to fully understand the text",
1289
1505
  "wcag": "1.3.1",
1506
+ "weight": 2
1507
+ },
1508
+ "nonWebLink": {
1509
+ "summary": "link to non-web resource",
1510
+ "why": "Document points to harder-to-use resources",
1511
+ "wcag": "1.3.3",
1290
1512
  "weight": 1
1291
1513
  },
1292
1514
  "noOptionFocusable": {
@@ -1295,610 +1517,570 @@ const issuesData = {
1295
1517
  "wcag": "2.1.1",
1296
1518
  "weight": 1
1297
1519
  },
1298
- "accessKeyDuplicate": {
1299
- "summary": "duplicate access key",
1300
- "why": "Keyboard shortcut does not reliably trigger the intended action",
1301
- "wcag": "1.3.1",
1302
- "weight": 3
1303
- },
1304
- "fieldSetMissing": {
1305
- "summary": "fieldset missing",
1306
- "why": "User cannot get help recognizing a group of related form items",
1307
- "wcag": "1.3.1",
1308
- "weight": 2
1520
+ "noScriptRisk": {
1521
+ "summary": "noscript element not equivalent?",
1522
+ "why": "User who has disabled JavaScript may be denied some content",
1523
+ "wcag": "4.1",
1524
+ "weight": 1
1309
1525
  },
1310
- "fieldSetRisk": {
1311
- "summary": "fieldset missing?",
1312
- "why": "User may be unable to get help recognizing a group of related form items",
1313
- "wcag": "1.3.1",
1526
+ "notValidatable": {
1527
+ "summary": "item makes testing inconclusive",
1528
+ "why": "Item prevents a conclusive accessibility test",
1529
+ "wcag": "4.1",
1314
1530
  "weight": 1
1315
1531
  },
1316
- "legendMisplaced": {
1317
- "summary": "legend location invalid",
1318
- "why": "User cannot get help on the topic of a group of form items",
1319
- "wcag": "4.1.2",
1532
+ "objectAudioRisk": {
1533
+ "summary": "non-audio element plays audio?",
1534
+ "why": "User may get inadequate help consuming audio content",
1535
+ "wcag": "1.1.1",
1536
+ "weight": 1
1537
+ },
1538
+ "objectBlurKeyboardRisk": {
1539
+ "summary": "object not keyboard-blurrable?",
1540
+ "why": "Custom item may trap a keyboard-only user",
1541
+ "wcag": "2.1.1",
1542
+ "weight": 1
1543
+ },
1544
+ "objectNoText": {
1545
+ "summary": "object not named",
1546
+ "why": "User cannot get help explaining a custom item",
1547
+ "wcag": "1.1.1",
1320
1548
  "weight": 4
1321
1549
  },
1322
- "legendMissing": {
1323
- "summary": "legend missing",
1324
- "why": "User cannot get help on the topic of a group of form items",
1325
- "wcag": "4.1.2",
1326
- "weight": 2
1550
+ "objectTextRisk": {
1551
+ "summary": "object dubiously named",
1552
+ "why": "Helper may explain a custom item inadequately",
1553
+ "wcag": "1.1.1",
1554
+ "weight": 1
1327
1555
  },
1328
- "groupName": {
1329
- "summary": "group not named",
1330
- "why": "User cannot get help on the topic of a group of form items",
1331
- "wcag": "4.1.2",
1556
+ "obsolete": {
1557
+ "summary": "code obsolete",
1558
+ "why": "Document contains code that is no longer standard",
1559
+ "wcag": "4.1",
1332
1560
  "weight": 3
1333
1561
  },
1334
- "layoutTable": {
1335
- "summary": "table misused",
1336
- "why": "Helper misinforms a user about whether items are cells of a table",
1337
- "wcag": "1.3.1",
1338
- "weight": 2
1562
+ "optionNoText": {
1563
+ "summary": "option not named",
1564
+ "why": "User cannot get help to understand an option",
1565
+ "wcag": "4.1.2",
1566
+ "weight": 4
1339
1567
  },
1340
- "tabularTableless": {
1341
- "summary": "table not marked as such",
1342
- "why": "Helper misinforms a user about whether items are cells of a table",
1343
- "wcag": "1.3.1",
1344
- "weight": 3
1568
+ "orientationRisk": {
1569
+ "summary": "orientation issues not testable",
1570
+ "why": "User may need to read sideways after rotating a device",
1571
+ "wcag": "1.3.4",
1572
+ "weight": 1,
1573
+ "max": 1
1345
1574
  },
1346
- "tableColumnsVary": {
1347
- "summary": "table column counts vary",
1348
- "why": "User cannot get help on the dimensions of a table",
1349
- "wcag": "1.3.1",
1350
- "weight": 3
1575
+ "overflowHidden": {
1576
+ "summary": "overflow hidden",
1577
+ "why": "User cannot enlarge the text for readability",
1578
+ "wcag": "1.4.4",
1579
+ "weight": 4
1351
1580
  },
1352
- "tableCaption": {
1353
- "summary": "table caption missing",
1354
- "why": "User cannot get help on the topic of a table",
1355
- "wcag": "1.3.1",
1581
+ "overflowHiddenRisk": {
1582
+ "summary": "overflow hidden?",
1583
+ "why": "User may be unable to enlarge the text for readability",
1584
+ "wcag": "1.4.4",
1356
1585
  "weight": 1
1357
1586
  },
1358
- "tableCaptionLoc": {
1359
- "summary": "table caption location invalid",
1360
- "why": "User cannot get help on the topic of a table",
1361
- "wcag": "1.3.1",
1362
- "weight": 3
1587
+ "paddingBad": {
1588
+ "summary": "CSS padding invalid",
1589
+ "why": "Content is displayed improperly",
1590
+ "wcag": "4.1",
1591
+ "weight": 4
1363
1592
  },
1364
- "tableCapSum": {
1365
- "summary": "table summary duplicative",
1366
- "why": "Helper informs a user repetitively about the topic of a table",
1367
- "wcag": "1.3.1",
1368
- "weight": 2
1593
+ "pageLanguage": {
1594
+ "summary": "page language missing",
1595
+ "why": "Speaking helper may mispronounce the page text",
1596
+ "wcag": "3.1.1",
1597
+ "weight": 4,
1598
+ "max": 1
1369
1599
  },
1370
- "tableSum": {
1371
- "summary": "table summary empty",
1372
- "why": "User cannot get help summarizing a table",
1373
- "wcag": "1.3.1",
1374
- "weight": 4
1600
+ "pageLanguageBad": {
1601
+ "summary": "page language invalid",
1602
+ "why": "Speaking helper may mispronounce the page text",
1603
+ "wcag": "3.1.1",
1604
+ "weight": 4,
1605
+ "max": 1
1375
1606
  },
1376
- "tableLabelID": {
1377
- "summary": "table aria-labelledby invalid",
1378
- "why": "User cannot get help on the topic of a table",
1379
- "wcag": "1.3.1",
1380
- "weight": 4
1607
+ "pageNewWindow": {
1608
+ "summary": "page immediately opens window",
1609
+ "why": "User promised a page gets another page, too",
1610
+ "wcag": "3.2.5",
1611
+ "weight": 3,
1612
+ "max": 1
1381
1613
  },
1382
- "tableDescriptionID": {
1383
- "summary": "table aria-describedby invalid",
1384
- "why": "User cannot get help on the topic of a table",
1385
- "wcag": "1.3.1",
1386
- "weight": 4
1614
+ "pageTitle": {
1615
+ "summary": "page title missing",
1616
+ "why": "User is not informed of the topic of the page",
1617
+ "wcag": "2.4.2",
1618
+ "weight": 4,
1619
+ "max": 1
1387
1620
  },
1388
- "cellHeadersNotInferrable": {
1389
- "summary": "cell headers not inferrable",
1390
- "why": "User cannot get help on relationships in a table",
1621
+ "pageTitleBad": {
1622
+ "summary": "page title invalid",
1623
+ "why": "Browser processes the page improperly",
1391
1624
  "wcag": "1.3.1",
1392
- "weight": 4
1625
+ "weight": 3,
1626
+ "max": 1
1393
1627
  },
1394
- "cellHeadersOutsideTable": {
1395
- "summary": "cell headers outside table",
1396
- "why": "User cannot get help on relationships in a table",
1628
+ "parentBad": {
1629
+ "summary": "parent invalid",
1630
+ "why": "User cannot properly operate an item",
1397
1631
  "wcag": "1.3.1",
1398
1632
  "weight": 4
1399
1633
  },
1400
- "cellHeadersAmbiguityRisk": {
1401
- "summary": "cell headers ambiguous?",
1402
- "why": "User may be unable to get help on relationships in a table",
1634
+ "parentMissing": {
1635
+ "summary": "parent missing",
1636
+ "why": "Keyboard-only user cannot operate a custom tool",
1403
1637
  "wcag": "1.3.1",
1404
- "weight": 2
1638
+ "weight": 4
1405
1639
  },
1406
- "tableHeaderless": {
1407
- "summary": "table headers missing",
1408
- "why": "User cannot get help on relationships in a table",
1409
- "wcag": "1.3.1",
1640
+ "parseError": {
1641
+ "summary": "code invalid",
1642
+ "why": "Invalid code in the page may prevent a helper from working",
1643
+ "wcag": "4.1",
1410
1644
  "weight": 3
1411
1645
  },
1412
- "tableCellHeaderless": {
1413
- "summary": "table-cell header missing",
1414
- "why": "User cannot get help on the topic of a table cell",
1415
- "wcag": "1.3.1",
1646
+ "placeholderPlusAria": {
1647
+ "summary": "element has competing placeholder attributes",
1648
+ "why": "User gets conflicting help on what information to enter in a form item",
1649
+ "wcag": "4.1.2",
1416
1650
  "weight": 3
1417
1651
  },
1418
- "tableHeaderCellless": {
1419
- "summary": "table-header cell missing",
1420
- "why": "User cannot get help on relationships in a table",
1652
+ "positionSticky": {
1653
+ "summary": "position sticky",
1654
+ "why": "User may be unable to see needed content or may be forced to scroll in both dimensions",
1655
+ "wcag": "1.4.10",
1656
+ "weight": 1
1657
+ },
1658
+ "preselectedOption": {
1659
+ "summary": "no default option",
1660
+ "why": "User may risk erroneously submitting a form",
1661
+ "wcag": "4.1.2",
1662
+ "weight": 1
1663
+ },
1664
+ "presentationChild": {
1665
+ "summary": "presentation element has child",
1666
+ "why": "Keyboard-only user cannot reach an item intended to be reachable",
1421
1667
  "wcag": "1.3.1",
1422
1668
  "weight": 4
1423
1669
  },
1424
- "TableHeaderScopeRisk": {
1425
- "summary": "Table scope ambiguous?",
1426
- "why": "User may be unable to get help on relationships in a table",
1670
+ "presentationGlobal": {
1671
+ "summary": "global ARIA attribute nullifies presentation role",
1672
+ "why": "User encounters content intended to be hidden",
1427
1673
  "wcag": "1.3.1",
1428
1674
  "weight": 1
1429
1675
  },
1430
- "tableHeaderEmpty": {
1431
- "summary": "table header empty",
1432
- "why": "User cannot get help on relationships in a table",
1676
+ "presentationTabIndexed": {
1677
+ "summary": "tabindex attribute nullifies presentation role",
1678
+ "why": "User encounters content intended to be hidden",
1433
1679
  "wcag": "1.3.1",
1434
- "weight": 2
1680
+ "weight": 1
1435
1681
  },
1436
- "tableHead": {
1437
- "summary": "thead missing",
1438
- "why": "User cannot get help on parts of a table",
1682
+ "progressNoText": {
1683
+ "summary": "progress bar not named",
1684
+ "why": "User cannot get help understanding the state of a process",
1685
+ "wcag": "4.1.2",
1686
+ "weight": 4
1687
+ },
1688
+ "pseudoCodeRisk": {
1689
+ "summary": "pre use dubious",
1690
+ "why": "User may be unable to get help to fully understand the text",
1439
1691
  "wcag": "1.3.1",
1440
1692
  "weight": 1
1441
1693
  },
1442
- "tableBody": {
1443
- "summary": "tbody missing",
1444
- "why": "User cannot get help on parts of a table",
1694
+ "pseudoHeadingRisk": {
1695
+ "summary": "heading-like styles dubious",
1696
+ "why": "User may be unable to understand the topic of a part of the page",
1445
1697
  "wcag": "1.3.1",
1446
1698
  "weight": 1
1447
1699
  },
1448
- "tableEmbedded": {
1449
- "summary": "table embedded in table",
1450
- "why": "User cannot get help on relationships in a table",
1700
+ "pseudoLinkScriptRisk": {
1701
+ "summary": "script used instead of link",
1702
+ "why": "Link may misbehave",
1451
1703
  "wcag": "1.3.1",
1452
- "weight": 2
1453
- },
1454
- "divInTable": {
1455
- "summary": "div embedded in table",
1456
- "why": "Blocks of content within a table cell may confuse a user",
1457
- "wcag": "1.4",
1458
1704
  "weight": 1
1459
1705
  },
1460
- "formInTable": {
1461
- "summary": "form embedded in table",
1462
- "why": "Navigation in a form may confuse a keyboard-only user",
1463
- "wcag": "2.1.1",
1706
+ "pseudoLinkUnderlineRisk": {
1707
+ "summary": "underlining dubious",
1708
+ "why": "User may be misled into believing some text is a link",
1709
+ "wcag": "1.3.1",
1464
1710
  "weight": 1
1465
1711
  },
1466
- "inputInTable": {
1467
- "summary": "input embedded in table",
1468
- "why": "Entry of data in a form may confuse a keyboard-only user",
1469
- "wcag": "2.1.1",
1712
+ "pseudoList": {
1713
+ "summary": "list-like br use dubious",
1714
+ "why": "User cannot get help recognizing a list of items",
1715
+ "wcag": "1.3.1",
1470
1716
  "weight": 1
1471
1717
  },
1472
- "tableHeading": {
1473
- "summary": "heading located in table",
1474
- "why": "Complex relationships in a table may confuse a user",
1718
+ "pseudoListRisk": {
1719
+ "summary": "list not marked as such?",
1720
+ "why": "User may be unable to get help on which items are in lists",
1475
1721
  "wcag": "1.3.1",
1476
1722
  "weight": 1
1477
1723
  },
1478
- "controlNoText": {
1479
- "summary": "control not named",
1480
- "why": "User cannot get help on how to operate a form item",
1724
+ "pseudoNavList": {
1725
+ "summary": "nav links not list",
1726
+ "why": "User cannot get help recognizing a list of navigation links",
1481
1727
  "wcag": "1.3.1",
1482
- "weight": 4
1483
- },
1484
- "controlLabelInvisible": {
1485
- "summary": "control label invisible",
1486
- "why": "User cannot understand how to operate a form item",
1487
- "wcag": "2.4.6",
1488
- "weight": 4
1728
+ "weight": 2
1489
1729
  },
1490
- "inputLabelInvisibleRisk": {
1491
- "summary": "input label invisible?",
1492
- "why": "User cannot understand where to enter information",
1493
- "wcag": "2.4.6",
1730
+ "pseudoOrderedListRisk": {
1731
+ "summary": "ordered list not coded as such?",
1732
+ "why": "User may be unable to get help on whether a list is ordered",
1733
+ "wcag": "1.3.1",
1494
1734
  "weight": 1
1495
1735
  },
1496
- "titleAsLabel": {
1497
- "summary": "control has title instead of label",
1498
- "why": "User cannot get help on how to operate a form item",
1499
- "wcag": "2.4.6",
1500
- "weight": 3
1501
- },
1502
- "visibleLabelNotInName": {
1503
- "summary": "visible label not in name",
1504
- "why": "User cannot get help choosing a form control to operate",
1505
- "wcag": "2.5.3",
1506
- "weight": 3
1507
- },
1508
- "targetSmall": {
1509
- "summary": "target small",
1510
- "why": "User cannot reliably choose an item to click or tap",
1511
- "wcag": "2.5.5",
1736
+ "pseudoParagraphRisk": {
1737
+ "summary": "double br use dubious",
1738
+ "why": "User may be unable to get help to fully understand the text",
1739
+ "wcag": "1.3.1",
1512
1740
  "weight": 1
1513
1741
  },
1514
- "targetTiny": {
1515
- "summary": "target very small",
1516
- "why": "User cannot reliably choose an item to click or tap",
1517
- "wcag": "2.5.8",
1518
- "weight": 3
1742
+ "pseudoQuoteRisk": {
1743
+ "summary": "quotation miscoded?",
1744
+ "why": "User may be unable to get help identifying a quotation",
1745
+ "wcag": "3.2.4",
1746
+ "weight": 1
1519
1747
  },
1520
- "targetsNear": {
1521
- "summary": "small targets too near to each other",
1522
- "why": "User cannot reliably choose an item to click or tap",
1523
- "wcag": "2.5.8",
1748
+ "refresh": {
1749
+ "summary": "element reloads or redirects",
1750
+ "why": "Document change may surprise a user",
1751
+ "wcag": "2.2.1",
1524
1752
  "weight": 3
1525
1753
  },
1526
- "visibleBulk": {
1527
- "summary": "large visible-element count",
1528
- "why": "User cannot easily find items in the page",
1529
- "wcag": "2.4",
1530
- "weight": 1,
1531
- "max": 1
1532
- },
1533
- "activeEmbedding": {
1534
- "summary": "control child of link or button",
1535
- "why": "User cannot reliably choose an item to click or tap",
1536
- "wcag": "2.5.5",
1754
+ "regionConfusion": {
1755
+ "summary": "regions not distinctly named",
1756
+ "why": "User cannot get help on how some of the page is organized",
1757
+ "wcag": "1.3.6",
1537
1758
  "weight": 3
1538
1759
  },
1539
- "unfocusability": {
1540
- "summary": "element not focusable",
1541
- "why": "Keyboard-only user cannot choose an item to operate",
1542
- "wcag": "2.1.1",
1760
+ "regionNoText": {
1761
+ "summary": "region not named",
1762
+ "why": "User cannot get help surveying the parts of the page",
1763
+ "wcag": "4.1.2",
1543
1764
  "weight": 4
1544
1765
  },
1545
- "focusDiscrepancy": {
1546
- "summary": "Tab-focusable elements wrong",
1547
- "why": "Item selections by a keyboard-only user are useless or impossible",
1548
- "wcag": "2.1.1",
1549
- "weight": 4
1766
+ "repeatedContentRisk": {
1767
+ "summary": "skip method missing or invalid?",
1768
+ "why": "Keyboard-only user may be unable easily to reach the specific content of the page",
1769
+ "wcag": "2.4.1",
1770
+ "weight": 1,
1771
+ "max": 2
1550
1772
  },
1551
- "focusIndicationBad": {
1552
- "summary": "focus indication poor",
1553
- "why": "Keyboard-only user cannot choose an item to operate",
1554
- "wcag": "2.4.7",
1773
+ "requirementBad": {
1774
+ "summary": "requirement invalid",
1775
+ "why": "User may fail to get help determining whether a form item must be completed",
1776
+ "wcag": "1.3.5",
1555
1777
  "weight": 4
1556
1778
  },
1557
- "focusIndicationImprovable": {
1558
- "summary": "focus indication improvable",
1559
- "why": "Keyboard-only user cannot easily choose an item to operate",
1560
- "wcag": "2.4.7",
1561
- "weight": 2
1562
- },
1563
- "focusIndicationRisk": {
1564
- "summary": "focus indication poor?",
1565
- "why": "Keyboard-only user cannot choose an item to operate",
1566
- "wcag": "2.4.7",
1567
- "weight": 1
1568
- },
1569
- "boxInvisibleRisk": {
1570
- "summary": "border or outline invisible?",
1571
- "why": "User cannot perceive the boundary of an item",
1572
- "wcag": "2.5.8",
1573
- "weight": 1
1574
- },
1575
- "allCaps": {
1576
- "summary": "all-capital text",
1577
- "why": "Text is difficult to read",
1578
- "wcag": "3.1.5",
1779
+ "requirementRedundant": {
1780
+ "summary": "requirement redundant",
1781
+ "why": "Help determining whether a form item must be completed is at risk of corruption",
1782
+ "wcag": "1.3.5",
1579
1783
  "weight": 1
1580
1784
  },
1581
- "allItalics": {
1582
- "summary": "all-italic text",
1583
- "why": "Text is difficult to read",
1584
- "wcag": "3.1.5",
1585
- "weight": 1
1785
+ "roleBad": {
1786
+ "summary": "role invalid",
1787
+ "why": "User cannot get help on the nature of an item",
1788
+ "wcag": "4.1.2",
1789
+ "weight": 3
1586
1790
  },
1587
- "textDistortion": {
1588
- "summary": "text distortion",
1589
- "why": "Text is difficult to read",
1590
- "wcag": "3.1.5",
1791
+ "roleConfusion": {
1792
+ "summary": "role assigned instead of implicit",
1793
+ "why": "User may misunderstand the purpose of an item",
1794
+ "wcag": "4.1.2",
1591
1795
  "weight": 1
1592
1796
  },
1593
- "noLandmarks": {
1594
- "summary": "no landmarks",
1595
- "why": "User cannot get help on how the page is organized",
1596
- "wcag": "1.3.6",
1597
- "weight": 2,
1598
- "max": 1
1797
+ "roleHierarchyBad": {
1798
+ "summary": "ancestor and descendant roles incompatible",
1799
+ "why": "User may misunderstand or be blocked from exposure to an item",
1800
+ "wcag": "4.1.2",
1801
+ "weight": 4
1599
1802
  },
1600
- "contentBeyondLandmarks": {
1601
- "summary": "content beyond landmarks",
1602
- "why": "User cannot get help on how some of the page is organized",
1603
- "wcag": "1.3.6",
1604
- "weight": 1
1803
+ "roleMissing": {
1804
+ "summary": "role missing",
1805
+ "why": "Item behaves improperly",
1806
+ "wcag": "4.1.2",
1807
+ "weight": 3
1605
1808
  },
1606
- "footerNotTop": {
1607
- "summary": "footer child of landmark",
1608
- "why": "User cannot get help on how some of the page is organized",
1609
- "wcag": "1.3.6",
1809
+ "roleMissingRisk": {
1810
+ "summary": "role missing?",
1811
+ "why": "Item may behave improperly",
1812
+ "wcag": "4.1.2",
1610
1813
  "weight": 1
1611
1814
  },
1612
- "asideNotTop": {
1613
- "summary": "aside child of landmark",
1614
- "why": "User cannot get help on how some of the page is organized",
1615
- "wcag": "1.3.6",
1616
- "weight": 2
1815
+ "roleNoText": {
1816
+ "summary": "no role-required name",
1817
+ "why": "User cannot get help understanding an item",
1818
+ "wcag": "4.1.2",
1819
+ "weight": 4
1617
1820
  },
1618
- "mainNotTop": {
1619
- "summary": "main child of landmark",
1620
- "why": "User cannot get help on how some of the page is organized",
1621
- "wcag": "1.3.6",
1622
- "weight": 2
1821
+ "roleRedundant": {
1822
+ "summary": "role redundant",
1823
+ "why": "Document includes unnecessary code",
1824
+ "wcag": "4.1.2",
1825
+ "weight": 1
1623
1826
  },
1624
- "mainConfusion": {
1625
- "summary": "mains not distinctly named",
1626
- "why": "User cannot get help on how some of the page is organized",
1627
- "wcag": "1.3.6",
1827
+ "scriptBanned": {
1828
+ "summary": "script prohibited",
1829
+ "why": "Browser processes the page improperly",
1830
+ "wcag": "4.1",
1628
1831
  "weight": 3
1629
1832
  },
1630
- "mainNone": {
1631
- "summary": "main missing",
1632
- "why": "User cannot get help on how some of the page is organized",
1633
- "wcag": "1.3.6",
1634
- "weight": 2,
1635
- "max": 1
1636
- },
1637
- "mainNot1": {
1638
- "summary": "multiple mains",
1639
- "why": "User cannot get help on how some of the page is organized",
1640
- "wcag": "1.3.6",
1641
- "weight": 2,
1642
- "max": 1
1643
- },
1644
- "bannerNot1": {
1645
- "summary": "multiple banners",
1646
- "why": "User cannot get help on how some of the page is organized",
1647
- "wcag": "1.3.6",
1648
- "weight": 2,
1649
- "max": 1
1833
+ "scriptElementBad": {
1834
+ "summary": "script element invalid",
1835
+ "why": "Browser processes the page improperly",
1836
+ "wcag": "1.3.1",
1837
+ "weight": 4
1650
1838
  },
1651
- "bannerNotTop": {
1652
- "summary": "banner child of landmark",
1653
- "why": "User cannot get help on how some of the page is organized",
1654
- "wcag": "1.3.6",
1655
- "weight": 2
1839
+ "scriptNotDeferrable": {
1840
+ "summary": "script element invalidly deferred",
1841
+ "why": "Browser processes the page improperly",
1842
+ "wcag": "1.3.1",
1843
+ "weight": 4
1656
1844
  },
1657
- "footerConfusion": {
1658
- "summary": "contentinfos not distinctly named",
1659
- "why": "User cannot get help on how some of the page is organized",
1660
- "wcag": "1.3.6",
1845
+ "scrollFocus": {
1846
+ "summary": "scrollable element and children nonfocusable",
1847
+ "why": "User may be unable to see all of an item without scrolling in both dimensions",
1848
+ "wcag": "2.1.1",
1661
1849
  "weight": 3
1662
1850
  },
1663
- "footerNot1": {
1664
- "summary": "multiple contentinfos",
1665
- "why": "User cannot get help on how some of the page is organized",
1666
- "wcag": "1.3.6",
1667
- "weight": 2,
1668
- "max": 1
1669
- },
1670
- "landmarkConfusion": {
1671
- "summary": "landmarks not distinctly named",
1672
- "why": "User cannot get help on how some of the page is organized",
1673
- "wcag": "1.3.6",
1674
- "weight": 3
1851
+ "scrollRisk": {
1852
+ "summary": "container size unit not percentage",
1853
+ "why": "User may be unable to see all of an item without scrolling in both dimensions",
1854
+ "wcag": "1.4.10",
1855
+ "weight": 1
1675
1856
  },
1676
- "documentConfusion": {
1677
- "summary": "page elements not distinctly named",
1857
+ "searchConfusion": {
1858
+ "summary": "searches not distinctly named",
1678
1859
  "why": "User cannot get help on how some of the page is organized",
1679
1860
  "wcag": "1.3.6",
1680
1861
  "weight": 3
1681
1862
  },
1682
- "formsNested": {
1683
- "summary": "form nested in another form",
1684
- "why": "User cannot predict effect of actions in a form",
1685
- "wcag": "4.1",
1686
- "weight": 4
1687
- },
1688
- "formConfusion": {
1689
- "summary": "forms not distinctly named",
1690
- "why": "User cannot get help on how some of the page is organized",
1691
- "wcag": "1.3.6",
1692
- "weight": 3
1863
+ "sectionHeadingless": {
1864
+ "summary": "section heading missing",
1865
+ "why": "User cannot understand the topic of a part of the page",
1866
+ "wcag": "1.3.1",
1867
+ "weight": 1
1693
1868
  },
1694
- "applicationNoText": {
1695
- "summary": "application not named",
1696
- "why": "User cannot get help on how some of the page is organized",
1697
- "wcag": "1.3.6",
1869
+ "selectBad": {
1870
+ "summary": "select element invalid",
1871
+ "why": "User cannot properly select among options",
1872
+ "wcag": "4.1.2",
1698
1873
  "weight": 4
1699
1874
  },
1700
- "applicationConfusion": {
1701
- "summary": "applications not distinctly named",
1702
- "why": "User cannot get help on how some of the page is organized",
1703
- "wcag": "1.3.6",
1704
- "weight": 3
1875
+ "selectFlatRisk": {
1876
+ "summary": "option groups not marked?",
1877
+ "why": "User may be unable to get help recognizing groups of options",
1878
+ "wcag": "1.3.1",
1879
+ "weight": 1
1705
1880
  },
1706
- "asideConfusion": {
1707
- "summary": "asides not distinctly named",
1708
- "why": "User cannot get help on how some of the page is organized",
1709
- "wcag": "1.3.6",
1710
- "weight": 3
1881
+ "selectNavSurpriseRisk": {
1882
+ "summary": "navigating selection-change action unstated?",
1883
+ "why": "Changing a selected option opens a new window, possibly surprising a user",
1884
+ "wcag": "3.2.5",
1885
+ "weight": 1
1711
1886
  },
1712
- "bannerConfusion": {
1713
- "summary": "banners not distinctly named",
1714
- "why": "User cannot get help on how some of the page is organized",
1715
- "wcag": "1.3.6",
1887
+ "selectNoText": {
1888
+ "summary": "select not named",
1889
+ "why": "User cannot get help on the topic of a list of options",
1890
+ "wcag": "4.1.2",
1716
1891
  "weight": 3
1717
1892
  },
1718
- "navConfusion": {
1719
- "summary": "navigations not distinctly named",
1720
- "why": "User cannot get help on how some of the page is organized",
1721
- "wcag": "1.3.6",
1722
- "weight": 3
1893
+ "sensoryDependenceRisk": {
1894
+ "summary": "instruction requires particular sense?",
1895
+ "why": "Content is impossible to perceive under some conditions",
1896
+ "wcag": "1.4.1",
1897
+ "weight": 1
1723
1898
  },
1724
- "landmarkInNav": {
1725
- "summary": "invalid landmark child of navigation role",
1726
- "why": "User cannot get help on how some of the page is organized",
1727
- "wcag": "1.3.6",
1899
+ "sizesAttributeBad": {
1900
+ "summary": "sizes attribute invalid",
1901
+ "why": "Item behaves improperly",
1902
+ "wcag": "1.3.1",
1728
1903
  "weight": 4
1729
1904
  },
1730
- "regionConfusion": {
1731
- "summary": "regions not distinctly named",
1732
- "why": "User cannot get help on how some of the page is organized",
1733
- "wcag": "1.3.6",
1734
- "weight": 3
1905
+ "skipRepeatedContent": {
1906
+ "summary": "skip method missing or invalid",
1907
+ "why": "Keyboard-only user cannot easily reach the specific content of the page",
1908
+ "wcag": "2.4.1",
1909
+ "weight": 3,
1910
+ "max": 2
1735
1911
  },
1736
- "searchConfusion": {
1737
- "summary": "searches not distinctly named",
1738
- "why": "User cannot get help on how some of the page is organized",
1739
- "wcag": "1.3.6",
1740
- "weight": 3
1912
+ "sourceEmpty": {
1913
+ "summary": "src empty",
1914
+ "why": "Image, audio, or video to be shown cannot be found",
1915
+ "wcag": "1.3.1",
1916
+ "weight": 4
1741
1917
  },
1742
- "complementaryNoText": {
1743
- "summary": "complementary not named",
1744
- "why": "User cannot get help on how some of the page is organized",
1745
- "wcag": "1.3.6",
1918
+ "specRulesScriptBad": {
1919
+ "summary": "speculation rules script element invalid",
1920
+ "why": "Document navigation performs poorly",
1921
+ "wcag": "1.3.1",
1746
1922
  "weight": 1
1747
1923
  },
1748
- "labelNoText": {
1749
- "summary": "label not named",
1750
- "why": "User cannot get help on the topic of a form item",
1751
- "wcag": "1.3.1",
1752
- "weight": 4
1924
+ "spontaneousMotion": {
1925
+ "summary": "page content moves spontaneously",
1926
+ "why": "Motion-sensitive user may suffer harm",
1927
+ "wcag": "2.2.2",
1928
+ "weight": 2,
1929
+ "max": 1
1753
1930
  },
1754
- "focusableOperable": {
1755
- "summary": "element focusability and operability conflict",
1756
- "why": "Keyboard-only user cannot operate an item",
1757
- "wcag": "2.1.1",
1931
+ "stylesheetBanned": {
1932
+ "summary": "stylesheet prohibited",
1933
+ "why": "Browser displays the page improperly",
1934
+ "wcag": "1.4",
1758
1935
  "weight": 3
1759
1936
  },
1760
- "focusableRole": {
1761
- "summary": "focusable element not active",
1762
- "why": "Keyboard-only user cannot navigate properly to the operable items",
1763
- "wcag": "4.1.2",
1937
+ "submitButton": {
1938
+ "summary": "form submission button missing",
1939
+ "why": "User cannot easily submit a form",
1940
+ "wcag": "3.2.2",
1764
1941
  "weight": 3
1765
1942
  },
1766
- "focusableHidden": {
1767
- "summary": "focusable element hidden",
1768
- "why": "Keyboard-only user cannot navigate properly to the operable items",
1769
- "wcag": "4.1.2",
1943
+ "svgImageNoText": {
1944
+ "summary": "svg image not named",
1945
+ "why": "User cannot get help understanding an image",
1946
+ "wcag": "1.1.1",
1770
1947
  "weight": 4
1771
1948
  },
1772
- "focusedAway": {
1773
- "summary": "element beyond display when focused",
1774
- "why": "Keyboard-only user cannot navigate properly to the operable items",
1775
- "wcag": "1.4.10",
1776
- "weight": 3
1949
+ "svgLabelID": {
1950
+ "summary": "svg label referent invalid",
1951
+ "why": "User cannot get help understanding an image",
1952
+ "wcag": "1.1.1",
1953
+ "weight": 4
1777
1954
  },
1778
- "focusableDescendants": {
1779
- "summary": "presentational child focusable",
1780
- "why": "Keyboard-only user cannot navigate properly to the operable items",
1781
- "wcag": "4.1.2",
1955
+ "svgNoText": {
1956
+ "summary": "SVG image not named",
1957
+ "why": "User cannot get help to know what is in an image",
1958
+ "wcag": "1.1.1",
1782
1959
  "weight": 4
1783
1960
  },
1784
- "datalistRef": {
1785
- "summary": "ambiguous or missing datalist reference",
1786
- "why": "User cannot get help on the permitted input values",
1787
- "wcag": "3.3.2",
1961
+ "svgNotValidatable": {
1962
+ "summary": "SVG version not 1.1",
1963
+ "why": "Item prevents testing image for accessibility",
1964
+ "wcag": "4.1",
1965
+ "weight": 1
1966
+ },
1967
+ "tabIndexEmpty": {
1968
+ "summary": "tabindex empty",
1969
+ "why": "Keyboard-only user cannot follow the intended navigation sequence",
1970
+ "wcag": "1.3.1",
1788
1971
  "weight": 4
1789
1972
  },
1790
- "multipleLabelees": {
1791
- "summary": "labeled element ambiguous",
1792
- "why": "User cannot get help on the topic of a form item",
1973
+ "tabIndexExtra": {
1974
+ "summary": "tabindex redundant",
1975
+ "why": "Revision risks interfering with navigation by a keyboard-only user",
1976
+ "wcag": "1.3.1",
1977
+ "weight": 1
1978
+ },
1979
+ "tabIndexInt": {
1980
+ "summary": "tabindex not integer",
1981
+ "why": "Keyboard-only user cannot follow the intended navigation sequence",
1793
1982
  "wcag": "1.3.1",
1794
1983
  "weight": 4
1795
1984
  },
1796
- "labeledHidden": {
1797
- "summary": "control hidden but labeled",
1798
- "why": "Document includes unnecessary code",
1985
+ "tabIndexPositive": {
1986
+ "summary": "tabindex positive",
1987
+ "why": "Keyboard-only user cannot predict the navigation sequence",
1988
+ "wcag": "2.4.3",
1989
+ "weight": 1
1990
+ },
1991
+ "tableBody": {
1992
+ "summary": "tbody missing",
1993
+ "why": "User cannot get help on parts of a table",
1799
1994
  "wcag": "1.3.1",
1800
1995
  "weight": 1
1801
1996
  },
1802
- "contentHidden": {
1803
- "summary": "page hidden",
1804
- "why": "User cannot get the page content",
1805
- "wcag": "2.4.7",
1806
- "weight": 4,
1807
- "max": 1
1997
+ "tableCapSum": {
1998
+ "summary": "table summary duplicative",
1999
+ "why": "Helper informs a user repetitively about the topic of a table",
2000
+ "wcag": "1.3.1",
2001
+ "weight": 2
1808
2002
  },
1809
- "hideFailureRisk": {
1810
- "summary": "false aria-hidden value risky",
1811
- "why": "User may be misled by erroneously hidden or revealed page content",
1812
- "wcag": "2.4.6",
2003
+ "tableCaption": {
2004
+ "summary": "table caption missing",
2005
+ "why": "User cannot get help on the topic of a table",
2006
+ "wcag": "1.3.1",
1813
2007
  "weight": 1
1814
2008
  },
1815
- "negativeIndent": {
1816
- "summary": "negative text-indent",
1817
- "why": "Helper may hide content from a user",
1818
- "wcag": "4.1",
2009
+ "tableCaptionLoc": {
2010
+ "summary": "table caption location invalid",
2011
+ "why": "User cannot get help on the topic of a table",
2012
+ "wcag": "1.3.1",
1819
2013
  "weight": 3
1820
2014
  },
1821
- "frameSandboxRisk": {
1822
- "summary": "iframe sandbox attributes risky",
1823
- "why": "Document may be unsafe to use",
1824
- "wcag": "4.1",
1825
- "weight": 2
1826
- },
1827
- "hoverIndication": {
1828
- "summary": "hover indication poor",
1829
- "why": "User cannot explore the page reliably with a mouse",
1830
- "wcag": "3.3.2",
2015
+ "tableCellHeaderless": {
2016
+ "summary": "table-cell header missing",
2017
+ "why": "User cannot get help on the topic of a table cell",
2018
+ "wcag": "1.3.1",
1831
2019
  "weight": 3
1832
2020
  },
1833
- "hoverSurprise": {
1834
- "summary": "hovering changes content",
1835
- "why": "User cannot explore the page reliably with a mouse",
1836
- "wcag": "3.2.5",
1837
- "weight": 1
2021
+ "tableColumnsVary": {
2022
+ "summary": "table column counts vary",
2023
+ "why": "User cannot get help on the dimensions of a table",
2024
+ "wcag": "1.3.1",
2025
+ "weight": 3
1838
2026
  },
1839
- "formSurpriseRisk": {
1840
- "summary": "form interaction changes content?",
1841
- "why": "User experiences unexpected page change when using a form",
1842
- "wcag": "3.2.5",
1843
- "weight": 1
2027
+ "tableDescriptionID": {
2028
+ "summary": "table aria-describedby invalid",
2029
+ "why": "User cannot get help on the topic of a table",
2030
+ "wcag": "1.3.1",
2031
+ "weight": 4
1844
2032
  },
1845
- "labelClash": {
1846
- "summary": "label types incompatible",
1847
- "why": "User cannot get reliable help on the topics of form items",
2033
+ "tableEmbedded": {
2034
+ "summary": "table embedded in table",
2035
+ "why": "User cannot get help on relationships in a table",
1848
2036
  "wcag": "1.3.1",
1849
2037
  "weight": 2
1850
2038
  },
1851
- "labelNot1": {
1852
- "summary": "element referenced by multiple labels",
1853
- "why": "User cannot get reliable help on the topics of form items",
2039
+ "tableHead": {
2040
+ "summary": "thead missing",
2041
+ "why": "User cannot get help on parts of a table",
1854
2042
  "wcag": "1.3.1",
1855
2043
  "weight": 1
1856
2044
  },
1857
- "labelEmpty": {
1858
- "summary": "label empty",
1859
- "why": "User cannot get help on the topics of form items",
2045
+ "tableHeaderCellless": {
2046
+ "summary": "table-header cell missing",
2047
+ "why": "User cannot get help on relationships in a table",
1860
2048
  "wcag": "1.3.1",
1861
- "weight": 3
2049
+ "weight": 4
1862
2050
  },
1863
- "labelRisk": {
1864
- "summary": "labeling risky",
1865
- "why": "User may misunderstand a form control",
1866
- "wcag": "3.3.2",
1867
- "weight": 1
2051
+ "tableHeaderEmpty": {
2052
+ "summary": "table header empty",
2053
+ "why": "User cannot get help on relationships in a table",
2054
+ "wcag": "1.3.1",
2055
+ "weight": 2
1868
2056
  },
1869
- "linkVaguenessRisk": {
1870
- "summary": "link name vague",
1871
- "why": "User may misunderstand what a link points to",
1872
- "wcag": "2.4.4",
1873
- "weight": 1
2057
+ "tableHeaderless": {
2058
+ "summary": "table headers missing",
2059
+ "why": "User cannot get help on relationships in a table",
2060
+ "wcag": "1.3.1",
2061
+ "weight": 3
1874
2062
  },
1875
- "linkFileName": {
1876
- "summary": "link names a file instead of a purpose",
1877
- "why": "User may fail to understand what a link points to",
1878
- "wcag": "2.4.4",
2063
+ "TableHeaderScopeRisk": {
2064
+ "summary": "Table scope ambiguous?",
2065
+ "why": "User may be unable to get help on relationships in a table",
2066
+ "wcag": "1.3.1",
1879
2067
  "weight": 1
1880
2068
  },
1881
- "nonWebLink": {
1882
- "summary": "link to non-web resource",
1883
- "why": "Document points to harder-to-use resources",
1884
- "wcag": "1.3.3",
2069
+ "tableHeading": {
2070
+ "summary": "heading located in table",
2071
+ "why": "Complex relationships in a table may confuse a user",
2072
+ "wcag": "1.3.1",
1885
2073
  "weight": 1
1886
2074
  },
1887
- "linkIndication": {
1888
- "summary": "link indication poor",
1889
- "why": "User cannot differentiate a link from plain text",
1890
- "wcag": "1.3.3",
1891
- "weight": 2
1892
- },
1893
- "menuNavigation": {
1894
- "summary": "menu navigation nonstandard",
1895
- "why": "Menus behave improperly for a keyboard-only user",
1896
- "wcag": "2.1.1",
1897
- "weight": 2
2075
+ "tableLabelID": {
2076
+ "summary": "table aria-labelledby invalid",
2077
+ "why": "User cannot get help on the topic of a table",
2078
+ "wcag": "1.3.1",
2079
+ "weight": 4
1898
2080
  },
1899
- "menuItemless": {
1900
- "summary": "menu items missing",
1901
- "why": "User cannot reach promised menu items",
2081
+ "tableSum": {
2082
+ "summary": "table summary empty",
2083
+ "why": "User cannot get help summarizing a table",
1902
2084
  "wcag": "1.3.1",
1903
2085
  "weight": 4
1904
2086
  },
@@ -1908,131 +2090,118 @@ const issuesData = {
1908
2090
  "wcag": "2.1.1",
1909
2091
  "weight": 2
1910
2092
  },
1911
- "spontaneousMotion": {
1912
- "summary": "page content moves spontaneously",
1913
- "why": "Motion-sensitive user may suffer harm",
1914
- "wcag": "2.2.2",
1915
- "weight": 2,
1916
- "max": 1
1917
- },
1918
- "animationLong": {
1919
- "summary": "animation long or repetitive",
1920
- "why": "Motion-sensitive user may suffer harm",
1921
- "wcag": "2.2.2",
2093
+ "tabularTableless": {
2094
+ "summary": "table not marked as such",
2095
+ "why": "Helper misinforms a user about whether items are cells of a table",
2096
+ "wcag": "1.3.1",
1922
2097
  "weight": 3
1923
2098
  },
1924
- "blink": {
1925
- "summary": "blink element",
1926
- "why": "Motion-sensitive user may suffer harm",
1927
- "wcag": "2.2.2",
2099
+ "targetEmpty": {
2100
+ "summary": "target empty",
2101
+ "why": "Item is displayed improperly",
2102
+ "wcag": "1.3.1",
1928
2103
  "weight": 4
1929
2104
  },
1930
- "autoplay": {
1931
- "summary": "autoplay",
1932
- "why": "Motion- or noise-sensitive user may suffer harm",
1933
- "wcag": "1.4.2",
1934
- "weight": 2
1935
- },
1936
- "autoplayLong": {
1937
- "summary": "autoplay long",
1938
- "why": "Motion- or noise-sensitive user may suffer harm",
1939
- "wcag": "1.4.2",
1940
- "weight": 2
2105
+ "targetSmall": {
2106
+ "summary": "target small",
2107
+ "why": "User cannot reliably choose an item to click or tap",
2108
+ "wcag": "2.5.5",
2109
+ "weight": 1
1941
2110
  },
1942
- "autoplayControl": {
1943
- "summary": "autoplay control",
1944
- "why": "Motion- or noise-sensitive user may suffer harm",
1945
- "wcag": "1.4.2",
1946
- "weight": 2
2111
+ "targetsNear": {
2112
+ "summary": "small targets too near to each other",
2113
+ "why": "User cannot reliably choose an item to click or tap",
2114
+ "wcag": "2.5.8",
2115
+ "weight": 3
1947
2116
  },
1948
- "refresh": {
1949
- "summary": "element reloads or redirects",
1950
- "why": "Document change may surprise a user",
1951
- "wcag": "2.2.1",
2117
+ "targetTiny": {
2118
+ "summary": "target very small",
2119
+ "why": "User cannot reliably choose an item to click or tap",
2120
+ "wcag": "2.5.8",
1952
2121
  "weight": 3
1953
2122
  },
1954
- "parentBad": {
1955
- "summary": "parent invalid",
1956
- "why": "User cannot properly operate an item",
2123
+ "textAreaNoText": {
2124
+ "summary": "text area not named",
2125
+ "why": "User cannot get help on what information to enter in a form item",
1957
2126
  "wcag": "1.3.1",
1958
2127
  "weight": 4
1959
2128
  },
1960
- "inconsistentStyles": {
1961
- "summary": "inconsistent heading, link, or button styles",
1962
- "why": "User cannot easily distinguish items of different types",
1963
- "wcag": "3.2.4",
1964
- "weight": 1
2129
+ "textContentBad": {
2130
+ "summary": "element text content invalid",
2131
+ "why": "User may be unable to read all the page text",
2132
+ "wcag": "4.1",
2133
+ "weight": 3
1965
2134
  },
1966
- "zIndexNotZero": {
1967
- "summary": "z-index not zero",
1968
- "why": "User cannot predict the effect of clicking",
1969
- "wcag": "1.4",
2135
+ "textDistortion": {
2136
+ "summary": "text distortion",
2137
+ "why": "Text is difficult to read",
2138
+ "wcag": "3.1.5",
1970
2139
  "weight": 1
1971
2140
  },
1972
- "tabIndexPositive": {
1973
- "summary": "tabindex positive",
1974
- "why": "Keyboard-only user cannot predict the navigation sequence",
1975
- "wcag": "2.4.3",
1976
- "weight": 1
2141
+ "titleAsLabel": {
2142
+ "summary": "control has title instead of label",
2143
+ "why": "User cannot get help on how to operate a form item",
2144
+ "wcag": "2.4.6",
2145
+ "weight": 3
1977
2146
  },
1978
- "tabIndexEmpty": {
1979
- "summary": "tabindex empty",
1980
- "why": "Keyboard-only user cannot follow the intended navigation sequence",
2147
+ "titleBad": {
2148
+ "summary": "title attribute invalid",
2149
+ "why": "User gets too little, too much, or repeated help explaining an item",
1981
2150
  "wcag": "1.3.1",
1982
- "weight": 4
2151
+ "weight": 1
1983
2152
  },
1984
- "tabIndexInt": {
1985
- "summary": "tabindex not integer",
1986
- "why": "Keyboard-only user cannot follow the intended navigation sequence",
2153
+ "titleEmpty": {
2154
+ "summary": "title attribute empty",
2155
+ "why": "Hovering does not get the promised explanation of an item",
1987
2156
  "wcag": "1.3.1",
1988
- "weight": 4
2157
+ "weight": 1
1989
2158
  },
1990
- "tabIndexExtra": {
1991
- "summary": "tabindex redundant",
1992
- "why": "Revision risks interfering with navigation by a keyboard-only user",
2159
+ "titleLong": {
2160
+ "summary": "title long",
2161
+ "why": "Hovering makes an overly verbose explanation pop up",
2162
+ "wcag": "3.1.5",
2163
+ "weight": 2
2164
+ },
2165
+ "titleNotText": {
2166
+ "summary": "title contains ASCII art",
2167
+ "why": "Hovering makes a hard-to-understand explanation pop up",
2168
+ "wcag": "3.1.5",
2169
+ "weight": 2
2170
+ },
2171
+ "titleRedundant": {
2172
+ "summary": "title attribute redundant",
2173
+ "why": "Helper repeats the explanation of an item",
1993
2174
  "wcag": "1.3.1",
1994
2175
  "weight": 1
1995
2176
  },
1996
- "presentationGlobal": {
1997
- "summary": "global ARIA attribute nullifies presentation role",
1998
- "why": "User encounters content intended to be hidden",
2177
+ "typeBad": {
2178
+ "summary": "type invalid",
2179
+ "why": "Document styles are at risk of corruption",
1999
2180
  "wcag": "1.3.1",
2000
- "weight": 1
2181
+ "weight": 4
2001
2182
  },
2002
- "presentationTabIndexed": {
2003
- "summary": "tabindex attribute nullifies presentation role",
2004
- "why": "User encounters content intended to be hidden",
2183
+ "typeRedundant": {
2184
+ "summary": "type redundant",
2185
+ "why": "Document includes unnecessary code",
2005
2186
  "wcag": "1.3.1",
2006
2187
  "weight": 1
2007
2188
  },
2008
- "avNoText": {
2009
- "summary": "audio or video caption track missing",
2010
- "why": "User cannot get help reading speech as text",
2011
- "wcag": "1.2.1",
2189
+ "unfocusability": {
2190
+ "summary": "element not focusable",
2191
+ "why": "Keyboard-only user cannot choose an item to operate",
2192
+ "wcag": "2.1.1",
2012
2193
  "weight": 4
2013
2194
  },
2014
- "audioNoText": {
2015
- "summary": "audio track missing",
2016
- "why": "User cannot get help reading speech as text",
2017
- "wcag": "1.2.1",
2195
+ "verticalSpacingFrozen": {
2196
+ "summary": "vertical text spacing frozen",
2197
+ "why": "User cannot adjust the vertical text spacing for readability",
2198
+ "wcag": "1.4.12",
2018
2199
  "weight": 4
2019
2200
  },
2020
- "audioTextRisk": {
2021
- "summary": "audio not named?",
2022
- "why": "User may be unable to get help reading speech as text",
2201
+ "videoAlternative": {
2202
+ "summary": "video alternative missing",
2203
+ "why": "User cannot get help consuming a video recording as text or speech",
2023
2204
  "wcag": "1.2.1",
2024
- "weight": 1
2025
- },
2026
- "videoNoText": {
2027
- "summary": "video not named",
2028
- "why": "User cannot get help reading video content as text",
2029
- "wcag": "1.2.2",
2030
- "weight": 4
2031
- },
2032
- "videoNoTranscript": {
2033
- "summary": "video transcript missing",
2034
- "why": "User cannot get help reading video content as text",
2035
- "wcag": "1.2.2",
2036
2205
  "weight": 4
2037
2206
  },
2038
2207
  "videoCaptionRisk": {
@@ -2053,203 +2222,35 @@ const issuesData = {
2053
2222
  "wcag": "1.2.1",
2054
2223
  "weight": 4
2055
2224
  },
2056
- "videoAlternative": {
2057
- "summary": "video alternative missing",
2058
- "why": "User cannot get help consuming a video recording as text or speech",
2059
- "wcag": "1.2.1",
2060
- "weight": 4
2061
- },
2062
- "keyboardScroll": {
2063
- "summary": "element not scrollable",
2064
- "why": "Keyboard-only user cannot scroll an item",
2065
- "wcag": "2.1.1",
2225
+ "videoNoText": {
2226
+ "summary": "video not named",
2227
+ "why": "User cannot get help reading video content as text",
2228
+ "wcag": "1.2.2",
2066
2229
  "weight": 4
2067
2230
  },
2068
- "positionSticky": {
2069
- "summary": "position sticky",
2070
- "why": "User may be unable to see needed content or may be forced to scroll in both dimensions",
2071
- "wcag": "1.4.10",
2072
- "weight": 1
2073
- },
2074
- "scrollFocus": {
2075
- "summary": "scrollable element and children nonfocusable",
2076
- "why": "User may be unable to see all of an item without scrolling in both dimensions",
2077
- "wcag": "2.1.1",
2078
- "weight": 3
2079
- },
2080
- "scrollRisk": {
2081
- "summary": "container size unit not percentage",
2082
- "why": "User may be unable to see all of an item without scrolling in both dimensions",
2083
- "wcag": "1.4.10",
2084
- "weight": 1
2085
- },
2086
- "skipRepeatedContent": {
2087
- "summary": "skip method missing or invalid",
2088
- "why": "Keyboard-only user cannot easily reach the specific content of the page",
2089
- "wcag": "2.4.1",
2090
- "weight": 3,
2091
- "max": 2
2092
- },
2093
- "repeatedContentRisk": {
2094
- "summary": "skip method missing or invalid?",
2095
- "why": "Keyboard-only user may be unable easily to reach the specific content of the page",
2096
- "wcag": "2.4.1",
2097
- "weight": 1,
2098
- "max": 2
2099
- },
2100
- "submitButton": {
2101
- "summary": "form submission button missing",
2102
- "why": "User cannot easily submit a form",
2103
- "wcag": "3.2.2",
2104
- "weight": 3
2105
- },
2106
- "fragmentaryNoticeRisk": {
2107
- "summary": "assertive region not atomic",
2108
- "why": "User may be unable to get help on what content has changed",
2109
- "wcag": "4.1.3",
2110
- "weight": 2
2111
- },
2112
- "errorReferenceBad": {
2113
- "summary": "error reference invalid",
2114
- "why": "User cannot correct a form error",
2115
- "wcag": "3.3.1",
2231
+ "videoNoTranscript": {
2232
+ "summary": "video transcript missing",
2233
+ "why": "User cannot get help reading video content as text",
2234
+ "wcag": "1.2.2",
2116
2235
  "weight": 4
2117
2236
  },
2118
- "noScriptRisk": {
2119
- "summary": "noscript element not equivalent?",
2120
- "why": "User who has disabled JavaScript may be denied some content",
2121
- "wcag": "4.1",
2122
- "weight": 1
2123
- },
2124
- "flash": {
2125
- "summary": "flash content",
2126
- "why": "Document includes code that may not work and may jeopardize user security",
2127
- "wcag": "4.1",
2237
+ "visibleBulk": {
2238
+ "summary": "large visible-element count",
2239
+ "why": "User cannot easily find items in the page",
2240
+ "wcag": "2.4",
2128
2241
  "weight": 1,
2129
2242
  "max": 1
2130
2243
  },
2131
- "browserSupportRisk": {
2132
- "summary": "inputmode attribute",
2133
- "why": "Document may include code that the browser cannot process",
2134
- "wcag": "4.1",
2135
- "weight": 1
2136
- },
2137
- "attributeObsolete": {
2138
- "summary": "attribute obsolete",
2139
- "why": "Document includes obsolete code that the browser may fail to process",
2140
- "wcag": "4.1",
2141
- "weight": 3
2142
- },
2143
- "nonElement": {
2144
- "summary": "element unknown",
2145
- "why": "Document includes an unknown element that the browser cannot process",
2146
- "wcag": "4.1",
2147
- "weight": 4
2148
- },
2149
- "elementObsolete": {
2150
- "summary": "element obsolete",
2151
- "why": "Document includes obsolete code that the browser may fail to process",
2152
- "wcag": "4.1",
2153
- "weight": 3
2154
- },
2155
- "obsolete": {
2156
- "summary": "code obsolete",
2157
- "why": "Document contains code that is no longer standard",
2158
- "wcag": "4.1",
2159
- "weight": 3
2160
- },
2161
- "atRuleInvalid": {
2162
- "summary": "invalid at-rule",
2163
- "why": "Document cannot be properly displayed in particular contexts",
2164
- "wcag": "4.1",
2165
- "weight": 3
2166
- },
2167
- "cssInvalid": {
2168
- "summary": "CSS invalid",
2169
- "why": "Document cannot be properly displayed",
2170
- "wcag": "4.1",
2171
- "weight": 3
2172
- },
2173
- "elementClosure": {
2174
- "summary": "element closure invalid",
2175
- "why": "Document contains invalid code",
2176
- "wcag": "4.1.1",
2177
- "weight": 3
2178
- },
2179
- "nestingBad": {
2180
- "summary": "nesting invalid",
2181
- "why": "Document contains invalid code",
2182
- "wcag": "4.1.1",
2183
- "weight": 3
2184
- },
2185
- "characterBad": {
2186
- "summary": "invalid character",
2187
- "why": "Invalid character makes the page behave incorrectly",
2188
- "wcag": "4.1",
2189
- "weight": 3
2190
- },
2191
- "entityBad": {
2192
- "summary": "named character reference invalid",
2193
- "why": "User may be unable to read all the page text",
2194
- "wcag": "4.1",
2195
- "weight": 4
2196
- },
2197
- "textContentBad": {
2198
- "summary": "element text content invalid",
2199
- "why": "User may be unable to read all the page text",
2200
- "wcag": "4.1",
2201
- "weight": 3
2202
- },
2203
- "parseError": {
2204
- "summary": "code invalid",
2205
- "why": "Invalid code in the page may prevent a helper from working",
2206
- "wcag": "4.1",
2244
+ "visibleLabelNotInName": {
2245
+ "summary": "visible label not in name",
2246
+ "why": "User cannot get help choosing a form control to operate",
2247
+ "wcag": "2.5.3",
2207
2248
  "weight": 3
2208
2249
  },
2209
- "encodingMisdeclared": {
2210
- "summary": "text encoding wrongly declared",
2211
- "why": "User cannot read all of the text",
2212
- "wcag": "3.1.3",
2213
- "weight": 4,
2214
- "max": 1
2215
- },
2216
- "encodingBad": {
2217
- "summary": "text not Unicode-compliant",
2218
- "why": "User cannot read all of the text",
2219
- "wcag": "3.1.3",
2220
- "weight": 4
2221
- },
2222
- "encodingPrivate": {
2223
- "summary": "text in Private Use Area",
2224
- "why": "User cannot read all of the text",
2225
- "wcag": "3.1.3",
2226
- "weight": 4,
2227
- "max": 1
2228
- },
2229
- "captcha2": {
2230
- "summary": "captcha2",
2231
- "why": "User is prevented from consuming the page",
2232
- "wcag": "1.1.1",
2233
- "weight": 1,
2234
- "max": 1
2235
- },
2236
- "fatalError": {
2237
- "summary": "fatal error",
2238
- "why": "Document prevents testing for accessibility",
2239
- "wcag": "4.1",
2240
- "weight": 4,
2241
- "max": 1
2242
- },
2243
- "notValidatable": {
2244
- "summary": "item makes testing inconclusive",
2245
- "why": "Item prevents a conclusive accessibility test",
2246
- "wcag": "4.1",
2247
- "weight": 1
2248
- },
2249
- "svgNotValidatable": {
2250
- "summary": "SVG version not 1.1",
2251
- "why": "Item prevents testing image for accessibility",
2252
- "wcag": "4.1",
2250
+ "zIndexNotZero": {
2251
+ "summary": "z-index not zero",
2252
+ "why": "User cannot predict the effect of clicking",
2253
+ "wcag": "1.4",
2253
2254
  "weight": 1
2254
2255
  }
2255
2256
  };
@@ -2259,18 +2260,21 @@ const rulesData = {
2259
2260
  "cantTellTextContrast": {
2260
2261
  "issueID": "ignorable",
2261
2262
  "quality": 1,
2262
- "what": "Test of text contrast could not give a conclusive result [invalid]",
2263
+ "what": "Test of text contrast could not give a conclusive result",
2264
+ "whyIgnore": "invalid",
2263
2265
  "supersededBy": null
2264
2266
  },
2265
2267
  "r73": {
2266
2268
  "issueID": "ignorable",
2267
2269
  "quality": 1,
2268
- "what": "Text line height is not at least 1.5 [invalid]"
2270
+ "what": "Text line height is not at least 1.5",
2271
+ "whyIgnore": "invalid"
2269
2272
  },
2270
2273
  "r87": {
2271
2274
  "issueID": "ignorable",
2272
2275
  "quality": .5,
2273
- "what": "First focusable element is not a link to the main content [invalid]"
2276
+ "what": "First focusable element is not a link to the main content",
2277
+ "whyIgnore": "invalid"
2274
2278
  },
2275
2279
  "r3": {
2276
2280
  "issueID": "duplicateID",
@@ -2586,87 +2590,104 @@ const rulesData = {
2586
2590
  "capital_letters_words": {
2587
2591
  "issueID": "ignorable",
2588
2592
  "quality": 1,
2589
- "what": "Element or its title has entirely upper-case words [invalid]"
2593
+ "what": "Element or its title has entirely upper-case words",
2594
+ "whyIgnore": "invalid"
2590
2595
  },
2591
2596
  "color_contrast_aa": {
2592
2597
  "issueID": "ignorable",
2593
2598
  "quality": 0,
2594
- "what": "Text has contrast less than 4.5:1 [speculative]"
2599
+ "what": "Text has contrast less than 4.5:1",
2600
+ "whyIgnore": "speculative"
2595
2601
  },
2596
2602
  "color_contrast_aaa": {
2597
2603
  "issueID": "ignorable",
2598
2604
  "quality": 1,
2599
- "what": "Text contrast may be less than enhanced but the element is invisible [invalid]"
2605
+ "what": "Text contrast may be less than enhanced but the element is invisible",
2606
+ "whyIgnore": "invalid"
2600
2607
  },
2601
2608
  "css_images_convey_information": {
2602
2609
  "issueID": "ignorable",
2603
2610
  "quality": 1,
2604
- "what": "Background image may be informative [speculative]"
2611
+ "what": "Background image may be informative",
2612
+ "whyIgnore": "speculative"
2605
2613
  },
2606
2614
  "empty_link_element": {
2607
2615
  "issueID": "ignorable",
2608
2616
  "quality": 1,
2609
- "what": "Element has no visible and accessible name [invalid]"
2617
+ "what": "Element has no visible and accessible name",
2618
+ "whyIgnore": "invalid"
2610
2619
  },
2611
2620
  "fieldset_no_legend": {
2612
2621
  "issueID": "ignorable",
2613
2622
  "quality": 1,
2614
- "what": "First child element of the element is not a legend [duplicative]"
2623
+ "what": "First child element of the element is not a legend",
2624
+ "whyIgnore": "duplicative"
2615
2625
  },
2616
2626
  "flickering": {
2617
2627
  "issueID": "ignorable",
2618
2628
  "quality": 0,
2619
- "what": "Excessive flashing may exist [speculative]"
2629
+ "what": "Excessive flashing may exist",
2630
+ "whyIgnore": "speculative"
2620
2631
  },
2621
2632
  "links_language_destination": {
2622
2633
  "issueID": "ignorable",
2623
2634
  "quality": 1,
2624
- "what": "Link destination has a named host and may be in an unexpected language [speculative]"
2635
+ "what": "Link destination has a named host and may be in an unexpected language",
2636
+ "whyIgnore": "speculative"
2625
2637
  },
2626
2638
  "links_not_visually_evident_without_color_vision": {
2627
2639
  "issueID": "ignorable",
2628
2640
  "quality": 1,
2629
- "what": "Element is a link, but its style properties do not differentiate it from its parent [irrelevant]"
2641
+ "what": "Element is a link, but its style properties do not differentiate it from its parent",
2642
+ "whyIgnore": "irrelevant"
2630
2643
  },
2631
2644
  "links_same_content_different_url": {
2632
2645
  "issueID": "ignorable",
2633
2646
  "quality": 1,
2634
- "what": "Links with the same text content have different destination URLs [invalid]"
2647
+ "what": "Links with the same text content have different destination URLs",
2648
+ "whyIgnore": "invalid"
2635
2649
  },
2636
2650
  "meaningful_content_sequence": {
2637
2651
  "issueID": "ignorable",
2638
2652
  "quality": 0,
2639
- "what": "The content sequence may fail to be meaningful [speculative]"
2653
+ "what": "The content sequence may fail to be meaningful",
2654
+ "whyIgnore": "speculative"
2640
2655
  },
2641
2656
  "missing_alt_attribute": {
2642
2657
  "issueID": "ignorable",
2643
2658
  "quality": 1,
2644
- "what": "Image has no alt attribute [invalid]"
2659
+ "what": "Image has no alt attribute",
2660
+ "whyIgnore": "invalid"
2645
2661
  },
2646
2662
  "motion_actuation": {
2647
2663
  "issueID": "ignorable",
2648
2664
  "quality": 0,
2649
- "what": "Document listens for device motion or rotation [speculative]"
2665
+ "what": "Document listens for device motion or rotation",
2666
+ "whyIgnore": "speculative"
2650
2667
  },
2651
2668
  "overlay": {
2652
2669
  "issueID": "ignorable",
2653
2670
  "quality": 0,
2654
- "what": "Document contains a commercial overlay modifier that may fail or invalidate test results [unreliable]"
2671
+ "what": "Document contains a commercial overlay modifier that may fail or invalidate test results",
2672
+ "whyIgnore": "unreliable"
2655
2673
  },
2656
2674
  "object_missing_body": {
2657
2675
  "issueID": "ignorable",
2658
2676
  "quality": 0,
2659
- "what": "object element has no body to act as a text alternative [invalid]"
2677
+ "what": "object element has no body to act as a text alternative",
2678
+ "whyIgnore": "invalid"
2660
2679
  },
2661
2680
  "reflow": {
2662
2681
  "issueID": "ignorable",
2663
2682
  "quality": 0,
2664
- "what": "Page may require horizontal scrolling [speculative]"
2683
+ "what": "Page may require horizontal scrolling",
2684
+ "whyIgnore": "speculative"
2665
2685
  },
2666
2686
  "text_color_convey_information": {
2667
2687
  "issueID": "ignorable",
2668
2688
  "quality": 1,
2669
- "what": "Color may give information not given also by text [speculative]"
2689
+ "what": "Color may give information not given also by text",
2690
+ "whyIgnore": "speculative"
2670
2691
  },
2671
2692
  "duplicated_id_attribute": {
2672
2693
  "issueID": "duplicateID",
@@ -3286,17 +3307,20 @@ const rulesData = {
3286
3307
  "css-orientation-lock": {
3287
3308
  "issueID": "ignorable",
3288
3309
  "quality": 0,
3289
- "what": "CSS media query locks display orientation [unreliable]"
3310
+ "what": "CSS media query locks display orientation",
3311
+ "whyIgnore": "unreliable"
3290
3312
  },
3291
3313
  "frame-tested": {
3292
3314
  "issueID": "ignorable",
3293
3315
  "quality": 0,
3294
- "what": "Some content is in an iframe and so may not be testable for accessibility [speculative]"
3316
+ "what": "Some content is in an iframe and so may not be testable for accessibility",
3317
+ "whyIgnore": "speculative"
3295
3318
  },
3296
3319
  "hidden-content": {
3297
3320
  "issueID": "ignorable",
3298
3321
  "quality": 0,
3299
- "what": "Some content is hidden and so may not be testable for accessibility [speculative]"
3322
+ "what": "Some content is hidden and so may not be testable for accessibility",
3323
+ "whyIgnore": "speculative"
3300
3324
  },
3301
3325
  "duplicate-id": {
3302
3326
  "issueID": "duplicateID",
@@ -3716,37 +3740,44 @@ const rulesData = {
3716
3740
  "altNull": {
3717
3741
  "issueID": "ignorable",
3718
3742
  "quality": 0,
3719
- "what": "img element not inside a link has an empty alt attribute [speculative]"
3743
+ "what": "img element not inside a link has an empty alt attribute",
3744
+ "whyIgnore": "speculative"
3720
3745
  },
3721
3746
  "altPartOfLinkWithText": {
3722
3747
  "issueID": "ignorable",
3723
3748
  "quality": 0,
3724
- "what": "Name of the link enclosing the img element includes its alt attribute, so may be unclear [speculative]"
3749
+ "what": "Name of the link enclosing the img element includes its alt attribute, so may be unclear",
3750
+ "whyIgnore": "speculative"
3725
3751
  },
3726
3752
  "embedAudio": {
3727
3753
  "issueID": "ignorable",
3728
3754
  "quality": 0,
3729
- "what": "Element is audio, so may lack an accurate transcript [speculative]"
3755
+ "what": "Element is audio, so may lack an accurate transcript",
3756
+ "whyIgnore": "speculative"
3730
3757
  },
3731
3758
  "embedCustom": {
3732
3759
  "issueID": "ignorable",
3733
3760
  "quality": 0,
3734
- "what": "Embedded custom element may fail to be accessible [speculative]"
3761
+ "what": "Embedded custom element may fail to be accessible",
3762
+ "whyIgnore": "speculative"
3735
3763
  },
3736
3764
  "embedTwitter": {
3737
3765
  "issueID": "ignorable",
3738
3766
  "quality": 0,
3739
- "what": "Element is a Twitter feed, so may add many items on scroll and thus be impractical to exit by keyboard [speculative]"
3767
+ "what": "Element is a Twitter feed, so may add many items on scroll and thus be impractical to exit by keyboard",
3768
+ "whyIgnore": "speculative"
3740
3769
  },
3741
3770
  "embedVideo": {
3742
3771
  "issueID": "ignorable",
3743
3772
  "quality": 0,
3744
- "what": "Element is video, so may lack captions [speculative]"
3773
+ "what": "Element is video, so may lack captions",
3774
+ "whyIgnore": "speculative"
3745
3775
  },
3746
3776
  "embedVisualization": {
3747
3777
  "issueID": "ignorable",
3748
3778
  "quality": 0,
3749
- "what": "Element is a visualization, so may lack a nonvisual equivalent [speculative]"
3779
+ "what": "Element is a visualization, so may lack a nonvisual equivalent",
3780
+ "whyIgnore": "speculative"
3750
3781
  },
3751
3782
  "altMissing": {
3752
3783
  "issueID": "imageNoText",
@@ -3891,7 +3922,8 @@ const rulesData = {
3891
3922
  "W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H48": {
3892
3923
  "issueID": "ignorable",
3893
3924
  "quality": 1,
3894
- "what": "If element contains a navigation section, it is recommended that it be marked up as a list [speculative]"
3925
+ "what": "If element contains a navigation section, it is recommended that it be marked up as a list",
3926
+ "whyIgnore": "speculative"
3895
3927
  },
3896
3928
  "E-AAA.4_1_1.F77": {
3897
3929
  "issueID": "duplicateID",
@@ -4796,22 +4828,26 @@ const rulesData = {
4796
4828
  "aria_child_valid": {
4797
4829
  "issueID": "ignorable",
4798
4830
  "quality": 1,
4799
- "what": "Child element has a role not allowed for the role of the parent [invalid]"
4831
+ "what": "Child element has a role not allowed for the role of the parent",
4832
+ "whyIgnore": "invalid"
4800
4833
  },
4801
4834
  "aria_landmark_name_unique": {
4802
4835
  "issueID": "ignorable",
4803
4836
  "quality": 1,
4804
- "what": "Multiple landmarks with the same parent region are not distinguished from one another [invalid on invisible elements]"
4837
+ "what": "Multiple landmarks with the same parent region are not distinguished from one another (invalid on invisible elements)",
4838
+ "whyIgnore": "invalid"
4805
4839
  },
4806
4840
  "html_lang_exists": {
4807
4841
  "issueID": "ignorable",
4808
4842
  "quality": 1,
4809
- "what": "Page detected as HTML, but has no lang attribute [invalid]"
4843
+ "what": "Page detected as HTML, but has no lang attribute",
4844
+ "whyIgnore": "invalid"
4810
4845
  },
4811
4846
  "style_background_decorative": {
4812
4847
  "issueID": "ignorable",
4813
4848
  "quality": 1,
4814
- "what": "CSS background image may be informative [speculative]"
4849
+ "what": "CSS background image may be informative",
4850
+ "whyIgnore": "speculative"
4815
4851
  },
4816
4852
  "element_id_unique": {
4817
4853
  "issueID": "duplicateID",
@@ -5417,22 +5453,26 @@ const rulesData = {
5417
5453
  "Element head is missing a required instance of child element title.": {
5418
5454
  "issueID": "ignorable",
5419
5455
  "quality": 1,
5420
- "what": "head element has no child title element [invalid]"
5456
+ "what": "head element has no child title element",
5457
+ "whyIgnore": "invalid"
5421
5458
  },
5422
5459
  "Element img is missing required attribute src.": {
5423
5460
  "issueID": "ignorable",
5424
5461
  "quality": 1,
5425
- "what": "img element has no src attribute [invalid]"
5462
+ "what": "img element has no src attribute",
5463
+ "whyIgnore": "invalid"
5426
5464
  },
5427
5465
  "Element mediaelementwrapper not allowed as child of element div in this context. (Suppressing further errors from this subtree.)": {
5428
5466
  "issueID": "ignorable",
5429
5467
  "quality": 0,
5430
- "what": "Element contains a prohibited mediaelementwrapper element [invalid]"
5468
+ "what": "Element contains a prohibited mediaelementwrapper element",
5469
+ "whyIgnore": "invalid"
5431
5470
  },
5432
5471
  "Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.": {
5433
5472
  "issueID": "ignorable",
5434
5473
  "quality": 1,
5435
- "what": "Void element has a useless trailing slash. [invalid]"
5474
+ "what": "Void element has a useless trailing slash.",
5475
+ "whyIgnore": "invalid"
5436
5476
  },
5437
5477
  "The aria-placeholder attribute must not be specified on elements that have a placeholder attribute.": {
5438
5478
  "issueID": "placeholderPlusAria",
@@ -6963,22 +7003,26 @@ const rulesData = {
6963
7003
  "Element head is missing a required instance of child element title.": {
6964
7004
  "issueID": "ignorable",
6965
7005
  "quality": 1,
6966
- "what": "head element has no child title element [invalid]"
7006
+ "what": "head element has no child title element",
7007
+ "whyIgnore": "invalid"
6967
7008
  },
6968
7009
  "Element img is missing required attribute src.": {
6969
7010
  "issueID": "ignorable",
6970
7011
  "quality": 1,
6971
- "what": "img element has no src attribute [invalid]"
7012
+ "what": "img element has no src attribute",
7013
+ "whyIgnore": "invalid"
6972
7014
  },
6973
7015
  "Element mediaelementwrapper not allowed as child of element div in this context. (Suppressing further errors from this subtree.)": {
6974
7016
  "issueID": "ignorable",
6975
7017
  "quality": 0,
6976
- "what": "Element contains a prohibited mediaelementwrapper element [invalid]"
7018
+ "what": "Element contains a prohibited mediaelementwrapper element",
7019
+ "whyIgnore": "invalid"
6977
7020
  },
6978
7021
  "Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.": {
6979
7022
  "issueID": "ignorable",
6980
7023
  "quality": 1,
6981
- "what": "Void element has a useless trailing slash. [invalid]"
7024
+ "what": "Void element has a useless trailing slash.",
7025
+ "whyIgnore": "invalid"
6982
7026
  },
6983
7027
  "The aria-placeholder attribute must not be specified on elements that have a placeholder attribute.": {
6984
7028
  "issueID": "placeholderPlusAria",
@@ -8509,157 +8553,188 @@ const rulesData = {
8509
8553
  "QW-ACT-R10": {
8510
8554
  "issueID": "ignorable",
8511
8555
  "quality": 1,
8512
- "what": "iframe elements with identical accessible names have different purposes [invalid on invisible elements]"
8556
+ "what": "iframe elements with identical accessible names have different purposes (on invisible elements)",
8557
+ "whyIgnore": "invalid"
8513
8558
  },
8514
8559
  "QW-ACT-R13": {
8515
8560
  "issueID": "ignorable",
8516
8561
  "quality": 1,
8517
- "what": "Element with aria-hidden has focusable content [invalid]"
8562
+ "what": "Element with aria-hidden has focusable content",
8563
+ "whyIgnore": "invalid"
8518
8564
  },
8519
8565
  "QW-ACT-R41": {
8520
8566
  "issueID": "ignorable",
8521
8567
  "quality": 1,
8522
- "what": "Error message describes no invalid form field value [speculative]"
8568
+ "what": "Error message describes no invalid form field value",
8569
+ "whyIgnore": "speculative"
8523
8570
  },
8524
8571
  "QW-ACT-R52": {
8525
8572
  "issueID": "ignorable",
8526
8573
  "quality": 0,
8527
- "what": "video element visual-only content has no description track [description tracks and this ACT rule have been deprecated]"
8574
+ "what": "video element visual-only content has no description track (description tracks and this ACT rule have been deprecated)",
8575
+ "whyIgnore": "irrelevant"
8528
8576
  },
8529
8577
  "QW-ACT-R57": {
8530
8578
  "issueID": "ignorable",
8531
8579
  "quality": 0,
8532
- "what": "video element visual content has no description track [description tracks and this ACT rule have been deprecated]"
8580
+ "what": "video element visual content has no description track (description tracks and this ACT rule have been deprecated)",
8581
+ "whyIgnore": "irrelevant"
8533
8582
  },
8534
8583
  "QW-ACT-R62": {
8535
8584
  "issueID": "ignorable",
8536
8585
  "quality": 0,
8537
- "what": "Element in the sequential focus order may have no visible focus [speculative]"
8586
+ "what": "Element in the sequential focus order may have no visible focus",
8587
+ "whyIgnore": "speculative"
8538
8588
  },
8539
8589
  "QW-ACT-R63": {
8540
8590
  "issueID": "ignorable",
8541
8591
  "quality": 0,
8542
- "what": "Document has no landmark with non-repeated content [invalid]"
8592
+ "what": "Document has no landmark with non-repeated content",
8593
+ "whyIgnore": "invalid"
8543
8594
  },
8544
8595
  "QW-ACT-R64": {
8545
8596
  "issueID": "ignorable",
8546
8597
  "quality": 0,
8547
- "what": "Document has no heading for non-repeated content [invalid]"
8598
+ "what": "Document has no heading for non-repeated content",
8599
+ "whyIgnore": "invalid"
8548
8600
  },
8549
8601
  "QW-ACT-R73": {
8550
8602
  "issueID": "ignorable",
8551
8603
  "quality": 0,
8552
- "what": "Block of repeated content is not collapsible [invalid]"
8604
+ "what": "Block of repeated content is not collapsible",
8605
+ "whyIgnore": "invalid"
8553
8606
  },
8554
8607
  "QW-ACT-R74": {
8555
8608
  "issueID": "ignorable",
8556
8609
  "quality": 0,
8557
- "what": "Document has no instrument to move focus to non-repeated content [invalid]"
8610
+ "what": "Document has no instrument to move focus to non-repeated content",
8611
+ "whyIgnore": "invalid"
8558
8612
  },
8559
8613
  "QW-ACT-R75": {
8560
8614
  "issueID": "ignorable",
8561
8615
  "quality": 0,
8562
- "what": "Blocks of repeated content cannot be bypassed [invalid]"
8616
+ "what": "Blocks of repeated content cannot be bypassed",
8617
+ "whyIgnore": "invalid"
8563
8618
  },
8564
8619
  "QW-BP1": {
8565
8620
  "issueID": "ignorable",
8566
8621
  "quality": 0,
8567
- "what": "h1-h6 may fail to be used to identify headings [speculative]"
8622
+ "what": "h1-h6 may fail to be used to identify headings",
8623
+ "whyIgnore": "speculative"
8568
8624
  },
8569
8625
  "QW-BP2": {
8570
8626
  "issueID": "ignorable",
8571
8627
  "quality": 1,
8572
- "what": "Image text alternative is not concise [invalid]"
8628
+ "what": "Image text alternative is not concise",
8629
+ "whyIgnore": "invalid"
8573
8630
  },
8574
8631
  "QW-BP17": {
8575
8632
  "issueID": "ignorable",
8576
8633
  "quality": 1,
8577
- "what": "No link at the beginning of a block of repeated content goes to the end of the block [invalid]"
8634
+ "what": "No link at the beginning of a block of repeated content goes to the end of the block",
8635
+ "whyIgnore": "invalid"
8578
8636
  },
8579
8637
  "QW-BP20": {
8580
8638
  "issueID": "ignorable",
8581
8639
  "quality": 1,
8582
- "what": "Document has more than 1 banner landmark [invalid; counts hidden elements]"
8640
+ "what": "Document has more than 1 banner landmark (counts hidden elements)",
8641
+ "whyIgnore": "invalid"
8583
8642
  },
8584
8643
  "QW-BP22": {
8585
8644
  "issueID": "ignorable",
8586
8645
  "quality": 1,
8587
- "what": "Document has more than 1 element with a main role [invalid]"
8646
+ "what": "Document has more than 1 element with a main role",
8647
+ "whyIgnore": "invalid"
8588
8648
  },
8589
8649
  "QW-BP23": {
8590
8650
  "issueID": "ignorable",
8591
8651
  "quality": .1,
8592
- "what": "Element is not in a true list [invalid]"
8652
+ "what": "Element is not in a true list",
8653
+ "whyIgnore": "invalid"
8593
8654
  },
8594
8655
  "QW-BP24": {
8595
8656
  "issueID": "ignorable",
8596
8657
  "quality": 1,
8597
- "what": "ul or ol element has a child other than li, script, or template [invalid]"
8658
+ "what": "ul or ol element has a child other than li, script, or template",
8659
+ "whyIgnore": "invalid"
8598
8660
  },
8599
8661
  "QW-BP28": {
8600
8662
  "issueID": "ignorable",
8601
8663
  "quality": 1,
8602
- "what": "h1 element missing or used more than once [invalid]"
8664
+ "what": "h1 element missing or used more than once",
8665
+ "whyIgnore": "invalid"
8603
8666
  },
8604
8667
  "QW-BP29": {
8605
8668
  "issueID": "ignorable",
8606
8669
  "quality": 0,
8607
- "what": "lang and xml:lang attribute of html element differ [invalid]"
8670
+ "what": "lang and xml:lang attribute of html element differ",
8671
+ "whyIgnore": "invalid"
8608
8672
  },
8609
8673
  "QW-WCAG-T4": {
8610
8674
  "issueID": "ignorable",
8611
8675
  "quality": 0,
8612
- "what": "summary attribute is not used to give an overview of a data table [invalid]"
8676
+ "what": "summary attribute is not used to give an overview of a data table",
8677
+ "whyIgnore": "invalid"
8613
8678
  },
8614
8679
  "QW-WCAG-T8": {
8615
8680
  "issueID": "ignorable",
8616
8681
  "quality": 1,
8617
- "what": "Text alternative is suspect [invalid]"
8682
+ "what": "Text alternative is suspect",
8683
+ "whyIgnore": "invalid"
8618
8684
  },
8619
8685
  "QW-WCAG-T9": {
8620
8686
  "issueID": "ignorable",
8621
8687
  "quality": 0,
8622
- "what": "Page may fail to be organized using headings [speculative]"
8688
+ "what": "Page may fail to be organized using headings",
8689
+ "whyIgnore": "speculative"
8623
8690
  },
8624
8691
  "QW-WCAG-T15": {
8625
8692
  "issueID": "ignorable",
8626
8693
  "quality": 0,
8627
- "what": "link element may be used for navigation but not in the head [invalid]"
8694
+ "what": "link element may be used for navigation but not in the head",
8695
+ "whyIgnore": "invalid"
8628
8696
  },
8629
8697
  "QW-WCAG-T20": {
8630
8698
  "issueID": "ignorable",
8631
8699
  "quality": 0,
8632
- "what": "Link title may fail to describe the link correctly [speculative]"
8700
+ "what": "Link title may fail to describe the link correctly",
8701
+ "whyIgnore": "speculative"
8633
8702
  },
8634
8703
  "QW-WCAG-T23": {
8635
8704
  "issueID": "ignorable",
8636
8705
  "quality": 0,
8637
- "what": "No link at the top of the page goes directly to the main content area [invalid]"
8706
+ "what": "No link at the top of the page goes directly to the main content area",
8707
+ "whyIgnore": "invalid"
8638
8708
  },
8639
8709
  "QW-WCAG-T24": {
8640
8710
  "issueID": "ignorable",
8641
8711
  "quality": .5,
8642
- "what": "Script removes the focus when focus is received [invalid]"
8712
+ "what": "Script removes the focus when focus is received",
8713
+ "whyIgnore": "invalid"
8643
8714
  },
8644
8715
  "QW-WCAG-T28": {
8645
8716
  "issueID": "ignorable",
8646
8717
  "quality": .8,
8647
- "what": "Font size set to an absolute unit value [invalid]"
8718
+ "what": "Font size set to an absolute unit value",
8719
+ "whyIgnore": "invalid"
8648
8720
  },
8649
8721
  "QW-WCAG-T31": {
8650
8722
  "issueID": "ignorable",
8651
8723
  "quality": 1,
8652
- "what": "Foreground or background color is specified but not both [invalid on invisible elements"
8724
+ "what": "Foreground or background color is specified but not both (on invisible elements)",
8725
+ "whyIgnore": "invalid"
8653
8726
  },
8654
8727
  "QW-WCAG-T32": {
8655
8728
  "issueID": "ignorable",
8656
8729
  "quality": 1,
8657
- "what": "ol, ul or dl may fail to be used for a list or group of links [speculative]"
8730
+ "what": "ol, ul or dl may fail to be used for a list or group of links",
8731
+ "whyIgnore": "speculative"
8658
8732
  },
8659
8733
  "QW-WCAG-T35": {
8660
8734
  "issueID": "ignorable",
8661
8735
  "quality": 1,
8662
- "what": "Several elements have this id attribute value [invalid]"
8736
+ "what": "Several elements have this id attribute value",
8737
+ "whyIgnore": "invalid"
8663
8738
  },
8664
8739
  "QW-ACT-R18": {
8665
8740
  "issueID": "duplicateID",
@@ -9761,7 +9836,7 @@ const rules = deepFreeze(rulesData);
9761
9836
  const makeIssueRules = (ruleTable, issueTable = issues) => {
9762
9837
  const errors = [];
9763
9838
  const checkEntry = (engineID, variabilityName, ruleID, entry, engineRuleIDs) => {
9764
- const { issueID, quality, what, supersededBy, outcome, uncertainty, review, ignore } = entry;
9839
+ const { issueID, quality, what, supersededBy, outcome, uncertainty, toCheck, whyIgnore: entryWhyIgnore } = entry;
9765
9840
  if (!ruleID.length) errors.push(`${engineID}.${variabilityName} has a rule with an empty ruleID`);
9766
9841
  if (typeof issueID !== "string" || !issueID.length || !(issueID in issueTable)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid issueID (${JSON.stringify(issueID)})`);
9767
9842
  if (typeof quality !== "number") errors.push(`${engineID}.${variabilityName}.${ruleID} has a non-numeric quality (${JSON.stringify(quality)})`);
@@ -9773,8 +9848,8 @@ const makeIssueRules = (ruleTable, issueTable = issues) => {
9773
9848
  }
9774
9849
  if (outcome !== void 0 && !outcomes.includes(outcome)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid outcome (${JSON.stringify(outcome)})`);
9775
9850
  if (uncertainty !== void 0 && !uncertainties.includes(uncertainty)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid uncertainty (${JSON.stringify(uncertainty)})`);
9776
- if (review !== void 0 && (typeof review !== "string" || !review.length)) errors.push(`${engineID}.${variabilityName}.${ruleID} has a non-string or empty review (${JSON.stringify(review)})`);
9777
- if (ignore !== void 0 && !whyIgnore.includes(ignore)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid ignore (${JSON.stringify(ignore)})`);
9851
+ if (toCheck !== void 0 && (typeof toCheck !== "string" || !toCheck.length)) errors.push(`${engineID}.${variabilityName}.${ruleID} has a non-string or empty toCheck (${JSON.stringify(toCheck)})`);
9852
+ if (entryWhyIgnore !== void 0 && !whyIgnore.includes(entryWhyIgnore)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid whyIgnore (${JSON.stringify(entryWhyIgnore)})`);
9778
9853
  if (variabilityName === "variable") {
9779
9854
  if (!/[.*+?^${}()|[\]\\]/.test(ruleID)) errors.push(`${engineID}.${variabilityName}.${ruleID} has no regex metacharacters, so it should be an invariant rule`);
9780
9855
  else try {