source: frontend/node_modules/axe-core/locales/_template.json

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 57.8 KB
Line 
1{
2 "lang": "xyz",
3 "rules": {
4 "accesskeys": {
5 "description": "Ensure every accesskey attribute value is unique",
6 "help": "accesskey attribute value should be unique"
7 },
8 "area-alt": {
9 "description": "Ensure <area> elements of image maps have alternative text",
10 "help": "Active <area> elements must have alternative text"
11 },
12 "aria-allowed-attr": {
13 "description": "Ensure an element's role supports its ARIA attributes",
14 "help": "Elements must only use supported ARIA attributes"
15 },
16 "aria-allowed-role": {
17 "description": "Ensure role attribute has an appropriate value for the element",
18 "help": "ARIA role should be appropriate for the element"
19 },
20 "aria-braille-equivalent": {
21 "description": "Ensure aria-braillelabel and aria-brailleroledescription have a non-braille equivalent",
22 "help": "aria-braille attributes must have a non-braille equivalent"
23 },
24 "aria-command-name": {
25 "description": "Ensure every ARIA button, link and menuitem has an accessible name",
26 "help": "ARIA commands must have an accessible name"
27 },
28 "aria-conditional-attr": {
29 "description": "Ensure ARIA attributes are used as described in the specification of the element's role",
30 "help": "ARIA attributes must be used as specified for the element's role"
31 },
32 "aria-deprecated-role": {
33 "description": "Ensure elements do not use deprecated roles",
34 "help": "Deprecated ARIA roles must not be used"
35 },
36 "aria-dialog-name": {
37 "description": "Ensure every ARIA dialog and alertdialog node has an accessible name",
38 "help": "ARIA dialog and alertdialog nodes should have an accessible name"
39 },
40 "aria-hidden-body": {
41 "description": "Ensure aria-hidden=\"true\" is not present on the document body.",
42 "help": "aria-hidden=\"true\" must not be present on the document body"
43 },
44 "aria-hidden-focus": {
45 "description": "Ensure aria-hidden elements are not focusable nor contain focusable elements",
46 "help": "ARIA hidden element must not be focusable or contain focusable elements"
47 },
48 "aria-input-field-name": {
49 "description": "Ensure every ARIA input field has an accessible name",
50 "help": "ARIA input fields must have an accessible name"
51 },
52 "aria-meter-name": {
53 "description": "Ensure every ARIA meter node has an accessible name",
54 "help": "ARIA meter nodes must have an accessible name"
55 },
56 "aria-progressbar-name": {
57 "description": "Ensure every ARIA progressbar node has an accessible name",
58 "help": "ARIA progressbar nodes must have an accessible name"
59 },
60 "aria-prohibited-attr": {
61 "description": "Ensure ARIA attributes are not prohibited for an element's role",
62 "help": "Elements must only use permitted ARIA attributes"
63 },
64 "aria-required-attr": {
65 "description": "Ensure elements with ARIA roles have all required ARIA attributes",
66 "help": "Required ARIA attributes must be provided"
67 },
68 "aria-required-children": {
69 "description": "Ensure elements with an ARIA role that require child roles contain them",
70 "help": "Certain ARIA roles must contain particular children"
71 },
72 "aria-required-parent": {
73 "description": "Ensure elements with an ARIA role that require parent roles are contained by them",
74 "help": "Certain ARIA roles must be contained by particular parents"
75 },
76 "aria-roledescription": {
77 "description": "Ensure aria-roledescription is only used on elements with an implicit or explicit role",
78 "help": "aria-roledescription must be on elements with a semantic role"
79 },
80 "aria-roles": {
81 "description": "Ensure all elements with a role attribute use a valid value",
82 "help": "ARIA roles used must conform to valid values"
83 },
84 "aria-text": {
85 "description": "Ensure role=\"text\" is used on elements with no focusable descendants",
86 "help": "\"role=text\" should have no focusable descendants"
87 },
88 "aria-toggle-field-name": {
89 "description": "Ensure every ARIA toggle field has an accessible name",
90 "help": "ARIA toggle fields must have an accessible name"
91 },
92 "aria-tooltip-name": {
93 "description": "Ensure every ARIA tooltip node has an accessible name",
94 "help": "ARIA tooltip nodes must have an accessible name"
95 },
96 "aria-treeitem-name": {
97 "description": "Ensure every ARIA treeitem node has an accessible name",
98 "help": "ARIA treeitem nodes should have an accessible name"
99 },
100 "aria-valid-attr-value": {
101 "description": "Ensure all ARIA attributes have valid values",
102 "help": "ARIA attributes must conform to valid values"
103 },
104 "aria-valid-attr": {
105 "description": "Ensure attributes that begin with aria- are valid ARIA attributes",
106 "help": "ARIA attributes must conform to valid names"
107 },
108 "audio-caption": {
109 "description": "Ensure <audio> elements have captions",
110 "help": "<audio> elements must have a captions track"
111 },
112 "autocomplete-valid": {
113 "description": "Ensure the autocomplete attribute is correct and suitable for the form field",
114 "help": "autocomplete attribute must be used correctly"
115 },
116 "avoid-inline-spacing": {
117 "description": "Ensure that text spacing set through style attributes can be adjusted with custom stylesheets",
118 "help": "Inline text spacing must be adjustable with custom stylesheets"
119 },
120 "blink": {
121 "description": "Ensure <blink> elements are not used",
122 "help": "<blink> elements are deprecated and must not be used"
123 },
124 "button-name": {
125 "description": "Ensure buttons have discernible text",
126 "help": "Buttons must have discernible text"
127 },
128 "bypass": {
129 "description": "Ensure each page has at least one mechanism for a user to bypass navigation and jump straight to the content",
130 "help": "Page must have means to bypass repeated blocks"
131 },
132 "color-contrast-enhanced": {
133 "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AAA enhanced contrast ratio thresholds",
134 "help": "Elements must meet enhanced color contrast ratio thresholds"
135 },
136 "color-contrast": {
137 "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
138 "help": "Elements must meet minimum color contrast ratio thresholds"
139 },
140 "css-orientation-lock": {
141 "description": "Ensure content is not locked to any specific display orientation, and the content is operable in all display orientations",
142 "help": "CSS Media queries must not lock display orientation"
143 },
144 "definition-list": {
145 "description": "Ensure <dl> elements are structured correctly",
146 "help": "<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements"
147 },
148 "dlitem": {
149 "description": "Ensure <dt> and <dd> elements are contained by a <dl>",
150 "help": "<dt> and <dd> elements must be contained by a <dl>"
151 },
152 "document-title": {
153 "description": "Ensure each HTML document contains a non-empty <title> element",
154 "help": "Documents must have <title> element to aid in navigation"
155 },
156 "duplicate-id-active": {
157 "description": "Ensure every id attribute value of active elements is unique",
158 "help": "IDs of active elements must be unique"
159 },
160 "duplicate-id-aria": {
161 "description": "Ensure every id attribute value used in ARIA and in labels is unique",
162 "help": "IDs used in ARIA and labels must be unique"
163 },
164 "duplicate-id": {
165 "description": "Ensure every id attribute value is unique",
166 "help": "id attribute value must be unique"
167 },
168 "empty-heading": {
169 "description": "Ensure headings have discernible text",
170 "help": "Headings should not be empty"
171 },
172 "empty-table-header": {
173 "description": "Ensure table headers have discernible text",
174 "help": "Table header text should not be empty"
175 },
176 "focus-order-semantics": {
177 "description": "Ensure elements in the focus order have a role appropriate for interactive content",
178 "help": "Elements in the focus order should have an appropriate role"
179 },
180 "form-field-multiple-labels": {
181 "description": "Ensure form field does not have multiple label elements",
182 "help": "Form field must not have multiple label elements"
183 },
184 "frame-focusable-content": {
185 "description": "Ensure <frame> and <iframe> elements with focusable content do not have tabindex=-1",
186 "help": "Frames with focusable content must not have tabindex=-1"
187 },
188 "frame-tested": {
189 "description": "Ensure <iframe> and <frame> elements contain the axe-core script",
190 "help": "Frames should be tested with axe-core"
191 },
192 "frame-title-unique": {
193 "description": "Ensure <iframe> and <frame> elements contain a unique title attribute",
194 "help": "Frames must have a unique title attribute"
195 },
196 "frame-title": {
197 "description": "Ensure <iframe> and <frame> elements have an accessible name",
198 "help": "Frames must have an accessible name"
199 },
200 "heading-order": {
201 "description": "Ensure the order of headings is semantically correct",
202 "help": "Heading levels should only increase by one"
203 },
204 "hidden-content": {
205 "description": "Inform users about hidden content.",
206 "help": "Hidden content on the page should be analyzed"
207 },
208 "html-has-lang": {
209 "description": "Ensure every HTML document has a lang attribute",
210 "help": "<html> element must have a lang attribute"
211 },
212 "html-lang-valid": {
213 "description": "Ensure the lang attribute of the <html> element has a valid value",
214 "help": "<html> element must have a valid value for the lang attribute"
215 },
216 "html-xml-lang-mismatch": {
217 "description": "Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page",
218 "help": "HTML elements with lang and xml:lang must have the same base language"
219 },
220 "identical-links-same-purpose": {
221 "description": "Ensure that links with the same accessible name serve a similar purpose",
222 "help": "Links with the same name must have a similar purpose"
223 },
224 "image-alt": {
225 "description": "Ensure <img> elements have alternative text or a role of none or presentation",
226 "help": "Images must have alternative text"
227 },
228 "image-redundant-alt": {
229 "description": "Ensure image alternative is not repeated as text",
230 "help": "Alternative text of images should not be repeated as text"
231 },
232 "input-button-name": {
233 "description": "Ensure input buttons have discernible text",
234 "help": "Input buttons must have discernible text"
235 },
236 "input-image-alt": {
237 "description": "Ensure <input type=\"image\"> elements have alternative text",
238 "help": "Image buttons must have alternative text"
239 },
240 "label-content-name-mismatch": {
241 "description": "Ensure that elements labelled through their content must have their visible text as part of their accessible name",
242 "help": "Elements must have their visible text as part of their accessible name"
243 },
244 "label-title-only": {
245 "description": "Ensure that every form element has a visible label and is not solely labeled using hidden labels, or the title or aria-describedby attributes",
246 "help": "Form elements should have a visible label"
247 },
248 "label": {
249 "description": "Ensure every form element has a label",
250 "help": "Form elements must have labels"
251 },
252 "landmark-banner-is-top-level": {
253 "description": "Ensure the banner landmark is at top level",
254 "help": "Banner landmark should not be contained in another landmark"
255 },
256 "landmark-complementary-is-top-level": {
257 "description": "Ensure the complementary landmark or aside is at top level",
258 "help": "Aside should not be contained in another landmark"
259 },
260 "landmark-contentinfo-is-top-level": {
261 "description": "Ensure the contentinfo landmark is at top level",
262 "help": "Contentinfo landmark should not be contained in another landmark"
263 },
264 "landmark-main-is-top-level": {
265 "description": "Ensure the main landmark is at top level",
266 "help": "Main landmark should not be contained in another landmark"
267 },
268 "landmark-no-duplicate-banner": {
269 "description": "Ensure the document has at most one banner landmark",
270 "help": "Document should not have more than one banner landmark"
271 },
272 "landmark-no-duplicate-contentinfo": {
273 "description": "Ensure the document has at most one contentinfo landmark",
274 "help": "Document should not have more than one contentinfo landmark"
275 },
276 "landmark-no-duplicate-main": {
277 "description": "Ensure the document has at most one main landmark",
278 "help": "Document should not have more than one main landmark"
279 },
280 "landmark-one-main": {
281 "description": "Ensure the document has a main landmark",
282 "help": "Document should have one main landmark"
283 },
284 "landmark-unique": {
285 "description": "Ensure landmarks are unique",
286 "help": "Landmarks should have a unique role or role/label/title (i.e. accessible name) combination"
287 },
288 "link-in-text-block": {
289 "description": "Ensure links are distinguished from surrounding text in a way that does not rely on color",
290 "help": "Links must be distinguishable without relying on color"
291 },
292 "link-name": {
293 "description": "Ensure links have discernible text",
294 "help": "Links must have discernible text"
295 },
296 "list": {
297 "description": "Ensure that lists are structured correctly",
298 "help": "<ul> and <ol> must only directly contain <li>, <script> or <template> elements"
299 },
300 "listitem": {
301 "description": "Ensure <li> elements are used semantically",
302 "help": "<li> elements must be contained in a <ul> or <ol>"
303 },
304 "marquee": {
305 "description": "Ensure <marquee> elements are not used",
306 "help": "<marquee> elements are deprecated and must not be used"
307 },
308 "meta-refresh-no-exceptions": {
309 "description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
310 "help": "Delayed refresh must not be used"
311 },
312 "meta-refresh": {
313 "description": "Ensure <meta http-equiv=\"refresh\"> is not used for delayed refresh",
314 "help": "Delayed refresh under 20 hours must not be used"
315 },
316 "meta-viewport-large": {
317 "description": "Ensure <meta name=\"viewport\"> can scale a significant amount",
318 "help": "Users should be able to zoom and scale the text up to 500%"
319 },
320 "meta-viewport": {
321 "description": "Ensure <meta name=\"viewport\"> does not disable text scaling and zooming",
322 "help": "Zooming and scaling must not be disabled"
323 },
324 "nested-interactive": {
325 "description": "Ensure interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies",
326 "help": "Interactive controls must not be nested"
327 },
328 "no-autoplay-audio": {
329 "description": "Ensure <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio",
330 "help": "<video> or <audio> elements must not play automatically"
331 },
332 "object-alt": {
333 "description": "Ensure <object> elements have alternative text",
334 "help": "<object> elements must have alternative text"
335 },
336 "p-as-heading": {
337 "description": "Ensure bold, italic text and font-size is not used to style <p> elements as a heading",
338 "help": "Styled <p> elements must not be used as headings"
339 },
340 "page-has-heading-one": {
341 "description": "Ensure that the page, or at least one of its frames contains a level-one heading",
342 "help": "Page should contain a level-one heading"
343 },
344 "presentation-role-conflict": {
345 "description": "Ensure elements marked as presentational do not have global ARIA or tabindex so that all screen readers ignore them",
346 "help": "Elements marked as presentational should be consistently ignored"
347 },
348 "region": {
349 "description": "Ensure all page content is contained by landmarks",
350 "help": "All page content should be contained by landmarks"
351 },
352 "role-img-alt": {
353 "description": "Ensure [role=\"img\"] elements have alternative text",
354 "help": "[role=\"img\"] elements must have alternative text"
355 },
356 "scope-attr-valid": {
357 "description": "Ensure the scope attribute is used correctly on tables",
358 "help": "scope attribute should be used correctly"
359 },
360 "scrollable-region-focusable": {
361 "description": "Ensure elements that have scrollable content are accessible by keyboard in Safari",
362 "help": "Scrollable region must have keyboard access"
363 },
364 "select-name": {
365 "description": "Ensure select element has an accessible name",
366 "help": "Select element must have an accessible name"
367 },
368 "server-side-image-map": {
369 "description": "Ensure that server-side image maps are not used",
370 "help": "Server-side image maps must not be used"
371 },
372 "skip-link": {
373 "description": "Ensure all skip links have a focusable target",
374 "help": "The skip-link target should exist and be focusable"
375 },
376 "summary-name": {
377 "description": "Ensure summary elements have discernible text",
378 "help": "Summary elements must have discernible text"
379 },
380 "svg-img-alt": {
381 "description": "Ensure <svg> elements with an img, graphics-document or graphics-symbol role have accessible text",
382 "help": "<svg> elements with an img role must have alternative text"
383 },
384 "tabindex": {
385 "description": "Ensure tabindex attribute values are not greater than 0",
386 "help": "Elements should not have tabindex greater than zero"
387 },
388 "table-duplicate-name": {
389 "description": "Ensure the <caption> element does not contain the same text as the summary attribute",
390 "help": "Tables should not have the same summary and caption"
391 },
392 "table-fake-caption": {
393 "description": "Ensure that tables with a caption use the <caption> element.",
394 "help": "Data or header cells must not be used to give caption to a data table."
395 },
396 "target-size": {
397 "description": "Ensure touch targets have sufficient size and space",
398 "help": "All touch targets must be 24px large, or leave sufficient space"
399 },
400 "td-has-header": {
401 "description": "Ensure that each non-empty data cell in a <table> larger than 3 by 3 has one or more table headers",
402 "help": "Non-empty <td> elements in larger <table> must have an associated table header"
403 },
404 "td-headers-attr": {
405 "description": "Ensure that each cell in a table that uses the headers attribute refers only to other <th> elements in that table",
406 "help": "Table cell headers attributes must refer to other <th> elements in the same table"
407 },
408 "th-has-data-cells": {
409 "description": "Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe",
410 "help": "Table headers in a data table must refer to data cells"
411 },
412 "valid-lang": {
413 "description": "Ensure lang attributes have valid values",
414 "help": "lang attribute must have a valid value"
415 },
416 "video-caption": {
417 "description": "Ensure <video> elements have captions",
418 "help": "<video> elements must have captions"
419 }
420 },
421 "checks": {
422 "abstractrole": {
423 "pass": "Abstract roles are not used",
424 "fail": {
425 "singular": "Abstract role cannot be directly used: ${data.values}",
426 "plural": "Abstract roles cannot be directly used: ${data.values}"
427 }
428 },
429 "aria-allowed-attr-elm": {
430 "pass": "ARIA attributes are allowed for this element",
431 "fail": {
432 "singular": "ARIA attribute is not allowed on ${data.nodeName} elements: ${data.values}",
433 "plural": "ARIA attributes are not allowed on ${data.nodeName} elements: ${data.values}"
434 }
435 },
436 "aria-allowed-attr": {
437 "pass": "ARIA attributes are used correctly for the defined role",
438 "fail": {
439 "singular": "ARIA attribute is not allowed: ${data.values}",
440 "plural": "ARIA attributes are not allowed: ${data.values}"
441 },
442 "incomplete": "Check that there is no problem if the ARIA attribute is ignored on this element: ${data.values}"
443 },
444 "aria-allowed-role": {
445 "pass": "ARIA role is allowed for given element",
446 "fail": {
447 "singular": "ARIA role ${data.values} is not allowed for given element",
448 "plural": "ARIA roles ${data.values} are not allowed for given element"
449 },
450 "incomplete": {
451 "singular": "ARIA role ${data.values} must be removed when the element is made visible, as it is not allowed for the element",
452 "plural": "ARIA roles ${data.values} must be removed when the element is made visible, as they are not allowed for the element"
453 }
454 },
455 "aria-busy": {
456 "pass": "Element has an aria-busy attribute",
457 "fail": "Element uses aria-busy=\"true\" while showing a loader"
458 },
459 "aria-conditional-attr": {
460 "pass": "ARIA attribute is allowed",
461 "fail": {
462 "checkbox": "Remove aria-checked, or set it to \"${data.checkState}\" to match the real checkbox state",
463 "rowSingular": "This attribute is supported with treegrid rows, but not ${data.ownerRole}: ${data.invalidAttrs}",
464 "rowPlural": "These attributes are supported with treegrid rows, but not ${data.ownerRole}: ${data.invalidAttrs}"
465 }
466 },
467 "aria-errormessage": {
468 "pass": "aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique",
469 "fail": {
470 "singular": "aria-errormessage value `${data.values}` must use a technique to announce the message (e.g., aria-live, aria-describedby, role=alert, etc.)",
471 "plural": "aria-errormessage values `${data.values}` must use a technique to announce the message (e.g., aria-live, aria-describedby, role=alert, etc.)",
472 "unsupported": "Multiple IDs in aria-errormessage is not widely supported in assistive technologies",
473 "hidden": "aria-errormessage value `${data.values}` cannot reference a hidden element"
474 },
475 "incomplete": {
476 "singular": "Ensure aria-errormessage value `${data.values}` references an existing element",
477 "plural": "Ensure aria-errormessage values `${data.values}` reference existing elements",
478 "idrefs": "Unable to determine if aria-errormessage element exists on the page: ${data.values}"
479 }
480 },
481 "aria-hidden-body": {
482 "pass": "No aria-hidden attribute is present on document body",
483 "fail": "aria-hidden=true should not be present on the document body"
484 },
485 "aria-level": {
486 "pass": "aria-level values are valid",
487 "incomplete": "aria-level values greater than 6 are not supported in all screenreader and browser combinations"
488 },
489 "aria-prohibited-attr": {
490 "pass": "ARIA attribute is allowed",
491 "fail": {
492 "hasRolePlural": "${data.prohibited} attributes cannot be used with role \"${data.role}\".",
493 "hasRoleSingular": "${data.prohibited} attribute cannot be used with role \"${data.role}\".",
494 "noRolePlural": "${data.prohibited} attributes cannot be used on a ${data.nodeName} with no valid role attribute.",
495 "noRoleSingular": "${data.prohibited} attribute cannot be used on a ${data.nodeName} with no valid role attribute."
496 },
497 "incomplete": {
498 "hasRoleSingular": "${data.prohibited} attribute is not well supported with role \"${data.role}\".",
499 "hasRolePlural": "${data.prohibited} attributes are not well supported with role \"${data.role}\".",
500 "noRoleSingular": "${data.prohibited} attribute is not well supported on a ${data.nodeName} with no valid role attribute.",
501 "noRolePlural": "${data.prohibited} attributes are not well supported on a ${data.nodeName} with no valid role attribute."
502 }
503 },
504 "aria-required-attr": {
505 "pass": "All required ARIA attributes are present",
506 "fail": {
507 "singular": "Required ARIA attribute not present: ${data.values}",
508 "plural": "Required ARIA attributes not present: ${data.values}"
509 }
510 },
511 "aria-required-children": {
512 "pass": {
513 "default": "Required ARIA children are present",
514 "aria-busy": "Element has an aria-busy attribute, so it is allowed to omit required children"
515 },
516 "fail": {
517 "singular": "Required ARIA child role not present: ${data.values}",
518 "plural": "Required ARIA children role not present: ${data.values}",
519 "unallowed": "Element has children which are not allowed: ${data.values}",
520 "aria-busy-fail": "Element has children which are not allowed: ${data.values}; Having aria-busy=\"true\" does not allow children with roles that are not allowed"
521 },
522 "incomplete": {
523 "singular": "Expecting ARIA child role to be added: ${data.values}",
524 "plural": "Expecting ARIA children role to be added: ${data.values}"
525 }
526 },
527 "aria-required-parent": {
528 "pass": "Required ARIA parent role present",
529 "fail": {
530 "singular": "Required ARIA parent role not present: ${data.values}",
531 "plural": "Required ARIA parents role not present: ${data.values}"
532 }
533 },
534 "aria-roledescription": {
535 "pass": "aria-roledescription used on a supported semantic role",
536 "incomplete": "Check that the aria-roledescription is announced by supported screen readers",
537 "fail": "Give the element a role that supports aria-roledescription"
538 },
539 "aria-unsupported-attr": {
540 "pass": "ARIA attribute is supported",
541 "fail": "ARIA attribute is not widely supported in screen readers and assistive technologies: ${data.values}"
542 },
543 "aria-valid-attr-value": {
544 "pass": "ARIA attribute values are valid",
545 "fail": {
546 "singular": "Invalid ARIA attribute value: ${data.values}",
547 "plural": "Invalid ARIA attribute values: ${data.values}"
548 },
549 "incomplete": {
550 "noId": "ARIA attribute element ID does not exist on the page: ${data.needsReview}",
551 "noIdShadow": "ARIA attribute element ID does not exist on the page or is a descendant of a different shadow DOM tree: ${data.needsReview}",
552 "ariaCurrent": "ARIA attribute value is invalid and will be treated as \"aria-current=true\": ${data.needsReview}",
553 "idrefs": "Unable to determine if ARIA attribute element ID exists on the page: ${data.needsReview}",
554 "empty": "ARIA attribute value is ignored while empty: ${data.needsReview}",
555 "controlsWithinPopup": "Unable to determine if aria-controls referenced ID exists on the page while using aria-haspopup: ${data.needsReview}"
556 }
557 },
558 "aria-valid-attr": {
559 "pass": "ARIA attribute name is valid",
560 "fail": {
561 "singular": "Invalid ARIA attribute name: ${data.values}",
562 "plural": "Invalid ARIA attribute names: ${data.values}"
563 }
564 },
565 "braille-label-equivalent": {
566 "pass": "aria-braillelabel is used on an element with accessible text",
567 "fail": "aria-braillelabel is used on an element with no accessible text",
568 "incomplete": "Unable to compute accessible text"
569 },
570 "braille-roledescription-equivalent": {
571 "pass": "aria-brailleroledescription is used on an element with aria-roledescription",
572 "fail": {
573 "noRoleDescription": "aria-brailleroledescription is used on an element with no aria-roledescription",
574 "emptyRoleDescription": "aria-brailleroledescription is used on an element with an empty aria-roledescription"
575 }
576 },
577 "deprecatedrole": {
578 "pass": "ARIA role is not deprecated",
579 "fail": "The role used is deprecated: ${data}"
580 },
581 "fallbackrole": {
582 "pass": "Only one role value used",
583 "fail": "Use only one role value, since fallback roles are not supported in older browsers",
584 "incomplete": "Use only role 'presentation' or 'none' since they are synonymous."
585 },
586 "has-global-aria-attribute": {
587 "pass": {
588 "singular": "Element has global ARIA attribute: ${data.values}",
589 "plural": "Element has global ARIA attributes: ${data.values}"
590 },
591 "fail": "Element does not have global ARIA attribute"
592 },
593 "has-widget-role": {
594 "pass": "Element has a widget role.",
595 "fail": "Element does not have a widget role."
596 },
597 "invalidrole": {
598 "pass": "ARIA role is valid",
599 "fail": {
600 "singular": "Role must be one of the valid ARIA roles: ${data.values}",
601 "plural": "Roles must be one of the valid ARIA roles: ${data.values}"
602 }
603 },
604 "is-element-focusable": {
605 "pass": "Element is focusable.",
606 "fail": "Element is not focusable."
607 },
608 "no-implicit-explicit-label": {
609 "pass": "There is no mismatch between a <label> and accessible name",
610 "incomplete": "Check that the <label> does not need be part of the ARIA ${data} field's name"
611 },
612 "unsupportedrole": {
613 "pass": "ARIA role is supported",
614 "fail": "The role used is not widely supported in screen readers and assistive technologies: ${data}"
615 },
616 "valid-scrollable-semantics": {
617 "pass": "Element has valid semantics for an element in the focus order.",
618 "fail": "Element has invalid semantics for an element in the focus order."
619 },
620 "color-contrast-enhanced": {
621 "pass": "Element has sufficient color contrast of ${data.contrastRatio}",
622 "fail": {
623 "default": "Element has insufficient color contrast of ${data.contrastRatio} (foreground color: ${data.fgColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}",
624 "fgOnShadowColor": "Element has insufficient color contrast of ${data.contrastRatio} between the foreground and shadow color (foreground color: ${data.fgColor}, text-shadow color: ${data.shadowColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}",
625 "shadowOnBgColor": "Element has insufficient color contrast of ${data.contrastRatio} between the shadow color and background color (text-shadow color: ${data.shadowColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}"
626 },
627 "incomplete": {
628 "default": "Unable to determine contrast ratio",
629 "bgImage": "Element's background color could not be determined due to a background image",
630 "bgGradient": "Element's background color could not be determined due to a background gradient",
631 "imgNode": "Element's background color could not be determined because element contains an image node",
632 "bgOverlap": "Element's background color could not be determined because it is overlapped by another element",
633 "fgAlpha": "Element's foreground color could not be determined because of alpha transparency",
634 "elmPartiallyObscured": "Element's background color could not be determined because it's partially obscured by another element",
635 "elmPartiallyObscuring": "Element's background color could not be determined because it partially overlaps other elements",
636 "outsideViewport": "Element's background color could not be determined because it's outside the viewport",
637 "equalRatio": "Element has a 1:1 contrast ratio with the background",
638 "shortTextContent": "Element content is too short to determine if it is actual text content",
639 "nonBmp": "Element content contains only non-text characters",
640 "pseudoContent": "Element's background color could not be determined due to a pseudo element",
641 "colorParse": "Could not parse color string ${data.colorParse}"
642 }
643 },
644 "color-contrast": {
645 "pass": {
646 "default": "Element has sufficient color contrast of ${data.contrastRatio}",
647 "hidden": "Element is hidden"
648 },
649 "fail": {
650 "default": "Element has insufficient color contrast of ${data.contrastRatio} (foreground color: ${data.fgColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}",
651 "fgOnShadowColor": "Element has insufficient color contrast of ${data.contrastRatio} between the foreground and shadow color (foreground color: ${data.fgColor}, text-shadow color: ${data.shadowColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}",
652 "shadowOnBgColor": "Element has insufficient color contrast of ${data.contrastRatio} between the shadow color and background color (text-shadow color: ${data.shadowColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}"
653 },
654 "incomplete": {
655 "default": "Unable to determine contrast ratio",
656 "bgImage": "Element's background color could not be determined due to a background image",
657 "bgGradient": "Element's background color could not be determined due to a background gradient",
658 "imgNode": "Element's background color could not be determined because element contains an image node",
659 "bgOverlap": "Element's background color could not be determined because it is overlapped by another element",
660 "complexTextShadows": "Element's contrast could not be determined because it uses complex text shadows",
661 "fgAlpha": "Element's foreground color could not be determined because of alpha transparency",
662 "elmPartiallyObscured": "Element's background color could not be determined because it's partially obscured by another element",
663 "elmPartiallyObscuring": "Element's background color could not be determined because it partially overlaps other elements",
664 "outsideViewport": "Element's background color could not be determined because it's outside the viewport",
665 "equalRatio": "Element has a 1:1 contrast ratio with the background",
666 "shortTextContent": "Element content is too short to determine if it is actual text content",
667 "nonBmp": "Element content contains only non-text characters",
668 "pseudoContent": "Element's background color could not be determined due to a pseudo element",
669 "colorParse": "Could not parse color string ${data.colorParse}"
670 }
671 },
672 "link-in-text-block-style": {
673 "pass": "Links can be distinguished from surrounding text by visual styling",
674 "incomplete": {
675 "default": "Check if the link needs styling to distinguish it from nearby text",
676 "pseudoContent": "Check if the link's pseudo style is sufficient to distinguish it from the surrounding text"
677 },
678 "fail": "The link has no styling (such as underline) to distinguish it from the surrounding text"
679 },
680 "link-in-text-block": {
681 "pass": "Links can be distinguished from surrounding text in some way other than by color",
682 "fail": {
683 "fgContrast": "The link has insufficient color contrast of ${data.contrastRatio}:1 with the surrounding text. (Minimum contrast is ${data.requiredContrastRatio}:1, link text: ${data.nodeColor}, surrounding text: ${data.parentColor})",
684 "bgContrast": "The link background has insufficient color contrast of ${data.contrastRatio} (Minimum contrast is ${data.requiredContrastRatio}:1, link background color: ${data.nodeBackgroundColor}, surrounding background color: ${data.parentBackgroundColor})"
685 },
686 "incomplete": {
687 "default": "Element's foreground contrast ratio could not be determined",
688 "bgContrast": "Element's background contrast ratio could not be determined",
689 "bgImage": "Element's contrast ratio could not be determined due to a background image",
690 "bgGradient": "Element's contrast ratio could not be determined due to a background gradient",
691 "imgNode": "Element's contrast ratio could not be determined because element contains an image node",
692 "bgOverlap": "Element's contrast ratio could not be determined because of element overlap"
693 }
694 },
695 "autocomplete-appropriate": {
696 "pass": "The autocomplete value is on an appropriate element",
697 "fail": "The autocomplete value is inappropriate for this type of input"
698 },
699 "autocomplete-valid": {
700 "pass": "the autocomplete attribute is correctly formatted",
701 "fail": "the autocomplete attribute is incorrectly formatted",
702 "incomplete": "the autocomplete attribute has a non-standard value. Check whether any standard value could be used instead."
703 },
704 "accesskeys": {
705 "pass": "Accesskey attribute value is unique",
706 "fail": "Document has multiple elements with the same accesskey"
707 },
708 "focusable-content": {
709 "pass": "Element contains focusable elements",
710 "fail": "Element should have focusable content"
711 },
712 "focusable-disabled": {
713 "pass": "No focusable elements contained within element",
714 "incomplete": "Check if the focusable elements immediately move the focus indicator",
715 "fail": "Focusable content should be disabled or be removed from the DOM"
716 },
717 "focusable-element": {
718 "pass": "Element is focusable",
719 "fail": "Element should be focusable"
720 },
721 "focusable-modal-open": {
722 "pass": "No focusable elements while a modal is open",
723 "incomplete": "Check that focusable elements are not tabbable in the current state"
724 },
725 "focusable-no-name": {
726 "pass": "Element is not in tab order or has accessible text",
727 "fail": "Element is in tab order and does not have accessible text",
728 "incomplete": "Unable to determine if element has an accessible name"
729 },
730 "focusable-not-tabbable": {
731 "pass": "No focusable elements contained within element",
732 "incomplete": "Check if the focusable elements immediately move the focus indicator",
733 "fail": "Focusable content should have tabindex=\"-1\" or be removed from the DOM"
734 },
735 "frame-focusable-content": {
736 "pass": "Element does not have focusable descendants",
737 "fail": "Element has focusable descendants",
738 "incomplete": "Could not determine if element has descendants"
739 },
740 "landmark-is-top-level": {
741 "pass": "The ${data.role} landmark is at the top level.",
742 "fail": "The ${data.role} landmark is contained in another landmark."
743 },
744 "no-focusable-content": {
745 "pass": "Element does not have focusable descendants",
746 "fail": {
747 "default": "Element has focusable descendants",
748 "notHidden": "Using a negative tabindex on an element inside an interactive control does not prevent assistive technologies from focusing the element (even with aria-hidden=\"true\")"
749 },
750 "incomplete": "Could not determine if element has descendants"
751 },
752 "page-has-heading-one": {
753 "pass": "Page has at least one level-one heading",
754 "fail": "Page must have a level-one heading"
755 },
756 "page-has-main": {
757 "pass": "Document has at least one main landmark",
758 "fail": "Document does not have a main landmark"
759 },
760 "page-no-duplicate-banner": {
761 "pass": "Document does not have more than one banner landmark",
762 "fail": "Document has more than one banner landmark"
763 },
764 "page-no-duplicate-contentinfo": {
765 "pass": "Document does not have more than one contentinfo landmark",
766 "fail": "Document has more than one contentinfo landmark"
767 },
768 "page-no-duplicate-main": {
769 "pass": "Document does not have more than one main landmark",
770 "fail": "Document has more than one main landmark"
771 },
772 "tabindex": {
773 "pass": "Element does not have a tabindex greater than 0",
774 "fail": "Element has a tabindex greater than 0"
775 },
776 "alt-space-value": {
777 "pass": "Element has a valid alt attribute value",
778 "fail": "Element has an alt attribute containing only a space character, which is not ignored by all screen readers"
779 },
780 "duplicate-img-label": {
781 "pass": "Element does not duplicate existing text in <img> alt text",
782 "fail": "Element contains <img> element with alt text that duplicates existing text"
783 },
784 "explicit-label": {
785 "pass": "Element has an explicit <label>",
786 "fail": "Element does not have an explicit <label>",
787 "incomplete": "Unable to determine if form element has an explicit <label>"
788 },
789 "help-same-as-label": {
790 "pass": "Help text (title or aria-describedby) does not duplicate label text",
791 "fail": "Help text (title or aria-describedby) text is the same as the label text"
792 },
793 "hidden-explicit-label": {
794 "pass": "Form element has a visible explicit <label>",
795 "fail": "Form element has explicit <label> that is hidden",
796 "incomplete": "Unable to determine if form element has explicit <label> that is hidden"
797 },
798 "implicit-label": {
799 "pass": "Element has an implicit (wrapped) <label>",
800 "fail": "Element does not have an implicit (wrapped) <label>",
801 "incomplete": "Unable to determine if form element has an implicit (wrapped) <label>"
802 },
803 "label-content-name-mismatch": {
804 "pass": "Element contains visible text as part of it's accessible name",
805 "fail": "Text inside the element is not included in the accessible name"
806 },
807 "multiple-label": {
808 "pass": "Form field does not have multiple label elements",
809 "incomplete": "Multiple label elements is not widely supported in assistive technologies. Ensure the first label contains all necessary information."
810 },
811 "title-only": {
812 "pass": "Form element does not solely use title attribute for its label",
813 "fail": "Only title used to generate label for form element"
814 },
815 "landmark-is-unique": {
816 "pass": "Landmarks must have a unique role or role/label/title (i.e. accessible name) combination",
817 "fail": "The landmark must have a unique aria-label, aria-labelledby, or title to make landmarks distinguishable"
818 },
819 "has-lang": {
820 "pass": "The <html> element has a lang attribute",
821 "fail": {
822 "noXHTML": "The xml:lang attribute is not valid on HTML pages, use the lang attribute.",
823 "noLang": "The <html> element does not have a lang attribute"
824 }
825 },
826 "valid-lang": {
827 "pass": "Value of lang attribute is included in the list of valid languages",
828 "fail": "Value of lang attribute not included in the list of valid languages"
829 },
830 "xml-lang-mismatch": {
831 "pass": "Lang and xml:lang attributes have the same base language",
832 "fail": "Lang and xml:lang attributes do not have the same base language"
833 },
834 "dlitem": {
835 "pass": "Description list item has a <dl> parent element",
836 "fail": "Description list item does not have a <dl> parent element"
837 },
838 "listitem": {
839 "pass": "List item has a <ul>, <ol> or role=\"list\" parent element",
840 "fail": {
841 "default": "List item does not have a <ul>, <ol> parent element",
842 "roleNotValid": "List item parent element has a role that is not role=\"list\""
843 }
844 },
845 "only-dlitems": {
846 "pass": "dl element only has direct children that are allowed inside; <dt>, <dd>, or <div> elements",
847 "fail": "dl element has direct children that are not allowed: ${data.values}"
848 },
849 "only-listitems": {
850 "pass": "List element only has direct children that are allowed inside <li> elements",
851 "fail": "List element has direct children that are not allowed: ${data.values}"
852 },
853 "structured-dlitems": {
854 "pass": "When not empty, element has both <dt> and <dd> elements",
855 "fail": "When not empty, element does not have at least one <dt> element followed by at least one <dd> element"
856 },
857 "caption": {
858 "pass": "The multimedia element has a captions track",
859 "incomplete": "Check that captions are available for the element"
860 },
861 "frame-tested": {
862 "pass": "The iframe was tested with axe-core",
863 "fail": "The iframe could not be tested with axe-core",
864 "incomplete": "The iframe still has to be tested with axe-core"
865 },
866 "no-autoplay-audio": {
867 "pass": "<video> or <audio> does not output audio for more than allowed duration or has controls mechanism",
868 "fail": "<video> or <audio> outputs audio for more than allowed duration and does not have a controls mechanism",
869 "incomplete": "Check that the <video> or <audio> does not output audio for more than allowed duration or provides a controls mechanism"
870 },
871 "css-orientation-lock": {
872 "pass": "Display is operable, and orientation lock does not exist",
873 "fail": "CSS Orientation lock is applied, and makes display inoperable",
874 "incomplete": "CSS Orientation lock cannot be determined"
875 },
876 "meta-viewport-large": {
877 "pass": "<meta> tag does not prevent significant zooming on mobile devices",
878 "fail": "<meta> tag limits zooming on mobile devices"
879 },
880 "meta-viewport": {
881 "pass": "<meta> tag does not disable zooming on mobile devices",
882 "fail": "${data} on <meta> tag disables zooming on mobile devices"
883 },
884 "target-offset": {
885 "pass": {
886 "default": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of ${data.closestOffset}px which is at least ${data.minOffset}px.",
887 "large": "Target far exceeds the minimum size of ${data.minOffset}px."
888 },
889 "fail": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of ${data.closestOffset}px instead of at least ${data.minOffset}px.",
890 "incomplete": {
891 "default": "Element with negative tabindex has insufficient space to its closest neighbors. Safe clickable space has a diameter of ${data.closestOffset}px instead of at least ${data.minOffset}px. Is this a target?",
892 "nonTabbableNeighbor": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of ${data.closestOffset}px instead of at least ${data.minOffset}px. Is the neighbor a target?",
893 "tooManyRects": "Could not get the target size because there are too many overlapping elements"
894 }
895 },
896 "target-size": {
897 "pass": {
898 "default": "Control has sufficient size (${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px)",
899 "obscured": "Control is ignored because it is fully obscured and thus not clickable",
900 "large": "Target far exceeds the minimum size of ${data.minSize}px."
901 },
902 "fail": {
903 "default": "Target has insufficient size (${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px)",
904 "partiallyObscured": "Target has insufficient size because it is partially obscured (smallest space is ${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px)"
905 },
906 "incomplete": {
907 "default": "Element with negative tabindex has insufficient size (${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px). Is this a target?",
908 "contentOverflow": "Element size could not be accurately determined due to overflow content",
909 "partiallyObscured": "Element with negative tabindex has insufficient size because it is partially obscured (smallest space is ${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px). Is this a target?",
910 "partiallyObscuredNonTabbable": "Target has insufficient size because it is partially obscured by a neighbor with negative tabindex (smallest space is ${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px). Is the neighbor a target?",
911 "tooManyRects": "Could not get the target size because there are too many overlapping elements"
912 }
913 },
914 "header-present": {
915 "pass": "Page has a heading",
916 "fail": "Page does not have a heading"
917 },
918 "heading-order": {
919 "pass": "Heading order valid",
920 "fail": "Heading order invalid",
921 "incomplete": "Unable to determine previous heading"
922 },
923 "identical-links-same-purpose": {
924 "pass": "There are no other links with the same name, that go to a different URL",
925 "incomplete": "Check that links have the same purpose, or are intentionally ambiguous."
926 },
927 "internal-link-present": {
928 "pass": "Valid skip link found",
929 "fail": "No valid skip link found"
930 },
931 "landmark": {
932 "pass": "Page has a landmark region",
933 "fail": "Page does not have a landmark region"
934 },
935 "meta-refresh-no-exceptions": {
936 "pass": "<meta> tag does not immediately refresh the page",
937 "fail": "<meta> tag forces timed refresh of page"
938 },
939 "meta-refresh": {
940 "pass": "<meta> tag does not immediately refresh the page",
941 "fail": "<meta> tag forces timed refresh of page (less than 20 hours)"
942 },
943 "p-as-heading": {
944 "pass": "<p> elements are not styled as headings",
945 "fail": "Heading elements should be used instead of styled <p> elements",
946 "incomplete": "Unable to determine if <p> elements are styled as headings"
947 },
948 "region": {
949 "pass": "All page content is contained by landmarks",
950 "fail": "Some page content is not contained by landmarks"
951 },
952 "skip-link": {
953 "pass": "Skip link target exists",
954 "incomplete": "Skip link target should become visible on activation",
955 "fail": "No skip link target"
956 },
957 "unique-frame-title": {
958 "pass": "Element's title attribute is unique",
959 "fail": "Element's title attribute is not unique"
960 },
961 "duplicate-id-active": {
962 "pass": "Document has no active elements that share the same id attribute",
963 "fail": "Document has active elements with the same id attribute: ${data}"
964 },
965 "duplicate-id-aria": {
966 "pass": "Document has no elements referenced with ARIA or labels that share the same id attribute",
967 "fail": "Document has multiple elements referenced with ARIA with the same id attribute: ${data}"
968 },
969 "duplicate-id": {
970 "pass": "Document has no static elements that share the same id attribute",
971 "fail": "Document has multiple static elements with the same id attribute: ${data}"
972 },
973 "aria-label": {
974 "pass": "aria-label attribute exists and is not empty",
975 "fail": "aria-label attribute does not exist or is empty"
976 },
977 "aria-labelledby": {
978 "pass": "aria-labelledby attribute exists and references elements that are visible to screen readers",
979 "fail": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty",
980 "incomplete": "Ensure aria-labelledby references an existing element"
981 },
982 "avoid-inline-spacing": {
983 "pass": "No inline styles with '!important' that affect text spacing has been specified",
984 "fail": {
985 "singular": "Remove '!important' from inline style ${data.values}, as overriding this is not supported by most browsers",
986 "plural": "Remove '!important' from inline styles ${data.values}, as overriding this is not supported by most browsers"
987 }
988 },
989 "button-has-visible-text": {
990 "pass": "Element has inner text that is visible to screen readers",
991 "fail": "Element does not have inner text that is visible to screen readers",
992 "incomplete": "Unable to determine if element has children"
993 },
994 "doc-has-title": {
995 "pass": "Document has a non-empty <title> element",
996 "fail": "Document does not have a non-empty <title> element"
997 },
998 "error-occurred": {
999 "pass": "",
1000 "incomplete": "Axe encountered an error; test the page for this type of problem manually"
1001 },
1002 "exists": {
1003 "pass": "Element does not exist",
1004 "incomplete": "Element exists"
1005 },
1006 "has-alt": {
1007 "pass": "Element has an alt attribute",
1008 "fail": "Element does not have an alt attribute"
1009 },
1010 "has-visible-text": {
1011 "pass": "Element has text that is visible to screen readers",
1012 "fail": "Element does not have text that is visible to screen readers",
1013 "incomplete": "Unable to determine if element has children"
1014 },
1015 "important-letter-spacing": {
1016 "pass": "Letter-spacing in the style attribute is not set to !important, or meets the minimum",
1017 "fail": "letter-spacing in the style attribute must not use !important, or be at ${data.minValue}em (current ${data.value}em)"
1018 },
1019 "important-line-height": {
1020 "pass": "line-height in the style attribute is not set to !important, or meets the minimum",
1021 "fail": "line-height in the style attribute must not use !important, or be at ${data.minValue}em (current ${data.value}em)"
1022 },
1023 "important-word-spacing": {
1024 "pass": "word-spacing in the style attribute is not set to !important, or meets the minimum",
1025 "fail": "word-spacing in the style attribute must not use !important, or be at ${data.minValue}em (current ${data.value}em)"
1026 },
1027 "is-on-screen": {
1028 "pass": "Element is not visible",
1029 "fail": "Element is visible"
1030 },
1031 "non-empty-alt": {
1032 "pass": "Element has a non-empty alt attribute",
1033 "fail": {
1034 "noAttr": "Element has no alt attribute",
1035 "emptyAttr": "Element has an empty alt attribute"
1036 }
1037 },
1038 "non-empty-if-present": {
1039 "pass": {
1040 "default": "Element does not have a value attribute",
1041 "has-label": "Element has a non-empty value attribute"
1042 },
1043 "fail": "Element has a value attribute and the value attribute is empty"
1044 },
1045 "non-empty-placeholder": {
1046 "pass": "Element has a placeholder attribute",
1047 "fail": {
1048 "noAttr": "Element has no placeholder attribute",
1049 "emptyAttr": "Element has an empty placeholder attribute"
1050 }
1051 },
1052 "non-empty-title": {
1053 "pass": "Element has a title attribute",
1054 "fail": {
1055 "noAttr": "Element has no title attribute",
1056 "emptyAttr": "Element has an empty title attribute"
1057 }
1058 },
1059 "non-empty-value": {
1060 "pass": "Element has a non-empty value attribute",
1061 "fail": {
1062 "noAttr": "Element has no value attribute",
1063 "emptyAttr": "Element has an empty value attribute"
1064 }
1065 },
1066 "presentational-role": {
1067 "pass": "Element's default semantics were overridden with role=\"${data.role}\"",
1068 "fail": {
1069 "default": "Element's default semantics were not overridden with role=\"none\" or role=\"presentation\"",
1070 "globalAria": "Element's role is not presentational because it has a global ARIA attribute",
1071 "focusable": "Element's role is not presentational because it is focusable",
1072 "both": "Element's role is not presentational because it has a global ARIA attribute and is focusable",
1073 "iframe": "Using the \"title\" attribute on an ${data.nodeName} element with a presentational role behaves inconsistently between screen readers"
1074 }
1075 },
1076 "role-none": {
1077 "pass": "Element's default semantics were overridden with role=\"none\"",
1078 "fail": "Element's default semantics were not overridden with role=\"none\""
1079 },
1080 "role-presentation": {
1081 "pass": "Element's default semantics were overridden with role=\"presentation\"",
1082 "fail": "Element's default semantics were not overridden with role=\"presentation\""
1083 },
1084 "svg-non-empty-title": {
1085 "pass": "Element has a child that is a title",
1086 "fail": {
1087 "noTitle": "Element has no child that is a title",
1088 "emptyTitle": "Element child title is empty"
1089 },
1090 "incomplete": "Unable to determine element has a child that is a title"
1091 },
1092 "caption-faked": {
1093 "pass": "The first row of a table is not used as a caption",
1094 "fail": "The first child of the table should be a caption instead of a table cell"
1095 },
1096 "html5-scope": {
1097 "pass": "Scope attribute is only used on table header elements (<th>)",
1098 "fail": "In HTML 5, scope attributes may only be used on table header elements (<th>)"
1099 },
1100 "same-caption-summary": {
1101 "pass": "Content of summary attribute and <caption> are not duplicated",
1102 "fail": "Content of summary attribute and <caption> element are identical",
1103 "incomplete": "Unable to determine if <table> element has a caption"
1104 },
1105 "scope-value": {
1106 "pass": "Scope attribute is used correctly",
1107 "fail": "The value of the scope attribute may only be 'row' or 'col'"
1108 },
1109 "td-has-header": {
1110 "pass": "All non-empty data cells have table headers",
1111 "fail": "Some non-empty data cells do not have table headers"
1112 },
1113 "td-headers-attr": {
1114 "pass": "The headers attribute is exclusively used to refer to other header cells in the table",
1115 "incomplete": "The headers attribute is empty",
1116 "fail": {
1117 "cell-header-not-in-table": "The headers attribute is not exclusively used to refer to other header cells in the table",
1118 "cell-header-not-th": "The headers attribute must refer to header cells, not data cells",
1119 "header-refs-self": "The element with headers attribute refers to itself"
1120 }
1121 },
1122 "th-has-data-cells": {
1123 "pass": "All table header cells refer to data cells",
1124 "fail": "Not all table header cells refer to data cells",
1125 "incomplete": "Table data cells are missing or empty"
1126 },
1127 "hidden-content": {
1128 "pass": "All content on the page has been analyzed.",
1129 "fail": "There were problems analyzing the content on this page.",
1130 "incomplete": "There is hidden content on the page that was not analyzed. You will need to trigger the display of this content in order to analyze it."
1131 }
1132 },
1133 "failureSummaries": {
1134 "any": {
1135 "failureMessage": "Fix any of the following:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
1136 },
1137 "none": {
1138 "failureMessage": "Fix all of the following:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
1139 }
1140 },
1141 "incompleteFallbackMessage": "axe couldn't tell the reason. Time to break out the element inspector!"
1142}
Note: See TracBrowser for help on using the repository browser.