govuk_publishing_components 21.16.3 → 21.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
+ }