govuk_publishing_components 21.16.3 → 21.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/component_guide/accessibility-test.js +0 -6
  3. data/app/views/govuk_publishing_components/components/docs/machine_readable_metadata.yml +7 -0
  4. data/lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb +34 -0
  5. data/lib/govuk_publishing_components/presenters/schema_org.rb +3 -0
  6. data/lib/govuk_publishing_components/version.rb +1 -1
  7. data/node_modules/axe-core/CHANGELOG.md +166 -2
  8. data/node_modules/axe-core/CONTRIBUTING.md +5 -5
  9. data/node_modules/axe-core/README.md +4 -4
  10. data/node_modules/axe-core/axe.d.ts +27 -11
  11. data/node_modules/axe-core/axe.js +9597 -2431
  12. data/node_modules/axe-core/axe.min.js +2 -2
  13. data/node_modules/axe-core/bower.json +1 -1
  14. data/node_modules/axe-core/doc/API.md +211 -128
  15. data/node_modules/axe-core/doc/accessibility-supported.md +1 -1
  16. data/node_modules/axe-core/doc/aria-supported.md +4 -13
  17. data/node_modules/axe-core/doc/backwards-compatibility-doc.md +93 -0
  18. data/node_modules/axe-core/doc/code-submission-guidelines.md +4 -4
  19. data/node_modules/axe-core/doc/developer-guide.md +27 -13
  20. data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/package.json +5 -2
  21. data/node_modules/axe-core/doc/examples/jasmine/README.md +3 -5
  22. data/node_modules/axe-core/doc/examples/jasmine/karma.conf.js +29 -0
  23. data/node_modules/axe-core/doc/examples/jasmine/package.json +6 -5
  24. data/node_modules/axe-core/doc/examples/jest_react/README.md +1 -1
  25. data/node_modules/axe-core/doc/examples/jest_react/link.test.js +3 -3
  26. data/node_modules/axe-core/doc/examples/jest_react/package.json +9 -9
  27. data/node_modules/axe-core/doc/examples/jsdom/package.json +15 -0
  28. data/node_modules/axe-core/doc/examples/mocha/README.md +5 -7
  29. data/node_modules/axe-core/doc/examples/mocha/karma.conf.js +29 -0
  30. data/node_modules/axe-core/doc/examples/mocha/package.json +7 -6
  31. data/node_modules/axe-core/doc/examples/phantomjs/README.md +3 -3
  32. data/node_modules/axe-core/doc/examples/phantomjs/axe-phantom.js +4 -2
  33. data/node_modules/axe-core/doc/examples/phantomjs/package.json +3 -3
  34. data/node_modules/axe-core/doc/examples/puppeteer/package.json +5 -2
  35. data/node_modules/axe-core/doc/examples/qunit/README.md +2 -2
  36. data/node_modules/axe-core/doc/examples/qunit/package.json +2 -2
  37. data/node_modules/axe-core/doc/examples/test-examples.js +32 -0
  38. data/node_modules/axe-core/doc/plugins.md +10 -10
  39. data/node_modules/axe-core/doc/projects.md +12 -8
  40. data/node_modules/axe-core/doc/rule-descriptions.md +87 -79
  41. data/node_modules/axe-core/doc/rule-development.md +30 -2
  42. data/node_modules/axe-core/lib/checks/aria/allowed-attr.js +1 -1
  43. data/node_modules/axe-core/lib/checks/aria/aria-roledescription.js +14 -0
  44. data/node_modules/axe-core/lib/checks/aria/aria-roledescription.json +23 -0
  45. data/node_modules/axe-core/lib/checks/aria/no-implicit-explicit-label.js +21 -0
  46. data/node_modules/axe-core/lib/checks/aria/no-implicit-explicit-label.json +11 -0
  47. data/node_modules/axe-core/lib/checks/aria/required-attr.js +32 -7
  48. data/node_modules/axe-core/lib/checks/aria/required-children.js +40 -14
  49. data/node_modules/axe-core/lib/checks/aria/required-children.json +12 -1
  50. data/node_modules/axe-core/lib/checks/aria/required-parent.js +1 -1
  51. data/node_modules/axe-core/lib/checks/aria/unsupportedattr.js +1 -1
  52. data/node_modules/axe-core/lib/checks/aria/valid-attr-value.js +50 -17
  53. data/node_modules/axe-core/lib/checks/aria/valid-attr-value.json +2 -1
  54. data/node_modules/axe-core/lib/checks/aria/valid-attr.js +1 -1
  55. data/node_modules/axe-core/lib/checks/color/color-contrast.js +2 -2
  56. data/node_modules/axe-core/lib/checks/forms/autocomplete-appropriate.js +4 -4
  57. data/node_modules/axe-core/lib/checks/forms/autocomplete-valid.js +1 -1
  58. data/node_modules/axe-core/lib/checks/forms/fieldset.json +1 -0
  59. data/node_modules/axe-core/lib/checks/forms/group-labelledby.json +1 -0
  60. data/node_modules/axe-core/lib/checks/keyboard/focusable-content.js +16 -0
  61. data/node_modules/axe-core/lib/checks/keyboard/focusable-content.json +11 -0
  62. data/node_modules/axe-core/lib/checks/keyboard/focusable-element.js +12 -0
  63. data/node_modules/axe-core/lib/checks/keyboard/focusable-element.json +11 -0
  64. data/node_modules/axe-core/lib/checks/keyboard/tabindex.js +6 -1
  65. data/node_modules/axe-core/lib/checks/label/alt-space-value.js +3 -2
  66. data/node_modules/axe-core/lib/checks/label/duplicate-img-label.js +18 -15
  67. data/node_modules/axe-core/lib/checks/label/label-content-name-mismatch.js +13 -3
  68. data/node_modules/axe-core/lib/checks/label/label-content-name-mismatch.json +4 -0
  69. data/node_modules/axe-core/lib/checks/label/multiple-label.js +22 -12
  70. data/node_modules/axe-core/lib/checks/label/multiple-label.json +1 -1
  71. data/node_modules/axe-core/lib/checks/landmarks/landmark-is-unique-after.js +23 -0
  72. data/node_modules/axe-core/lib/checks/landmarks/landmark-is-unique.js +7 -0
  73. data/node_modules/axe-core/lib/checks/landmarks/landmark-is-unique.json +12 -0
  74. data/node_modules/axe-core/lib/checks/lists/listitem.js +1 -0
  75. data/node_modules/axe-core/lib/checks/lists/listitem.json +1 -1
  76. data/node_modules/axe-core/lib/checks/lists/only-listitems.js +0 -4
  77. data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.js +8 -6
  78. data/node_modules/axe-core/lib/checks/navigation/region.js +2 -19
  79. data/node_modules/axe-core/lib/checks/shared/avoid-inline-spacing.js +18 -0
  80. data/node_modules/axe-core/lib/checks/shared/avoid-inline-spacing.json +11 -0
  81. data/node_modules/axe-core/lib/checks/shared/exists.js +1 -1
  82. data/node_modules/axe-core/lib/checks/shared/exists.json +1 -1
  83. data/node_modules/axe-core/lib/checks/shared/has-alt.js +6 -4
  84. data/node_modules/axe-core/lib/checks/shared/non-empty-alt.js +1 -1
  85. data/node_modules/axe-core/lib/checks/tables/caption-faked.json +1 -1
  86. data/node_modules/axe-core/lib/checks/tables/td-has-header.js +5 -4
  87. data/node_modules/axe-core/lib/checks/tables/th-has-data-cells.js +19 -29
  88. data/node_modules/axe-core/lib/commons/aria/get-owned-virtual.js +1 -1
  89. data/node_modules/axe-core/lib/commons/aria/index.js +50 -46
  90. data/node_modules/axe-core/lib/commons/aria/is-accessible-ref.js +41 -37
  91. data/node_modules/axe-core/lib/commons/aria/label-virtual.js +2 -2
  92. data/node_modules/axe-core/lib/commons/aria/roles.js +1 -1
  93. data/node_modules/axe-core/lib/commons/aria/validate-attr-value.js +0 -1
  94. data/node_modules/axe-core/lib/commons/color/center-point-of-rect.js +30 -0
  95. data/node_modules/axe-core/lib/commons/color/contrast.js +7 -1
  96. data/node_modules/axe-core/lib/commons/color/element-has-image.js +36 -0
  97. data/node_modules/axe-core/lib/commons/color/get-background-color.js +332 -306
  98. data/node_modules/axe-core/lib/commons/color/get-foreground-color.js +35 -6
  99. data/node_modules/axe-core/lib/commons/color/get-own-background-color.js +22 -0
  100. data/node_modules/axe-core/lib/commons/dom/find-up.js +5 -5
  101. data/node_modules/axe-core/lib/commons/dom/get-scroll-offset.js +0 -1
  102. data/node_modules/axe-core/lib/commons/dom/get-tabbable-elements.js +1 -1
  103. data/node_modules/axe-core/lib/commons/dom/has-content-virtual.js +7 -5
  104. data/node_modules/axe-core/lib/commons/dom/is-focusable.js +8 -5
  105. data/node_modules/axe-core/lib/commons/dom/is-hidden-with-css.js +15 -2
  106. data/node_modules/axe-core/lib/commons/dom/is-in-text-block.js +1 -2
  107. data/node_modules/axe-core/lib/commons/dom/is-skip-link.js +45 -0
  108. data/node_modules/axe-core/lib/commons/dom/is-visible.js +43 -17
  109. data/node_modules/axe-core/lib/commons/dom/is-visual-content.js +0 -1
  110. data/node_modules/axe-core/lib/commons/dom/visually-contains.js +0 -1
  111. data/node_modules/axe-core/lib/commons/dom/visually-overlaps.js +0 -1
  112. data/node_modules/axe-core/lib/commons/forms/index.js +8 -0
  113. data/node_modules/axe-core/lib/commons/forms/is-aria-combobox.js +13 -0
  114. data/node_modules/axe-core/lib/commons/forms/is-aria-listbox.js +13 -0
  115. data/node_modules/axe-core/lib/commons/forms/is-aria-range.js +14 -0
  116. data/node_modules/axe-core/lib/commons/forms/is-aria-textbox.js +13 -0
  117. data/node_modules/axe-core/lib/commons/forms/is-native-select.js +13 -0
  118. data/node_modules/axe-core/lib/commons/forms/is-native-textbox.js +28 -0
  119. data/node_modules/axe-core/lib/commons/table/get-cell-position.js +2 -2
  120. data/node_modules/axe-core/lib/commons/table/get-headers.js +55 -11
  121. data/node_modules/axe-core/lib/commons/table/get-scope.js +1 -1
  122. data/node_modules/axe-core/lib/commons/table/is-data-table.js +0 -1
  123. data/node_modules/axe-core/lib/commons/table/to-grid.js +2 -2
  124. data/node_modules/axe-core/lib/commons/text/accessible-text-virtual.js +5 -5
  125. data/node_modules/axe-core/lib/commons/text/form-control-value.js +18 -30
  126. data/node_modules/axe-core/lib/commons/text/is-icon-ligature.js +210 -0
  127. data/node_modules/axe-core/lib/commons/text/is-valid-autocomplete.js +0 -1
  128. data/node_modules/axe-core/lib/commons/text/label-text.js +1 -1
  129. data/node_modules/axe-core/lib/commons/text/label-virtual.js +1 -1
  130. data/node_modules/axe-core/lib/commons/text/native-text-methods.js +1 -1
  131. data/node_modules/axe-core/lib/commons/text/subtree-text.js +3 -3
  132. data/node_modules/axe-core/lib/commons/text/unicode.js +15 -0
  133. data/node_modules/axe-core/lib/commons/text/visible-text-nodes.js +25 -0
  134. data/node_modules/axe-core/lib/commons/text/visible-virtual.js +1 -1
  135. data/node_modules/axe-core/lib/core/base/audit.js +90 -15
  136. data/node_modules/axe-core/lib/core/base/cache.js +33 -0
  137. data/node_modules/axe-core/lib/core/base/check.js +48 -1
  138. data/node_modules/axe-core/lib/core/base/context.js +15 -14
  139. data/node_modules/axe-core/lib/core/base/rule.js +223 -46
  140. data/node_modules/axe-core/lib/core/base/virtual-node/abstract-virtual-node.js +40 -0
  141. data/node_modules/axe-core/lib/core/base/virtual-node/serial-virtual-node.js +86 -0
  142. data/node_modules/axe-core/lib/core/base/virtual-node/virtual-node.js +85 -0
  143. data/node_modules/axe-core/lib/core/constants.js +10 -2
  144. data/node_modules/axe-core/lib/core/imports/index.js +28 -3
  145. data/node_modules/axe-core/lib/core/index.js +2 -4
  146. data/node_modules/axe-core/lib/core/public/configure.js +28 -1
  147. data/node_modules/axe-core/lib/core/public/run-rules.js +2 -0
  148. data/node_modules/axe-core/lib/core/public/run-virtual-rule.js +50 -0
  149. data/node_modules/axe-core/lib/core/public/run.js +13 -2
  150. data/node_modules/axe-core/lib/core/reporters/helpers/process-aggregate.js +1 -1
  151. data/node_modules/axe-core/lib/core/reporters/na.js +4 -0
  152. data/node_modules/axe-core/lib/core/reporters/raw-env.js +12 -0
  153. data/node_modules/axe-core/lib/core/reporters/raw.js +25 -1
  154. data/node_modules/axe-core/lib/core/utils/are-styles-set.js +4 -7
  155. data/node_modules/axe-core/lib/core/utils/assert.js +12 -0
  156. data/node_modules/axe-core/lib/core/utils/collect-results-from-frames.js +2 -2
  157. data/node_modules/axe-core/lib/core/utils/contains.js +27 -13
  158. data/node_modules/axe-core/lib/core/utils/css-parser.js +2 -0
  159. data/node_modules/axe-core/lib/core/utils/element-matches.js +5 -1
  160. data/node_modules/axe-core/lib/core/utils/escape-selector.js +1 -2
  161. data/node_modules/axe-core/lib/core/utils/flattened-tree.js +47 -61
  162. data/node_modules/axe-core/lib/core/utils/get-check-option.js +0 -1
  163. data/node_modules/axe-core/lib/core/utils/get-friendly-uri-end.js +1 -1
  164. data/node_modules/axe-core/lib/core/utils/get-node-attributes.js +21 -0
  165. data/node_modules/axe-core/lib/core/utils/get-scroll.js +39 -0
  166. data/node_modules/axe-core/lib/core/utils/get-selector.js +9 -6
  167. data/node_modules/axe-core/lib/core/utils/get-stylesheet-factory.js +51 -0
  168. data/node_modules/axe-core/lib/core/utils/get-xpath.js +0 -1
  169. data/node_modules/axe-core/lib/core/utils/is-hidden.js +16 -4
  170. data/node_modules/axe-core/lib/core/utils/is-html-element.js +5 -5
  171. data/node_modules/axe-core/lib/core/utils/is-shadow-root.js +3 -3
  172. data/node_modules/axe-core/lib/core/utils/memoize.js +17 -0
  173. data/node_modules/axe-core/lib/core/utils/parse-crossorigin-stylesheet.js +53 -0
  174. data/node_modules/axe-core/lib/core/utils/parse-sameorigin-stylesheet.js +96 -0
  175. data/node_modules/axe-core/lib/core/utils/parse-stylesheet.js +70 -0
  176. data/node_modules/axe-core/lib/core/utils/performance-timer.js +7 -2
  177. data/node_modules/axe-core/lib/core/utils/preload-cssom.js +77 -281
  178. data/node_modules/axe-core/lib/core/utils/preload.js +49 -23
  179. data/node_modules/axe-core/lib/core/utils/qsa.js +39 -50
  180. data/node_modules/axe-core/lib/core/utils/respondable.js +20 -3
  181. data/node_modules/axe-core/lib/core/utils/rule-should-run.js +0 -1
  182. data/node_modules/axe-core/lib/core/utils/scroll-state.js +12 -25
  183. data/node_modules/axe-core/lib/core/utils/select.js +12 -23
  184. data/node_modules/axe-core/lib/core/utils/uuid.js +1 -2
  185. data/node_modules/axe-core/lib/intro.stub +1 -1
  186. data/node_modules/axe-core/lib/misc/incomplete-fallback.json +1 -1
  187. data/node_modules/axe-core/lib/rules/aria-allowed-attr-matches.js +1 -1
  188. data/node_modules/axe-core/lib/rules/aria-form-field-name-matches.js +50 -0
  189. data/node_modules/axe-core/lib/rules/aria-has-attr-matches.js +1 -1
  190. data/node_modules/axe-core/lib/rules/aria-hidden-focus.json +1 -1
  191. data/node_modules/axe-core/lib/rules/aria-input-field-name.json +13 -0
  192. data/node_modules/axe-core/lib/rules/aria-roledescription.json +12 -0
  193. data/node_modules/axe-core/lib/rules/aria-toggle-field-name.json +18 -0
  194. data/node_modules/axe-core/lib/rules/autocomplete-matches.js +14 -10
  195. data/node_modules/axe-core/lib/rules/avoid-inline-spacing.json +12 -0
  196. data/node_modules/axe-core/lib/rules/button-name.json +3 -5
  197. data/node_modules/axe-core/lib/rules/checkboxgroup.json +2 -1
  198. data/node_modules/axe-core/lib/rules/color-contrast-matches.js +37 -22
  199. data/node_modules/axe-core/lib/rules/duplicate-id-active-matches.js +1 -1
  200. data/node_modules/axe-core/lib/rules/duplicate-id-misc-matches.js +2 -2
  201. data/node_modules/axe-core/lib/rules/form-field-multiple-labels.json +1 -1
  202. data/node_modules/axe-core/lib/rules/html-has-lang.json +1 -0
  203. data/node_modules/axe-core/lib/rules/image-alt.json +1 -1
  204. data/node_modules/axe-core/lib/rules/img-redundant-alt.json +3 -3
  205. data/node_modules/axe-core/lib/rules/input-button-name.json +26 -0
  206. data/node_modules/axe-core/lib/rules/landmark-unique-matches.js +41 -0
  207. data/node_modules/axe-core/lib/rules/landmark-unique.json +13 -0
  208. data/node_modules/axe-core/lib/rules/link-name.json +5 -4
  209. data/node_modules/axe-core/lib/rules/meta-refresh.json +8 -1
  210. data/node_modules/axe-core/lib/rules/radiogroup.json +2 -1
  211. data/node_modules/axe-core/lib/rules/role-img-alt.json +18 -0
  212. data/node_modules/axe-core/lib/rules/scrollable-region-focusable-matches.js +30 -0
  213. data/node_modules/axe-core/lib/rules/scrollable-region-focusable.json +12 -0
  214. data/node_modules/axe-core/lib/rules/skip-link-matches.js +1 -1
  215. data/node_modules/axe-core/lib/rules/skip-link.json +1 -1
  216. data/node_modules/axe-core/lib/rules/video-description.json +3 -1
  217. data/node_modules/axe-core/locales/de.json +1 -5
  218. data/node_modules/axe-core/locales/es.json +773 -0
  219. data/node_modules/axe-core/locales/fr.json +15 -19
  220. data/node_modules/axe-core/locales/ja.json +65 -11
  221. data/node_modules/axe-core/locales/ko.json +777 -0
  222. data/node_modules/axe-core/locales/nl.json +35 -35
  223. data/node_modules/axe-core/locales/pt_BR.json +773 -0
  224. data/node_modules/axe-core/package.json +56 -52
  225. data/node_modules/axe-core/sri-history.json +20 -0
  226. data/node_modules/axe-core/typings/axe-core/axe-core-tests.ts +5 -15
  227. data/node_modules/govuk-frontend/package.json +10 -10
  228. metadata +62 -4
  229. data/node_modules/axe-core/doc/axelogo2018.png +0 -0
  230. data/node_modules/axe-core/lib/rules/role-not-button-matches.js +0 -1
@@ -1,36 +1,36 @@
1
1
  {
2
- "lang": "nl",
3
- "checks": {
4
- "abstractrole": {
5
- "pass": "Er zijn geen abstracte rollen (role) gebruikt",
6
- "fail": "Gebruik geen abstracte rollen (role)"
7
- },
8
- "color-contrast": {
9
- "pass": "Element heeft voldoende contrast, namelijk {{=it.data.contrastRatio}}",
10
- "fail": "Element heeft onvoldoende contrast, {{=it.data.contrastRatio}} (Voorgrondkleur: {{=it.data.fgColor}}, achtergrondkleur: {{=it.data.bgColor}}, tekstgrootte: {{=it.data.fontSize}}, tekstdikte: {{=it.data.fontWeight}})",
11
- "incomplete": {
12
- "bgImage": "Element's achtergrondkleur kon niet worden bepaald vanwegen een achtergrondafbeelding",
13
- "bgGradient": "Element's achtergrondkleur kon niet worden bepaald vanwegen een gradient kleur",
14
- "imgNode": "Element's achtergrondkleur kon niet worden bepaald vanwegen een image node",
15
- "bgOverlap": "Element's achtergrondkleur kon niet worden bepaald vanwegen een overlappend element",
16
- "fgAlpha" : "Element's achtergrondkleur kon niet worden bepaald vanwegen alpha transparency",
17
- "default": "Contrastkleur kon niet bepaald worden"
18
- }
19
- }
20
- },
21
- "rules": {
22
- "aria-required-attr": {
23
- "description": "Zorg dat elementen met ARIA rollen (role) de vereiste ARIA attributen hebben",
24
- "help": "Voorzien de vereiste ARIA attributen"
25
- }
26
- },
27
- "failureSummaries": {
28
- "none": {
29
- "failureMessage": "Los al het volgende op:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
30
- },
31
- "any": {
32
- "failureMessage": "Gebruik een van de volgende oplossingen:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
33
- }
34
- },
35
- "incompleteFallbackMessage": "aXe kon de reden niet vertellen. Tijd om de element inspecteur uit te breken!"
36
- }
2
+ "lang": "nl",
3
+ "checks": {
4
+ "abstractrole": {
5
+ "pass": "Er zijn geen abstracte rollen (role) gebruikt",
6
+ "fail": "Gebruik geen abstracte rollen (role)"
7
+ },
8
+ "color-contrast": {
9
+ "pass": "Element heeft voldoende contrast, namelijk {{=it.data.contrastRatio}}",
10
+ "fail": "Element heeft onvoldoende contrast, {{=it.data.contrastRatio}} (Voorgrondkleur: {{=it.data.fgColor}}, achtergrondkleur: {{=it.data.bgColor}}, tekstgrootte: {{=it.data.fontSize}}, tekstdikte: {{=it.data.fontWeight}})",
11
+ "incomplete": {
12
+ "bgImage": "Element's achtergrondkleur kon niet worden bepaald vanwegen een achtergrondafbeelding",
13
+ "bgGradient": "Element's achtergrondkleur kon niet worden bepaald vanwegen een gradient kleur",
14
+ "imgNode": "Element's achtergrondkleur kon niet worden bepaald vanwegen een image node",
15
+ "bgOverlap": "Element's achtergrondkleur kon niet worden bepaald vanwegen een overlappend element",
16
+ "fgAlpha": "Element's achtergrondkleur kon niet worden bepaald vanwegen alpha transparency",
17
+ "default": "Contrastkleur kon niet bepaald worden"
18
+ }
19
+ }
20
+ },
21
+ "rules": {
22
+ "aria-required-attr": {
23
+ "description": "Zorg dat elementen met ARIA rollen (role) de vereiste ARIA attributen hebben",
24
+ "help": "Voorzien de vereiste ARIA attributen"
25
+ }
26
+ },
27
+ "failureSummaries": {
28
+ "none": {
29
+ "failureMessage": "Los al het volgende op:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
30
+ },
31
+ "any": {
32
+ "failureMessage": "Gebruik een van de volgende oplossingen:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
33
+ }
34
+ },
35
+ "incompleteFallbackMessage": "axe kon de reden niet vertellen. Tijd om de element inspecteur uit te breken!"
36
+ }
@@ -0,0 +1,773 @@
1
+ {
2
+ "lang": "pt_BR",
3
+ "rules": {
4
+ "accesskeys": {
5
+ "description": "Certifique-se de que cada valor do atributo 'acesskey' é único",
6
+ "help": "O valor do atributo 'accesskey' deve ser único"
7
+ },
8
+ "area-alt": {
9
+ "description": "Certifique-se de que elementos <area> de mapas de imagem tenham um texto alternativo",
10
+ "help": "Elementos <area> ativos devem ter um texto alternativo"
11
+ },
12
+ "aria-allowed-attr": {
13
+ "description": "Certifique-se de que os atributos ARIA são permitidos para a função de um elemento",
14
+ "help": "Os elementos devem usar apenas atributos ARIA permitidos"
15
+ },
16
+ "aria-allowed-role": {
17
+ "description": "Certifique-se de que o atributo 'role' tem um valor apropriado para o elemento",
18
+ "help": "A função ARIA deve ser apropriada para o elemento"
19
+ },
20
+ "aria-dpub-role-fallback": {
21
+ "description": "Certifique-se de que as funções DPUB não suportadas são usados somente em elementos com funções implícitas (fallback)",
22
+ "help": "As funções DPUB não suportadas devem ser usadas em elementos com funções implícitas (fallback)"
23
+ },
24
+ "aria-hidden-body": {
25
+ "description": "Certifique-se de que aria-hidden='true' não está presente no elemento <body>.",
26
+ "help": "aria-hidden='true' não deve estar presente no elemento <body>"
27
+ },
28
+ "aria-hidden-focus": {
29
+ "description": "Certifique-se de que elementos com aria-hidden não contenham elementos focalizáveis",
30
+ "help": "Elementos ocultados através de ARIA não devem conter elementos focalizáveis"
31
+ },
32
+ "aria-input-field-name": {
33
+ "description": "Certifique-se de que cada campo de entrada ARIA tenha um nome acessível",
34
+ "help": "Campos de entrada ARIA tenham um nome acessível"
35
+ },
36
+ "aria-required-attr": {
37
+ "description": "Certifique-se de que elementos com funções ARIA tenham todos os atributos ARIA necessários",
38
+ "help": "Os atributos ARIA necessários devem ser fornecidos"
39
+ },
40
+ "aria-required-children": {
41
+ "description": "Certifique-se de que elementos com uma função ARIA que requer funções filhas as contenham",
42
+ "help": "Certas funções ARIA devem conter filhos específicos"
43
+ },
44
+ "aria-required-parent": {
45
+ "description": "Certifique-se de que elementos com uma função ARIA que requer funções pais estejam contidas nestas",
46
+ "help": "Certas funções ARIA devem estar contidas em pais específicos"
47
+ },
48
+ "aria-roles": {
49
+ "description": "Certifique-se de que todos os elementos com um atributo 'role' utilizem um valor válido",
50
+ "help": "Os ARIA 'roles' utilizados devem ter valores válidos"
51
+ },
52
+ "aria-toggle-field-name": {
53
+ "description": "Certifique-se de que cada botão de alternância ARIA tenha um nome acessível",
54
+ "help": "Botões de alternância ARIA tenham um nome acessível"
55
+ },
56
+ "aria-valid-attr-value": {
57
+ "description": "Certifique-se de que cada atributo ARIA tenha um valor válido",
58
+ "help": "Atributos ARIA devem ter valores válidos"
59
+ },
60
+ "aria-valid-attr": {
61
+ "description": "Certifique-se de que atributos que se iniciem com aria- são atributos ARIA válidos",
62
+ "help": "Atributos ARIA devem ter nomes válidos"
63
+ },
64
+ "audio-caption": {
65
+ "description": "Certifique-se de que elementos <audio> tenham legendas",
66
+ "help": "Elementos <audio> devem ter uma trilha de legenda"
67
+ },
68
+ "autocomplete-valid": {
69
+ "description": "Certifique-se de que o atributo 'autocomplete' esteja correto e adequado para o campo de formulário",
70
+ "help": "Atributo 'autocomplete' deve ser usado corretamente"
71
+ },
72
+ "avoid-inline-spacing": {
73
+ "description": "Certifique-se de que o espaçamento de texto definido via atributos de estilo pode ser ajustado com folhas de estilo personalizadas",
74
+ "help": "O espaçamento de texto 'inline' deve ser ajustável com folhas de estilo personalizadas"
75
+ },
76
+ "blink": {
77
+ "description": "Certifique-se de que elementos <blink> não são utilizados",
78
+ "help": "Elementos <blink> foram descontinuados e não devem ser utilizados"
79
+ },
80
+ "button-name": {
81
+ "description": "Certifique-se de que botões tenham texto discernível",
82
+ "help": "Botões devem ter texto discernível"
83
+ },
84
+ "bypass": {
85
+ "description": "Certifique-se de que cada página tenha ao menos um mecanismo para o usuário ignorar a navegação e ir direto ao conteúdo",
86
+ "help": "A página deve ter meios para ignorar blocos repetidos"
87
+ },
88
+ "checkboxgroup": {
89
+ "description": "Certifique-se de que elementos <input type=\"checkbox\"> relacionados tenham um grupo e que a designação do grupo seja consistente",
90
+ "help": "Caixas de seleção com o mesmo valor do atributo 'name' devem ser parte de um grupo"
91
+ },
92
+ "color-contrast": {
93
+ "description": "Certifique-se de que o contraste entre as cores de primeiro plano e de fundo atenda aos limites de relação de contraste WCAG 2 AA",
94
+ "help": "Os elementos devem ter contraste de cor suficiente"
95
+ },
96
+ "css-orientation-lock": {
97
+ "description": "Certifique-se de que o conteúdo não está bloqueado para nenhuma orientação de tela específica, e que o mesmo seja operável em todas as orientações de tela",
98
+ "help": "CSS Media queries não são usadas para bloquear a orientação de tela"
99
+ },
100
+ "definition-list": {
101
+ "description": "Certifique-se de que elementos <dl> estão estruturados corretamente",
102
+ "help": "Elementos <dl> devem conter diretamente apenas grupos <dt> e <dd> propriamente ordenados, ou elementos <script> ou <template>"
103
+ },
104
+ "dlitem": {
105
+ "description": "Certifique-se de que elementos <dt> e <dd> estão contidos em um elemento <dl>",
106
+ "help": "Elementos <dt> e <dd> devem estar contidos em um elemento <dl>"
107
+ },
108
+ "document-title": {
109
+ "description": "Certifique-se de que cada documento HTML contenha um elemento <title> não vazio",
110
+ "help": "Documentos devem ter um elemento <title> para ajudar na navegação"
111
+ },
112
+ "duplicate-id-active": {
113
+ "description": "Certifique-se de que cada valor do atributo 'id' de elementos ativos seja único",
114
+ "help": "IDs de elementos ativos devem ser únicos"
115
+ },
116
+ "duplicate-id-aria": {
117
+ "description": "Certifique-se de que cada valor do atributo 'id' usado no ARIA e em rótulos seja único",
118
+ "help": "IDs usados no ARIA e em 'labels' devem ser únicos"
119
+ },
120
+ "duplicate-id": {
121
+ "description": "Certifique-se de que cada valor do atributo 'id' seja único",
122
+ "help": "O valor do atributo 'id' deve ser único"
123
+ },
124
+ "empty-heading": {
125
+ "description": "Certifique-se de que os títulos tenham texto discernível",
126
+ "help": "Os títulos não devem ser vazios"
127
+ },
128
+ "focus-order-semantics": {
129
+ "description": "Certifique-se de que os elementos na ordem de foco tenham uma função apropriada",
130
+ "help": "Elementos na ordem de foco necessitam de uma função apropriada para conteúdo interativo"
131
+ },
132
+ "form-field-multiple-labels": {
133
+ "description": "Certifique-se de que campos de formulários não tenham múltiplos elementos 'label'",
134
+ "help": "Campos de formulário não devem ter múltiplos elementos 'label'"
135
+ },
136
+ "frame-tested": {
137
+ "description": "Certifique-se de que elementos <iframe> e <frame> contenham o script axe-core",
138
+ "help": "Os 'frames' devem ser testados com o axe-core"
139
+ },
140
+ "frame-title-unique": {
141
+ "description": "Certifique-se de que os elementos <iframe> e <frame> contenham um atributo 'title' único",
142
+ "help": "Os 'frames' devem ter um atributo 'title' único"
143
+ },
144
+ "frame-title": {
145
+ "description": "Certifique-se de que os elementos <iframe> e <frame> contenham um atributo 'title' não vazio",
146
+ "help": "Os 'frames' devem ter um atributo 'title'"
147
+ },
148
+ "heading-order": {
149
+ "description": "Certifique-se de que a hierarquia dos níveis de títulos seja semanticamente correta",
150
+ "help": "Níveis dos títulos devem aumentar de um em um"
151
+ },
152
+ "hidden-content": {
153
+ "description": "Informar aos usuários sobre conteúdo oculto.",
154
+ "help": "O conteúdo oculto na página não pode ser analisado"
155
+ },
156
+ "html-has-lang": {
157
+ "description": "Certifique-se de que cada documento HTML tenha um atributo 'lang'",
158
+ "help": "O elemento <html> deve ter um atributo 'lang'"
159
+ },
160
+ "html-lang-valid": {
161
+ "description": "Certifique-se de que o atributo 'lang' do elemento <html> tenha um valor válido",
162
+ "help": "O elemento <html> deve ter um valor válido para o atributo 'lang'"
163
+ },
164
+ "html-xml-lang-mismatch": {
165
+ "description": "Certifique-se de que elementos HTML com ambos os atributos 'lang' e 'xml:lang' válidos concordem entre si sobre o idioma base da página",
166
+ "help": "Elementos HTML com 'lang' e 'xml:lang' devem ter o mesmo idioma base"
167
+ },
168
+ "image-alt": {
169
+ "description": "Certifique-se de que elementos <img> tenham texto alternativo ou um 'role' igual a 'none' ou 'presentation'",
170
+ "help": "Imagens devem ter texto alternativo"
171
+ },
172
+ "image-redundant-alt": {
173
+ "description": "Certifique-se de que a alternativa de imagem não seja repetida como texto",
174
+ "help": "O texto alternativo de imagens não deve ser repetido como texto"
175
+ },
176
+ "input-button-name": {
177
+ "description": "Certifique-se de que botões tenham um texto discernível",
178
+ "help": "Input buttons must have discernible text"
179
+ },
180
+ "input-image-alt": {
181
+ "description": "Certifique-se de que elementos <input type=\"image\"> tenham um texto alternativo",
182
+ "help": "Botões de imagem devem ter um texto alternativo"
183
+ },
184
+ "label-content-name-mismatch": {
185
+ "description": "Certifique-se de que elementos nomeados por meio de seu conteúdo tenham seu texto visível como parte de seu nome acessível",
186
+ "help": "Elementos devem ter seu texto visível como parte de seu nome acessível"
187
+ },
188
+ "label-title-only": {
189
+ "description": "Certifique-se de que cada elemento de formulário não seja rotulado apenas usando os atributos 'title' ou 'aria-describedby'",
190
+ "help": "Elementos de formulário devem ter um rótulo visível"
191
+ },
192
+ "label": {
193
+ "description": "Certifique-se de que cada elemento de formulário tenha um rótulo",
194
+ "help": "Elementos de formulário devem ter rótulos"
195
+ },
196
+ "landmark-banner-is-top-level": {
197
+ "description": "Certifique-se de que a região 'banner' esteja no nível principal",
198
+ "help": "A região 'banner' não deve estar contida em outra região"
199
+ },
200
+ "landmark-complementary-is-top-level": {
201
+ "description": "Certifique-se de que a região 'complementary' ou 'aside' estejam no nível principal",
202
+ "help": "'Aside' não deve estar contido em outra região"
203
+ },
204
+ "landmark-contentinfo-is-top-level": {
205
+ "description": "Certifique-se de que a região 'contentinfo' esteja no nível principal",
206
+ "help": "A região 'contentinfo' não deve estar contida em outra região"
207
+ },
208
+ "landmark-main-is-top-level": {
209
+ "description": "Certifique-se de que a região 'main' esteja no nível principal",
210
+ "help": "A região 'main' não deve estar contida em outra região"
211
+ },
212
+ "landmark-no-duplicate-banner": {
213
+ "description": "Certifique-se de que o documento tenha no máximo uma região 'banner'",
214
+ "help": "O documento não deve ter mais do que uma região 'banner'"
215
+ },
216
+ "landmark-no-duplicate-contentinfo": {
217
+ "description": "Certifique-se de que o documento tenha no máximo uma região 'contentinfo'",
218
+ "help": "O documento não deve ter mais do que uma região 'contentinfo'"
219
+ },
220
+ "landmark-one-main": {
221
+ "description": "Certifique-se de que o documento tenha apenas uma região 'main' e que cada 'iframe' na página tenha no náximo uma região 'main'",
222
+ "help": "O documento deve ter uma região 'main'"
223
+ },
224
+ "landmark-unique": {
225
+ "help": "Certifique-se de que as regiões são únicas",
226
+ "description": "As regiões devem ter um 'role' ou combinação de 'role'/'label'/'title' (ou seja, um nome acessível) únicos"
227
+ },
228
+ "layout-table": {
229
+ "description": "Certifique-se de que elementos <table> de apresentação não usem elementos <th>, <caption> ou o atributo 'summary'",
230
+ "help": "Tabelas de apresentação não devem usar elementos de tabela de dados"
231
+ },
232
+ "link-in-text-block": {
233
+ "description": "Links podem ser distinguidos sem depender da cor",
234
+ "help": "Links devem ser distinguidos do texto ao redor de uma maneira que não dependa da cor"
235
+ },
236
+ "link-name": {
237
+ "description": "Certifique-se de que links tenham um texto discernível",
238
+ "help": "Links devem ter um texto discernível"
239
+ },
240
+ "list": {
241
+ "description": "Certifique-se de que listas sejam estruturadas corretamente",
242
+ "help": "Elementos <ul> e <ol> devem conter diretamente apenas elementos <li>, <script> ou <template>"
243
+ },
244
+ "listitem": {
245
+ "description": "Certifique-se de que elementos <li> são usados semanticamente",
246
+ "help": "Elementos <li> devem estar contidos em um <ul> ou <ol>"
247
+ },
248
+ "marquee": {
249
+ "description": "Certifique-se de que elementos <marquee> não são utilizados",
250
+ "help": "Elementos <marquee> foram descontinuados e não devem ser utilizados"
251
+ },
252
+ "meta-refresh": {
253
+ "description": "Certifique-se de que <meta http-equiv=\"refresh\"> não é utilizado",
254
+ "help": "Atualização temporizada não deve existir"
255
+ },
256
+ "meta-viewport-large": {
257
+ "description": "Certifique-se de que <meta name=\"viewport\"> permite ampliar de maneira significativa",
258
+ "help": "Os usuários devem poder dar zoom e ampliar o texto em até 500%"
259
+ },
260
+ "meta-viewport": {
261
+ "description": "Certifique-se de que <meta name=\"viewport\"> não desabilite a ampliação de texto e o zoom",
262
+ "help": "O zoom e a ampliação de texto não devem ser desabilitados"
263
+ },
264
+ "object-alt": {
265
+ "description": "Certifique-se de que elementos <object> tenham um texto alternativo",
266
+ "help": "Elementos <object> devem ter um texto alternativo"
267
+ },
268
+ "p-as-heading": {
269
+ "description": "Certifique-se de que elementos <p> não sejam utilizados para estilizar títulos",
270
+ "help": "Negrito, itálico e 'font-size' não sejam utilizados para estilizar elementos <p> como um título"
271
+ },
272
+ "page-has-heading-one": {
273
+ "description": "Certifique-se de que a página, ou pelo menos um dos seus 'frames', contenha um título de primeiro nível",
274
+ "help": "A página deve conter um título de primeiro nível"
275
+ },
276
+ "radiogroup": {
277
+ "description": "Certifique-se de que elementos <input type=\"radio\"> relacionados tenham o mesmo grupo e que o nome do grupo é consistente",
278
+ "help": "Entradas do tipo 'botão de rádio' com o mesmo valor para o atributo 'name' devem ser parte de um grupo"
279
+ },
280
+ "region": {
281
+ "description": "Certifique-se de todo o conteúdo da página esteja contido em regiões (landmarks)",
282
+ "help": "Todo o conteúdo da página deve estar contido em regiões (landmarks)"
283
+ },
284
+ "role-img-alt": {
285
+ "description": "Certifique-se de que elementos com [role='img'] tenham texto alternativo",
286
+ "help": "Elementos com [role='img'] tenham um texto alternativo"
287
+ },
288
+ "scope-attr-valid": {
289
+ "description": "Certifique-se de que o atributo 'scope' é utilizado corretamente em tabelas",
290
+ "help": "O atributo 'scope' deve ser utilizado corretamente"
291
+ },
292
+ "scrollable-region-focusable": {
293
+ "description": "Elementos que tenham conteúdo rolável devem ser acessíveis via teclado",
294
+ "help": "Certificar-se de que regiões roláveis tenham acesso via teclado"
295
+ },
296
+ "server-side-image-map": {
297
+ "description": "Certifique-se de que mapas de imagem do lado do servidor não são utilizados",
298
+ "help": "Mapas de imagem do lado do servidor não devem ser utilizados"
299
+ },
300
+ "skip-link": {
301
+ "description": "Certifique-se de que todos os links de escape tenham um destino focalizável",
302
+ "help": "O destino de um link de escape deve existir e ser focalizável"
303
+ },
304
+ "tabindex": {
305
+ "description": "Certifique-se de que os valores do atributo 'tabindex' não são maiores do que 0",
306
+ "help": "Elementos não devem ter um 'tabindex' maior do que zero"
307
+ },
308
+ "table-duplicate-name": {
309
+ "description": "Certifique-se de que tabelas não tenham 'summary' e <caption> iguais",
310
+ "help": "O elemento <caption> não deve conter o mesmo texto que o atributo 'summary'"
311
+ },
312
+ "table-fake-caption": {
313
+ "description": "Certifique-se de que tabelas com uma legenda usem o elemento <caption>.",
314
+ "help": "Células de dados ou cabeçalhos não devem ser usadas para exibir uma legenda para uma tabela de dados."
315
+ },
316
+ "td-has-header": {
317
+ "description": "Certifique-se de que cada célula de dados não vazia em uma tabela grande tenha um ou mais cabeçalhos",
318
+ "help": "Todos os elementos 'td' não vazios em uma tabela maior que 3 por 3 devem ter um cabeçalho associado"
319
+ },
320
+ "td-headers-attr": {
321
+ "description": "Certifique-se de que cada célula em uma tabela usando o atributo 'headers' se refira a outra célula nesta tabela",
322
+ "help": "Todas as células em uma tabela que utilizem o atributo 'headers' devem se referir apenas a outras células desta mesma tabela"
323
+ },
324
+ "th-has-data-cells": {
325
+ "description": "Certifique-se de cada cabeçalho em uma tabela de dados se refira a células de dados",
326
+ "help": "Todos os elementos 'th' e elementos com role=columnheader/rowheader devem ter células de dados que eles descrevem"
327
+ },
328
+ "valid-lang": {
329
+ "description": "Certifique-se de que os atributos 'lang' tenham valores válidos",
330
+ "help": "O atributo 'lang' deve ter um valor válido"
331
+ },
332
+ "video-caption": {
333
+ "description": "Certifique-se de que elementos <video> tenham legendas",
334
+ "help": "Elementos <video> devem ter legendas"
335
+ },
336
+ "video-description": {
337
+ "description": "Certifique-se de que elementos <video> tenham descrição de áudio",
338
+ "help": "Elementos <video> devem ter uma faixa de áudio de descrição"
339
+ }
340
+ },
341
+ "checks": {
342
+ "abstractrole": {
343
+ "pass": "As funções abstratas não são utilizadas",
344
+ "fail": "As funções abstratas não podem ser utilizadas diretamente"
345
+ },
346
+ "aria-allowed-attr": {
347
+ "pass": "Atributos ARIA são usados corretamente para a função definida",
348
+ "fail": "{{=it.data && it.data.length > 1 ? 'Os atributos ARIA não são permitidos' : 'O atributo ARIA não é permitido'}}: {{~it.data:value}} {{=value}}{{~}}"
349
+ },
350
+ "aria-allowed-role": {
351
+ "pass": "O ARIA 'role' é permitido para o elemento dado",
352
+ "fail": "{{=it.data && it.data.length > 1 ? 'Os ARIA roles' : 'O ARIA role'}} {{=it.data.join(', ')}} {{=it.data && it.data.length > 1 ? 'não são permitidos' : ' não é permitido'}} para o elemento dado",
353
+ "incomplete": "{{=it.data && it.data.length > 1 ? 'Os ARIA roles' : 'O ARIA role'}} {{=it.data.join(', ')}} {{=it.data && it.data.length > 1 ? 'devem ser removidos' : 'deve ser removido'}} quando o elemento é tornado visível, uma vez que {{=it.data && it.data.length > 1 ? 'eles não são permitodos' : 'ele não é permitido'}} para o elemento"
354
+ },
355
+ "aria-hidden-body": {
356
+ "pass": "Nenhum atributo 'aria-hidden' está presente no elemento <body>",
357
+ "fail": "'aria-hidden=true' não deve estar presente no elemento <body>"
358
+ },
359
+ "aria-errormessage": {
360
+ "pass": "Usa uma técnica de 'aria-errormessage' suportada",
361
+ "fail": "{{=it.data && it.data.length > 1 ? 'Os valores do aria-errormessage devem' : 'O valor do aria-errormessage deve'}} {{~it.data:value}} `{{=value}}{{~}}` usar uma técnica para anunciar a mensagem (ex.: aria-live, aria-describedby, role=alert, etc.)"
362
+ },
363
+ "has-widget-role": {
364
+ "pass": "Elemento tem um 'role' de 'widget'.",
365
+ "fail": "Elemento não tem um 'role' de 'widget'."
366
+ },
367
+ "implicit-role-fallback": {
368
+ "pass": "A função ARIA implícita do elemento é um 'fallback' apropriado",
369
+ "fail": "A função ARIA implícita do elemento não é um bom 'fallback' para esta função (não suportada)"
370
+ },
371
+ "invalidrole": {
372
+ "pass": "O ARIA 'role' é válido",
373
+ "fail": "O 'role' deve ser um dos ARIA 'roles' válidos"
374
+ },
375
+ "no-implicit-explicit-label": {
376
+ "pass": "Não há nenhuma divergência entre <label> e o nome acessível",
377
+ "incomplete": "Verifique se o <label> não precisa fazer parte do nome do campo ARIA {{=it.data}}"
378
+ },
379
+ "aria-required-attr": {
380
+ "pass": "Todos os atributos ARIA necessários estão presentes",
381
+ "fail": "{{=it.data && it.data.length > 1 ? 'Os atributos ARIA necessários não estão presentes' : 'O atributo ARIA necessário não está presente'}}: {{~it.data:value}} {{=value}}{{~}}"
382
+ },
383
+ "aria-required-children": {
384
+ "pass": "Os ARIA filhos necessários estão presentes",
385
+ "fail": "{{=it.data && it.data.length > 1 ? 'As funções ARIA filhas necessárias não estão presentes' : 'A função ARIA filha necessária está presente'}}: {{~it.data:value}} {{=value}}{{~}}",
386
+ "incomplete": "{{=it.data && it.data.length > 1 ? 'As funções ARIA filhas a serem adicionadas' : 'A função ARIA filha a ser adicionada'}}:{{~it.data:value}} {{=value}}{{~}}"
387
+ },
388
+ "aria-required-parent": {
389
+ "pass": "A função ARIA pai necessária está presente",
390
+ "fail": "{{=it.data && it.data.length > 1 ? 'As funções ARIA pais necessárias não estão presentes' : 'A função ARIA necessária não está presente'}}: {{~it.data:value}} {{=value}}{{~}}"
391
+ },
392
+ "aria-unsupported-attr": {
393
+ "pass": "O atributo ARIA é suportado",
394
+ "fail": "O atributo ARIA não é amplamente suportado em leitores de tela e tecnologias assistivas: {{~it.data:value}} {{=value}}{{~}}"
395
+ },
396
+ "unsupportedrole": {
397
+ "pass": "O ARIA 'role' é suportado",
398
+ "fail": "O 'role' usado não é amplamente suportado em leitores de tela e tecnologias assistivas: {{~it.data:value}} {{=value}}{{~}}"
399
+ },
400
+ "aria-valid-attr-value": {
401
+ "pass": "Os valores dos atributos ARIA são válidos",
402
+ "fail": "{{=it.data && it.data.length > 1 ? 'Valores dos atributos ARIA inválidos' : 'Valor do atributo ARIA inválido'}}: {{~it.data:value}} {{=value}}{{~}}",
403
+ "incomplete": "{{=it.data && it.data.length > 1 ? 'Os IDs dos elementos dos atributos ARIA não existem' : 'O ID do elemento do atributo ARIA não existe'}} na página: {{~it.data:value}} {{=value}}{{~}}"
404
+ },
405
+ "aria-valid-attr": {
406
+ "pass": "{{=it.data && it.data.length > 1 ? 'Os nomes dos atributos ARIA são válidos' : 'O nome do atributo ARIA é valido'}}",
407
+ "fail": "{{=it.data && it.data.length > 1 ? 'Nomes dos atributos ARIA inválidos' : 'Nome do atributo ARIA inválido'}}:{{~it.data:value}} {{=value}}{{~}}"
408
+ },
409
+ "valid-scrollable-semantics": {
410
+ "pass": "O elemento possui semântica válida para um elemento na ordem de foco.",
411
+ "fail": "O elemento possui semântica inválida para um elemento na ordem de foco."
412
+ },
413
+ "color-contrast": {
414
+ "pass": "O elemento tem contraste suficiente no valor de {{=it.data.contrastRatio}}",
415
+ "fail": "O elemento tem contraste insuficiente no valor de {{=it.data.contrastRatio}} (cor do primeiro plano: {{=it.data.fgColor}}, cor de fundo: {{=it.data.bgColor}}, tamanho da fonte: {{=it.data.fontSize}}, normal/negrito: {{=it.data.fontWeight}}). Contraste esperado no valor de {{=it.data.expectedContrastRatio}}",
416
+ "incomplete": {
417
+ "bgImage": "A cor de fundo do elemento não pôde ser determinada devido a uma imagem de fundo",
418
+ "bgGradient": "A cor de fundo do elemento não pôde ser determinada devido a um gradiente de fundo",
419
+ "imgNode": "A cor de fundo do elemento não pôde ser determinada porque o elemento contém um nó de imagem",
420
+ "bgOverlap": "A cor de fundo do elemento não pôde ser determinada porque está sobreposta por outro elemento",
421
+ "fgAlpha": "A cor do primeiro plano do elemento não pôde ser determinada devido à transparência alfa",
422
+ "elmPartiallyObscured": "A cor de fundo do elemento não pôde ser determinada porque está parcialmente obscurecida por outro elemento",
423
+ "elmPartiallyObscuring": "A cor de fundo do elemento não pôde ser determinada porque está parcialmente sobreposta a outros elementos",
424
+ "outsideViewport": "A cor de fundo do elemento não pôde ser determinada porque está fora da 'viewport'",
425
+ "equalRatio": "O elemento tem um contraste de 1:1 com plano de fundo",
426
+ "shortTextContent": "O conteúdo do elemento é muito curto para determinar se é conteúdo de texto real",
427
+ "default": "Impossível determinar o contraste"
428
+ }
429
+ },
430
+ "link-in-text-block": {
431
+ "pass": "Links pode ser distinguidos do texto ao redor de outra maneira além da cor",
432
+ "fail": "Links precisam ser distinguidos do texto ao redor de outra maneira além da cor",
433
+ "incomplete": {
434
+ "bgContrast": "O contraste do elemento não pôde ser determinado. Verifique se há um estilo distinto para 'hover'/'focus'.",
435
+ "bgImage": "O contraste do elemento não pôde ser determinado devido a uma imagem de fundo",
436
+ "bgGradient": "O contraste do elemento não pôde ser determinado devido a um gradiente de fundo",
437
+ "imgNode": "O contraste do elemento não pôde ser determinado porque o elemento contém um nó de imagem",
438
+ "bgOverlap": "O contraste do elemento não pôde ser determinado devido a uma sobreposição do elemento",
439
+ "default": "Impossível determinar o contraste"
440
+ }
441
+ },
442
+ "autocomplete-appropriate": {
443
+ "pass": "o valor 'autocomplete' está em um elemento apropriado",
444
+ "fail": "o valor 'autocomplete' está em um elemento inapropriado para este tipo de entrada"
445
+ },
446
+ "autocomplete-valid": {
447
+ "pass": "o atributo 'autocomplete' está corretamente formatado",
448
+ "fail": "o atributo 'autocomplete' está incorretamente formatado"
449
+ },
450
+ "fieldset": {
451
+ "pass": "O elemento está contido em um 'fieldset'",
452
+ "fail": "{{var code = it.data && it.data.failureCode;}}{{? code === 'no-legend'}}O 'fieldset' não tem um 'legend' como seu primeiro filho{{?? code === 'empty-legend'}}O 'legend' não tem texto visível para leitores de tela{{?? code === 'mixed-inputs'}}O 'fieldset' contém entradas não relacionadas{{?? code === 'no-group-label'}}O ARIA 'group' não tem 'aria-label' ou 'aria-labelledby'{{?? code === 'group-mixed-inputs'}}O ARIA 'group' contém entradas não relacionadas{{??}}O elemento não está contido em um 'fieldset' ou ARIA 'group'{{?}}"
453
+ },
454
+ "group-labelledby": {
455
+ "pass": "Os elementos com o nome \"{{=it.data.name}}\" possuem tanto um 'label' compartilhado, como um 'label' único, referenciados através do 'aria-labelledby'",
456
+ "fail": "{{var code = it.data && it.data.failureCode;}}Elementos com o nome \"{{=it.data.name}}\" não possuem todos {{? code === 'no-shared-label' }}um 'label' compartilhado{{?? code === 'no-unique-label' }}um 'label' único{{??}}tanto um 'label' compartilhado, quanto um 'label' único{{?}}, referenciados através do 'aria-labelledby'"
457
+ },
458
+ "accesskeys": {
459
+ "pass": "O valor do atributo 'accesskey' é único",
460
+ "fail": "O documento tem múltiplos elementos com a mesma 'accesskey'"
461
+ },
462
+ "focusable-content": {
463
+ "pass": "O elemento contém elementos focalizáveis",
464
+ "fail": "O elemento deveria ter conteúdo focalizável"
465
+ },
466
+ "focusable-disabled": {
467
+ "pass": "Nenhum elemento focalizável contido no elemento",
468
+ "fail": "Conteúdo focalizável deve ser desabilitado ou removido do DOM"
469
+ },
470
+ "focusable-element": {
471
+ "pass": "O elemento é focalizável",
472
+ "fail": "O elemento deveria ser focalizável"
473
+ },
474
+ "focusable-no-name": {
475
+ "pass": "O elemento não está na ordem de tabulação ou tem texto acessível",
476
+ "fail": "O elemento está na ordem de tabulação e não tem nome acessível"
477
+ },
478
+ "focusable-not-tabbable": {
479
+ "pass": "Nenhum elemento focalizável contido no elemento",
480
+ "fail": "Conteúdo focalizável deve ter tabindex='-1' ou ser removido do DOM"
481
+ },
482
+ "landmark-is-top-level": {
483
+ "pass": "A região {{=it.data.role }} está no nível principal.",
484
+ "fail": "A região {{=it.data.role }} está contida em outra região."
485
+ },
486
+ "page-has-heading-one": {
487
+ "pass": "A página tem pelo menos um título de primeiro nível",
488
+ "fail": "A página deve ter pelo menos um título de primeiro nível"
489
+ },
490
+ "page-has-main": {
491
+ "pass": "O documento tem pelo menos uma região 'main'",
492
+ "fail": "O documento não tem uma região 'main'"
493
+ },
494
+ "page-no-duplicate-banner": {
495
+ "pass": "O documento não tem mais de uma região 'banner'",
496
+ "fail": "O documento tem mais de uma região 'banner'"
497
+ },
498
+ "page-no-duplicate-contentinfo": {
499
+ "pass": "O documento não tem mais de uma região 'contentinfo'",
500
+ "fail": "O documento tem mais de uma região 'contenteinfo'"
501
+ },
502
+ "page-no-duplicate-main": {
503
+ "pass": "O documento não tem mais de uma região 'main'",
504
+ "fail": "O documento tem mais de uma região 'main'"
505
+ },
506
+ "tabindex": {
507
+ "pass": "O elemento não tem um 'tabindex' maior do que 0",
508
+ "fail": "O elemento tem um 'tabindex' maior do que 0"
509
+ },
510
+ "alt-space-value": {
511
+ "pass": "O elemento tem um valor válido para o atributo 'alt'",
512
+ "fail": "O elemento tem um atributo 'alt' contendo apenas um caracter de espaço, o que não é ignorado por todos os leitores de tela"
513
+ },
514
+ "duplicate-img-label": {
515
+ "pass": "O elemento não duplica um texto existente no atributo 'alt' do elemento <img>",
516
+ "fail": "O elemento contém o elemento <img> com texto alternativo duplicando um texto existente"
517
+ },
518
+ "explicit-label": {
519
+ "pass": "O elemento de formulário tem um <label> explícito",
520
+ "fail": "O elemento de formulário não tem um <label> explícito"
521
+ },
522
+ "help-same-as-label": {
523
+ "pass": "O texto de ajuda ('title' ou 'aria-describedby') não duplica o texto do rótulo",
524
+ "fail": "O texto de ajuda ('title' ou 'aria-describedby') é o igual ao texto do rótulo"
525
+ },
526
+ "hidden-explicit-label": {
527
+ "pass": "O elemento de formulário tem um <label> explícito visível",
528
+ "fail": "O elemento de formulário tem um <label> explícito que está oculto"
529
+ },
530
+ "implicit-label": {
531
+ "pass": "O elemento de formulário tem um <label> implícito (envolvido)",
532
+ "fail": "O elemento de formulário não tem <label> implícito (envolvido)"
533
+ },
534
+ "label-content-name-mismatch": {
535
+ "pass": "O elemento contém o texto visível como parte do seu nome acessível",
536
+ "fail": "O texto dentro do elemento não está incluído no nome acessível"
537
+ },
538
+ "multiple-label": {
539
+ "pass": "O campo de formulário não tem múltiplos elementos <label>",
540
+ "fail": "O uso de múltiplos elementos <label> não é amplamente suportado nas tecnologias assistivas"
541
+ },
542
+ "title-only": {
543
+ "pass": "Elementos de formulário não usam somente o atributo 'title' como seu rótulo",
544
+ "fail": "Apenas 'title' usado para gerar o rótulo do elemento de formulário"
545
+ },
546
+ "landmark-is-unique": {
547
+ "pass": "As regiões devem ter um 'role' ou combinação de 'role'/'label'/'title' (ou seja, nome acessível) únicos",
548
+ "fail": "A região deve ter um 'aria-label', 'aria-labelledby', ou 'title' único para tornar as regiões distinguíveis"
549
+ },
550
+ "has-lang": {
551
+ "pass": "O elemento <html> tem um atributo 'lang'",
552
+ "fail": "O elemento <html> não tem um atributo 'lang'"
553
+ },
554
+ "valid-lang": {
555
+ "pass": "O valor do atributo 'lang' está incluso na lista de idiomas válidos",
556
+ "fail": "O valor do atributo 'lang' não está incluso na lista de idiomas válidos"
557
+ },
558
+ "xml-lang-mismatch": {
559
+ "pass": "Os atributos 'lang' e 'xml:lang' têm o mesmo idioma base",
560
+ "fail": "Os atributos 'lang' e 'xml:lang' não têm o mesmo idioma base"
561
+ },
562
+ "dlitem": {
563
+ "pass": "O item da lista de descrição tem um elemento pai <dl>",
564
+ "fail": "O item da lista de descrição não tem um elemente pai <dl>"
565
+ },
566
+ "listitem": {
567
+ "pass": "O item de lista tem um elemento pai <ul>, <ol> ou role=\"list\"",
568
+ "fail": "O item de lista não tem um elemento pai <ul>, <ol> ou role=\"list\""
569
+ },
570
+ "only-dlitems": {
571
+ "pass": "O elemento de lista tem somente filhos diretos que são permitidos dentro de elementos <dt> ou <dd>",
572
+ "fail": "O elemento de lista tem filhos diretos que não são permitidos dentro de elementos <dt> ou <dd>"
573
+ },
574
+ "only-listitems": {
575
+ "pass": "O elemento de lista tem somente filhos diretos que são permitidos dentro de elementos <li>",
576
+ "fail": "O elemento de lista tem filhos diretos que não são permitidos dentro de elemento <li>"
577
+ },
578
+ "structured-dlitems": {
579
+ "pass": "Quando não vazio, o elemento tem ambos elementos <dt> e <dd>",
580
+ "fail": "Quando não vazio, o elemento não tem nem ao menos um elemento <dt> seguindo de pelo menos um elemento <dd>"
581
+ },
582
+ "caption": {
583
+ "pass": "O elemento multimídia tem uma trilha de legendas",
584
+ "incomplete": "Verifique se legendas estão disponíveis para o elemento"
585
+ },
586
+ "description": {
587
+ "pass": "O elemento multimídia tem uma trilha de audiodescrição",
588
+ "incomplete": "Verifique se a audiodescrição está disponível para o elemento"
589
+ },
590
+ "frame-tested": {
591
+ "pass": "O 'iframe' foi testado com o 'axe-core'",
592
+ "fail": "O 'iframe' não pôde ser testado com o 'axe-core'",
593
+ "incomplete": "O 'iframe' ainda tem que ser testado com o 'axe-core'"
594
+ },
595
+ "css-orientation-lock": {
596
+ "pass": "A tela é operável, e o bloqueio da orientação não existe",
597
+ "fail": "Bloqueio de orientação CSS aplicado, o que torna a tela inoperável",
598
+ "incomplete": "Bloqueio de orientação CSS não pode ser determinado"
599
+ },
600
+ "meta-viewport-large": {
601
+ "pass": "A tag <meta> não impede o zoom significativo em dispositivos móveis",
602
+ "fail": "A tag <meta> limita o zoom em dispositivos móveis"
603
+ },
604
+ "meta-viewport": {
605
+ "pass": "A tag <meta> não desabilita o zoom em dispositivos móveis",
606
+ "fail": "{{=it.data}} na tag <meta> desabilita o zoom em dispositivos móveis"
607
+ },
608
+ "header-present": {
609
+ "pass": "A página tem um cabeçalho (header)",
610
+ "fail": "A página não tem um cabeçalho (header)"
611
+ },
612
+ "heading-order": {
613
+ "pass": "Hierarquia de títulos válida",
614
+ "fail": "Hierarquia de títulos inválida"
615
+ },
616
+ "internal-link-present": {
617
+ "pass": "Link de escape válido encontrado",
618
+ "fail": "Nenhum link de escape válido encontrado"
619
+ },
620
+ "landmark": {
621
+ "pass": "A página tem uma região (landmark)",
622
+ "fail": "A página não tem nenhuma região (landmark)"
623
+ },
624
+ "meta-refresh": {
625
+ "pass": "A tag <meta> não atualiza a página imediatamente",
626
+ "fail": "A tag <meta> força atualizações temporizadas da página"
627
+ },
628
+ "p-as-heading": {
629
+ "pass": "Elementos <p> não são estilizados como títulos",
630
+ "fail": "Elementos de título devem ser utilizados no lugar de elementos <p> estilizados"
631
+ },
632
+ "region": {
633
+ "pass": "Todo o conteúdo da página está contido em regiões (landmarks)",
634
+ "fail": "Algum conteúdo da página não está contido em regiões (landmarks)"
635
+ },
636
+ "skip-link": {
637
+ "pass": "Destino do link de escape existe",
638
+ "incomplete": "Destino do link de escape deve se tornar visível na ativação",
639
+ "fail": "Nenhum destino para o link de escape"
640
+ },
641
+ "unique-frame-title": {
642
+ "pass": "O atributo 'title' do elemento é único",
643
+ "fail": "O atributo 'title' do elemento não é único"
644
+ },
645
+ "duplicate-id-active": {
646
+ "pass": "O documento não tem elementos ativos que compartilham o mesmo atributo 'id'",
647
+ "fail": "O documento tem elementos ativos com o mesmo atributo 'id': {{=it.data}}"
648
+ },
649
+ "duplicate-id-aria": {
650
+ "pass": "O documento não tem elementos referenciados com ARIA ou rótulos que compartilham o mesmo atributo 'id'",
651
+ "fail": "O documento tem múltiplos elementos referenciados com ARIA com o mesmo atributo 'id': {{=it.data}}"
652
+ },
653
+ "duplicate-id": {
654
+ "pass": "O documento não tem elementos estáticos que compartilham o mesmo atributo 'id'",
655
+ "fail": "O documento tem múltiplos elementos estáticos com o mesmo atributo 'id'"
656
+ },
657
+ "aria-label": {
658
+ "pass": "O atributo 'aria-label' existe e não está vazio",
659
+ "fail": "O atributo 'aria-label' não existe ou está vazio"
660
+ },
661
+ "aria-labelledby": {
662
+ "pass": "O atributo 'aria-labelledby' existe e referencia elementos que são visíveis aos leitores de tela",
663
+ "fail": "O atributo 'aria-labelledby' não existe, referencia elementos que não existem ou são vazios"
664
+ },
665
+ "avoid-inline-spacing": {
666
+ "pass": "Nenhum estilo 'inline' com '!important' que afete o espaçamento do texto foi especificado",
667
+ "fail": "Remova a regra '!important' {{=it.data && it.data.length > 1 ? 'dos estilos inline' : 'do estilo inline'}} {{=it.data.join(', ')}}, uma vez que a sua sobreposição não é suportada pela maioria dos navegadores"
668
+ },
669
+ "button-has-visible-text": {
670
+ "pass": "O elemento tem texto interno que é visível aos leitores de tela",
671
+ "fail": "O elemento não tem texto interno que seja visível aos leitores de tela"
672
+ },
673
+ "doc-has-title": {
674
+ "pass": "O documento tem um elemento <title> não vazio",
675
+ "fail": "O documento não tem um elemento <title> não vazio"
676
+ },
677
+ "exists": {
678
+ "pass": "O elemento não existe",
679
+ "fail": "O elemento existe"
680
+ },
681
+ "has-alt": {
682
+ "pass": "O elemento tem um atributo 'alt'",
683
+ "fail": "O elemento não tem um atributo 'alt'"
684
+ },
685
+ "has-visible-text": {
686
+ "pass": "O elemento tem texto que é visível aos leitores de tela",
687
+ "fail": "O elemento não tem texto que seja visível aos leitores de tela"
688
+ },
689
+ "is-on-screen": {
690
+ "pass": "O elemento não é visível",
691
+ "fail": "O elemento é visível"
692
+ },
693
+ "non-empty-alt": {
694
+ "pass": "O elemento tem um atributo 'alt' não vazio",
695
+ "fail": "O elemento não tem um atributo 'alt' ou ele está vazio"
696
+ },
697
+ "non-empty-if-present": {
698
+ "pass": "O elemento {{?it.data}}tem um atributo 'value' não vazio{{??}}não tem um atributo 'value'{{?}}",
699
+ "fail": "O elemento tem um atributo 'value' e ele está vazio"
700
+ },
701
+ "non-empty-title": {
702
+ "pass": "O elemento tem um atributo 'title'",
703
+ "fail": "O elemento não tem um atributo 'title' ou ele está vazio"
704
+ },
705
+ "non-empty-value": {
706
+ "pass": "O elemento tem um atributo 'value' não vazio",
707
+ "fail": "O elemento não tem um atributo 'value' ou ele está vazio"
708
+ },
709
+ "role-none": {
710
+ "pass": "A semântica padrão do elemento foi sobrescrita com role=\"none\"",
711
+ "fail": "A semântica padrão do elemento não foi sobrescrita com role=\"none\""
712
+ },
713
+ "role-presentation": {
714
+ "pass": "A semântica padrão do elemento foi sobrescrita com role=\"presentation\"",
715
+ "fail": "A semântica padrão do elemento não foi sobrescrita com role=\"presentation\""
716
+ },
717
+ "caption-faked": {
718
+ "pass": "A primeira linha de uma tabela não é usada como legenda",
719
+ "fail": "O primeiro elemento da tabela deve ser um <caption> em vez de uma célula da tabela"
720
+ },
721
+ "has-caption": {
722
+ "pass": "A tabela de layout não usa o elemento <caption>",
723
+ "fail": "A tabela de layout usa o elemento <caption>"
724
+ },
725
+ "has-summary": {
726
+ "pass": "A tabela de layout não usa o atributo 'summary'",
727
+ "fail": "A tabela de layout usa o atributo 'summary'"
728
+ },
729
+ "has-th": {
730
+ "pass": "A tabela de layout não usa elementos <th>",
731
+ "fail": "A tabela de layout usa elementos <th>"
732
+ },
733
+ "html5-scope": {
734
+ "pass": "O atributo 'scope' só é utilizado em elementos de cabeçalho de tabela (<th>)",
735
+ "fail": "No HTML 5, os atributos 'scope' só devem ser utilizados em elementos de cabeçalho de tabela (<th>)"
736
+ },
737
+ "same-caption-summary": {
738
+ "pass": "O conteúdo do atributo 'summary' e <caption> não estão duplicados",
739
+ "fail": "O conteúdo do atributo 'summary' e <caption> são idênticos"
740
+ },
741
+ "scope-value": {
742
+ "pass": "O atributo 'scope' é usado corretamente",
743
+ "fail": "O valor do atributo 'scope' pode ser apenas 'row' ou 'col'"
744
+ },
745
+ "td-has-header": {
746
+ "pass": "Todos as células de dados não vazias possuem cabeçalhos",
747
+ "fail": "Algumas células de dados não vazias não possuem cabeçalho"
748
+ },
749
+ "td-headers-attr": {
750
+ "pass": "O atributo 'headers' é usado exclusivamente para referenciar outras células da tabela",
751
+ "fail": "O atributo 'headers' não é usado exclusivamente para referenciar outras células da tabela"
752
+ },
753
+ "th-has-data-cells": {
754
+ "pass": "Todas as células de cabeçalho da tabela se referem a células de dados",
755
+ "fail": "Nem todas as células de cabeçalho da tabela se referem a células de dados",
756
+ "incomplete": "Células de dados da tabela estão ausentes ou vazias"
757
+ },
758
+ "hidden-content": {
759
+ "pass": "Todo o conteúdo da página foi analisado.",
760
+ "fail": "Houve problemas ao analisar o conteúdo desta página.",
761
+ "incomplete": "Existe conteúdo oculto na página que não foi analisado. Será preciso provocar a exibição deste conteúdo para poder analisá-lo."
762
+ }
763
+ },
764
+ "failureSummaries": {
765
+ "any": {
766
+ "failureMessage": "Corrija qualquer um dos itens a seguir:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
767
+ },
768
+ "none": {
769
+ "failureMessage": "Corrija todos os itens a seguir:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
770
+ }
771
+ },
772
+ "incompleteFallbackMessage": "Corrija todos os itens a seguir:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
773
+ }