govuk_publishing_components 30.4.1 → 30.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (651) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-core.js +20 -0
  3. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-event-tracker.js +63 -51
  4. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-link-tracker.js +8 -8
  5. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-page-views.js +11 -10
  6. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/init-ga4.js +27 -0
  7. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4.js +2 -3
  8. data/app/assets/stylesheets/govuk_publishing_components/components/_organisation-logo.scss +2 -4
  9. data/app/views/govuk_publishing_components/component_guide/show.html.erb +28 -27
  10. data/config/locales/en.yml +8 -8
  11. data/lib/govuk_publishing_components/version.rb +1 -1
  12. data/node_modules/axe-core/README.md +83 -53
  13. data/node_modules/axe-core/axe.d.ts +403 -224
  14. data/node_modules/axe-core/axe.js +23281 -21919
  15. data/node_modules/axe-core/axe.min.js +3 -3
  16. data/node_modules/axe-core/locales/da.json +795 -780
  17. data/node_modules/axe-core/locales/de.json +932 -621
  18. data/node_modules/axe-core/locales/es.json +786 -771
  19. data/node_modules/axe-core/locales/eu.json +787 -0
  20. data/node_modules/axe-core/locales/fr.json +982 -840
  21. data/node_modules/axe-core/locales/ja.json +988 -880
  22. data/node_modules/axe-core/locales/ko.json +999 -775
  23. data/node_modules/axe-core/locales/nl.json +46 -34
  24. data/node_modules/axe-core/locales/pl.json +965 -0
  25. data/node_modules/axe-core/locales/pt_BR.json +966 -880
  26. data/node_modules/axe-core/package.json +189 -145
  27. data/node_modules/axe-core/sri-history.json +312 -192
  28. data/node_modules/govuk-frontend/govuk/all.js +64 -44
  29. data/node_modules/govuk-frontend/govuk/components/accordion/_index.scss +1 -1
  30. data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js +3 -13
  31. data/node_modules/govuk-frontend/govuk/components/accordion/fixtures.json +12 -12
  32. data/node_modules/govuk-frontend/govuk/components/accordion/template.njk +5 -1
  33. data/node_modules/govuk-frontend/govuk/components/character-count/fixtures.json +1 -1
  34. data/node_modules/govuk-frontend/govuk/components/details/details.js +8 -20
  35. data/node_modules/govuk-frontend/govuk/components/details/macro-options.json +6 -0
  36. data/node_modules/govuk-frontend/govuk/components/details/template.njk +1 -1
  37. data/node_modules/govuk-frontend/govuk/components/error-message/fixtures.json +9 -0
  38. data/node_modules/govuk-frontend/govuk/components/error-summary/macro-options.json +6 -0
  39. data/node_modules/govuk-frontend/govuk/components/error-summary/template.njk +2 -2
  40. data/node_modules/govuk-frontend/govuk/components/footer/fixtures.json +59 -20
  41. data/node_modules/govuk-frontend/govuk/components/footer/macro-options.json +40 -0
  42. data/node_modules/govuk-frontend/govuk/components/footer/template.njk +17 -7
  43. data/node_modules/govuk-frontend/govuk/components/header/_index.scss +14 -21
  44. data/node_modules/govuk-frontend/govuk/components/header/fixtures.json +11 -11
  45. data/node_modules/govuk-frontend/govuk/components/header/header.js +53 -11
  46. data/node_modules/govuk-frontend/govuk/components/header/macro-options.json +2 -2
  47. data/node_modules/govuk-frontend/govuk/components/header/template.njk +1 -1
  48. data/node_modules/govuk-frontend/govuk/components/input/_index.scss +9 -10
  49. data/node_modules/govuk-frontend/govuk/components/inset-text/macro-options.json +6 -0
  50. data/node_modules/govuk-frontend/govuk/components/inset-text/template.njk +1 -1
  51. data/node_modules/govuk-frontend/govuk/components/notification-banner/macro-options.json +6 -0
  52. data/node_modules/govuk-frontend/govuk/components/notification-banner/template.njk +2 -2
  53. data/node_modules/govuk-frontend/govuk/components/panel/macro-options.json +6 -0
  54. data/node_modules/govuk-frontend/govuk/components/panel/template.njk +2 -2
  55. data/node_modules/govuk-frontend/govuk/components/select/_index.scss +6 -0
  56. data/node_modules/govuk-frontend/govuk/components/select/fixtures.json +15 -1
  57. data/node_modules/govuk-frontend/govuk/components/summary-list/_index.scss +37 -10
  58. data/node_modules/govuk-frontend/govuk/components/summary-list/fixtures.json +69 -4
  59. data/node_modules/govuk-frontend/govuk/components/summary-list/template.njk +3 -3
  60. data/node_modules/govuk-frontend/govuk/components/tabs/fixtures.json +13 -13
  61. data/node_modules/govuk-frontend/govuk/components/tabs/template.njk +5 -1
  62. data/node_modules/govuk-frontend/govuk/helpers/_typography.scss +14 -7
  63. data/node_modules/govuk-frontend/govuk/overrides/_spacing.scss +56 -12
  64. data/node_modules/govuk-frontend/govuk/settings/_spacing.scss +4 -8
  65. data/node_modules/govuk-frontend/govuk/template.njk +5 -5
  66. data/node_modules/govuk-frontend/govuk-esm/components/accordion/accordion.mjs +3 -13
  67. data/node_modules/govuk-frontend/govuk-esm/components/details/details.mjs +8 -20
  68. data/node_modules/govuk-frontend/govuk-esm/components/header/header.mjs +53 -11
  69. data/node_modules/govuk-frontend/package.json +1 -1
  70. metadata +7 -584
  71. data/node_modules/axe-core/CHANGELOG.md +0 -1053
  72. data/node_modules/axe-core/CONTRIBUTING.md +0 -187
  73. data/node_modules/axe-core/bower.json +0 -40
  74. data/node_modules/axe-core/doc/API.md +0 -889
  75. data/node_modules/axe-core/doc/accessibility-supported.md +0 -33
  76. data/node_modules/axe-core/doc/act-rules-format.md +0 -37
  77. data/node_modules/axe-core/doc/aria-supported.md +0 -13
  78. data/node_modules/axe-core/doc/backwards-compatibility-doc.md +0 -94
  79. data/node_modules/axe-core/doc/check-message-template.md +0 -124
  80. data/node_modules/axe-core/doc/code-submission-guidelines.md +0 -178
  81. data/node_modules/axe-core/doc/developer-guide.md +0 -514
  82. data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/README.md +0 -13
  83. data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/axe-cdp.js +0 -81
  84. data/node_modules/axe-core/doc/examples/chrome-debugging-protocol/package.json +0 -11
  85. data/node_modules/axe-core/doc/examples/html-handlebars.md +0 -164
  86. data/node_modules/axe-core/doc/examples/jasmine/README.md +0 -35
  87. data/node_modules/axe-core/doc/examples/jasmine/karma.conf.js +0 -29
  88. data/node_modules/axe-core/doc/examples/jasmine/package.json +0 -21
  89. data/node_modules/axe-core/doc/examples/jasmine/spec/a11y.js +0 -36
  90. data/node_modules/axe-core/doc/examples/jest_react/README.md +0 -41
  91. data/node_modules/axe-core/doc/examples/jest_react/link.js +0 -7
  92. data/node_modules/axe-core/doc/examples/jest_react/link.test.js +0 -24
  93. data/node_modules/axe-core/doc/examples/jest_react/package.json +0 -28
  94. data/node_modules/axe-core/doc/examples/jest_react/test-helpers.js +0 -21
  95. data/node_modules/axe-core/doc/examples/jsdom/package.json +0 -15
  96. data/node_modules/axe-core/doc/examples/mocha/README.md +0 -35
  97. data/node_modules/axe-core/doc/examples/mocha/karma.conf.js +0 -29
  98. data/node_modules/axe-core/doc/examples/mocha/package.json +0 -22
  99. data/node_modules/axe-core/doc/examples/phantomjs/README.md +0 -17
  100. data/node_modules/axe-core/doc/examples/phantomjs/axe-phantom.js +0 -53
  101. data/node_modules/axe-core/doc/examples/phantomjs/package.json +0 -19
  102. data/node_modules/axe-core/doc/examples/puppeteer/README.md +0 -12
  103. data/node_modules/axe-core/doc/examples/puppeteer/axe-puppeteer.js +0 -60
  104. data/node_modules/axe-core/doc/examples/puppeteer/package.json +0 -13
  105. data/node_modules/axe-core/doc/examples/qunit/README.md +0 -37
  106. data/node_modules/axe-core/doc/examples/qunit/package.json +0 -21
  107. data/node_modules/axe-core/doc/examples/test-examples.js +0 -32
  108. data/node_modules/axe-core/doc/plugins.md +0 -123
  109. data/node_modules/axe-core/doc/projects.md +0 -48
  110. data/node_modules/axe-core/doc/rule-descriptions.md +0 -129
  111. data/node_modules/axe-core/doc/rule-development.md +0 -123
  112. data/node_modules/axe-core/doc/rule-proposal.md +0 -106
  113. data/node_modules/axe-core/lib/checks/aria/abstractrole.js +0 -10
  114. data/node_modules/axe-core/lib/checks/aria/abstractrole.json +0 -14
  115. data/node_modules/axe-core/lib/checks/aria/allowed-attr.js +0 -39
  116. data/node_modules/axe-core/lib/checks/aria/allowed-attr.json +0 -14
  117. data/node_modules/axe-core/lib/checks/aria/aria-allowed-role.js +0 -28
  118. data/node_modules/axe-core/lib/checks/aria/aria-allowed-role.json +0 -22
  119. data/node_modules/axe-core/lib/checks/aria/aria-hidden-body.js +0 -1
  120. data/node_modules/axe-core/lib/checks/aria/aria-hidden-body.json +0 -11
  121. data/node_modules/axe-core/lib/checks/aria/aria-roledescription.js +0 -14
  122. data/node_modules/axe-core/lib/checks/aria/aria-roledescription.json +0 -23
  123. data/node_modules/axe-core/lib/checks/aria/errormessage.js +0 -33
  124. data/node_modules/axe-core/lib/checks/aria/errormessage.json +0 -14
  125. data/node_modules/axe-core/lib/checks/aria/fallbackrole.js +0 -1
  126. data/node_modules/axe-core/lib/checks/aria/fallbackrole.json +0 -11
  127. data/node_modules/axe-core/lib/checks/aria/has-widget-role.js +0 -6
  128. data/node_modules/axe-core/lib/checks/aria/has-widget-role.json +0 -12
  129. data/node_modules/axe-core/lib/checks/aria/implicit-role-fallback.js +0 -6
  130. data/node_modules/axe-core/lib/checks/aria/implicit-role-fallback.json +0 -12
  131. data/node_modules/axe-core/lib/checks/aria/invalidrole.js +0 -17
  132. data/node_modules/axe-core/lib/checks/aria/invalidrole.json +0 -14
  133. data/node_modules/axe-core/lib/checks/aria/no-implicit-explicit-label.js +0 -21
  134. data/node_modules/axe-core/lib/checks/aria/no-implicit-explicit-label.json +0 -11
  135. data/node_modules/axe-core/lib/checks/aria/required-attr.js +0 -53
  136. data/node_modules/axe-core/lib/checks/aria/required-attr.json +0 -14
  137. data/node_modules/axe-core/lib/checks/aria/required-children.js +0 -154
  138. data/node_modules/axe-core/lib/checks/aria/required-children.json +0 -32
  139. data/node_modules/axe-core/lib/checks/aria/required-parent.js +0 -87
  140. data/node_modules/axe-core/lib/checks/aria/required-parent.json +0 -14
  141. data/node_modules/axe-core/lib/checks/aria/unsupportedattr.js +0 -39
  142. data/node_modules/axe-core/lib/checks/aria/unsupportedattr.json +0 -11
  143. data/node_modules/axe-core/lib/checks/aria/unsupportedrole.js +0 -1
  144. data/node_modules/axe-core/lib/checks/aria/unsupportedrole.json +0 -11
  145. data/node_modules/axe-core/lib/checks/aria/valid-attr-value.js +0 -80
  146. data/node_modules/axe-core/lib/checks/aria/valid-attr-value.json +0 -19
  147. data/node_modules/axe-core/lib/checks/aria/valid-attr.js +0 -25
  148. data/node_modules/axe-core/lib/checks/aria/valid-attr.json +0 -15
  149. data/node_modules/axe-core/lib/checks/aria/valid-scrollable-semantics.js +0 -62
  150. data/node_modules/axe-core/lib/checks/aria/valid-scrollable-semantics.json +0 -12
  151. data/node_modules/axe-core/lib/checks/color/color-contrast.js +0 -86
  152. data/node_modules/axe-core/lib/checks/color/color-contrast.json +0 -30
  153. data/node_modules/axe-core/lib/checks/color/link-in-text-block.js +0 -85
  154. data/node_modules/axe-core/lib/checks/color/link-in-text-block.json +0 -19
  155. data/node_modules/axe-core/lib/checks/forms/autocomplete-appropriate.js +0 -67
  156. data/node_modules/axe-core/lib/checks/forms/autocomplete-appropriate.json +0 -11
  157. data/node_modules/axe-core/lib/checks/forms/autocomplete-valid.js +0 -2
  158. data/node_modules/axe-core/lib/checks/forms/autocomplete-valid.json +0 -11
  159. data/node_modules/axe-core/lib/checks/forms/fieldset-after.js +0 -25
  160. data/node_modules/axe-core/lib/checks/forms/fieldset.js +0 -109
  161. data/node_modules/axe-core/lib/checks/forms/fieldset.json +0 -20
  162. data/node_modules/axe-core/lib/checks/forms/group-labelledby-after.js +0 -16
  163. data/node_modules/axe-core/lib/checks/forms/group-labelledby.js +0 -66
  164. data/node_modules/axe-core/lib/checks/forms/group-labelledby.json +0 -17
  165. data/node_modules/axe-core/lib/checks/keyboard/accesskeys-after.js +0 -19
  166. data/node_modules/axe-core/lib/checks/keyboard/accesskeys.js +0 -5
  167. data/node_modules/axe-core/lib/checks/keyboard/accesskeys.json +0 -12
  168. data/node_modules/axe-core/lib/checks/keyboard/focusable-content.js +0 -16
  169. data/node_modules/axe-core/lib/checks/keyboard/focusable-content.json +0 -11
  170. data/node_modules/axe-core/lib/checks/keyboard/focusable-disabled.js +0 -30
  171. data/node_modules/axe-core/lib/checks/keyboard/focusable-disabled.json +0 -11
  172. data/node_modules/axe-core/lib/checks/keyboard/focusable-element.js +0 -12
  173. data/node_modules/axe-core/lib/checks/keyboard/focusable-element.json +0 -11
  174. data/node_modules/axe-core/lib/checks/keyboard/focusable-modal-open.js +0 -14
  175. data/node_modules/axe-core/lib/checks/keyboard/focusable-modal-open.json +0 -11
  176. data/node_modules/axe-core/lib/checks/keyboard/focusable-no-name.js +0 -6
  177. data/node_modules/axe-core/lib/checks/keyboard/focusable-no-name.json +0 -11
  178. data/node_modules/axe-core/lib/checks/keyboard/focusable-not-tabbable.js +0 -30
  179. data/node_modules/axe-core/lib/checks/keyboard/focusable-not-tabbable.json +0 -11
  180. data/node_modules/axe-core/lib/checks/keyboard/landmark-is-top-level.js +0 -18
  181. data/node_modules/axe-core/lib/checks/keyboard/landmark-is-top-level.json +0 -11
  182. data/node_modules/axe-core/lib/checks/keyboard/page-has-elm-after.js +0 -11
  183. data/node_modules/axe-core/lib/checks/keyboard/page-has-elm.js +0 -13
  184. data/node_modules/axe-core/lib/checks/keyboard/page-has-heading-one.json +0 -15
  185. data/node_modules/axe-core/lib/checks/keyboard/page-has-main.json +0 -15
  186. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-after.js +0 -2
  187. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-banner.json +0 -16
  188. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-contentinfo.json +0 -16
  189. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-main.json +0 -15
  190. data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate.js +0 -36
  191. data/node_modules/axe-core/lib/checks/keyboard/tabindex.js +0 -6
  192. data/node_modules/axe-core/lib/checks/keyboard/tabindex.json +0 -11
  193. data/node_modules/axe-core/lib/checks/label/alt-space-value.js +0 -3
  194. data/node_modules/axe-core/lib/checks/label/alt-space-value.json +0 -11
  195. data/node_modules/axe-core/lib/checks/label/duplicate-img-label.js +0 -22
  196. data/node_modules/axe-core/lib/checks/label/duplicate-img-label.json +0 -11
  197. data/node_modules/axe-core/lib/checks/label/explicit.js +0 -15
  198. data/node_modules/axe-core/lib/checks/label/explicit.json +0 -11
  199. data/node_modules/axe-core/lib/checks/label/help-same-as-label.js +0 -23
  200. data/node_modules/axe-core/lib/checks/label/help-same-as-label.json +0 -12
  201. data/node_modules/axe-core/lib/checks/label/hidden-explicit-label.js +0 -12
  202. data/node_modules/axe-core/lib/checks/label/hidden-explicit-label.json +0 -11
  203. data/node_modules/axe-core/lib/checks/label/implicit.js +0 -7
  204. data/node_modules/axe-core/lib/checks/label/implicit.json +0 -11
  205. data/node_modules/axe-core/lib/checks/label/label-content-name-mismatch.js +0 -59
  206. data/node_modules/axe-core/lib/checks/label/label-content-name-mismatch.json +0 -15
  207. data/node_modules/axe-core/lib/checks/label/multiple-label.js +0 -39
  208. data/node_modules/axe-core/lib/checks/label/multiple-label.json +0 -11
  209. data/node_modules/axe-core/lib/checks/label/title-only.js +0 -5
  210. data/node_modules/axe-core/lib/checks/label/title-only.json +0 -11
  211. data/node_modules/axe-core/lib/checks/landmarks/landmark-is-unique-after.js +0 -23
  212. data/node_modules/axe-core/lib/checks/landmarks/landmark-is-unique.js +0 -7
  213. data/node_modules/axe-core/lib/checks/landmarks/landmark-is-unique.json +0 -12
  214. data/node_modules/axe-core/lib/checks/language/has-lang.js +0 -20
  215. data/node_modules/axe-core/lib/checks/language/has-lang.json +0 -14
  216. data/node_modules/axe-core/lib/checks/language/valid-lang.js +0 -26
  217. data/node_modules/axe-core/lib/checks/language/valid-lang.json +0 -11
  218. data/node_modules/axe-core/lib/checks/language/xml-lang-mismatch.js +0 -5
  219. data/node_modules/axe-core/lib/checks/language/xml-lang-mismatch.json +0 -11
  220. data/node_modules/axe-core/lib/checks/lists/dlitem.js +0 -23
  221. data/node_modules/axe-core/lib/checks/lists/dlitem.json +0 -11
  222. data/node_modules/axe-core/lib/checks/lists/listitem.js +0 -21
  223. data/node_modules/axe-core/lib/checks/lists/listitem.json +0 -14
  224. data/node_modules/axe-core/lib/checks/lists/only-dlitems.js +0 -42
  225. data/node_modules/axe-core/lib/checks/lists/only-dlitems.json +0 -11
  226. data/node_modules/axe-core/lib/checks/lists/only-listitems.js +0 -58
  227. data/node_modules/axe-core/lib/checks/lists/only-listitems.json +0 -14
  228. data/node_modules/axe-core/lib/checks/lists/structured-dlitems.js +0 -22
  229. data/node_modules/axe-core/lib/checks/lists/structured-dlitems.json +0 -11
  230. data/node_modules/axe-core/lib/checks/media/caption.js +0 -8
  231. data/node_modules/axe-core/lib/checks/media/caption.json +0 -11
  232. data/node_modules/axe-core/lib/checks/media/description.js +0 -8
  233. data/node_modules/axe-core/lib/checks/media/description.json +0 -11
  234. data/node_modules/axe-core/lib/checks/media/frame-tested.js +0 -28
  235. data/node_modules/axe-core/lib/checks/media/frame-tested.json +0 -15
  236. data/node_modules/axe-core/lib/checks/media/no-autoplay-audio.js +0 -93
  237. data/node_modules/axe-core/lib/checks/media/no-autoplay-audio.json +0 -15
  238. data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.js +0 -251
  239. data/node_modules/axe-core/lib/checks/mobile/css-orientation-lock.json +0 -15
  240. data/node_modules/axe-core/lib/checks/mobile/meta-viewport-large.json +0 -15
  241. data/node_modules/axe-core/lib/checks/mobile/meta-viewport-scale.js +0 -55
  242. data/node_modules/axe-core/lib/checks/mobile/meta-viewport.json +0 -14
  243. data/node_modules/axe-core/lib/checks/navigation/header-present.js +0 -4
  244. data/node_modules/axe-core/lib/checks/navigation/header-present.json +0 -11
  245. data/node_modules/axe-core/lib/checks/navigation/heading-order-after.js +0 -14
  246. data/node_modules/axe-core/lib/checks/navigation/heading-order.js +0 -15
  247. data/node_modules/axe-core/lib/checks/navigation/heading-order.json +0 -12
  248. data/node_modules/axe-core/lib/checks/navigation/identical-links-same-purpose-after.js +0 -100
  249. data/node_modules/axe-core/lib/checks/navigation/identical-links-same-purpose.js +0 -31
  250. data/node_modules/axe-core/lib/checks/navigation/identical-links-same-purpose.json +0 -12
  251. data/node_modules/axe-core/lib/checks/navigation/internal-link-present.js +0 -4
  252. data/node_modules/axe-core/lib/checks/navigation/internal-link-present.json +0 -11
  253. data/node_modules/axe-core/lib/checks/navigation/landmark.js +0 -3
  254. data/node_modules/axe-core/lib/checks/navigation/landmark.json +0 -11
  255. data/node_modules/axe-core/lib/checks/navigation/meta-refresh.js +0 -4
  256. data/node_modules/axe-core/lib/checks/navigation/meta-refresh.json +0 -11
  257. data/node_modules/axe-core/lib/checks/navigation/p-as-heading.js +0 -93
  258. data/node_modules/axe-core/lib/checks/navigation/p-as-heading.json +0 -30
  259. data/node_modules/axe-core/lib/checks/navigation/region.js +0 -107
  260. data/node_modules/axe-core/lib/checks/navigation/region.json +0 -11
  261. data/node_modules/axe-core/lib/checks/navigation/skip-link.js +0 -5
  262. data/node_modules/axe-core/lib/checks/navigation/skip-link.json +0 -12
  263. data/node_modules/axe-core/lib/checks/navigation/unique-frame-title-after.js +0 -9
  264. data/node_modules/axe-core/lib/checks/navigation/unique-frame-title.js +0 -6
  265. data/node_modules/axe-core/lib/checks/navigation/unique-frame-title.json +0 -12
  266. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-active.json +0 -12
  267. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-after.js +0 -8
  268. data/node_modules/axe-core/lib/checks/parsing/duplicate-id-aria.json +0 -12
  269. data/node_modules/axe-core/lib/checks/parsing/duplicate-id.js +0 -17
  270. data/node_modules/axe-core/lib/checks/parsing/duplicate-id.json +0 -12
  271. data/node_modules/axe-core/lib/checks/shared/aria-label.js +0 -2
  272. data/node_modules/axe-core/lib/checks/shared/aria-label.json +0 -11
  273. data/node_modules/axe-core/lib/checks/shared/aria-labelledby.js +0 -2
  274. data/node_modules/axe-core/lib/checks/shared/aria-labelledby.json +0 -11
  275. data/node_modules/axe-core/lib/checks/shared/avoid-inline-spacing.js +0 -18
  276. data/node_modules/axe-core/lib/checks/shared/avoid-inline-spacing.json +0 -14
  277. data/node_modules/axe-core/lib/checks/shared/button-has-visible-text.js +0 -12
  278. data/node_modules/axe-core/lib/checks/shared/button-has-visible-text.json +0 -11
  279. data/node_modules/axe-core/lib/checks/shared/doc-has-title.js +0 -2
  280. data/node_modules/axe-core/lib/checks/shared/doc-has-title.json +0 -11
  281. data/node_modules/axe-core/lib/checks/shared/exists.js +0 -1
  282. data/node_modules/axe-core/lib/checks/shared/exists.json +0 -11
  283. data/node_modules/axe-core/lib/checks/shared/has-alt.js +0 -6
  284. data/node_modules/axe-core/lib/checks/shared/has-alt.json +0 -11
  285. data/node_modules/axe-core/lib/checks/shared/has-visible-text.js +0 -1
  286. data/node_modules/axe-core/lib/checks/shared/has-visible-text.json +0 -11
  287. data/node_modules/axe-core/lib/checks/shared/is-on-screen.js +0 -4
  288. data/node_modules/axe-core/lib/checks/shared/is-on-screen.json +0 -11
  289. data/node_modules/axe-core/lib/checks/shared/non-empty-alt.js +0 -2
  290. data/node_modules/axe-core/lib/checks/shared/non-empty-alt.json +0 -11
  291. data/node_modules/axe-core/lib/checks/shared/non-empty-if-present.js +0 -15
  292. data/node_modules/axe-core/lib/checks/shared/non-empty-if-present.json +0 -14
  293. data/node_modules/axe-core/lib/checks/shared/non-empty-title.js +0 -2
  294. data/node_modules/axe-core/lib/checks/shared/non-empty-title.json +0 -11
  295. data/node_modules/axe-core/lib/checks/shared/non-empty-value.js +0 -2
  296. data/node_modules/axe-core/lib/checks/shared/non-empty-value.json +0 -11
  297. data/node_modules/axe-core/lib/checks/shared/role-none.js +0 -1
  298. data/node_modules/axe-core/lib/checks/shared/role-none.json +0 -11
  299. data/node_modules/axe-core/lib/checks/shared/role-presentation.js +0 -1
  300. data/node_modules/axe-core/lib/checks/shared/role-presentation.json +0 -11
  301. data/node_modules/axe-core/lib/checks/shared/svg-non-empty-title.js +0 -4
  302. data/node_modules/axe-core/lib/checks/shared/svg-non-empty-title.json +0 -11
  303. data/node_modules/axe-core/lib/checks/tables/caption-faked.js +0 -10
  304. data/node_modules/axe-core/lib/checks/tables/caption-faked.json +0 -11
  305. data/node_modules/axe-core/lib/checks/tables/has-caption.js +0 -1
  306. data/node_modules/axe-core/lib/checks/tables/has-caption.json +0 -12
  307. data/node_modules/axe-core/lib/checks/tables/has-summary.js +0 -1
  308. data/node_modules/axe-core/lib/checks/tables/has-summary.json +0 -12
  309. data/node_modules/axe-core/lib/checks/tables/has-th.js +0 -31
  310. data/node_modules/axe-core/lib/checks/tables/has-th.json +0 -12
  311. data/node_modules/axe-core/lib/checks/tables/headers-visible-text.js +0 -30
  312. data/node_modules/axe-core/lib/checks/tables/html5-scope.js +0 -5
  313. data/node_modules/axe-core/lib/checks/tables/html5-scope.json +0 -11
  314. data/node_modules/axe-core/lib/checks/tables/same-caption-summary.js +0 -7
  315. data/node_modules/axe-core/lib/checks/tables/same-caption-summary.json +0 -11
  316. data/node_modules/axe-core/lib/checks/tables/scope-value.js +0 -5
  317. data/node_modules/axe-core/lib/checks/tables/scope-value.json +0 -11
  318. data/node_modules/axe-core/lib/checks/tables/td-has-header.js +0 -30
  319. data/node_modules/axe-core/lib/checks/tables/td-has-header.json +0 -11
  320. data/node_modules/axe-core/lib/checks/tables/td-headers-attr.js +0 -61
  321. data/node_modules/axe-core/lib/checks/tables/td-headers-attr.json +0 -12
  322. data/node_modules/axe-core/lib/checks/tables/th-has-data-cells.js +0 -76
  323. data/node_modules/axe-core/lib/checks/tables/th-has-data-cells.json +0 -12
  324. data/node_modules/axe-core/lib/checks/tables/th-single-row-column.js +0 -39
  325. data/node_modules/axe-core/lib/checks/visibility/hidden-content.js +0 -21
  326. data/node_modules/axe-core/lib/checks/visibility/hidden-content.json +0 -12
  327. data/node_modules/axe-core/lib/commons/aria/arialabel-text.js +0 -18
  328. data/node_modules/axe-core/lib/commons/aria/arialabelledby-text.js +0 -52
  329. data/node_modules/axe-core/lib/commons/aria/attributes.js +0 -45
  330. data/node_modules/axe-core/lib/commons/aria/get-element-unallowed-roles.js +0 -113
  331. data/node_modules/axe-core/lib/commons/aria/get-owned-virtual.js +0 -24
  332. data/node_modules/axe-core/lib/commons/aria/get-role.js +0 -44
  333. data/node_modules/axe-core/lib/commons/aria/index.js +0 -2424
  334. data/node_modules/axe-core/lib/commons/aria/is-accessible-ref.js +0 -59
  335. data/node_modules/axe-core/lib/commons/aria/is-aria-role-allowed-on-element.js +0 -41
  336. data/node_modules/axe-core/lib/commons/aria/is-unsupported-role.js +0 -14
  337. data/node_modules/axe-core/lib/commons/aria/label-virtual.js +0 -54
  338. data/node_modules/axe-core/lib/commons/aria/named-from-contents.js +0 -39
  339. data/node_modules/axe-core/lib/commons/aria/roles.js +0 -208
  340. data/node_modules/axe-core/lib/commons/aria/validate-attr-value.js +0 -62
  341. data/node_modules/axe-core/lib/commons/color/center-point-of-rect.js +0 -30
  342. data/node_modules/axe-core/lib/commons/color/contrast.js +0 -178
  343. data/node_modules/axe-core/lib/commons/color/element-has-image.js +0 -36
  344. data/node_modules/axe-core/lib/commons/color/element-is-distinct.js +0 -88
  345. data/node_modules/axe-core/lib/commons/color/get-background-color.js +0 -285
  346. data/node_modules/axe-core/lib/commons/color/get-foreground-color.js +0 -61
  347. data/node_modules/axe-core/lib/commons/color/get-own-background-color.js +0 -22
  348. data/node_modules/axe-core/lib/commons/color/incomplete-data.js +0 -50
  349. data/node_modules/axe-core/lib/commons/color/index.js +0 -8
  350. data/node_modules/axe-core/lib/commons/dom/elements-below-floating.js +0 -39
  351. data/node_modules/axe-core/lib/commons/dom/find-elms-in-context.js +0 -28
  352. data/node_modules/axe-core/lib/commons/dom/find-up.js +0 -63
  353. data/node_modules/axe-core/lib/commons/dom/get-composed-parent.js +0 -25
  354. data/node_modules/axe-core/lib/commons/dom/get-element-by-reference.js +0 -34
  355. data/node_modules/axe-core/lib/commons/dom/get-element-coordinates.js +0 -38
  356. data/node_modules/axe-core/lib/commons/dom/get-element-stack.js +0 -589
  357. data/node_modules/axe-core/lib/commons/dom/get-root-node.js +0 -12
  358. data/node_modules/axe-core/lib/commons/dom/get-scroll-offset.js +0 -33
  359. data/node_modules/axe-core/lib/commons/dom/get-tabbable-elements.js +0 -24
  360. data/node_modules/axe-core/lib/commons/dom/get-viewport-size.js +0 -37
  361. data/node_modules/axe-core/lib/commons/dom/has-content-virtual.js +0 -75
  362. data/node_modules/axe-core/lib/commons/dom/idrefs.js +0 -36
  363. data/node_modules/axe-core/lib/commons/dom/index.js +0 -9
  364. data/node_modules/axe-core/lib/commons/dom/is-focusable.js +0 -95
  365. data/node_modules/axe-core/lib/commons/dom/is-hidden-with-css.js +0 -73
  366. data/node_modules/axe-core/lib/commons/dom/is-html5.js +0 -17
  367. data/node_modules/axe-core/lib/commons/dom/is-in-text-block.js +0 -94
  368. data/node_modules/axe-core/lib/commons/dom/is-modal-open.js +0 -98
  369. data/node_modules/axe-core/lib/commons/dom/is-node.js +0 -13
  370. data/node_modules/axe-core/lib/commons/dom/is-offscreen.js +0 -62
  371. data/node_modules/axe-core/lib/commons/dom/is-skip-link.js +0 -45
  372. data/node_modules/axe-core/lib/commons/dom/is-visible.js +0 -176
  373. data/node_modules/axe-core/lib/commons/dom/is-visual-content.js +0 -49
  374. data/node_modules/axe-core/lib/commons/dom/shadow-elements-from-point.js +0 -42
  375. data/node_modules/axe-core/lib/commons/dom/url-props-from-attribute.js +0 -152
  376. data/node_modules/axe-core/lib/commons/dom/visually-contains.js +0 -111
  377. data/node_modules/axe-core/lib/commons/dom/visually-overlaps.js +0 -46
  378. data/node_modules/axe-core/lib/commons/forms/index.js +0 -8
  379. data/node_modules/axe-core/lib/commons/forms/is-aria-combobox.js +0 -13
  380. data/node_modules/axe-core/lib/commons/forms/is-aria-listbox.js +0 -13
  381. data/node_modules/axe-core/lib/commons/forms/is-aria-range.js +0 -14
  382. data/node_modules/axe-core/lib/commons/forms/is-aria-textbox.js +0 -13
  383. data/node_modules/axe-core/lib/commons/forms/is-native-select.js +0 -13
  384. data/node_modules/axe-core/lib/commons/forms/is-native-textbox.js +0 -28
  385. data/node_modules/axe-core/lib/commons/index.js +0 -11
  386. data/node_modules/axe-core/lib/commons/intro.stub +0 -1
  387. data/node_modules/axe-core/lib/commons/matches/attributes.js +0 -27
  388. data/node_modules/axe-core/lib/commons/matches/condition.js +0 -19
  389. data/node_modules/axe-core/lib/commons/matches/from-definition.js +0 -52
  390. data/node_modules/axe-core/lib/commons/matches/from-function.js +0 -38
  391. data/node_modules/axe-core/lib/commons/matches/from-primative.js +0 -30
  392. data/node_modules/axe-core/lib/commons/matches/index.js +0 -39
  393. data/node_modules/axe-core/lib/commons/matches/node-name.js +0 -24
  394. data/node_modules/axe-core/lib/commons/matches/properties.js +0 -28
  395. data/node_modules/axe-core/lib/commons/outro.stub +0 -2
  396. data/node_modules/axe-core/lib/commons/table/get-all-cells.js +0 -28
  397. data/node_modules/axe-core/lib/commons/table/get-cell-position.js +0 -28
  398. data/node_modules/axe-core/lib/commons/table/get-headers.js +0 -79
  399. data/node_modules/axe-core/lib/commons/table/get-scope.js +0 -54
  400. data/node_modules/axe-core/lib/commons/table/index.js +0 -9
  401. data/node_modules/axe-core/lib/commons/table/is-column-header.js +0 -13
  402. data/node_modules/axe-core/lib/commons/table/is-data-cell.js +0 -22
  403. data/node_modules/axe-core/lib/commons/table/is-data-table.js +0 -189
  404. data/node_modules/axe-core/lib/commons/table/is-header.js +0 -22
  405. data/node_modules/axe-core/lib/commons/table/is-row-header.js +0 -13
  406. data/node_modules/axe-core/lib/commons/table/to-grid.js +0 -38
  407. data/node_modules/axe-core/lib/commons/table/traverse.js +0 -78
  408. data/node_modules/axe-core/lib/commons/text/accessible-text-virtual.js +0 -152
  409. data/node_modules/axe-core/lib/commons/text/form-control-value.js +0 -192
  410. data/node_modules/axe-core/lib/commons/text/index.js +0 -8
  411. data/node_modules/axe-core/lib/commons/text/is-human-interpretable.js +0 -51
  412. data/node_modules/axe-core/lib/commons/text/is-icon-ligature.js +0 -210
  413. data/node_modules/axe-core/lib/commons/text/is-valid-autocomplete.js +0 -117
  414. data/node_modules/axe-core/lib/commons/text/label-text.js +0 -58
  415. data/node_modules/axe-core/lib/commons/text/label-virtual.js +0 -53
  416. data/node_modules/axe-core/lib/commons/text/native-element-types.js +0 -100
  417. data/node_modules/axe-core/lib/commons/text/native-text-alternative.js +0 -50
  418. data/node_modules/axe-core/lib/commons/text/native-text-methods.js +0 -122
  419. data/node_modules/axe-core/lib/commons/text/sanitize.js +0 -18
  420. data/node_modules/axe-core/lib/commons/text/subtree-text.js +0 -89
  421. data/node_modules/axe-core/lib/commons/text/title-text.js +0 -33
  422. data/node_modules/axe-core/lib/commons/text/unicode.js +0 -147
  423. data/node_modules/axe-core/lib/commons/text/unsupported.js +0 -5
  424. data/node_modules/axe-core/lib/commons/text/visible-text-nodes.js +0 -25
  425. data/node_modules/axe-core/lib/commons/text/visible-virtual.js +0 -46
  426. data/node_modules/axe-core/lib/commons/utils/index.js +0 -10
  427. data/node_modules/axe-core/lib/core/base/audit.js +0 -781
  428. data/node_modules/axe-core/lib/core/base/cache.js +0 -33
  429. data/node_modules/axe-core/lib/core/base/check-result.js +0 -33
  430. data/node_modules/axe-core/lib/core/base/check.js +0 -170
  431. data/node_modules/axe-core/lib/core/base/context.js +0 -274
  432. data/node_modules/axe-core/lib/core/base/rule-result.js +0 -39
  433. data/node_modules/axe-core/lib/core/base/rule.js +0 -560
  434. data/node_modules/axe-core/lib/core/base/virtual-node/abstract-virtual-node.js +0 -40
  435. data/node_modules/axe-core/lib/core/base/virtual-node/serial-virtual-node.js +0 -88
  436. data/node_modules/axe-core/lib/core/base/virtual-node/virtual-node.js +0 -136
  437. data/node_modules/axe-core/lib/core/constants.js +0 -76
  438. data/node_modules/axe-core/lib/core/imports/index.js +0 -51
  439. data/node_modules/axe-core/lib/core/index.js +0 -43
  440. data/node_modules/axe-core/lib/core/log.js +0 -12
  441. data/node_modules/axe-core/lib/core/public/cleanup-plugins.js +0 -53
  442. data/node_modules/axe-core/lib/core/public/configure.js +0 -110
  443. data/node_modules/axe-core/lib/core/public/get-rules.js +0 -29
  444. data/node_modules/axe-core/lib/core/public/load.js +0 -66
  445. data/node_modules/axe-core/lib/core/public/plugins.js +0 -47
  446. data/node_modules/axe-core/lib/core/public/reporter.js +0 -24
  447. data/node_modules/axe-core/lib/core/public/reset.js +0 -12
  448. data/node_modules/axe-core/lib/core/public/run-rules.js +0 -96
  449. data/node_modules/axe-core/lib/core/public/run-virtual-rule.js +0 -50
  450. data/node_modules/axe-core/lib/core/public/run.js +0 -159
  451. data/node_modules/axe-core/lib/core/reporters/helpers/failure-summary.js +0 -35
  452. data/node_modules/axe-core/lib/core/reporters/helpers/get-environment-data.js +0 -39
  453. data/node_modules/axe-core/lib/core/reporters/helpers/incomplete-fallback-msg.js +0 -13
  454. data/node_modules/axe-core/lib/core/reporters/helpers/index.js +0 -3
  455. data/node_modules/axe-core/lib/core/reporters/helpers/process-aggregate.js +0 -102
  456. data/node_modules/axe-core/lib/core/reporters/na.js +0 -24
  457. data/node_modules/axe-core/lib/core/reporters/no-passes.js +0 -18
  458. data/node_modules/axe-core/lib/core/reporters/raw-env.js +0 -12
  459. data/node_modules/axe-core/lib/core/reporters/raw.js +0 -32
  460. data/node_modules/axe-core/lib/core/reporters/v1.js +0 -29
  461. data/node_modules/axe-core/lib/core/reporters/v2.js +0 -22
  462. data/node_modules/axe-core/lib/core/utils/aggregate.js +0 -19
  463. data/node_modules/axe-core/lib/core/utils/aggregateChecks.js +0 -85
  464. data/node_modules/axe-core/lib/core/utils/aggregateNodeResults.js +0 -61
  465. data/node_modules/axe-core/lib/core/utils/aggregateResult.js +0 -37
  466. data/node_modules/axe-core/lib/core/utils/are-styles-set.js +0 -21
  467. data/node_modules/axe-core/lib/core/utils/assert.js +0 -12
  468. data/node_modules/axe-core/lib/core/utils/check-helper.js +0 -38
  469. data/node_modules/axe-core/lib/core/utils/clone.js +0 -27
  470. data/node_modules/axe-core/lib/core/utils/collect-results-from-frames.js +0 -127
  471. data/node_modules/axe-core/lib/core/utils/contains.js +0 -44
  472. data/node_modules/axe-core/lib/core/utils/css-parser.js +0 -7
  473. data/node_modules/axe-core/lib/core/utils/dq-element.js +0 -97
  474. data/node_modules/axe-core/lib/core/utils/element-matches.js +0 -43
  475. data/node_modules/axe-core/lib/core/utils/escape-selector.js +0 -78
  476. data/node_modules/axe-core/lib/core/utils/extend-meta-data.js +0 -17
  477. data/node_modules/axe-core/lib/core/utils/finalize-result.js +0 -11
  478. data/node_modules/axe-core/lib/core/utils/find-by.js +0 -14
  479. data/node_modules/axe-core/lib/core/utils/flattened-tree.js +0 -156
  480. data/node_modules/axe-core/lib/core/utils/get-all-checks.js +0 -12
  481. data/node_modules/axe-core/lib/core/utils/get-base-lang.js +0 -16
  482. data/node_modules/axe-core/lib/core/utils/get-check-message.js +0 -21
  483. data/node_modules/axe-core/lib/core/utils/get-check-option.js +0 -39
  484. data/node_modules/axe-core/lib/core/utils/get-friendly-uri-end.js +0 -144
  485. data/node_modules/axe-core/lib/core/utils/get-node-attributes.js +0 -21
  486. data/node_modules/axe-core/lib/core/utils/get-root-node.js +0 -17
  487. data/node_modules/axe-core/lib/core/utils/get-scroll.js +0 -39
  488. data/node_modules/axe-core/lib/core/utils/get-selector.js +0 -409
  489. data/node_modules/axe-core/lib/core/utils/get-stylesheet-factory.js +0 -51
  490. data/node_modules/axe-core/lib/core/utils/get-xpath.js +0 -83
  491. data/node_modules/axe-core/lib/core/utils/index.js +0 -10
  492. data/node_modules/axe-core/lib/core/utils/inject-style.js +0 -38
  493. data/node_modules/axe-core/lib/core/utils/is-hidden.js +0 -52
  494. data/node_modules/axe-core/lib/core/utils/is-html-element.js +0 -135
  495. data/node_modules/axe-core/lib/core/utils/is-shadow-root.js +0 -40
  496. data/node_modules/axe-core/lib/core/utils/is-xhtml.js +0 -14
  497. data/node_modules/axe-core/lib/core/utils/matches.js +0 -263
  498. data/node_modules/axe-core/lib/core/utils/memoize.js +0 -17
  499. data/node_modules/axe-core/lib/core/utils/merge-results.js +0 -116
  500. data/node_modules/axe-core/lib/core/utils/node-sorter.js +0 -21
  501. data/node_modules/axe-core/lib/core/utils/parse-crossorigin-stylesheet.js +0 -54
  502. data/node_modules/axe-core/lib/core/utils/parse-sameorigin-stylesheet.js +0 -96
  503. data/node_modules/axe-core/lib/core/utils/parse-stylesheet.js +0 -70
  504. data/node_modules/axe-core/lib/core/utils/performance-timer.js +0 -126
  505. data/node_modules/axe-core/lib/core/utils/pollyfills.js +0 -299
  506. data/node_modules/axe-core/lib/core/utils/preload-cssom.js +0 -253
  507. data/node_modules/axe-core/lib/core/utils/preload-media.js +0 -65
  508. data/node_modules/axe-core/lib/core/utils/preload.js +0 -144
  509. data/node_modules/axe-core/lib/core/utils/process-message.js +0 -72
  510. data/node_modules/axe-core/lib/core/utils/publish-metadata.js +0 -106
  511. data/node_modules/axe-core/lib/core/utils/qsa.js +0 -110
  512. data/node_modules/axe-core/lib/core/utils/queue.js +0 -138
  513. data/node_modules/axe-core/lib/core/utils/respondable.js +0 -261
  514. data/node_modules/axe-core/lib/core/utils/rule-should-run.js +0 -82
  515. data/node_modules/axe-core/lib/core/utils/scroll-state.js +0 -57
  516. data/node_modules/axe-core/lib/core/utils/select.js +0 -135
  517. data/node_modules/axe-core/lib/core/utils/to-array.js +0 -21
  518. data/node_modules/axe-core/lib/core/utils/token-list.js +0 -15
  519. data/node_modules/axe-core/lib/core/utils/uuid.js +0 -244
  520. data/node_modules/axe-core/lib/core/utils/valid-input-type.js +0 -35
  521. data/node_modules/axe-core/lib/core/utils/valid-langs.js +0 -8152
  522. data/node_modules/axe-core/lib/intro.stub +0 -15
  523. data/node_modules/axe-core/lib/misc/any-failure-summary.json +0 -6
  524. data/node_modules/axe-core/lib/misc/incomplete-fallback.json +0 -3
  525. data/node_modules/axe-core/lib/misc/none-failure-summary.json +0 -6
  526. data/node_modules/axe-core/lib/outro.stub +0 -2
  527. data/node_modules/axe-core/lib/rules/accesskeys.json +0 -13
  528. data/node_modules/axe-core/lib/rules/area-alt.json +0 -21
  529. data/node_modules/axe-core/lib/rules/aria-allowed-attr-matches.js +0 -11
  530. data/node_modules/axe-core/lib/rules/aria-allowed-attr.json +0 -12
  531. data/node_modules/axe-core/lib/rules/aria-allowed-role-matches.js +0 -7
  532. data/node_modules/axe-core/lib/rules/aria-allowed-role.json +0 -14
  533. data/node_modules/axe-core/lib/rules/aria-dpub-role-fallback-matches.js +0 -10
  534. data/node_modules/axe-core/lib/rules/aria-dpub-role-fallback.json +0 -14
  535. data/node_modules/axe-core/lib/rules/aria-form-field-name-matches.js +0 -50
  536. data/node_modules/axe-core/lib/rules/aria-has-attr-matches.js +0 -11
  537. data/node_modules/axe-core/lib/rules/aria-hidden-body.json +0 -13
  538. data/node_modules/axe-core/lib/rules/aria-hidden-focus-matches.js +0 -18
  539. data/node_modules/axe-core/lib/rules/aria-hidden-focus.json +0 -18
  540. data/node_modules/axe-core/lib/rules/aria-input-field-name.json +0 -13
  541. data/node_modules/axe-core/lib/rules/aria-required-attr.json +0 -12
  542. data/node_modules/axe-core/lib/rules/aria-required-children.json +0 -12
  543. data/node_modules/axe-core/lib/rules/aria-required-parent.json +0 -12
  544. data/node_modules/axe-core/lib/rules/aria-roledescription.json +0 -12
  545. data/node_modules/axe-core/lib/rules/aria-roles.json +0 -13
  546. data/node_modules/axe-core/lib/rules/aria-toggle-field-name.json +0 -18
  547. data/node_modules/axe-core/lib/rules/aria-valid-attr-value.json +0 -12
  548. data/node_modules/axe-core/lib/rules/aria-valid-attr.json +0 -12
  549. data/node_modules/axe-core/lib/rules/audio-caption.json +0 -20
  550. data/node_modules/axe-core/lib/rules/autocomplete-matches.js +0 -49
  551. data/node_modules/axe-core/lib/rules/autocomplete-valid.json +0 -12
  552. data/node_modules/axe-core/lib/rules/avoid-inline-spacing.json +0 -12
  553. data/node_modules/axe-core/lib/rules/blink.json +0 -19
  554. data/node_modules/axe-core/lib/rules/button-name.json +0 -25
  555. data/node_modules/axe-core/lib/rules/bypass-matches.js +0 -1
  556. data/node_modules/axe-core/lib/rules/bypass.json +0 -20
  557. data/node_modules/axe-core/lib/rules/checkboxgroup.json +0 -13
  558. data/node_modules/axe-core/lib/rules/color-contrast-matches.js +0 -161
  559. data/node_modules/axe-core/lib/rules/color-contrast.json +0 -13
  560. data/node_modules/axe-core/lib/rules/css-orientation-lock.json +0 -13
  561. data/node_modules/axe-core/lib/rules/data-table-large-matches.js +0 -11
  562. data/node_modules/axe-core/lib/rules/data-table-matches.js +0 -1
  563. data/node_modules/axe-core/lib/rules/definition-list.json +0 -13
  564. data/node_modules/axe-core/lib/rules/dlitem.json +0 -13
  565. data/node_modules/axe-core/lib/rules/document-title.json +0 -13
  566. data/node_modules/axe-core/lib/rules/duplicate-id-active-matches.js +0 -8
  567. data/node_modules/axe-core/lib/rules/duplicate-id-active.json +0 -14
  568. data/node_modules/axe-core/lib/rules/duplicate-id-aria-matches.js +0 -1
  569. data/node_modules/axe-core/lib/rules/duplicate-id-aria.json +0 -14
  570. data/node_modules/axe-core/lib/rules/duplicate-id-misc-matches.js +0 -11
  571. data/node_modules/axe-core/lib/rules/duplicate-id.json +0 -14
  572. data/node_modules/axe-core/lib/rules/empty-heading.json +0 -13
  573. data/node_modules/axe-core/lib/rules/focus-order-semantics.json +0 -13
  574. data/node_modules/axe-core/lib/rules/form-field-multiple-labels.json +0 -13
  575. data/node_modules/axe-core/lib/rules/frame-tested.json +0 -12
  576. data/node_modules/axe-core/lib/rules/frame-title-has-text.js +0 -2
  577. data/node_modules/axe-core/lib/rules/frame-title-unique.json +0 -13
  578. data/node_modules/axe-core/lib/rules/frame-title.json +0 -25
  579. data/node_modules/axe-core/lib/rules/heading-matches.js +0 -15
  580. data/node_modules/axe-core/lib/rules/heading-order.json +0 -13
  581. data/node_modules/axe-core/lib/rules/hidden-content.json +0 -13
  582. data/node_modules/axe-core/lib/rules/html-has-lang.json +0 -13
  583. data/node_modules/axe-core/lib/rules/html-lang-valid.json +0 -12
  584. data/node_modules/axe-core/lib/rules/html-namespace-matches.js +0 -1
  585. data/node_modules/axe-core/lib/rules/html-xml-lang-mismatch.json +0 -13
  586. data/node_modules/axe-core/lib/rules/identical-links-same-purpose-matches.js +0 -13
  587. data/node_modules/axe-core/lib/rules/identical-links-same-purpose.json +0 -14
  588. data/node_modules/axe-core/lib/rules/image-alt.json +0 -25
  589. data/node_modules/axe-core/lib/rules/img-redundant-alt.json +0 -12
  590. data/node_modules/axe-core/lib/rules/input-button-name.json +0 -26
  591. data/node_modules/axe-core/lib/rules/input-image-alt.json +0 -18
  592. data/node_modules/axe-core/lib/rules/inserted-into-focus-order-matches.js +0 -1
  593. data/node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js +0 -45
  594. data/node_modules/axe-core/lib/rules/label-content-name-mismatch.json +0 -12
  595. data/node_modules/axe-core/lib/rules/label-matches.js +0 -11
  596. data/node_modules/axe-core/lib/rules/label-title-only.json +0 -13
  597. data/node_modules/axe-core/lib/rules/label.json +0 -26
  598. data/node_modules/axe-core/lib/rules/landmark-banner-is-top-level.json +0 -13
  599. data/node_modules/axe-core/lib/rules/landmark-complementary-is-top-level.json +0 -12
  600. data/node_modules/axe-core/lib/rules/landmark-contentinfo-is-top-level.json +0 -13
  601. data/node_modules/axe-core/lib/rules/landmark-has-body-context.js +0 -8
  602. data/node_modules/axe-core/lib/rules/landmark-main-is-top-level.json +0 -12
  603. data/node_modules/axe-core/lib/rules/landmark-no-duplicate-banner.json +0 -12
  604. data/node_modules/axe-core/lib/rules/landmark-no-duplicate-contentinfo.json +0 -12
  605. data/node_modules/axe-core/lib/rules/landmark-no-duplicate-main.json +0 -12
  606. data/node_modules/axe-core/lib/rules/landmark-one-main.json +0 -12
  607. data/node_modules/axe-core/lib/rules/landmark-unique-matches.js +0 -41
  608. data/node_modules/axe-core/lib/rules/landmark-unique.json +0 -13
  609. data/node_modules/axe-core/lib/rules/layout-table-matches.js +0 -8
  610. data/node_modules/axe-core/lib/rules/layout-table.json +0 -14
  611. data/node_modules/axe-core/lib/rules/link-in-text-block-matches.js +0 -14
  612. data/node_modules/axe-core/lib/rules/link-in-text-block.json +0 -14
  613. data/node_modules/axe-core/lib/rules/link-name.json +0 -25
  614. data/node_modules/axe-core/lib/rules/list.json +0 -13
  615. data/node_modules/axe-core/lib/rules/listitem.json +0 -13
  616. data/node_modules/axe-core/lib/rules/marquee.json +0 -13
  617. data/node_modules/axe-core/lib/rules/meta-refresh.json +0 -20
  618. data/node_modules/axe-core/lib/rules/meta-viewport-large.json +0 -13
  619. data/node_modules/axe-core/lib/rules/meta-viewport.json +0 -13
  620. data/node_modules/axe-core/lib/rules/no-autoplay-audio-matches.js +0 -18
  621. data/node_modules/axe-core/lib/rules/no-autoplay-audio.json +0 -15
  622. data/node_modules/axe-core/lib/rules/no-empty-role-matches.js +0 -9
  623. data/node_modules/axe-core/lib/rules/no-role-matches.js +0 -1
  624. data/node_modules/axe-core/lib/rules/not-html-matches.js +0 -1
  625. data/node_modules/axe-core/lib/rules/object-alt.json +0 -25
  626. data/node_modules/axe-core/lib/rules/p-as-heading-matches.js +0 -17
  627. data/node_modules/axe-core/lib/rules/p-as-heading.json +0 -13
  628. data/node_modules/axe-core/lib/rules/page-has-heading-one.json +0 -12
  629. data/node_modules/axe-core/lib/rules/radiogroup.json +0 -13
  630. data/node_modules/axe-core/lib/rules/region.json +0 -12
  631. data/node_modules/axe-core/lib/rules/role-img-alt.json +0 -19
  632. data/node_modules/axe-core/lib/rules/scope-attr-valid.json +0 -12
  633. data/node_modules/axe-core/lib/rules/scrollable-region-focusable-matches.js +0 -30
  634. data/node_modules/axe-core/lib/rules/scrollable-region-focusable.json +0 -12
  635. data/node_modules/axe-core/lib/rules/server-side-image-map.json +0 -18
  636. data/node_modules/axe-core/lib/rules/skip-link-matches.js +0 -1
  637. data/node_modules/axe-core/lib/rules/skip-link.json +0 -13
  638. data/node_modules/axe-core/lib/rules/svg-img-alt.json +0 -24
  639. data/node_modules/axe-core/lib/rules/svg-namespace-matches.js +0 -1
  640. data/node_modules/axe-core/lib/rules/tabindex.json +0 -12
  641. data/node_modules/axe-core/lib/rules/table-duplicate-name.json +0 -12
  642. data/node_modules/axe-core/lib/rules/table-fake-caption.json +0 -20
  643. data/node_modules/axe-core/lib/rules/td-has-header.json +0 -20
  644. data/node_modules/axe-core/lib/rules/td-headers-attr.json +0 -12
  645. data/node_modules/axe-core/lib/rules/th-has-data-cells.json +0 -13
  646. data/node_modules/axe-core/lib/rules/valid-lang.json +0 -13
  647. data/node_modules/axe-core/lib/rules/video-caption.json +0 -19
  648. data/node_modules/axe-core/lib/rules/video-description.json +0 -21
  649. data/node_modules/axe-core/lib/rules/window-is-top.js +0 -3
  650. data/node_modules/axe-core/lib/rules/xml-lang-mismatch-matches.js +0 -12
  651. data/node_modules/axe-core/typings/axe-core/axe-core-tests.ts +0 -188
@@ -1,777 +1,1001 @@
1
1
  {
2
- "lang": "ko",
3
- "rules": {
4
- "accesskeys": {
5
- "description": "모든 accesskey 속성 값이 고유한지 확인합니다.",
6
- "help": "accesskey 속성 값은 고유해야 합니다."
7
- },
8
- "area-alt": {
9
- "description": "이미지 맵의 <area> 요소에 alt 속성이 있는지 확인합니다.",
10
- "help": "<area> 요소의 내용을 기술하는 alt 속성이 필요합니다."
11
- },
12
- "aria-allowed-attr": {
13
- "description": "요소의 역할(role)에 ARIA 속성이 허용되도록 합니다.",
14
- "help": "요소는 허용 ARIA 속성만 사용해야 합니다."
15
- },
16
- "aria-allowed-role": {
17
- "description": "역할(role) 속성이 요소에 적절한지 확인하세요.",
18
- "help": "요소에 적절한 ARIA 역할(role) 설정해야 합니다."
19
- },
20
- "aria-dpub-role-fallback": {
21
- "description": "지원되지 않는 DPUB 역할(role)이 암시적 대체 역할을 가진 요소에만 사용되도록 보장합니다.",
22
- "help": "암시적 대체 역할이 있는 요소에 지원되지 않는 DPUB ARIA 역할을 사용해야 합니다."
23
- },
24
- "aria-hidden-body": {
25
- "description": "<body> 요소의 aria-hidden='true' 설정을 확인하세요.",
26
- "help": "aria-hidden='true' 설정이 <body> 요소에 설정되어서는 안됩니다."
27
- },
28
- "aria-hidden-focus": {
29
- "description": "aria-hidden 요소에 포커스 가능한 요소가 포함되지 않도록 보장합니다.",
30
- "help": "ARIA 속성을 사용해 숨겨진 요소는 포커스 가능한 요소를 포함해서는 안됩니다."
31
- },
32
- "aria-input-field-name": {
33
- "description": "모든 ARIA 입력 필드(input fields) 접근 가능한 이름이 있는지 확인하세요.",
34
- "help": "ARIA 입력 필드(input fields)에는 접근 가능한 이름 설정이 필요합니다."
35
- },
36
- "aria-required-attr": {
37
- "description": "ARIA 역할(role)을 가진 요소가 모든 필수 ARIA 속성을 갖도록 설정합니다.",
38
- "help": "역할(role)에 필요한 필수 ARIA 속성 설정이 필요합니다."
39
- },
40
- "aria-required-children": {
41
- "description": "하위 역할(child roles)이 필요한 ARIA 역할을 가진 요소에 해당 요소가 포함되었는지 확인하세요.",
42
- "help": "특정 ARIA 역할에는 특정 자손(chidren)이 포함되어야 합니다."
43
- },
44
- "aria-required-parent": {
45
- "description": "부모 역할(parent roles)이 필요한 ARIA 역할을 가진 요소가 포함되었는지 확인하세요.",
46
- "help": "특정 ARIA 역할은 특정 부모 역할을 가진 요소에 포함되어야 합니다."
47
- },
48
- "aria-roles": {
49
- "description": "역할(role) 속성을 가진 모든 요소가 유효한 값을 사용하도록 합니다.",
50
- "help": "사용된 ARIA 역할(role)은 유효한 값을 준수해야 합니다."
51
- },
52
- "aria-toggle-field-name": {
53
- "description": "모든 ARIA 토글 필드(toggle field) 접근 가능한 이름이 있는지 확인합니다.",
54
- "help": "ARIA 토글 필드(toggle field) 접근 가능한 이름이 설정되어야 합니다."
55
- },
56
- "aria-valid-attr-value": {
57
- "description": "모든 ARIA 속성이 유효한 값을 갖도록 합니다.",
58
- "help": "ARIA 속성은 유효한 값을 준수해야 합니다."
59
- },
60
- "aria-valid-attr": {
61
- "description": "aria-로 시작하는 속성이 유효한 ARIA 속성인지 확인합니다.",
62
- "help": "유효하지 않은 ARIA 속성 이름을 사용해서는 안됩니다."
63
- },
64
- "audio-caption": {
65
- "description": "<audio> 요소에 캡션(자막) 설정되어 있는지 확인하세요.",
66
- "help": "<audio> 요소에는 캡션 <track> 요소가 포함되어야 합니다."
67
- },
68
- "autocomplete-valid": {
69
- "description": "autocomplete 속성이 정확하고, Form 필드에 적합한지 확인하세요.",
70
- "help": "autocomplete 속성은 반드시 정확하게 사용되어야 합니다."
71
- },
72
- "avoid-inline-spacing": {
73
- "description": "style 속성을 통해 설정된 텍스트 간격(spacing)을 사용자 정의 스타일시트로 조정 할 수 있는지 확인합니다.",
74
- "help": "인라인 텍스트 간격(spacing)은 사용자 정의 스타일시트로 조정 가능해야 합니다."
75
- },
76
- "blink": {
77
- "description": "<blink> 요소는 사용하지 않습니다.",
78
- "help": "<blink> 요소는 사용하면 안됩니다."
79
- },
80
- "button-name": {
81
- "description": "버튼 요소에 식별 가능한 텍스트가 포함되어 있는지 확인합니다.",
82
- "help": "버튼 요소는 식별 가능한 텍스트를 포함해야 합니다."
83
- },
84
- "bypass": {
85
- "description": "사용자가 내비게이션을 건너띄고, 콘텐츠로 바로 이동할 있는 하나 이상의 메커니즘을 제공해야 합니다.",
86
- "help": "페이지의 반복 블록(예: 내비게이션)을 건너띌 있는 수단이 필요합니다."
87
- },
88
- "checkboxgroup": {
89
- "description": "관련 <input type=\"checkbox\"> 요소를 묶는 그룹 요소가 있고 그룹 지정이 일관성이 있는지 확인합니다.",
90
- "help": "name 속성 값이 동일한 checkbox 입력은 그룹의 일부여야 합니다."
91
- },
92
- "color-contrast": {
93
- "description": "전경색과 배경색 간의 대비가 WCAG2 AA 기준 값을 충족하도록 보장해야 합니다.",
94
- "help": "요소의 색상 대비가 충분히 식별 가능해야 합니다."
95
- },
96
- "css-orientation-lock": {
97
- "description": "콘텐츠가 특정 디스플레이 방향으로 고정되지 않고 콘텐츠가 모든 디스플레이 방향으로 작동 가능하도록 보장합니다.",
98
- "help": "CSS 미디어쿼리는 디스플레이 방향을 잠그는 목적으로 사용해서는 안됩니다."
99
- },
100
- "definition-list": {
101
- "description": "<dl> 요소가 올바르게 구성되어 있는지 확인합니다.",
102
- "help": "<dl> 요소는 올바르게 정렬 <dt>, <dd> 그룹, <script> 또는 <template> 요소에만 직접 포함되어야 합니다."
103
- },
104
- "dlitem": {
105
- "description": "<dt>, <dd> 요소가 <dl>요소에 포함 되도록 합니다.",
106
- "help": "<dt>, <dd> 요소는 <dl> 요소 또는 <dl> 내부의 <div> 요소에 포함되어야 합니다."
107
- },
108
- "document-title": {
109
- "description": "<title> 요소에 적절한 문서 제목이 설정되었는지 확인합니다.",
110
- "help": "문서 제목인 <title> 요소의 값이 설정되어야 합니다."
111
- },
112
- "duplicate-id-active": {
113
- "description": "활성화 요소에 설정된 id 속성 이름 중복 여부를 확인합니다.",
114
- "help": "활성화 요소의 id 속성 이름 값은 반드시 고유해야 합니다."
115
- },
116
- "duplicate-id-aria": {
117
- "description": "ARIA 레이블에 사용된 모든 id 속성 값이 고유한지 확인합니다.",
118
- "help": "ARIA 레이블에 사용 ID는 고유해야 합니다."
119
- },
120
- "duplicate-id": {
121
- "description": "모든 id 속성 값이 고유한지 확인합니다.",
122
- "help": "id 속성 값은 고유해야 합니다."
123
- },
124
- "empty-heading": {
125
- "description": "제목 역할의 요소에 식별 가능한 콘텐츠가 포함되어 있는지 확인합니다.",
126
- "help": "제목 역할을 가진 요소는 반드시 적절한 콘텐츠를 포함해야 합니다."
127
- },
128
- "focus-order-semantics": {
129
- "description": "포커스 순서가 설정된 요소가 적절한 역할을 갖도록 보장하는지 확인합니다.",
130
- "help": "포커스 순서가 설정된 요소는 대화형(interactive) 콘텐츠에 적합한 역할이 필요합니다."
131
- },
132
- "form-field-multiple-labels": {
133
- "description": "Form 필드에 여러 레이블 요소가 없는지 확인합니다.",
134
- "help": "Form 필드에는 여러 레이블 요소가 없어야 합니다."
135
- },
136
- "frame-tested": {
137
- "description": "<iframe> <frame> 요소에 axe-core 스크립트가 포함되어 있는지 확인합니다.",
138
- "help": "Frame은 axe-core로 테스트 해야 합니다."
139
- },
140
- "frame-title-unique": {
141
- "description": "<iframe> <frame> 요소에 고유한 title 속성이 포함되어 있는지 확인합니다.",
142
- "help": "Frame에는 고유한 title 속성이 설정되어야 합니다."
143
- },
144
- "frame-title": {
145
- "description": "<iframe><frame> 요소에 내용을 가진 title 속성이 포함되어 있는지 확인합니다.",
146
- "help": "Frame에는 title 속성이 있어야 합니다."
147
- },
148
- "heading-order": {
149
- "description": "제목의 순서가 의미적으로 올바른지 확인합니다.",
150
- "help": "제목 수준(level)은 단계씩 증가해야 합니다."
151
- },
152
- "hidden-content": {
153
- "description": "숨겨진 콘텐츠에 대해 사용자에게 알립니다.",
154
- "help": "페이지의 숨겨진 콘텐츠를 분석 할 수 없습니다."
155
- },
156
- "html-has-lang": {
157
- "description": "모든 문서의 <html> 요소에 lang 속성이 있는지 확인합니다.",
158
- "help": "<html> 요소에는 lang 속성이 있어야 합니다."
159
- },
160
- "html-lang-valid": {
161
- "description": "<html> 요소의 lang 속성에 유효한 값이 있는지 확인하세요.",
162
- "help": "<html> 요소는 lang 속성에 유효한 값을 가져야 합니다."
163
- },
164
- "html-xml-lang-mismatch": {
165
- "description": "유효한 lang, xml:lang 속성 값과 <html> 요소의 lang 속성이 일치하는지 확인하세요.",
166
- "help": "lang, xml:lang 속성이 있는 <html> 요소는 동일한 기본 언어(lang) 속성 값을 가져야 합니다."
167
- },
168
- "image-alt": {
169
- "description": "<img> 요소에 alt 속성 값으로 적절한 값이 설정되어 있거나, role='presentation' 설정이 있는지 확인하세요.",
170
- "help": "이미지는 적절한 대체 텍스트가 제공되어야 합니다."
171
- },
172
- "image-redundant-alt": {
173
- "description": "이미지 대체 텍스트로 반복되지 않는지 확인합니다.",
174
- "help": "이미지의 대체 텍스트가 반복해서 제공되어서는 안됩니다."
175
- },
176
- "input-button-name": {
177
- "description": "입력 버튼(input button)에 식별 가능한 텍스트가 있는지 확인하세요.",
178
- "help": "입력 버튼에는 식별 가능한 텍스트가 있어야 합니다."
179
- },
180
- "input-image-alt": {
181
- "description": "<input type=\"image\"> 요소에 대체 텍스트가 있는지 확인합니다.",
182
- "help": "이미지 버튼에는 대체 텍스트가 있어야 합니다."
183
- },
184
- "label-content-name-mismatch": {
185
- "description": "콘텐츠를 통해 레이블이 지정된 요소가 접근 가능한 이름의 일부로 보이는 텍스트를 가져야 합니다.",
186
- "help": "요소는 접근 가능한 이름의 일부로 보이는 텍스트를 가져야 합니다."
187
- },
188
- "label-title-only": {
189
- "description": "모든 Form 요소에 title 또는 aria-describedby 속성을 사용하여 레이블을 지정하지 않아야 합니다.",
190
- "help": "Form 요소는 눈에 보이는 레이블이 있어야 합니다."
191
- },
192
- "label": {
193
- "description": "모든 Form 요소에 레이블이 있는지 확인합니다.",
194
- "help": "Form 요소에는 레이블이 있어야 합니다."
195
- },
196
- "landmark-banner-is-top-level": {
197
- "description": "banner 랜드마크가 최상위 레벨에 있는지 확인합니다.",
198
- "help": "banner 랜드마크는 다른 랜드마크에 포함되지 않아야 합니다."
199
- },
200
- "landmark-complementary-is-top-level": {
201
- "description": "complementary 랜드마크 또는 aside는 최상위 레벨을 유지해야 합니다.",
202
- "help": "aside는 다른 랜드마크에 포함되어서는 안됩니다."
203
- },
204
- "landmark-contentinfo-is-top-level": {
205
- "description": "contentinfo 랜드마크가 최상위 레벨인지 확인합니다.",
206
- "help": "contentinfo 랜드마크는 다른 랜드마크에 포함되지 않아야 합니다."
207
- },
208
- "landmark-main-is-top-level": {
209
- "description": "main 랜드마크가 최상위 레벨인지 확인합니다.",
210
- "help": "main 랜드마크는 다른 랜드마크에 포함되지 않아야 합니다."
211
- },
212
- "landmark-no-duplicate-banner": {
213
- "description": "문서에 최대 하나의 banner 랜드마크가 있는지 확인합니다.",
214
- "help": "문서에는 이상의 banner 랜드마크가 없어야 합니다."
215
- },
216
- "landmark-no-duplicate-contentinfo": {
217
- "description": "문서에 최대 하나의 contentinfo 랜드마크가 있는지 확인합니다.",
218
- "help": "문서에는 이상의 contentinfo 랜드마크가 없어야 합니다."
219
- },
220
- "landmark-one-main": {
221
- "description": "문서에 하나의 main 랜드마크만 있고 페이지의 각 iframe에는 최대 하나의 main 랜드마크가 있는지 확인합니다.",
222
- "help": "문서에는 이상의 main 랜드마크가 없어야 합니다."
223
- },
224
- "landmark-unique": {
225
- "description": "랜드마크에는 고유한 역할(role) 또는 role/label/title (즉, 접근 가능한 이름) 조합이 있어야 합니다.",
226
- "help": "랜드마크가 고유한지 확인합니다."
227
- },
228
- "layout-table": {
229
- "description": "프리젠테이션 <table> 요소가 <th>, <caption> 요소 또는 summary 속성을 사용하지 않도록 합니다.",
230
- "help": "레이아웃 테이블은 데이터 테이블 요소가 아니므로 제목 셀, 표 제목, 요약 속성을 사용해서는 안됩니다."
231
- },
232
- "link-in-text-block": {
233
- "description": "색상에 의존하지 않고 링크를 구별 수 있어야 합니다.",
234
- "help": "링크는 색상에 의존하지 않는 방식으로 주변 텍스트와 구별 되어야 합니다."
235
- },
236
- "link-name": {
237
- "description": "링크에 식별 가능한 텍스트가 있는지 확인합니다.",
238
- "help": "링크에는 식별 가능한 텍스트가 있어야 합니다."
239
- },
240
- "list": {
241
- "description": "목록이 올바르게 구성되어 있는지 확인합니다.",
242
- "help": "<ul> <ol> 요소는 <li>, <script> 또는 <template> 요소 만 직접 포함해야 합니다."
243
- },
244
- "listitem": {
245
- "description": "<li> 요소가 의미적으로 <ul> 또는 <ol>에 포함 되어 있는지 확인합니다.",
246
- "help": "<li> 요소는 <ul> 또는 <ol>에 포함 되어야 합니다."
247
- },
248
- "marquee": {
249
- "description": "<marquee> 요소가 사용되지 않도록 합니다.",
250
- "help": "<marquee> 요소는 이상 사용되지 않으며 사용해서는 안됩니다."
251
- },
252
- "meta-refresh": {
253
- "description": "<meta http-equiv=\"refresh\"> 요소는 사용하지 않습니다.",
254
- "help": "시간 새로 고침이 존재하지 않아야 합니다."
255
- },
256
- "meta-viewport-large": {
257
- "description": "<meta name=\"viewport\"> 요소의 스케일 설정이 500%까지 확장 가능한지 확인합니다.",
258
- "help": "사용자는 텍스트를 최대 500% 확대 또는 축소 할 수 있어야 합니다."
259
- },
260
- "meta-viewport": {
261
- "description": "<meta name=\"viewport\"> 요소가 텍스트 크기 조절 확대/축소를 비활성화하지 않도록 합니다.",
262
- "help": " 스케일링을 비활성화 해서는 안됩니다."
263
- },
264
- "object-alt": {
265
- "description": "<object> 요소에 대체 텍스트(alt)가 있는지 확인합니다.",
266
- "help": "<object> 요소에는 대체 텍스트가 있어야 합니다."
267
- },
268
- "p-as-heading": {
269
- "description": "p 요소를 스타일링 하여 제목처럼 사용했는지 확인하세요.",
270
- "help": "p 요소를 Bold, italic 또는 글자 크기를 조정해 제목처럼 보이게 사용해서는 안됩니다."
271
- },
272
- "page-has-heading-one": {
273
- "description": "페이지 또는 해당 프레임 하나 이상의 제목 레벨이 1인 요소가 포함되어 있는지 확인합니다.",
274
- "help": "페이지는 제목 레벨이 1인 요소를 포함해야 합니다."
275
- },
276
- "radiogroup": {
277
- "description": "관련 <input type=\"radio\"> 요소에 그룹이 있고 그룹 지정이 일관 되도록 합니다.",
278
- "help": "name 속성 값이 동일한 radio 입력은 그룹의 일부여야 합니다."
279
- },
280
- "region": {
281
- "description": "모든 페이지 콘텐츠가 랜드마크로 포함되어 있는지 확인합니다.",
282
- "help": "모든 페이지 콘텐츠는 랜드마크로 포함 되어야 합니다."
283
- },
284
- "role-img-alt": {
285
- "description": "[role='img'] 요소에 대체 텍스트가 있는지 확인합니다.",
286
- "help": "[role='img'] 요소에는 대체 텍스트가 있어야 합니다."
287
- },
288
- "scope-attr-valid": {
289
- "description": "테이블에서 scope 속성이 올바르게 사용되도록 합니다.",
290
- "help": "scope 속성을 올바르게 사용해야 합니다."
291
- },
292
- "scrollable-region-focusable": {
293
- "description": "스크롤 가능한 콘텐츠가 있는 요소는 키보드로 접근 할 수 있어야 합니다.",
294
- "help": "스크롤 가능 영역에 키보드 접근 권한이 있는지 확인해야 합니다."
295
- },
296
- "server-side-image-map": {
297
- "description": "서버 사이드 이미지 맵이 사용되지 않도록 합니다.",
298
- "help": "서버 사이드 이미지 맵을 사용해서는 안됩니다."
299
- },
300
- "skip-link": {
301
- "description": "모든 건너뛰기(skip) 링크에 포커스 가능한 대상이 있는지 확인하세요.",
302
- "help": "스킵 링크 대상이 존재하고 포커스 가능해야 합니다."
303
- },
304
- "tabindex": {
305
- "description": "tabindex 속성 값이 0보다 크지 않도록 합니다.",
306
- "help": "요소는 0보다 tabindex를 가져서는 안됩니다."
307
- },
308
- "table-duplicate-name": {
309
- "description": "테이블의 summary 속성 값과 <caption> 요소의 콘텐츠 값이 동일하지 않아야 합니다.",
310
- "help": "<caption> 요소는 summary 속성과 동일한 텍스트를 포함하지 않아야 합니다."
311
- },
312
- "table-fake-caption": {
313
- "description": "캡션이 있는 테이블이 <caption> 요소를 사용하는지 확인하세요.",
314
- "help": "데이터 또는 헤더 셀을 사용하여 데이터 테이블 캡션인 것처럼 제공해서는 안됩니다."
315
- },
316
- "td-has-header": {
317
- "description": "데이터 셀이 3x3 보다 많은 테이블은 비어 있지 않은 각 데이터 셀에 하나 이상의 테이블 헤더가 있는지 확인하세요.",
318
- "help": "3x3 보다 테이블의 비어 있지 않은 모든 td 요소에는 연관된 테이블 헤더가 있어야 합니다."
319
- },
320
- "td-headers-attr": {
321
- "description": "헤더를 사용하는 테이블의 셀이 해당 테이블의 다른 셀을 참조하는지 확인하세요.",
322
- "help": "headers 속성을 사용하는 테이블 요소의 모든 셀은 동일한 테이블의 다른 셀만 참조해야 합니다."
323
- },
324
- "th-has-data-cells": {
325
- "description": "데이터 테이블의 테이블 헤더가 데이터 셀을 참조하는지 확인하세요.",
326
- "help": "모든 요소 role='columnheader/rowheader' 설정 요소는 설명하는 데이터 셀이 있어야 합니다."
327
- },
328
- "valid-lang": {
329
- "description": "lang 속성이 유효한 값을 갖도록 합니다.",
330
- "help": "lang 속성은 유효한 값을 가져야 합니다."
331
- },
332
- "video-caption": {
333
- "description": "<video> 요소에 캡션(자막)이 있는지 확인합니다.",
334
- "help": "<video> 요소에는 캡션(자막)이 있어야 합니다."
335
- },
336
- "video-description": {
337
- "description": "<video> 요소에 오디오 설명이 있는지 확인합니다.",
338
- "help": "<video> 요소에는 오디오 설명 트랙이 있어야 합니다."
339
- }
340
- },
341
- "checks": {
342
- "abstractrole": {
343
- "pass": "추상 역할은 직접 사용하지 않습니다.",
344
- "fail": "추상 역할은 직접 사용할 수 없습니다."
345
- },
346
- "aria-allowed-attr": {
347
- "description": "ARIA 속성이 요소의 역할에 허용 되도록 합니다.",
348
- "help": "요소는 허용된 ARIA 속성만 사용해야 합니다."
349
- },
350
- "aria-allowed-role": {
351
- "pass": "ARIA 역할(role)은 지정된 요소에 대해 허용되어 있습니다.",
352
- "fail": "ARIA 역할(role)은 지정된 요소에 대해 허용되지 않았습니다.",
353
- "incomplete": "ARIA 역할(role)은 요소에 허가되어 있지 않기 때문에, 요소가 표시되었을 때 ARIA 역할을 삭제할 필요가 있습니다."
354
- },
355
- "aria-hidden-body": {
356
- "description": "<body> 요소에 aria-hidden='true' 속성 설정이 없는지 확인하세요.",
357
- "help": "aria-hidden='true' 설정을 <body> 요소에 사용해서는 안됩니다."
358
- },
359
- "aria-errormessage": {
360
- "pass": "지원되고 있는 aria-errormessage 기술을 사용하고 있습니다.",
361
- "fail": "aria-errormessage 값{{~it.data:value}} {=value}{{~}}는 메시지를 공지하는 방법을 사용해야 합니다.(예를 들어, aria-live, aria-describedby,role=alert 등)"
362
- },
363
- "has-widget-role": {
364
- "pass": "요소에 widget 역할이 ​​있습니다.",
365
- "fail": "요소에 widget 역할이 ​​없습니다."
366
- },
367
- "implicit-role-fallback": {
368
- "pass": "요소의 내재된 ARIA 역할은 적절한 대안 입니다.",
369
- "fail": "요소의 암시적 ARIA 역할은(지원되지 않는) 역할에 대한 좋은 대안이 아닙니다."
370
- },
371
- "invalidrole": {
372
- "pass": "ARIA 역할이 유효합니다.",
373
- "fail": "역할은 유효한 ARIA 역할 하나여야 합니다."
374
- },
375
- "no-implicit-explicit-label": {
376
- "pass": "<label>과 접근 가능한 이름이 일치하지 않습니다.",
377
- "incomplete": "<label>이 ARIA {{=it.data}} 필드 이름의 일부일 필요는 없는지 확인하세요."
378
- },
379
- "aria-required-attr": {
380
- "description": "ARIA 역할을 가진 요소가 모든 필수 ARIA 속성을 갖도록 합니다.",
381
- "help": "필수 ARIA 속성이 제공 되어야 합니다."
382
- },
383
- "aria-required-children": {
384
- "pass": "필수적인 ARIA 역할이 존재합니다.",
385
- "fail": "필수적인 ARIA 역할이 제공되지 않고 있습니다: {{~it.data:value}} {{=value}}{{~}}",
386
- "incomplete": "ARIA의 자손 역할이 추가되어야 합니다: {{~it.data:value}} {{=value}}{{~}}"
387
- },
388
- "aria-required-parent": {
389
- "pass": "필수적인 ARIA 역할이 존재합니다.",
390
- "fail": "필수적인 ARIA 역할이 제공되지 않고 있습니다: {{~it.data:value}} {{=value}}{{~}}"
391
- },
392
- "aria-unsupported-attr": {
393
- "pass": "사용된 ARIA 속성은 지원되고 있습니다.",
394
- "fail": "사용된 ARIA 속성은 스크린 리더나 보조 기술에 널리 지원되지 않고 있습니다: {{~it.data:value}} {{=value}}{{~}}"
395
- },
396
- "unsupportedrole": {
397
- "pass": "사용된 ARIA 역할이 지원됩니다.",
398
- "fail": "사용된 ARIA 속성은 스크린 리더나 보조 기술에 널리 지원되지 않고 있습니다.: {{~it.data:value}} {{=value}}{{~}}"
399
- },
400
- "aria-valid-attr-value": {
401
- "pass": "ARIA 속성이 유효합니다.",
402
- "fail": "무효인 ARIA 속성입니다:{{~it.data:value}} {{=value}}{{~}}",
403
- "incomplete": "페이지에 ARIA 속성의 요소 ID가 존재하지 않습니다:{{~it.data:value}} {{=value}}{{~}}"
404
- },
405
- "aria-valid-attr": {
406
- "pass": "ARIA 속성명이 유효합니다.",
407
- "fail": "무효인 ARIA 속성명 입니다: {{~it.data:value}} {{=value}}{{~}}"
408
- },
409
- "valid-scrollable-semantics": {
410
- "pass": "요소는 포커스 순서에서 요소에 대한 유효한 의미를 갖습니다.",
411
- "fail": "요소의 포커스 순서에서 요소에 대한 의미가 유효하지 않습니다."
412
- },
413
- "color-contrast": {
414
- "pass": "{{=it.data.contrastRatio}} 요소의 색상 대비가 충분합니다.",
415
- "fail": "{{=it.data.contrastRatio}} 요소의 색상 대비가 충분하지 않습니다. (foreground color: {{=it.data.fgColor}}, background color: {{=it.data.bgColor}}, font size: {{=it.data.fontSize}}, font weight: {{=it.data.fontWeight}}). {{=it.data.expectedContrastRatio}} 예상 대비 비율",
416
- "incomplete": {
417
- "bgImage": "배경 이미지로 인해 요소의 배경색을 확인할 없습니다.",
418
- "bgGradient": "배경 그라데이션으로 인해 요소의 배경색을 결정할 수 없습니다.",
419
- "imgNode": "요소에 이미지 노드가 포함되어 있으므로 요소의 배경색을 확인할 수 없습니다.",
420
- "bgOverlap": "요소의 배경색이 다른 요소와 겹치므로 확인할 수 없습니다.",
421
- "fgAlpha": "알파 투명도로 인해 요소의 전경색을 확인할 없습니다.",
422
- "elmPartiallyObscured": "요소의 배경색이 다른 요소에 의해 부분적으로 가려져서 확인할 수 없습니다.",
423
- "elmPartiallyObscuring": "요소의 배경색이 다른 요소와 부분적으로 겹치므로 확인할 없습니다.",
424
- "outsideViewport": "요소가 뷰포트 외부에 있으므로 요소의 배경색을 확인할 없습니다.",
425
- "equalRatio": "요소는 배경과 1:1 대비 비율을 갖습니다.",
426
- "shortTextContent": "요소 내용이 너무 짧아 실제 텍스트 내용인지 확인할 수 없습니다.",
427
- "default": "명암 비를 결정할 수 없습니다."
428
- }
429
- },
430
- "link-in-text-block": {
431
- "pass": "링크는 색상이 아닌 다른 방식으로 주변 텍스트와 구별 될 수 있습니다.",
432
- "fail": "링크는 색상이 아닌 다른 방식으로 주변 텍스트와 구별 되어야 합니다.",
433
- "incomplete": {
434
- "bgContrast": "요소의 명암비를 결정할 없습니다. 뚜렷한 hover / focus 스타일 확인",
435
- "bgImage": "배경 이미지로 인해 요소의 대비 비율을 결정할 수 없습니다.",
436
- "bgGradient": "배경 그라데이션으로 인해 요소의 대비 비율을 확인할 수 없습니다.",
437
- "imgNode": "요소에 이미지 노드가 포함되어 있으므로 요소의 대비 비율을 확인할 수 없습니다.",
438
- "bgOverlap": "요소 겹침으로 인해 요소의 대비 비율을 확인할 수 없습니다.",
439
- "default": "명암비를 결정할 없습니다."
440
- }
441
- },
442
- "autocomplete-appropriate": {
443
- "pass": "autocomplete 값이 적절한 요소에 있습니다.",
444
- "fail": "autocomplete 값은 유형의 입력에 적합하지 않습니다."
445
- },
446
- "autocomplete-valid": {
447
- "pass": "autocomplete 속성이 올바르게 형식화 되었습니다.",
448
- "fail": "autocomplete 속성의 형식이 잘못 되었습니다."
449
- },
450
- "fieldset": {
451
- "pass": "요소가 Fieldset에 포함되어 있습니다.",
452
- "fail": "{{var code = it.data && it.data.failureCode;}}{{? code === 'no-legend'}}Fieldset에 번째 자식 요소로 legend가 없습니다{{?? code === 'empty-legend'}}legend에 스크린 리더에 표시되는 텍스트가 없습니다{{?? code === 'mixed-inputs'}}Fieldset에 관련 없는 inputs을 포함합니다{{?? code === 'no-group-label'}}ARIA 그룹은 aria-label 또는 aria-labelledby 설정이 없습니다{{?? code === 'group-mixed-inputs'}}ARIA 그룹에 관련 없는 inputs을 포함합니다{{??}}요소는 ARIA 그룹 또는 fieldset을 포함하지 않습니다{{?}}"
453
- },
454
- "group-labelledby": {
455
- "pass": "이름이 \"{{=it.data.name}}\"인 요소는 공유 레이블과 고유 레이블이 모두 있으며, 이 레이블은 aria-labelledby를 통해 참조됩니다.",
456
- "fail": "{{var code = it.data && it.data.failureCode;}}이(가) 있는 요소에는 모두 \"{{=it.data.name}}\" 이(가) 없습니다. {{? code === 'no-shared-label' }} 공유된 레이블{{?? code === 'no-unique-label' }}고유 레이블{{??}}공유 라벨과 고유 라벨 둘 다{{?}}, aria-labelledby을 통해 참조됩니다."
457
- },
458
- "accesskeys": {
459
- "pass": "accesskey 속성 값은 고유합니다",
460
- "fail": "문서에 동일한 accesskey를 가진 여러 요소가 있습니다."
461
- },
462
- "focusable-content": {
463
- "pass": "요소에는 포커스 가능한 요소가 포함됩니다.",
464
- "fail": "요소는 포커스 가능한 콘텐츠를 가져야 합니다."
465
- },
466
- "focusable-disabled": {
467
- "pass": "요소 안에 포커스 가능한 요소가 포함되어 있지 않습니다.",
468
- "fail": "포커스 가능 콘텐츠를 비 활성화하거나 DOM에서 제거해야 합니다."
469
- },
470
- "focusable-element": {
471
- "pass": "요소는 포커스 가능합니다.",
472
- "fail": "요소에 포커스를 맞출 수 있어야 합니다."
473
- },
474
- "focusable-no-name": {
475
- "pass": "요소가 순서가 아니거나 접근 가능한 텍스트가 있습니다.",
476
- "fail": "요소가 탭 순서이며 접근 가능한 텍스트가 없습니다."
477
- },
478
- "focusable-not-tabbable": {
479
- "pass": "요소 내에 포커스 가능한 요소가 포함되어 있지 않습니다.",
480
- "fail": "포커스 가능 콘텐츠는 tabindex='-1' 이거나 DOM에서 제거 되어야 합니다."
481
- },
482
- "landmark-is-top-level": {
483
- "pass": "{{=it.data.role }} 랜드마크가 최상위 레벨에 있습니다.",
484
- "fail": "{{=it.data.role } 랜드마크는 다른 랜드마크에 포함되어 있습니다."
485
- },
486
- "page-has-heading-one": {
487
- "pass": "페이지에 하나 이상의 제목 레벨 1이 있습니다.",
488
- "fail": "페이지에는 제목 레벨 1이 있어야 합니다."
489
- },
490
- "page-has-main": {
491
- "pass": "문서에 하나 이상의 main 랜드마크가 있습니다.",
492
- "fail": "문서에 main 랜드마크가 없습니다."
493
- },
494
- "page-no-duplicate-banner": {
495
- "pass": "문서에 둘 이상의 banner 랜드마크가 없습니다.",
496
- "fail": "문서에 둘 이상의 banner 랜드마크가 있습니다."
497
- },
498
- "page-no-duplicate-contentinfo": {
499
- "pass": "문서에 하나 이상의 contentinfo 랜드마크가 없습니다.",
500
- "fail": "문서에 하나 이상의 contentinfo 랜드마크가 있습니다."
501
- },
502
- "page-no-duplicate-main": {
503
- "pass": "문서에 이상의 main 랜드마크가 없습니다.",
504
- "fail": "문서에 둘 이상의 main 랜드마크가 있습니다."
505
- },
506
- "tabindex": {
507
- "pass": "요소에 0보다 큰 tabindex가 없습니다.",
508
- "fail": "요소의 tabindex가 0보다 큽니다."
509
- },
510
- "alt-space-value": {
511
- "pass": "요소에 유효한 대체 속성 값이 있습니다.",
512
- "fail": "요소에는 공백 문자만 포함하는 alt 속성이 있으며 모든 스크린 리더에서 무시하지 않습니다."
513
- },
514
- "duplicate-img-label": {
515
- "pass": "<img> 대체 텍스트에서 요소가 기존 텍스트를 복제하지 않습니다.",
516
- "fail": "요소에 기존 텍스트를 복제하는 대체 텍스트가 있는 <img> 요소가 포함되어 있습니다."
517
- },
518
- "explicit-label": {
519
- "pass": "Form 요소에 명확한 <label>이 존재하고 있습니다.",
520
- "fail": "Form 요소에 명확한 <label>이 존재하지 않습니다."
521
- },
522
- "help-same-as-label": {
523
- "pass": "도움말 텍스트(title 또는 aria-describedby)는 레이블 텍스트를 복제하지 않습니다.",
524
- "fail": "도움말 텍스트(title 또는 aria-describedby)는 레이블 텍스트와 동일합니다."
525
- },
526
- "hidden-explicit-label": {
527
- "pass": "Form 요소에 명시적인 <label>이 있습니다.",
528
- "fail": "Form 요소에 숨겨진 <label>이 있습니다."
529
- },
530
- "implicit-label": {
531
- "pass": "Form 요소에 암묵적인(포함된) <label>이 존재하고 있습니다.",
532
- "fail": "Form 요소에 암묵적인(포함된) <label>이 존재하지 않습니다."
533
- },
534
- "label-content-name-mismatch": {
535
- "pass": "요소는 접근 가능한 이름의 일부로 보이는 텍스트를 포함합니다.",
536
- "fail": "요소 안의 텍스트는 접근 가능한 이름에 포함되지 않습니다."
537
- },
538
- "multiple-label": {
539
- "pass": "Form 필드에 여러 레이블 요소가 없습니다.",
540
- "incomplete": "보조 기술에서 다중 레이블 요소가 널리 지원되지 않습니다. 첫 번째 레이블에 필요한 모든 정보가 포함되어 있는지 확인하세요."
541
- },
542
- "title-only": {
543
- "pass": "Form 요소는 레이블에 title 속성만 사용하지 않습니다.",
544
- "fail": "Form 요소의 레이블을 생성하는데 사용되는 title 속성만 해당됩니다."
545
- },
546
- "landmark-is-unique": {
547
- "pass": "랜드마크에는 고유한 role 또는 role/label/title (즉, 접근 가능한 이름) 조합이 있어야 합니다.",
548
- "fail": "랜드마크는 고유한 aria-label, aria-labelledby 또는 title이 있어야 랜드마크를 구별 할 수 있습니다."
549
- },
550
- "has-lang": {
551
- "pass": "<html> 요소에 lang 속성이 있습니다.",
552
- "fail": "<html> 요소에 lang 속성이 없습니다."
553
- },
554
- "valid-lang": {
555
- "pass": "lang 속성 값은 유효한 언어 목록에 포함되어 있습니다.",
556
- "fail": "lang 속성 값이 유효한 언어 목록에 포함되어 있지 않습니다."
557
- },
558
- "xml-lang-mismatch": {
559
- "pass": "lang 및 xml:lang 속성은 주 언어 속성 값이 동일합니다.",
560
- "fail": "lang xml:lang 속성은 주 언어 속성 값이 동일하지 않습니다."
561
- },
562
- "dlitem": {
563
- "pass": "설명 목록 항목에 <dl> 상위 요소가 있습니다.",
564
- "fail": "설명 목록 항목에 <dl> 상위 요소가 없습니다."
565
- },
566
- "listitem": {
567
- "pass": "목록 항목에 <ul>, <ol> 또는 role=\"list\" 상위 요소가 있습니다.",
568
- "fail": "목록 항목에 <ul>, <ol> 또는 role=\"list\" 상위 요소가 없습니다."
569
- },
570
- "only-dlitems": {
571
- "pass": "List 요소에는 <dt> 또는 <dd> 요소 내에서 허용되는 직접적인 자식 요소들만 있습니다.",
572
- "fail": "List 요소에는 <dt> 또는 <dd> 요소 내에서 허용되지 않는 직접적인 자식 요소들이 있습니다."
573
- },
574
- "only-listitems": {
575
- "pass": "List 요소에는 <li> 요소 내에 허용되는 직접적인 자식 요소들만 있습니다.",
576
- "fail": "List 요소에는 <li> 요소 내에 허용되지 않는 직접 자식 요소들이 있습니다."
577
- },
578
- "structured-dlitems": {
579
- "pass": "비어 있지 않으면 요소에 <dt> <dd> 요소가 모두 있습니다.",
580
- "fail": "비어 있지 않은 경우 요소에는 하나 이상의 <dt> 요소가 없고 뒤에 하나 이상의 <dd> 요소가 없습니다."
581
- },
582
- "caption": {
583
- "pass": "멀티미디어 요소에는 자막 트랙이 있습니다.",
584
- "incomplete": "요소에 캡션을 사용할있는지 확인하세요."
585
- },
586
- "description": {
587
- "pass": "멀티미디어 요소에는 오디오 설명 트랙이 있습니다.",
588
- "incomplete": "요소에 대한 오디오 설명이 사용 가능한지 확인하세요."
589
- },
590
- "frame-tested": {
591
- "pass": "iframe은 axe-core로 테스트 되었습니다.",
592
- "fail": "iframe은 axe-core로 테스트 수 없습니다.",
593
- "incomplete": "iframe은 여전히 ​​axe-core로 테스트 해야 합니다."
594
- },
595
- "css-orientation-lock": {
596
- "pass": "디스플레이가 작동하고 방향 잠금이 설정되어 있지 않습니다.",
597
- "fail": "CSS 방향 잠금이 적용되어 디스플레이를 작동 할 수 없게 합니다.",
598
- "incomplete": "CSS 방향 잠금을 확인할 수 없습니다."
599
- },
600
- "meta-viewport-large": {
601
- "pass": "<meta> 태그가 모바일 장치에서 화면 확대가 가능합니다.",
602
- "fail": "<meta> 태그는 모바일 장치에서 화면 확대/축소를 제한합니다."
603
- },
604
- "meta-viewport": {
605
- "pass": "<meta> 태그는 모바일 장치에서 확대/축소를 비활성화하지 않습니다.",
606
- "fail": "<meta> 태그의 {{= it.data}}는 모바일 장치에서 확대/축소를 사용하지 않습니다."
607
- },
608
- "header-present": {
609
- "pass": "페이지에 헤더가 있습니다.",
610
- "fail": "페이지에 헤더가 없습니다."
611
- },
612
- "heading-order": {
613
- "pass": "제목 순서가 유효합니다.",
614
- "fail": "제목 순서가 잘못되었습니다."
615
- },
616
- "internal-link-present": {
617
- "pass": "유효한 건너뛰기 링크가 발견되었습니다.",
618
- "fail": "유효한 건너뛰기 링크가 없습니다."
619
- },
620
- "landmark": {
621
- "pass": "페이지에 랜드마크 영역이 있습니다.",
622
- "fail": "페이지에 랜드마크 영역이 없습니다."
623
- },
624
- "meta-refresh": {
625
- "pass": "<meta> 태그는 페이지를 즉시 새로 고치지 않습니다.",
626
- "fail": "<meta> 태그는 페이지를 새로 고침합니다."
627
- },
628
- "p-as-heading": {
629
- "pass": "<p> 요소는 제목처럼 스타일이 설정되지 않았습니다.",
630
- "fail": "스타일이 지정된 p 요소 대신 제목 요소를 사용해야 합니다."
631
- },
632
- "region": {
633
- "pass": "모든 페이지 내용은 랜드마크로 포함됩니다.",
634
- "fail": "일부 페이지 내용은 랜드마크에 포함되지 않습니다."
635
- },
636
- "skip-link": {
637
- "pass": "링크 건너뛰기 대상이 존재합니다.",
638
- "incomplete": "활성화 시 링크 대상 건너뛰기가 표시 되어야 합니다.",
639
- "fail": "건너띄기 링크 대상이 없습니다."
640
- },
641
- "unique-frame-title": {
642
- "pass": "요소의 title 속성은 고유합니다.",
643
- "fail": "요소의 title 속성이 고유하지 않습니다."
644
- },
645
- "duplicate-id-active": {
646
- "pass": "문서에 같은 id 속성을 갖는 유효한 요소는 없습니다.",
647
- "fail": "문서에 같은 id 속성을 갖는 유효한 요소가 있습니다: {{=it.data}}"
648
- },
649
- "duplicate-id-aria": {
650
- "pass": "문서에 ARIA로 참조된 요소나 동일한 id 속성을 공유하는 레이블이 없습니다.",
651
- "fail": "동일한 id 속성을 가진 ARIA를 참조하는 여러 요소가 문서에 있습니다: {{=it.data}}"
652
- },
653
- "duplicate-id": {
654
- "pass": "문서에 동일한 id 속성을 공유하는 정적 요소가 없습니다.",
655
- "fail": "문서에 동일한 id 속성을 가진 여러 정적 요소가 있습니다."
656
- },
657
- "aria-label": {
658
- "pass": "aria-label 속성이 존재하며 비어 있지 않습니다.",
659
- "fail": "aria-label 속성이 존재하지 않거나 비어 있습니다."
660
- },
661
- "aria-labelledby": {
662
- "pass": "aria-labeledby 속성이 있으며 스크린 리더에 표시되는 요소를 참조합니다.",
663
- "fail": "aria-labeledby 속성이 존재하지 않거나, 존재하지 않는 요소를 참조하거나, 비어 있는 요소를 참조합니다."
664
- },
665
- "avoid-inline-spacing": {
666
- "pass": "텍스트 간격에 영향을 주는 '!important'를 가진 인라인 스타일이 지정되지 않았습니다.",
667
- "fail": "인라인 스타일에서 '!important' 제거 {{=it.data && it.data.length > 1 ? 's' : ''}} {{=it.data.join(', ')}}, 이 항목을 재정의하는 것은 대부분의 브라우저에서 지원되지 않습니다."
668
- },
669
- "button-has-visible-text": {
670
- "pass": "요소에는 스크린 리더에 표시되는 내부 텍스트가 있습니다.",
671
- "fail": "요소에는 스크린 리더에서 볼 수 있는 내부 텍스트가 없습니다."
672
- },
673
- "doc-has-title": {
674
- "pass": "문서에 비어 있지 않은 <title> 요소가 있습니다.",
675
- "fail": "문서에 비어 있지 않은 <title> 요소가 없습니다."
676
- },
677
- "exists": {
678
- "pass": "요소는 존재하지 않습니다.",
679
- "fail": "요소가 존재합니다."
680
- },
681
- "has-alt": {
682
- "pass": "요소에 alt 속성이 존재합니다.",
683
- "fail": "요소에 alt 속성이 존재하지 않습니다."
684
- },
685
- "has-visible-text": {
686
- "pass": "요소에 스크린 리더가 인식 가능한 텍스트가 존재하고 있습니다.",
687
- "fail": "요소에 스크린 리더가 인식 가능한 텍스트가 존재하지 않습니다."
688
- },
689
- "is-on-screen": {
690
- "pass": "요소가 표시되어 있지 않습니다.",
691
- "fail": "요소가 표시되어 있습니다."
692
- },
693
- "non-empty-alt": {
694
- "pass": "요소에 비어있지 않은 alt 속성이 존재합니다.",
695
- "fail": "요소에 alt 속성이 존재하지 않거나, alt 속성이 비어 있습니다."
696
- },
697
- "non-empty-if-present": {
698
- "pass": "요소 {{?it.data}} 비어 있지 않은 값 속성이 있습니다{{??}}값 속성이 없습니다{{?}}",
699
- "fail": "요소에 value 속성이 존재하고, value 속성이 비어있습니다."
700
- },
701
- "non-empty-title": {
702
- "pass": "요소에 title 속성이 존재하고 있습니다.",
703
- "fail": "요소에 title 속성이 존재하지 않거나, title 속성이 비어 있습니다."
704
- },
705
- "non-empty-value": {
706
- "pass": "요소에 비어 있지 않은 value 요소가 존재하고 있습니다.",
707
- "fail": "요소에 value 속성이 존재하지 않거나, value 속성이 비어 있습니다."
708
- },
709
- "role-none": {
710
- "pass": "요소의 기본 의미가 role=\"none\" 역할로 재정의 되었습니다.",
711
- "fail": "요소의 기본 의미가 role=\"none\" 역할로 재정의 되지 않았습니다."
712
- },
713
- "role-presentation": {
714
- "pass": "요소의 기본 의미가 role=\"presentation\" 역할로 재정의 되었습니다.",
715
- "fail": "요소의 기본 의미가 role=\"presentation\" 역할로 재정의 되지 않았습니다."
716
- },
717
- "caption-faked": {
718
- "pass": "테이블의 첫 번째 행은 캡션으로 사용되지 않습니다.",
719
- "fail": "테이블의 첫 번째 자식은 테이블 셀 대신 캡션 이어야 합니다."
720
- },
721
- "has-caption": {
722
- "pass": "레이아웃 테이블에 <caption> 요소를 사용하지 않았습니다.",
723
- "fail": "레이아웃 테이블에 <caption> 요소를 사용하고 있습니다."
724
- },
725
- "has-summary": {
726
- "pass": "레이아웃 테이블에 summary 속성을 사용하지 않았습니다.",
727
- "fail": "레이아웃 테이블에 summary 속성을 사용했습니다."
728
- },
729
- "has-th": {
730
- "pass": "레이아웃 테이블에 <th> 요소를 사용하지 않았습니다.",
731
- "fail": "레이아웃 테이블에 <th> 요소를 사용했습니다."
732
- },
733
- "html5-scope": {
734
- "pass": "scope 속성은 테이블 헤더 요소 (<th>)에서만 사용됩니다.",
735
- "fail": "HTML5에서 scope 속성은 테이블 헤더 요소(<th>)에서만 사용할 있습니다."
736
- },
737
- "same-caption-summary": {
738
- "pass": "summary 속성 및 <caption> 콘텐츠는 중복되지 않았습니다.",
739
- "fail": "summary 속성 <caption> 콘텐츠는 중복됩니다."
740
- },
741
- "scope-value": {
742
- "pass": "scope 속성은 올바르게 사용되고 있습니다.",
743
- "fail": "scope 속성의 값은 'row' 또는 'col'뿐입니다."
744
- },
745
- "td-has-header": {
746
- "pass": "비어 있지 않은 모든 데이터 셀에는 테이블 헤더가 있습니다.",
747
- "fail": "비어 있지 않은 일부 데이터 셀에는 테이블 헤더가 없습니다."
748
- },
749
- "td-headers-attr": {
750
- "pass": "headers 속성은 독점적으로 테이블의 다른 셀을 참조하는데 사용됩니다.",
751
- "fail": "headers 속성은 테이블의 다른 셀을 참조하는데 독점적으로 사용되지 않습니다."
752
- },
753
- "th-has-data-cells": {
754
- "pass": "모든 테이블 헤더 셀은 데이터 셀을 나타냅니다.",
755
- "fail": "모든 테이블 헤더 셀이 데이터 셀을 참조하는 것은 아닙니다.",
756
- "incomplete": "테이블 데이터 셀이 없거나 비어 있습니다."
757
- },
758
- "hidden-content": {
759
- "pass": "페이지의 모든 내용이 분석되었습니다.",
760
- "fail": "이 페이지의 내용을 분석하는 중에 문제가 발생했습니다.",
761
- "incomplete": "분석되지 않은 숨겨진 콘텐츠가 페이지에 있습니다. 콘텐츠를 분석하려면 해당 콘텐츠의 표시를 트리거 해야 합니다."
762
- }
763
- },
764
- "failureSummaries": {
765
- "any": {
766
- "failureMessage": "다음 중 하나를 수정하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
767
- },
768
- "none": {
769
- "failureMessage": "다음 하나를 수정하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
770
- }
771
- },
772
- "incompleteFallbackMessage": {
773
- "undefined": {
774
- "failureMessage": "다음 하나를 수정하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
775
- }
776
- }
2
+ "lang": "ko",
3
+ "rules": {
4
+ "accesskeys": {
5
+ "description": "모든 accesskey 어트리뷰트 값이 고유한지 확인하세요.",
6
+ "help": "accesskey 어트리뷰트 값은 고유해야 합니다."
7
+ },
8
+ "area-alt": {
9
+ "description": "이미지 맵의 <area> 엘리먼트가 대체텍스트를 가지고 있는지 확인하세요.",
10
+ "help": "활성 <area> 엘리먼트는 반드시 대체텍스트를 가져야 합니다."
11
+ },
12
+ "aria-allowed-attr": {
13
+ "description": "ARIA 어트리뷰트가 엘리먼트의 역할(role)에 허용되었는지 확인하세요.",
14
+ "help": "엘리먼트는 반드시 허용된 ARIA 어트리뷰트만 사용해야 합니다."
15
+ },
16
+ "aria-allowed-role": {
17
+ "description": "역할(role) 어트리뷰트가 엘리먼트에 적절한 값을 가지고 있는지 확인하세요.",
18
+ "help": "ARIA 역할(role) 엘리먼트에 적절해야 합니다."
19
+ },
20
+ "aria-command-name": {
21
+ "description": "모든 ARIA 버튼, 링크, 메뉴 아이템이 접근 가능한 이름을 가지고 있는지 확인하세요.",
22
+ "help": "ARIA 명령 엘리먼트에는 반드시 접근 가능한 이름이 있어야 합니다."
23
+ },
24
+ "aria-dialog-name": {
25
+ "description": "모든 ARIA dialog와 alertdialog 노드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
26
+ "help": "ARIA dialog와 alertdialog 노드는 접근 가능한 이름을 가져야 합니다."
27
+ },
28
+ "aria-hidden-body": {
29
+ "description": "문서 body에 aria-hidden='true'가 없게 하세요.",
30
+ "help": "aria-hidden='true'는 반드시 문서 body에 없어야 합니다."
31
+ },
32
+ "aria-hidden-focus": {
33
+ "description": "aria-hidden 엘리먼트가 초점을 얻을 수 있는(focusable) 엘리먼트를 포함하지 않도록 하세요.",
34
+ "help": "ARIA hidden 엘리먼트는 반드시 초점을 얻을 수 있는(focusable) 엘리먼트를 포함하지 않아야 합니다."
35
+ },
36
+ "aria-input-field-name": {
37
+ "description": "모든 ARIA 입력 필드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
38
+ "help": "ARIA 입력 필드에는 반드시 접근 가능한 이름이 있어야 합니다."
39
+ },
40
+ "aria-meter-name": {
41
+ "description": "모든 ARIA meter 노드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
42
+ "help": "ARIA meter 노드에는 반드시 접근 가능한 이름이 있어야 합니다."
43
+ },
44
+ "aria-progressbar-name": {
45
+ "description": "모든 ARIA progressbar 노드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
46
+ "help": "ARIA progressbar 노드에는 반드시 접근 가능한 이름이 있어야 합니다."
47
+ },
48
+ "aria-required-attr": {
49
+ "description": "ARIA 역할(role) 가진 엘리먼트가 필수 ARIA 어트리뷰트를 모두 가지고 있는지 확인하세요",
50
+ "help": "필수 ARIA 어트리뷰트는 반드시 제공되어야 합니다."
51
+ },
52
+ "aria-required-children": {
53
+ "description": "하위 역할(child role)이 필요한 ARIA 역할(role) 가진 엘리먼트가 해당 역할(role)을 포함하고 있는지 확인하세요.",
54
+ "help": "일부 ARIA 역할(role) 반드시 특정한 하위 항목들을 포함해야 합니다."
55
+ },
56
+ "aria-required-parent": {
57
+ "description": "상위 역할(parent role)이 필요한 ARIA 역할(role)을 가진 엘리먼트가 해당 역할(role)에 포함되어 있는지 확인하세요.",
58
+ "help": "일부 ARIA 역할(role)은 반드시 특정한 상위 항목들에 포함되어야 합니다."
59
+ },
60
+ "aria-roledescription": {
61
+ "description": "aria-roledescription이 암묵적 혹은 명시적 역할(role)을 가진 엘리먼트에만 사용되었는지 확인하세요.",
62
+ "help": "aria-roledescription은 의미론적 역할(role)을 가진 엘리먼트에 사용하세요."
63
+ },
64
+ "aria-roles": {
65
+ "description": "역할(role) 어트리뷰트를 가진 모든 엘리먼트가 유효한 값을 가지고 있는지 확인하세요.",
66
+ "help": "ARIA 역할(role)은 반드시 유효한 값을 준수해야 합니다."
67
+ },
68
+ "aria-text": {
69
+ "description": "\"role=text\"가 초점을 얻을 있는(focusable) 후손을 가지지 않는 엘리먼트에 사용되었는지 확인하세요.",
70
+ "help": "\"role=text\"는 초점을 얻을 있는(focusable) 후손을 가지지 않아야 합니다."
71
+ },
72
+ "aria-toggle-field-name": {
73
+ "description": "모든 ARIA toggle 필드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
74
+ "help": "ARIA toggle 필드는 접근 가능한 이름을 가져야 합니다."
75
+ },
76
+ "aria-tooltip-name": {
77
+ "description": "모든 ARIA tooltip 노드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
78
+ "help": "ARIA tooltip 노드는 반드시 접근 가능한 이름을 가져야 합니다."
79
+ },
80
+ "aria-treeitem-name": {
81
+ "description": "모든 ARIA treeitem 노드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
82
+ "help": "ARIA treeitem 노드는 접근 가능한 이름을 가져야 합니다."
83
+ },
84
+ "aria-valid-attr-value": {
85
+ "description": "모든 ARIA 어트리뷰트가 유효한 값을 가지고 있는지 확인하세요.",
86
+ "help": "ARIA 어트리뷰트는 반드시 유효한 값을 준수해야 합니다."
87
+ },
88
+ "aria-valid-attr": {
89
+ "description": "aria- 시작하는 어트리뷰트가 유효한 ARIA 어트리뷰트인지 확인하세요.",
90
+ "help": "ARIA 어트리뷰트는 반드시 유효한 이름을 준수해야 합니다."
91
+ },
92
+ "audio-caption": {
93
+ "description": "<audio> 엘리먼트가 캡션(자막)을 가지고 있는지 확인하세요.",
94
+ "help": "<audio> 엘리먼트는 반드시 캡션(자막) 트랙을 가져야 합니다."
95
+ },
96
+ "autocomplete-valid": {
97
+ "description": "autocomplete 어트리뷰트가 올바르고 form 필드에 적합한지 확인하세요.",
98
+ "help": "autocomplete 어트리뷰트는 반드시 올바르게 사용되어야 합니다."
99
+ },
100
+ "avoid-inline-spacing": {
101
+ "description": "style 어트리뷰트를 통해 설정된 텍스트 간격이 사용자 정의 스타일시트를 통해 조정될 수 있는지 확인하세요.",
102
+ "help": "인라인 텍스트 간격은 반드시 사용자 정의 스타일시트로 조정 있어야 합니다."
103
+ },
104
+ "blink": {
105
+ "description": "<blink> 엘리먼트가 사용되지 않도록 하세요.",
106
+ "help": "<blink> 엘리먼트는 이상 사용되지 않으며 반드시 사용되지 않아야 합니다."
107
+ },
108
+ "button-name": {
109
+ "description": "버튼이 인식 가능한 텍스트를 가지고 있는지 확인하세요.",
110
+ "help": "버튼에 반드시 인식 가능한 텍스트가 있어야 합니다."
111
+ },
112
+ "bypass": {
113
+ "description": " 페이지에 사용자가 내비게이션을 건너뛰고 콘텐츠로 바로 이동할 있는 최소 하나의 메커니즘이 있는지 확인하세요.",
114
+ "help": "페이지에는 반드시 반복 되는 블럭을 건너 있는 수단이 있어야 합니다."
115
+ },
116
+ "color-contrast-enhanced": {
117
+ "description": "전경색과 배경색 사이의 대비가 WCAG 2 AAA 명암비 기준치를 충족하는지 확인하세요.",
118
+ "help": "엘리먼트는 반드시 충분한 명도 대비를 가져야 합니다."
119
+ },
120
+ "color-contrast": {
121
+ "description": "전경색과 배경색 사이의 대비가 WCAG 2 AA 명암비 기준치를 충족하는지 확인하세요.",
122
+ "help": "엘리먼트는 반드시 충분한 명도 대비를 가져야 합니다."
123
+ },
124
+ "css-orientation-lock": {
125
+ "description": "콘텐츠가 특정 디스플레이 방향으로 고정되지 않고, 콘텐츠가 모든 디스플레이 방향에서 사용 가능한지 확인하세요.",
126
+ "help": "CSS 미디어쿼리가 디스플레이 방향을 고정하기 위해 사용되지 않아야 합니다."
127
+ },
128
+ "definition-list": {
129
+ "description": "<dl> 엘리먼트가 올바르게 구조화되어 있는지 확인하세요.",
130
+ "help": "<dl> 엘리먼트는 반드시 올바르게 정렬된 <dt>와 <dd> 그룹, <script>, <template>, <div> 엘리먼트만 바로 포함해야 합니다."
131
+ },
132
+ "dlitem": {
133
+ "description": "<dt>와 <dd> 엘리먼트가 <dl>에 포함되어 있는지 확인하세요.",
134
+ "help": "<dt>와 <dd> 엘리먼트는 반드시 <dl>에 포함되어야 합니다."
135
+ },
136
+ "document-title": {
137
+ "description": " HTML 문서가 비어 있지 않은 <title> 엘리먼트를 포함하고 있는지 확인하세요.",
138
+ "help": "탐색에 도움이 되도록 문서에는 반드시 <title>이 있어야 합니다."
139
+ },
140
+ "duplicate-id-active": {
141
+ "description": "활성 엘리먼트의 모든 id 어트리뷰트 값이 고유한지 확인하세요.",
142
+ "help": "활성 엘리먼트의 ID는 반드시 고유해야 합니다."
143
+ },
144
+ "duplicate-id-aria": {
145
+ "description": "ARIAlabel에 사용된 모든 id 어트리뷰트 값이 고유한지 확인하세요.",
146
+ "help": "ARIA label에 사용된 ID는 반드시 고유해야 합니다."
147
+ },
148
+ "duplicate-id": {
149
+ "description": "모든 id 어트리뷰트 값이 고유한지 확인하세요.",
150
+ "help": "id 어트리뷰트 값은 반드시 고유해야 합니다."
151
+ },
152
+ "empty-heading": {
153
+ "description": "제목이 인식 가능한 텍스트를 가지고 있는지 확인하세요.",
154
+ "help": "제목은 비어있지 않아야 합니다."
155
+ },
156
+ "empty-table-header": {
157
+ "description": "테이블 헤더가 인식 가능한 텍스트를 가지고 있는지 확인하세요.",
158
+ "help": "테이블 헤더 텍스트는 반드시 비어있지 않아야 합니다."
159
+ },
160
+ "focus-order-semantics": {
161
+ "description": "초점 순서(focus order)에 있는 엘리먼트가 적절한 역할(role)을 가지고 있는지 확인하세요.",
162
+ "help": "초점 순서(focus order)에 있는 엘리먼트는 대화형 콘텐츠(interactive contents)에 적합한 역할(role)이 필요합니다."
163
+ },
164
+ "form-field-multiple-labels": {
165
+ "description": "form 필드가 여러 개의 레이블 엘리먼트를 가지지 않도록 하세요.",
166
+ "help": "form 필드는 반드시 여러 개의 레이블 엘리먼트를 가지지 않아야 합니다."
167
+ },
168
+ "frame-focusable-content": {
169
+ "description": "초점을 얻을 있는(focusable) 콘텐츠를 가진 <frame>과 <iframe> 엘리먼트에 tabindex=-1이 없게 하세요",
170
+ "help": "초점을 얻을 있는(focusable) 콘텐츠를 가진 프레임에는 반드시 tabindex=-1 이 없어야 합니다."
171
+ },
172
+ "frame-tested": {
173
+ "description": "<iframe>과 <frame> 엘리먼트가 axe-core 스크립트를 포함하고 있는지 확인하세요.",
174
+ "help": "프레임이 axe-core로 테스트되어야 합니다."
175
+ },
176
+ "frame-title-unique": {
177
+ "description": "<iframe>과 <frame> 엘리먼트가 고유한 title 어트리뷰트를 포함하고 있는지 확인하세요.",
178
+ "help": "프레임에는 고유한 title 어트리뷰트가 있어야 합니다."
179
+ },
180
+ "frame-title": {
181
+ "description": "<iframe>과 <frame> 엘리먼트가 접근 가능한 이름을 가지고 있는지 확인하세요.",
182
+ "help": "프레임에는 반드시 접근 가능한 이름이 있어야 합니다."
183
+ },
184
+ "heading-order": {
185
+ "description": "제목 순서가 의미론적으로 올바른지 확인하세요.",
186
+ "help": "제목 수준은 단계씩 증가해야만 합니다."
187
+ },
188
+ "hidden-content": {
189
+ "description": "숨겨진 콘텐츠에 대해 사용자에게 알리세요.",
190
+ "help": "페이지의 숨겨진 콘텐츠는 분석 없습니다."
191
+ },
192
+ "html-has-lang": {
193
+ "description": "모든 HTML 문서가 lang 어트리뷰트를 가지고 있는지 확인하세요.",
194
+ "help": "<html> 엘리먼트는 반드시 lang 어트리뷰트를 가져야 합니다."
195
+ },
196
+ "html-lang-valid": {
197
+ "description": "<html> 엘리먼트의 lang 어트리뷰트가 유효한 값을 가지고 있는지 확인하세요.",
198
+ "help": "<html> 엘리먼트는 반드시 lang 어트리뷰트에 유효한 값을 가져야 합니다."
199
+ },
200
+ "html-xml-lang-mismatch": {
201
+ "description": "유효한 lang과 xml:lang 어트리뷰트를 가진 HTML 엘리먼트가 페이지의 기본 언어와 일치하는지 확인하세요.",
202
+ "help": "lang과 xml:lang을 가진 HTML 엘리먼트는 반드시 동일한 기본 언어를 가져야 합니다."
203
+ },
204
+ "identical-links-same-purpose": {
205
+ "description": "동일한 접근 가능한 이름을 가지는 링크가 비슷한 용도로 제공되고 있는지 확인하세요.",
206
+ "help": "동일한 이름을 가진 링크는 비슷한 용도를 가집니다."
207
+ },
208
+ "image-alt": {
209
+ "description": "<img> 엘리먼트가 대체텍스트를 가지고 있거나 none 또는 presentation 역할(role)을 가지고 있는지 확인하세요.",
210
+ "help": "이미지는 반드시 대체텍스트를 가져야 합니다."
211
+ },
212
+ "image-redundant-alt": {
213
+ "description": "이미지 대체텍스트가 텍스트와 반복되지 않도록 하세요.",
214
+ "help": "이미지의 대체텍스트는 텍스트와 반복되지 않아야 합니다."
215
+ },
216
+ "input-button-name": {
217
+ "description": "입력 버튼이 인식 가능한 텍스트를 가지고 있는지 확인하세요.",
218
+ "help": "입력 버튼은 반드시 인식 가능한 텍스트를 가져야 합니다."
219
+ },
220
+ "input-image-alt": {
221
+ "description": "<input type=\"image\"> 엘리먼트가 대체텍스트를 가지고 있는지 확인하세요.",
222
+ "help": "이미지 버튼은 반드시 대체텍스트를 가져야 합니다."
223
+ },
224
+ "label-content-name-mismatch": {
225
+ "description": "콘텐츠로부터 레이블이 지정되는 엘리먼트가 접근 가능한 이름의 일부로 눈에 보이는 텍스트를 반드시 가지도록 하세요.",
226
+ "help": "엘리먼트는 반드시 접근 가능한 이름의 일부로 눈에 보이는 텍스트를 가져야 합니다."
227
+ },
228
+ "label-title-only": {
229
+ "description": "모든 form 엘리먼트가 title이나 aria-describedby 어트리뷰트를 단독으로 사용하여 레이블이 지정되지 않도록 하세요.",
230
+ "help": "form 엘리먼트는 눈에 보이는 레이블을 가져야 합니다."
231
+ },
232
+ "label": {
233
+ "description": "모든 form 엘리먼트가 레이블을 가지고 있는지 확인하세요.",
234
+ "help": "form 엘리먼트는 반드시 레이블을 가져야 합니다."
235
+ },
236
+ "landmark-banner-is-top-level": {
237
+ "description": "banner 랜드마크가 최상위 레벨에 있는지 확인하세요.",
238
+ "help": "banner 랜드마크는 다른 랜드마크 안에 포함되지 않아야 합니다."
239
+ },
240
+ "landmark-complementary-is-top-level": {
241
+ "description": "complementary나 aside 랜드마크가 최상위 레벨에 있는지 확인하세요.",
242
+ "help": "aside는 다른 랜드마크 안에 포함되지 않아야 합니다."
243
+ },
244
+ "landmark-contentinfo-is-top-level": {
245
+ "description": "contentinfo 랜드마크가 최상위 레벨에 있는지 확인하세요.",
246
+ "help": "contentinfo 랜드마크는 다른 랜드마크 안에 포함되지 않아야 합니다."
247
+ },
248
+ "landmark-main-is-top-level": {
249
+ "description": "main 랜드마크가 최상위 레벨에 있는지 확인하세요.",
250
+ "help": "main 랜드마크는 다른 랜드마크 안에 포함되지 않아야 합니다."
251
+ },
252
+ "landmark-no-duplicate-banner": {
253
+ "description": "문서가 최대 하나의 banner 랜드마크를 가지고 있는지 확인하세요.",
254
+ "help": "문서는 하나를 초과하는 banner 랜드마크를 가지지 않아야 합니다."
255
+ },
256
+ "landmark-no-duplicate-contentinfo": {
257
+ "description": "문서가 최대 하나의 contentinfo 랜드마크를 가지고 있는지 확인하세요.",
258
+ "help": "문서는 하나를 초과하는 contentinfo 랜드마크를 가지지 않아야 합니다."
259
+ },
260
+ "landmark-no-duplicate-main": {
261
+ "description": "문서가 최대 하나의 main 랜드마크를 가지고 있는지 확인하세요.",
262
+ "help": "문서는 하나를 초과하는 main 랜드마크를 가지지 않아야 합니다."
263
+ },
264
+ "landmark-one-main": {
265
+ "description": "문서가 main 랜드마크를 가지고 있는지 확인하세요,",
266
+ "help": "문서는 하나의 main 랜드마크를 가져야 합니다."
267
+ },
268
+ "landmark-unique": {
269
+ "help": "랜드마크가 고유한지 확인하세요.",
270
+ "description": "랜드마크는 고유한 역할(role) 또는 역할(role)/레이블/제목 조합(즉, 접근 가능한 이름)을 가져야 합니다."
271
+ },
272
+ "link-in-text-block": {
273
+ "description": "링크가 색상에 의존하지 않고 구별 있어야 합니다.",
274
+ "help": "링크는 반드시 색상에 의존하지 않는 방식으로 주변 텍스트로부터 구별되어야 합니다."
275
+ },
276
+ "link-name": {
277
+ "description": "링크가 인식 가능한 텍스트를 가지고 있는지 확인하세요.",
278
+ "help": "링크는 반드시 인식 가능한 텍스트를 가져야 합니다."
279
+ },
280
+ "list": {
281
+ "description": "목록이 올바르게 구조화되어 있는지 확인하세요.",
282
+ "help": "<ul>과 <ol>은 반드시 <li>, <script> 또는 <template> 엘리먼트만을 바로 포함해야 합니다."
283
+ },
284
+ "listitem": {
285
+ "description": "<li> 엘리먼트가 의미론적으로 사용되었는지 확인하세요.",
286
+ "help": "<li> 엘리먼트는 반드시 <ul>이나 <ol>에 포함되어야 합니다."
287
+ },
288
+ "marquee": {
289
+ "description": "<marquee> 엘리먼트가 사용되지 않도록 하세요.",
290
+ "help": "<marquee> 엘리먼트는 이상 사용되지 않으며 반드시 사용되지 않아야 합니다."
291
+ },
292
+ "meta-refresh": {
293
+ "description": "<meta http-equiv=\"refresh\">가 사용되지 않도록 하세요.",
294
+ "help": "시간 제한 새로고침은 존재하지 않아야 합니다."
295
+ },
296
+ "meta-viewport-large": {
297
+ "description": "<meta name=\"viewport\">가 크기를 조정할 있는지 확인하세요.",
298
+ "help": "사용자는 텍스트를 최대 500%까지 확대/축소 또는 크기를 조정할 수 있어야 합니다."
299
+ },
300
+ "meta-viewport": {
301
+ "description": "<meta name=\"viewport\">가 텍스트 크기 조절 확대/축소를 비활성화되지 않게 하세요.",
302
+ "help": "확대/축소 크기 조정은 비활성화되지 않아야 합니다."
303
+ },
304
+ "nested-interactive": {
305
+ "description": "중첩된 대화형 컨트롤은 스크린리더에 의해 낭독되지 않습니다.",
306
+ "help": "대화형 컨트롤이 중첩되지 않게 하세요."
307
+ },
308
+ "no-autoplay-audio": {
309
+ "description": "<video>나 <audio> 엘리먼트가 중지 시키거나 오디오를 음소거하는 제어 메커니즘 없이 3초를 초과하여 오디오를 자동 재생하지 않게 하세요.",
310
+ "help": "<video>나 <audio> 엘리먼트는 오디오를 자동 재생하지 않아야 합니다."
311
+ },
312
+ "object-alt": {
313
+ "description": "<object> 엘리먼트가 대체텍스트를 가지고 있는지 확인하세요.",
314
+ "help": "<object> 엘리먼트는 반드시 대체텍스트를 가져야 합니다."
315
+ },
316
+ "p-as-heading": {
317
+ "description": "p 엘리먼트를 스타일링하여 제목으로 사용되지 않도록 하세요.",
318
+ "help": "굵은 텍스트, 기울임 꼴, 글꼴 크기를 p 엘리먼트를 제목으로 스타일링하는데 사용하지 않아야 합니다."
319
+ },
320
+ "page-has-heading-one": {
321
+ "description": "페이지 또는 프레임 최소 하나의 프레임이 1 레벨 제목을 포함하고 있는지 확인하세요.",
322
+ "help": "페이지는 1 레벨 제목을 포함해야 합니다."
323
+ },
324
+ "presentation-role-conflict": {
325
+ "description": "역할(role)이 none이거나 presentation이고 역할(role) 충돌 해결이 필요한 엘리먼트를 표시해 두세요.",
326
+ "help": "none이나 presentation 역할(role) 엘리먼트가 표시되어야 합니다."
327
+ },
328
+ "region": {
329
+ "description": "모든 페이지 콘텐츠가 랜드마크에 포함되어 있는지 확인하세요.",
330
+ "help": "모든 페이지 콘텐츠는 랜드마크에 포함되어야 합니다."
331
+ },
332
+ "role-img-alt": {
333
+ "description": "[role='img'] 엘리먼트가 대체텍스트를 가지고 있는지 확인하세요.",
334
+ "help": "[role='img'] 엘리먼트는 대체텍스트를 가저야 합니다."
335
+ },
336
+ "scope-attr-valid": {
337
+ "description": "scope 어트리뷰트가 테이블에 올바르게 사용되고 있는지 확인하세요.",
338
+ "help": "scope 어트리뷰트는 올바르게 사용되어야 합니다."
339
+ },
340
+ "scrollable-region-focusable": {
341
+ "description": "스크롤 가능한 콘텐츠를 가진 엘리먼트는 반드시 키보드로 접근 가능해야 합니다.",
342
+ "help": "스크롤 가능한 영역이 키보드 접근을 가져야 합니다."
343
+ },
344
+ "select-name": {
345
+ "description": "select 엘리먼트가 접근 가능한 이름을 가지고 있는지 확인하세요.",
346
+ "help": "select 엘리먼트는 반드시 접근 가능한 이름을 가져야 합니다."
347
+ },
348
+ "server-side-image-map": {
349
+ "description": "서버 사이드 이미지 맵이 사용되지 않도록 하세요.",
350
+ "help": "서버 사이드 이미지 맵은 반드시 사용되지 않아야 합니다."
351
+ },
352
+ "skip-link": {
353
+ "description": "모든 건너뛰기 링크가 초점을 얻을 있는(focusable) 대상을 가지는지 확인하세요.",
354
+ "help": "건너뛰기 링크 대상이 존재하고 초점을 얻을 수 있어야(focusable) 합니다."
355
+ },
356
+ "svg-img-alt": {
357
+ "description": "이미지, 그래픽 문서, 그래픽 심볼 역할(role)을 가진 svg 엘리먼트가 접근 가능한 텍스트를 가지고 있는지 확인하세요.",
358
+ "help": "img 역할(role)을 가진 svg 엘리먼트는 접근 가능한 텍스트를 가져야 합니다."
359
+ },
360
+ "tabindex": {
361
+ "description": "tabindex 어트리뷰트 값이 0보다 크지 않게 하세요.",
362
+ "help": "엘리먼트는 0보다 큰 tabindex를 가지지 않아야 합니다."
363
+ },
364
+ "table-duplicate-name": {
365
+ "description": "테이블이 동일한 summary와 caption을 가지지 않게 하세요.",
366
+ "help": "<caption> 엘리먼트는 summary 어트리뷰트와 동일한 텍스트를 포함하지 않아야 합니다."
367
+ },
368
+ "table-fake-caption": {
369
+ "description": "캡션이 있는 테이블이 <caption> 엘리먼트를 사용하고 있는지 확인하세요.",
370
+ "help": "데이터 테이블에 캡션을 제공하는데 데이터 셀이나 헤더 셀이 반드시 사용되지 않아야 합니다."
371
+ },
372
+ "td-has-header": {
373
+ "description": " 테이블의 비어 있지 않은 데이터 셀이 하나 또는 그 이상의 테이블 헤더를 가지고 있는지 확인하세요.",
374
+ "help": "3x3보다 큰 테이블에서 모든 비어있지 않은 td 엘리먼트는 반드시 연관된 테이블 헤더를 가져야 합니다."
375
+ },
376
+ "td-headers-attr": {
377
+ "description": "headers를 사용하는 테이블의 셀이 테이블의 다른 셀을 참조하고 있는지 확인하세요.",
378
+ "help": "headers 어트리뷰트를 사용하는 table 엘리먼트의 모든 셀은 반드시 그 동일한 테이블의 다른 셀만 참조해야 합니다."
379
+ },
380
+ "th-has-data-cells": {
381
+ "description": "데이터 테이블의 테이블 헤더가 데이터 셀을 참조하고 있는지 확인하세요.",
382
+ "help": "모든 th 엘리먼트와 role=columnheader/rowheader를 가진 엘리먼트는 반드시 그것들이 설명하는 데이터 셀을 가져야 합니다."
383
+ },
384
+ "valid-lang": {
385
+ "description": "lang 어트리뷰트가 유효한 값을 가지고 있는지 확인하세요.",
386
+ "help": "lang 어트리뷰트는 반드시 유효한 값을 가져야 합니다."
387
+ },
388
+ "video-caption": {
389
+ "description": "<video> 엘리먼트가 캡션(자막)을 가지고 있는지 확인하세요.",
390
+ "help": "<video> 엘리먼트는 반드시 캡션(자막)을 가져야 합니다."
391
+ }
392
+ },
393
+ "checks": {
394
+ "abstractrole": {
395
+ "pass": "abstract 역할(role)이 사용되지 않았습니다.",
396
+ "fail": {
397
+ "singular": "abstract 역할(role)은 직접 사용될 수 없습니다: ${data.values}",
398
+ "plural": "abstract 역할(role)들은 직접 사용될 없습니다: ${data.values}"
399
+ }
400
+ },
401
+ "aria-allowed-attr": {
402
+ "pass": "ARIA 어트리뷰트가 정의된 역할(role)에 대해 올바르게 사용되었습니다.",
403
+ "fail": {
404
+ "singular": "ARIA 어트리뷰트가 허용되지 않았습니다: ${data.values}",
405
+ "plural": "ARIA 어트리뷰트들이 허용되지 않았습니다: ${data.values}"
406
+ },
407
+ "incomplete": " 엘리먼트에 ARIA 어트리뷰트가 무시되어도 문제가 없는지 확안하세요: ${data.values}"
408
+ },
409
+ "aria-allowed-role": {
410
+ "pass": "ARIA 역할(role)이 주어진 엘리먼트에 허용되었습니다.",
411
+ "fail": {
412
+ "singular": "ARIA 역할(role) ${data.values}이(가) 주어진 엘리먼트에 허용되지 않았습니다.",
413
+ "plural": "ARIA 역할(role)들 ${data.values}이(가) 주어진 엘리먼트에 허용되지 않았습니다."
414
+ },
415
+ "incomplete": {
416
+ "singular": "엘리먼트에 허용되지 않았기 때문에, 엘리먼트가 노출 될 때 ARIA 역할(role) ${data.values}이(가) 반드시 제거되어야 합니다.",
417
+ "plural": "엘리먼트에 허용되지 않았기 때문에, 엘리먼트가 노출 때 ARIA 역할(role)들 ${data.values}이(가) 반드시 제거되어야 합니다."
418
+ }
419
+ },
420
+ "aria-errormessage": {
421
+ "pass": "aria-errormessage가 존재하고, 지원된 aria-errormessage 기법을 사용하는 스크린리더에 노출되는 엘리먼트를 참조합니다.",
422
+ "fail": {
423
+ "singular": "aria-errormessage `${data.values}`은(는) 반드시 메세지를 낭독하기 위한 기법을 (예를 들어, aria-live, aria-describedby, role=alert 등) 사용해야 합니다.",
424
+ "plural": "aria-errormessage 값들 `${data.values}`은(는) 반드시 메세지를 낭독하기 위한 기법을 (예를 들어, aria-live, aria-describedby, role=alert 등) 사용해야 합니다.",
425
+ "hidden": "aria-errormessage `${data.values}`은(는) 숨겨진 엘리먼트를 참조할 수 없습니다."
426
+ },
427
+ "incomplete": {
428
+ "singular": "aria-errormessage 값 `${data.values}`이(가) 기존 엘리먼트를 참조하는지 확인하세요.",
429
+ "plural": "aria-errormessage 값들 `${data.values}`이(가) 기존 엘리먼트를 참조하는지 확인하세요.",
430
+ "idrefs": "aria-errormessage 엘리먼트가 페이지에 존재하는지 확인할 수 없습니다: ${data.values}"
431
+ }
432
+ },
433
+ "aria-hidden-body": {
434
+ "pass": "문서 body에 aria-hidden 어트리뷰트가 없습니다.",
435
+ "fail": "문서 body에 aria-hidden=true가 없어야 합니다."
436
+ },
437
+ "aria-level": {
438
+ "pass": "aria-level 값이 유효합니다.",
439
+ "incomplete": "6보다 aria-level 값은 모든 스크린리더와 브라우저 조합에서 지원되지 않습니다."
440
+ },
441
+ "aria-prohibited-attr": {
442
+ "pass": "ARIA 어트리뷰트가 혀용되었습니다.",
443
+ "fail": {
444
+ "hasRolePlural": "${data.prohibited} 어트리뷰트는 \"${data.role}\" 역할(role)과 함께 사용될 수 없습니다.",
445
+ "hasRoleSingular": "${data.prohibited} 어트리뷰트는 \"${data.role}\" 역할(role)과 함께 사용될 수 없습니다.",
446
+ "noRolePlural": "${data.prohibited} 어트리뷰트는 유효하지 않은 역할(role)을 가진 ${data.nodeName}에 사용될 수 없습니다.",
447
+ "noRoleSingular": "${data.prohibited} 어트리뷰트는 유효하지 않은 역할(role)을 가진 ${data.nodeName}에 사용될 수 없습니다."
448
+ },
449
+ "incomplete": {
450
+ "hasRoleSingular": "${data.prohibited} 어트리뷰트는 \"${data.role}\" 역할(role)에서 제대로 지원되지 않습니다.",
451
+ "hasRolePlural": "${data.prohibited} 어트리뷰트는 \"${data.role}\" 역할(role)에서 제대로 지원되지 않습니다.",
452
+ "noRoleSingular": "${data.prohibited} 어트리뷰트는 유효한 역할(role) 어트리뷰트가 없는 ${data.nodeName}에서는 제대로 지원되지 않습니다.",
453
+ "noRolePlural": "${data.prohibited} 어트리뷰트는 유효한 역할(role) 어트리뷰트가 없는 ${data.nodeName}에서는 제대로 지원되지 않습니다."
454
+ }
455
+ },
456
+ "aria-required-attr": {
457
+ "pass": "모든 필수 ARIA 어트리뷰트가 존재합니다.",
458
+ "fail": {
459
+ "singular": "필수 ARIA 어트리뷰트가 없습니다: ${data.values}",
460
+ "plural": "필수 ARIA 어트리뷰트들이 없습니다: ${data.values}"
461
+ }
462
+ },
463
+ "aria-required-children": {
464
+ "pass": "필수 ARIA 하위 항목들이 존재합니다.",
465
+ "fail": {
466
+ "singular": "필수 ARIA 하위 역할(role)이 없습니다: ${data.values}",
467
+ "plural": "필수 ARIA 하위 역할(role)들이 없습니다: ${data.values}"
468
+ },
469
+ "incomplete": {
470
+ "singular": "추가 될 예상 ARIA 하위 역할(role): ${data.values}",
471
+ "plural": "추가 예상 ARIA 하위 역할(role)들: ${data.values}"
472
+ }
473
+ },
474
+ "aria-required-parent": {
475
+ "pass": "필수 ARIA 상위 역할(role)이 존재합니다.",
476
+ "fail": {
477
+ "singular": "필수 ARIA 상위 역할(role)이 없습니다: ${data.values}",
478
+ "plural": "필수 ARIA 상위 역할(role)들이 없습니다: ${data.values}"
479
+ }
480
+ },
481
+ "aria-roledescription": {
482
+ "pass": "aria-roledescription이 지원되는 의미론적 역할(role)에 사용되었습니다.",
483
+ "incomplete": "지원되는 스크린리더에서 aria-roledescription이 낭독되는지 검사하세요.",
484
+ "fail": "엘리먼트에 aria-roledescription을 지원하는 역할(role)을 제공되지 않았습니다."
485
+ },
486
+ "aria-unsupported-attr": {
487
+ "pass": "ARIA 어트리뷰트가 지원됩니다.",
488
+ "fail": "ARIA 어트리뷰트가 스크린리더와 보조기술에서 널리 지원되지 않습니다: ${data.values}"
489
+ },
490
+ "aria-valid-attr-value": {
491
+ "pass": "ARIA 어트리뷰트 값이 유효합니다.",
492
+ "fail": {
493
+ "singular": "유효하지 않은 ARIA 어트리뷰트 값: ${data.values}",
494
+ "plural": "유효하지 않은 ARIA 어트리뷰트 값들: ${data.values}"
495
+ },
496
+ "incomplete": {
497
+ "noId": "ARIA 어트리뷰트 엘리먼트 ID가 페이지에 없습니다: ${data.needsReview}",
498
+ "ariaCurrent": "ARIA 어트리뷰트 값이 유효하지 않으며 \"aria-current=true\"로 취급 될 것입니다: ${data.needsReview}",
499
+ "idrefs": "페이지에 ARIA 어트리뷰트 엘리먼트 ID가 존재하는지 확인할 수 없습니다: ${data.needsReview}"
500
+ }
501
+ },
502
+ "aria-valid-attr": {
503
+ "pass": "ARIA 어트리뷰트 이름이 유효합니다.",
504
+ "fail": {
505
+ "singular": "유효하지 않은 ARIA 어트리뷰트 이름: ${data.values}",
506
+ "plural": "유효하지 않은 ARIA 어트리뷰트 이름들: ${data.values}"
507
+ }
508
+ },
509
+ "deprecatedrole": {
510
+ "pass": "ARIA 역할(role)은 용도 폐기(deprecated) 되지 않았습니다.",
511
+ "fail": "사용된 역할(role)은 용도 폐기(deprecated) 되었습니다: ${data.values}"
512
+ },
513
+ "fallbackrole": {
514
+ "pass": "하나의 역할(role) 값만 사용되었습니다.",
515
+ "fail": "폴백 역할(role)들은 구형 브라우저들에서 지원되지 않으므로, 하나의 값만 사용해야 합니다.",
516
+ "incomplete": "'presentation'이나 'none' 역할(role)만 사용하세요, 둘은 동의어입니다."
517
+ },
518
+ "has-global-aria-attribute": {
519
+ "pass": {
520
+ "singular": "엘리먼트가 전역 ARIA 어트리뷰트를 가지고 있습니다: ${data.values}",
521
+ "plural": "엘리먼트가 전역 ARIA 어트리뷰트들을 가지고 있습니다: ${data.values}"
522
+ },
523
+ "fail": "엘리먼트가 전역 ARIA 어트리뷰트를 가지고 있지 않습니다."
524
+ },
525
+ "has-widget-role": {
526
+ "pass": "엘리먼트가 위젯 역할(role)을 가지고 있습니다.",
527
+ "fail": "엘리먼트가 위젯 역할(role)을 가지고 있지 않습니다."
528
+ },
529
+ "invalidrole": {
530
+ "pass": "ARIA 역할(role)이 유효합니다.",
531
+ "fail": {
532
+ "singular": "역할(role)은 반드시 유효한 ARIA 역할(role) 하나여야 합니다: ${data.values}",
533
+ "plural": "역할(role)들은 반드시 유효한 ARIA 역할(role)들 중 하나여야 합니다: ${data.values}"
534
+ }
535
+ },
536
+ "is-element-focusable": {
537
+ "pass": "엘리먼트가 초점을 얻을 수 있습니다(focusable).",
538
+ "fail": "엘리먼트가 초점을 얻을 수 없습니다(not focusable)."
539
+ },
540
+ "no-implicit-explicit-label": {
541
+ "pass": "<label>과 접근 가능한 이름이 일치합니다.",
542
+ "incomplete": "<label>이 ARIA ${data} 필드의 이름의 일부일 필요가 없는지 확인하세요."
543
+ },
544
+ "unsupportedrole": {
545
+ "pass": "ARIA 역할(role)이 지원됩니다.",
546
+ "fail": "사용된 역할(role)이 스크린리더와 보조기술에서 널리 지원되지 않습니다: ${data.values}"
547
+ },
548
+ "valid-scrollable-semantics": {
549
+ "pass": "엘리먼트가 초점 순서(focus order)의 엘리먼트에 유효한 의미론을 가집니다.",
550
+ "fail": "엘리먼트가 초점 순서(focus order)의 엘리먼트에 유효하지 않은 의미론을 가집니다."
551
+ },
552
+ "color-contrast-enhanced": {
553
+ "pass": "엘리먼트가 ${data.contrastRatio}의 충분한 명도 대비를 가집니다.",
554
+ "fail": {
555
+ "default": "엘리먼트가 ${data.contrastRatio} (전경색: ${data.fgColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight})의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
556
+ "fgOnShadowColor": "엘리먼트가 전경색과 그림자 색상 (전경색: ${data.fgColor}, 텍스트 그림자 색상: ${data.shadowColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
557
+ "shadowOnBgColor": "엘리먼트가 그림자 색상과 배경색 (텍스트 그림자 색상: ${data.shadowColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}"
558
+ },
559
+ "incomplete": {
560
+ "default": "명암비를 확인할 없습니다.",
561
+ "bgImage": "배경 이미지로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
562
+ "bgGradient": "배경 그라데이션으로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
563
+ "imgNode": "엘리먼트가 이미지 노드를 포함하기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
564
+ "bgOverlap": "다른 엘리먼트로 겹쳐 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
565
+ "fgAlpha": "알파 투명도 때문에 엘리먼트의 전경색이 확인될 수 없습니다.",
566
+ "elmPartiallyObscured": "다른 엘리먼트에 의해 부분적으로 가려 있기 때문에 배경색이 확인될 수 없습니다.",
567
+ "elmPartiallyObscuring": "다른 엘리먼트에 의해 부분적으로 겹쳐 있기 때문에 배경색이 확인될 수 없습니다.",
568
+ "outsideViewport": "엘리먼트가 뷰포트 밖에 있기 때문에 엘리먼트의 배경색이 확인될 없습니다.",
569
+ "equalRatio": "엘리먼트가 배경색과 1:1의 명암비를 가집니다.",
570
+ "shortTextContent": "엘리먼트 콘텐츠가 너무 짧아 실제 텍스트 콘텐츠인지 확인될 수 없습니다.",
571
+ "nonBmp": "엘리먼트 콘텐츠가 비텍스트 문자만 포함합니다.",
572
+ "pseudoContent": "가상 엘리먼트로 인해 엘리먼트의 배경색이 확인될 없습니다."
573
+ }
574
+ },
575
+ "color-contrast": {
576
+ "pass": "엘리먼트가 ${data.contrastRatio}의 충분한 명도 대비를 가집니다.",
577
+ "fail": {
578
+ "default": "엘리먼트가 ${data.contrastRatio} (전경색: ${data.fgColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight})의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
579
+ "fgOnShadowColor": "엘리먼트가 전경색과 그림자 색상 (전경색: ${data.fgColor}, 텍스트 그림자 색상: ${data.shadowColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
580
+ "shadowOnBgColor": "엘리먼트가 그림자 색상과 배경색 (텍스트 그림자 색상: ${data.shadowColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}"
581
+ },
582
+ "incomplete": {
583
+ "default": "명암비를 확인할 없습니다.",
584
+ "bgImage": "배경 이미지로 인해 엘리먼트의 배경색이 확인될 없습니다.",
585
+ "bgGradient": "배경 그라데이션으로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
586
+ "imgNode": "엘리먼트가 이미지 노드를 포함하기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
587
+ "bgOverlap": "다른 엘리먼트로 겹쳐 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
588
+ "fgAlpha": "알파 투명도 때문에 엘리먼트의 전경색이 확인될 수 없습니다.",
589
+ "elmPartiallyObscured": "다른 엘리먼트에 의해 부분적으로 가려 있기 때문에 배경색이 확인될 수 없습니다.",
590
+ "elmPartiallyObscuring": "다른 엘리먼트에 의해 부분적으로 겹쳐 있기 때문에 배경색이 확인될 수 없습니다.",
591
+ "outsideViewport": "엘리먼트가 뷰포트 밖에 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
592
+ "equalRatio": "엘리먼트가 배경색과 1:1의 명암비를 가집니다.",
593
+ "shortTextContent": "엘리먼트 콘텐츠가 너무 짧아 실제 텍스트 콘텐츠인지 확인될 수 없습니다.",
594
+ "nonBmp": "엘리먼트 콘텐츠가 비텍스트 문자만 포함합니다.",
595
+ "pseudoContent": "가상 엘리먼트로 인해 엘리먼트의 배경색이 확인될 수 없습니다."
596
+ }
597
+ },
598
+ "link-in-text-block": {
599
+ "pass": "링크가 색상 외 다른 방법으로 주변 텍스트와 구별 될 수 있습니다.",
600
+ "fail": "링크가 색상 외 다른 방법으로 주변 텍스트와 구별 될 필요가 있습니다.",
601
+ "incomplete": {
602
+ "default": "명암비를 확인할 없습니다.",
603
+ "bgContrast": "엘리먼트의 명암비가 확인될 수 없습니다. 뚜렷이 구별되는 hover/focus 스타일을 확인하세요.",
604
+ "bgImage": "'배경 이미지로 인해 엘리먼트의 명암비가 확인될 수 없습니다.",
605
+ "bgGradient": "배경 그라데이션으로 인해 엘리먼트의 명암비가 확인될 수 없습니다.",
606
+ "imgNode": "엘리먼트가 이미지 노드를 포함하기 때문에 엘리먼트의 명암비가 확인될 수 없습니다.",
607
+ "bgOverlap": "엘리먼트 겹침으로 인해 엘리먼트의 명암비가 확인될 수 없습니다."
608
+ }
609
+ },
610
+ "autocomplete-appropriate": {
611
+ "pass": "autocomplete 값이 적절한 엘리먼트에 있습니다",
612
+ "fail": "autocomplete 값은 이 유형의 입력에는 적절하지 않습니다."
613
+ },
614
+ "autocomplete-valid": {
615
+ "pass": "autocomplete 어트리뷰트가 올바르게 구성되었습니다.",
616
+ "fail": "autocomplete 어트리뷰트가 올바르지 않게 구성되었습니다."
617
+ },
618
+ "accesskeys": {
619
+ "pass": "accesskey 어트리뷰트 값이 고유합니다.",
620
+ "fail": "문서에 동일한 accesskey를 가진 여러 엘리먼트가 있습니다."
621
+ },
622
+ "focusable-content": {
623
+ "pass": "엘리먼트가 초점을 얻을 수 있는(focusable) 엘리먼트를 포함합니다.",
624
+ "fail": "엘리먼트가 초점을 얻을 수 있는(focusable) 콘텐츠를 가져야 합니다."
625
+ },
626
+ "focusable-disabled": {
627
+ "pass": "엘리먼트 안에 초점을 얻을 수 있는(focusable) 엘리먼트가 없습니다.",
628
+ "fail": "초점을 얻을 수 있는(focusable) 콘텐츠는 비활성 되거나 DOM에서 제거되어야 합니다."
629
+ },
630
+ "focusable-element": {
631
+ "pass": "엘리먼트가 초점을 얻을 수 있습니다(focusable).",
632
+ "fail": "엘리먼트가 초점을 얻을 수 있어야(focusable) 합니다."
633
+ },
634
+ "focusable-modal-open": {
635
+ "pass": "modal이 열려 있는 동안 초점을 얻을 수 있는(focusable) 엘리먼트가 없습니다.",
636
+ "incomplete": "현재 상태에서 초점을 얻을 수 있는(focusable) 엘리먼트가 키보드로 초점을 얻을 수(tabbable) 없는지 확인하세요"
637
+ },
638
+ "focusable-no-name": {
639
+ "pass": "엘리먼트가 순서(tab order)에 없거나 접근 가능한 텍스트를 가지고 있습니다.",
640
+ "fail": "엘리먼트가 탭 순서(tab order)에 있지만 접근 가능한 텍스트를 가지고 있지 않습니다.",
641
+ "incomplete": "엘리먼트가 접근 가능한 이름을 가지고 있는지 확인할 수 없습니다."
642
+ },
643
+ "focusable-not-tabbable": {
644
+ "pass": "엘리먼트 안에 초점을 얻을 수 있는(focusable) 엘리먼트가 없습니다.",
645
+ "fail": "초점을 얻을 수 있는(focusable) 콘텐츠는 tabindex='-1'을 가지거나 DOM에서 제거되어야 합니다."
646
+ },
647
+ "frame-focusable-content": {
648
+ "pass": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 없습니다.",
649
+ "fail": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 있습니다.",
650
+ "incomplete": "엘리먼트에 후손 항목이 있는지 확인할 없습니다."
651
+ },
652
+ "landmark-is-top-level": {
653
+ "pass": "${data.role} 랜드마크가 최상위에 있습니다.",
654
+ "fail": "${data.role} 랜드마크가 다른 랜드마크에 포함되어 있습니다."
655
+ },
656
+ "no-focusable-content": {
657
+ "pass": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 없습니다.",
658
+ "fail": {
659
+ "default": "엘리먼트에 초점을 얻을 있는(focusable) 후손 항목이 있습니다.",
660
+ "notHidden": "대화형 컨트롤 내부의 엘리먼트에 음수 tabindex를 사용하는 것은 ('aria-hidden=true'인 경우에도) 보조기술에서 엘리먼트가 초점을 얻는 것을 막지 않습니다."
661
+ },
662
+ "incomplete": "엘리먼트에 후손 항목이 있는지 확인할 없습니다."
663
+ },
664
+ "page-has-heading-one": {
665
+ "pass": "페이지가 최소 한 개의 1 레벨 제목을 가지고 있습니다.",
666
+ "fail": "페이지가 반드시 1 레벨 제목을 가져야 합니다."
667
+ },
668
+ "page-has-main": {
669
+ "pass": "문서에 최소 하나의 main 랜드마크가 있습니다.",
670
+ "fail": "문서에 main 랜드마크가 없습니다."
671
+ },
672
+ "page-no-duplicate-banner": {
673
+ "pass": "문서가 banner 랜드마크를 하나를 초과하여 가지고 있지 않습니다.",
674
+ "fail": "문서가 banner 랜드마크를 하나를 초과하여 가지고 있습니다."
675
+ },
676
+ "page-no-duplicate-contentinfo": {
677
+ "pass": "문서가 contentinfo 랜드마크를 하나를 초과하여 가지고 있지 않습니다.",
678
+ "fail": "문서가 contentinfo 랜드마크를 하나를 초과하여 가지고 있습니다."
679
+ },
680
+ "page-no-duplicate-main": {
681
+ "pass": "문서가 main 랜드마크를 하나를 초과하여 가지고 있지 않습니다.",
682
+ "fail": "문서가 main 랜드마크를 하나를 초과하여 가지고 있습니다."
683
+ },
684
+ "tabindex": {
685
+ "pass": "엘리먼트가 0보다 큰 tabindex를 가지고 있지 않습니다.",
686
+ "fail": "엘리먼트가 0보다 tabindex를 가지고 있습니다."
687
+ },
688
+ "alt-space-value": {
689
+ "pass": "엘리먼트가 유효한 alt 어트리뷰트 값을 가지고 있습니다.",
690
+ "fail": "엘리먼트가 공백 문자만으로 구성 되는 alt 어트리뷰트를 가지고 있고, 이는 모든 스크린리더가 무시하지 않습니다."
691
+ },
692
+ "duplicate-img-label": {
693
+ "pass": "엘리먼트가 <img> alt 텍스트에 기존 텍스트를 중복하지 않습니다.",
694
+ "fail": "엘리먼트가 기존 텍스트와 중복되는 alt 텍스트를 가진 <img> 엘리먼트를 포함합니다."
695
+ },
696
+ "explicit-label": {
697
+ "pass": "form 엘리먼트가 명시적인 <label>을 가지고 있습니다.",
698
+ "fail": "form 엘리먼트에 명시적인 <label>이 없습니다.",
699
+ "incomplete": "form 엘리먼트가 명시적인 <label>을 가지고 있는지 확인할 수 없습니다."
700
+ },
701
+ "help-same-as-label": {
702
+ "pass": "도움말 텍스트(title이나 aria-describedby)가 레이블 텍스트를 중복하지 않습니다.",
703
+ "fail": "도움말 텍스트(title이나 aria-describedby)가 레이블 텍스트와 동일합니다."
704
+ },
705
+ "hidden-explicit-label": {
706
+ "pass": "form 엘리먼트가 눈에 보이는 명시적인 <label>을 가집니다.",
707
+ "fail": "form 엘리먼트가 숨겨진 명시적인 <label>을 가집니다.",
708
+ "incomplete": "form 엘리먼트가 숨겨진 명시적인 <label>을 가지는지 확인할 수 없습니다."
709
+ },
710
+ "implicit-label": {
711
+ "pass": "form 엘리먼트가 암묵적인(감싸는) <label>을 가집니다.",
712
+ "fail": "form 엘리먼트에 암묵적인(감싸는) <label>이 없습니다.",
713
+ "incomplete": "form 엘리먼트가 암묵적인(감싸는) <label>을 가지는지 확인할 수 없습니다."
714
+ },
715
+ "label-content-name-mismatch": {
716
+ "pass": "엘리먼트가 접근 가능한 이름의 일부로 눈에 보이는 텍스트를 포함하고 있습니다.",
717
+ "fail": "엘리먼트 내부 텍스트가 접근 가능한 이름에 포함되어 있지 않습니다."
718
+ },
719
+ "multiple-label": {
720
+ "pass": "form 필드가 여러 레이블 엘리먼트를 가지고 있지 않습니다.",
721
+ "incomplete": "여러 레이블 엘리먼트는 보조기술에서 널리 지원되지 않습니다. 첫 번째 레이블이 모든 필요한 정보를 포함하는지 확인하세요."
722
+ },
723
+ "title-only": {
724
+ "pass": "form 엘리먼트가 레이블을 위해 title 어트리뷰트만 단독으로 사용하지 않습니다.",
725
+ "fail": "form 엘리먼트의 레이블을 생성하는데 title만 사용되었습니다."
726
+ },
727
+ "landmark-is-unique": {
728
+ "pass": "랜드마크는 반드시 고유한 역할(role)이나 role/label/title 조합(즉, 접근 가능한 이름)을 가져야 합니다.",
729
+ "fail": "랜드마크는 랜드마크를 구별할 수 있게 만들기 위해 반드시 고유한 aria-label, aria-labelledby 또는 title을 가져야 합니다."
730
+ },
731
+ "has-lang": {
732
+ "pass": "<html> 엘리먼트에 lang 어트리뷰트가 있습니다.",
733
+ "fail": {
734
+ "noXHTML": "xml:lang 어트리뷰트는 HTML 페이지에 유효하지 않습니다, lang 어트리뷰트를 사용하세요.",
735
+ "noLang": "<html> 어트리뷰트에 lang 어트리뷰트가 없습니다."
736
+ }
737
+ },
738
+ "valid-lang": {
739
+ "pass": "lang 어트리뷰트의 값이 유효한 언어 목록에 포함되어 있습니다.",
740
+ "fail": "lang 어트리뷰트의 값이 유효한 언어 목록에 포함되어 있지 않습니다."
741
+ },
742
+ "xml-lang-mismatch": {
743
+ "pass": "lang과 xml:lang 어트리뷰트가 동일한 기본 언어를 가지고 있습니다.",
744
+ "fail": "lang과 xml:lang 어트리뷰트가 동일한 기본 언어를 가지고 있지 않습니다."
745
+ },
746
+ "dlitem": {
747
+ "pass": "설명 목록 항목이 <dl> 상위 엘리먼트를 가지고 있습니다.",
748
+ "fail": "설명 목록 항목이 <dl> 상위 엘리먼트를 가지고 있지 않습니다."
749
+ },
750
+ "listitem": {
751
+ "pass": "목록 항목이 <ul>, <ol> 또는 role=\"list\" 상위 엘리먼트를 가지고 있습니다.",
752
+ "fail": {
753
+ "default": "목록 항목이 <ul>, <ol> 상위 엘리먼트를 가지고 있지 않습니다.",
754
+ "roleNotValid": "목록 항목이 역할(role)이 없는 <ul>, <ol> 상위 엘리먼트나 role=\"list\" 상위 엘리먼트를 가지고 있지 않습니다."
755
+ }
756
+ },
757
+ "only-dlitems": {
758
+ "pass": "목록 엘리먼트가 허용된 내부 <dt>나 <dd> 엘리먼트 직속 자식만 가지고 있습니다.",
759
+ "fail": "목록 엘리먼트가 허용된 내부 <dt>나 <dd> 엘리먼트가 아닌 직속 자식을 가지고 있습니다."
760
+ },
761
+ "only-listitems": {
762
+ "pass": "목록 엘리먼트가 허용된 내부 <li> 엘리먼트 직속 자식만 가지고 있습니다.",
763
+ "fail": {
764
+ "default": "목록 엘리먼트가 허용된 내부 <li> 엘리먼트가 아닌 직속 자식을 가지고 있습니다.",
765
+ "roleNotValid": "목록 엘리먼트가 허용되지 않은 역할(role)을 가진 직속 자식을 가지고 있습니다: ${data.roles}"
766
+ }
767
+ },
768
+ "structured-dlitems": {
769
+ "pass": "비어있지 않은 경우, 엘리먼트가 <dt>와 <dd> 엘리먼트를 모두 가지고 있습니다.",
770
+ "fail": "비어있지 않은 경우, 엘리먼트가 최소 하나의 <dd> 엘리먼트가 뒤따르는 최소 하나의 <dt> 엘리먼트를 가지고 있지 않습니다."
771
+ },
772
+ "caption": {
773
+ "pass": "멀티미디어 엘리먼트가 캡션(자막) 트랙을 가지고 있습니다.",
774
+ "incomplete": "엘리먼트에 캡션(자막)이 사용 가능한지 확인하세요."
775
+ },
776
+ "frame-tested": {
777
+ "pass": "iframe이 axe-core로 테스트 되었습니다.",
778
+ "fail": "iframe이 axe-core로 테스트 될 수 없습니다.",
779
+ "incomplete": "iframe은 아직 axe-core로 테스트 되지 않았습니다."
780
+ },
781
+ "no-autoplay-audio": {
782
+ "pass": "<video>나 <audio>가 허용된 지속 시간을 초과하여 오디오를 출력하지 않거나 제어 메커니즘을 가지고 있습니다.",
783
+ "fail": "<video>나 <audio>가 허용된 지속 시간을 초과하여 오디오를 출력하거나 제어 메커니즘을 가지고 있지 않습니다.",
784
+ "incomplete": "<video>나 <audio>가 허용된 지속 시간을 초과하여 오디오를 출력하지 않거나 제어 메커니즘을 제공하고 있는지 확인하세요."
785
+ },
786
+ "css-orientation-lock": {
787
+ "pass": "디스플레이를 조작할 수 있고, 방향 잠금이 존재하지 않습니다.",
788
+ "fail": "CSS 방향 잠금이 적용되어 있어, 디스플레이를 조작할 수 없습니다.",
789
+ "incomplete": "CSS 방향 잠금이 확인될 수 없습니다."
790
+ },
791
+ "meta-viewport-large": {
792
+ "pass": "<meta> 태그가 모바일 기기에서 확대/축소하는 것을 제한하지 않습니다.",
793
+ "fail": "<meta> 태그가 모바일 기기에서 확대/축소하는 것을 제한하고 있습니다."
794
+ },
795
+ "meta-viewport": {
796
+ "pass": "<meta> 태그가 모바일 기기에서 확대/축소하는 것을 비활성화하지 않았습니다.",
797
+ "fail": "모바일 기기에서 <meta> 태그의 ${data}이(가) 확대/축소를 할 수 없게 만듭니다."
798
+ },
799
+ "header-present": {
800
+ "pass": "페이지가 제목을 가지고 있습니다.",
801
+ "fail": "페이지에 제목이 없습니다."
802
+ },
803
+ "heading-order": {
804
+ "pass": "제목 순서가 유효합니다.",
805
+ "fail": "제목 순서가 잘못되었습니다.",
806
+ "incomplete": "이전 제목을 확인 할 수 없습니다."
807
+ },
808
+ "identical-links-same-purpose": {
809
+ "pass": "다른 URL로 이동하는 동일한 이름의 다른 링크가 없습니다.",
810
+ "incomplete": "링크가 동일한 용도를 가지고 있는지, 또는 의도적으로 모호하게 한 것인지 확인하세요."
811
+ },
812
+ "internal-link-present": {
813
+ "pass": "유효한 건너뛰기 링크가 발견되었습니다.",
814
+ "fail": "유효한 건너뛰기 링크를 찾을 수 없습니다."
815
+ },
816
+ "landmark": {
817
+ "pass": "페이지가 랜드마크 영역을 가지고 있습니다.",
818
+ "fail": "페이지에 랜드마크 영역이 없습니다."
819
+ },
820
+ "meta-refresh": {
821
+ "pass": "<meta> 태그가 페이지를 즉시 새로고침하지 않습니다.",
822
+ "fail": "<meta> 태그가 페이지의 시간 제한 새로고침을 강요합니다."
823
+ },
824
+ "p-as-heading": {
825
+ "pass": "<p> 엘리먼트가 제목으로 스타일되지 않았습니다.",
826
+ "fail": "스타일링된 p 엘리먼트는 제목 엘리먼트 대신 사용되지 않아야 합니다.",
827
+ "incomplete": "<p> 엘리먼트가 제목으로 스타일되었는지 확인할 수 없습니다."
828
+ },
829
+ "region": {
830
+ "pass": "모든 페이지 콘텐츠가 랜드마크에 포함되어 있습니다.",
831
+ "fail": "일부 페이지 콘텐츠가 랜드마크에 포함되어 있지 않습니다."
832
+ },
833
+ "skip-link": {
834
+ "pass": "건너뛰기 링크 대상이 존재합니다.",
835
+ "incomplete": "건너뛰기 링크 대상이 활성화 시 표시되어야 합니다.",
836
+ "fail": "건너뛰기 링크 대상이 없습니다."
837
+ },
838
+ "unique-frame-title": {
839
+ "pass": "엘리먼트의 title 어트리뷰트가 고유합니다.",
840
+ "fail": "엘리먼트의 title 어트리뷰트가 고유하지 않습니다."
841
+ },
842
+ "duplicate-id-active": {
843
+ "pass": "문서에 동일한 id 어트리뷰트를 공유하는 활성 엘리먼트가 없습니다.",
844
+ "fail": "문서에 동일한 id 어트리뷰트를 가진 활성 엘리먼트가 있습니다: ${data}"
845
+ },
846
+ "duplicate-id-aria": {
847
+ "pass": "문서에 동일한 id 어트리뷰트를 공유하는 ARIA로 참조된 엘리먼트 및 레이블이 없습니다.",
848
+ "fail": "문서에 동일한 id 어트리뷰트를 가진 ARIA로 참조된 여러 엘리먼트가 있습니다: ${data}"
849
+ },
850
+ "duplicate-id": {
851
+ "pass": "문서에 동일한 id 어트리뷰트를 공유하는 정적 엘리먼트가 없습니다.",
852
+ "fail": "문서에 동일한 id 어트리뷰트를 공유하는 여러 정적 엘리먼트가 있습니다: ${data}"
853
+ },
854
+ "aria-label": {
855
+ "pass": "aria-label 어트리뷰트가 존재하고 비어있지 않습니다.",
856
+ "fail": "aria-label 어트리뷰트가 없거나 비어있습니다."
857
+ },
858
+ "aria-labelledby": {
859
+ "pass": "aria-labelledby 어트리뷰트가 존재하고 스크린리더에 노출되는 엘리먼트를 참조하고 있습니다.",
860
+ "fail": "aria-labelledby 어트리뷰트가 없거나, 존재하지 않는 엘리먼트를 참조하고 있거나, 비어있는 엘리먼트를 참조하고 있습니다.",
861
+ "incomplete": "aria-labelledby가 존재하고 있는 엘리먼트를 참조하는지 확인하세요."
862
+ },
863
+ "avoid-inline-spacing": {
864
+ "pass": "텍스트 간격에 영향을 주는 '!important'를 가진 명시된 인라인 스타일이 없습니다.",
865
+ "fail": {
866
+ "singular": "인라인 스타일을 재정의 하는 것을 대부분의 브라우저가 지원하지 않으므로, 인라인 스타일 ${data.values}에서 '!important'를 제거하세요.",
867
+ "plural": "인라인 스타일들을 재정의 하는 것을 대부분의 브라우저가 지원하지 않으므로, 인라인 스타일들 ${data.values}에서 '!important'를 제거하세요."
868
+ }
869
+ },
870
+ "button-has-visible-text": {
871
+ "pass": "엘리먼트가 스크린리더에 노출되는 내부 텍스트를 가지고 있습니다.",
872
+ "fail": "엘리먼트에 스크린리더에 노출되는 내부 텍스트가 없습니다.",
873
+ "incomplete": "엘리먼트가 하위 항목을 가지고 있는지 확인할 수 없습니다."
874
+ },
875
+ "doc-has-title": {
876
+ "pass": "문서가 비어있지 않은 <title> 엘리먼트를 가지고 있습니다.",
877
+ "fail": "문서에 비어있지 않은 <title> 엘리먼트가 없습니다."
878
+ },
879
+ "exists": {
880
+ "pass": "엘리먼트가 존재하지 않습니다.",
881
+ "incomplete": "엘리먼트가 존재합니다."
882
+ },
883
+ "has-alt": {
884
+ "pass": "엘리먼트가 alt 어트리뷰트를 가지고 있습니다.",
885
+ "fail": "엘리먼트에 alt 어트리뷰트가 없습니다."
886
+ },
887
+ "has-visible-text": {
888
+ "pass": "엘리먼트가 스크린리더에 노출되는 텍스트를 가지고 있습니다.",
889
+ "fail": "엘리먼트가 스크린리더에 노출되는 텍스트를 가지고 있지 않습니다.",
890
+ "incomplete": "엘리먼트가 하위 항목을 가지고 있는지 확인할 수 없습니다."
891
+ },
892
+ "is-on-screen": {
893
+ "pass": "엘리먼트가 보이지 않습니다.",
894
+ "fail": "엘리먼트가 노출되어 있습니다."
895
+ },
896
+ "non-empty-alt": {
897
+ "pass": "엘리먼트가 비어있지 않은 alt 어트리뷰트를 가지고 있습니다.",
898
+ "fail": {
899
+ "noAttr": "엘리먼트에 alt 어트리뷰트가 없습니다.",
900
+ "emptyAttr": "엘리먼트가 빈 alt 어트리뷰트를 가지고 있습니다."
901
+ }
902
+ },
903
+ "non-empty-if-present": {
904
+ "pass": {
905
+ "default": "엘리먼트에 value 어트리뷰트가 없습니다.",
906
+ "has-label": "엘리먼트가 비어있지 않은 value 어트리뷰트를 가지고 있습니다."
907
+ },
908
+ "fail": "엘리먼트가 value 어트리뷰트를 가지고 있고 value 어트리뷰트가 비어있습니다."
909
+ },
910
+ "non-empty-placeholder": {
911
+ "pass": "엘리먼트가 placeholder 어트리뷰트를 가지고 있습니다.",
912
+ "fail": {
913
+ "noAttr": "엘리먼트에 placeholder 어트리뷰트가 없습니다.",
914
+ "emptyAttr": "엘리먼트가 빈 placeholder 어트리뷰트를 가지고 있습니다."
915
+ }
916
+ },
917
+ "non-empty-title": {
918
+ "pass": "엘리먼트가 title 어트리뷰트를 가지고 있습니다.",
919
+ "fail": {
920
+ "noAttr": "엘리먼트에 title 어트리뷰트가 없습니다.",
921
+ "emptyAttr": "엘리먼트가 빈 title 어트리뷰트를 가지고 있습니다."
922
+ }
923
+ },
924
+ "non-empty-value": {
925
+ "pass": "엘리먼트가 비어있지 않은 value 어트리뷰트를 가지고 있습니다.",
926
+ "fail": {
927
+ "noAttr": "엘리먼트에 value 어트리뷰트가 없습니다.",
928
+ "emptyAttr": "엘리먼트가 빈 value 어트리뷰트를 가지고 있습니다."
929
+ }
930
+ },
931
+ "presentational-role": {
932
+ "pass": "엘리먼트의 기본 의미론이 role=\"${data.role}\"(으)로 재정의되었습니다.",
933
+ "fail": {
934
+ "default": "엘리먼트의 기본 의미론이 role=\"none\"이나 role=\"presentation\"으로 재정의되지 않았습니다.",
935
+ "globalAria": "엘리먼트가 전역 ARIA 어트리뷰트를 가지고 있기 때문에 엘리먼트의 역할(role)이 표현적이지 않습니다.",
936
+ "focusable": "엘리먼트가 초점을 얻을 수 있기(focusable) 때문에 엘리먼트의 역할(role)은 표현적이지 않습니다.",
937
+ "both": "전역 ARIA 어트리뷰트를 가지고 있고 초점을 얻을 수 있기(focusable) 때문에 엘리먼트의 역할(role)은 표현적이지 않습니다."
938
+ }
939
+ },
940
+ "role-none": {
941
+ "pass": "엘리먼트의 기본 의미론이 role=\"none\"으로 재정의되었습니다.",
942
+ "fail": "엘리먼트의 기본 의미론이 role=\"none\"으로 재정의되지 않았습니다."
943
+ },
944
+ "role-presentation": {
945
+ "pass": "엘리먼트의 기본 의미론이 role=\"presentation\"으로 재정의되었습니다.",
946
+ "fail": "엘리먼트의 기본 의미론이 role=\"presentation\"으로 재정의되지 않았습니다."
947
+ },
948
+ "svg-non-empty-title": {
949
+ "pass": "엘리먼트가 title인 하위 항목을 가지고 있습니다.",
950
+ "fail": {
951
+ "noTitle": "엘리먼트에 title인 하위 항목이 없습니다.",
952
+ "emptyTitle": "엘리먼트 하위 title이 비어있습니다."
953
+ },
954
+ "incomplete": "엘리먼트가 title인 하위 항목을 가지고 있는지 확인할 수 없습니다."
955
+ },
956
+ "caption-faked": {
957
+ "pass": "테이블의 첫 번째 행이 캡션으로 사용되지 않았습니다.",
958
+ "fail": "테이블의 첫 번째 자식은 테이블 셀 대신 caption이어야 합니다."
959
+ },
960
+ "html5-scope": {
961
+ "pass": "scope 어트리뷰트가 테이블 헤더 엘리먼트(<th>)에만 사용되었습니다.",
962
+ "fail": "HTML 5에서, scope 어트리뷰트는 테이블 헤더 엘리먼트(<th>)에만 사용 될 수 있습니다."
963
+ },
964
+ "same-caption-summary": {
965
+ "pass": "summary 어트리뷰트의 내용과 <caption>이 중복되지 않습니다.",
966
+ "fail": "summary 어트리뷰트의 내용과 <caption> 엘리먼트가 동일합니다."
967
+ },
968
+ "scope-value": {
969
+ "pass": "scope 어트리뷰트가 올바르게 사용되었습니다.",
970
+ "fail": "어트리뷰트의 값은 오직 'row'나 'col'만 될 수 있습니다."
971
+ },
972
+ "td-has-header": {
973
+ "pass": "모든 비어있지 않은 데이터 셀이 테이블 헤더를 가지고 있습니다.",
974
+ "fail": "일부 비어있지 않은 데이터 셀이 테이블 헤더를 가지고 있지 않습니다."
975
+ },
976
+ "td-headers-attr": {
977
+ "pass": "headers 어트리뷰트는 오직 테이블의 다른 셀을 참조하는데에만 사용되고 있습니다.",
978
+ "incomplete": "headers 어트리뷰트가 비어있습니다.",
979
+ "fail": "headers 어트리뷰트가 오직 테이블의 다른 셀을 참조하는데에만 사용되지 않고 있습니다."
980
+ },
981
+ "th-has-data-cells": {
982
+ "pass": "모든 테이블 헤더 셀이 데이터 셀을 참조하고 있습니다.",
983
+ "fail": "모든 테이블 헤더 셀이 데이터 셀을 참조하고 있지 않습니다.",
984
+ "incomplete": "테이블 데이터 셀이 누락되었거나 비어있습니다."
985
+ },
986
+ "hidden-content": {
987
+ "pass": "페이지의 모든 콘텐츠가 분석 되었습니다.",
988
+ "fail": "이 페이지의 콘텐츠를 분석하는데 문제가 발생했습니다.",
989
+ "incomplete": "페이지에 분석될 수 없는 숨겨진 콘텐츠가 있습니다. 이 콘텐츠를 분석하려면 콘텐츠의 노출을 동작시킬 필요가 있습니다."
990
+ }
991
+ },
992
+ "failureSummaries": {
993
+ "any": {
994
+ "failureMessage": "다음 중 하나를 해결하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
995
+ },
996
+ "none": {
997
+ "failureMessage": "다음 사항을 모두 해결하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
998
+ }
999
+ },
1000
+ "incompleteFallbackMessage": "axe가 원인을 제시할 수 없습니다. 엘리먼트 검사기를 열어 볼 시간입니다!"
777
1001
  }