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