govuk_publishing_components 21.22.1 → 21.22.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/_breadcrumbs.scss +34 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_document-list.scss +2 -2
- data/app/views/govuk_publishing_components/components/_breadcrumbs.html.erb +0 -3
- data/app/views/govuk_publishing_components/components/_contextual_breadcrumbs.html.erb +0 -2
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/axe-core/CHANGELOG.md +70 -10
- data/node_modules/axe-core/axe.js +1295 -632
- data/node_modules/axe-core/axe.min.js +2 -2
- data/node_modules/axe-core/bower.json +1 -1
- data/node_modules/axe-core/doc/API.md +1 -0
- data/node_modules/axe-core/doc/aria-supported.md +0 -1
- data/node_modules/axe-core/doc/developer-guide.md +2 -2
- data/node_modules/axe-core/doc/rule-descriptions.md +91 -87
- data/node_modules/axe-core/lib/checks/aria/abstractrole.js +10 -1
- data/node_modules/axe-core/lib/checks/aria/abstractrole.json +4 -1
- data/node_modules/axe-core/lib/checks/aria/fallbackrole.js +1 -0
- data/node_modules/axe-core/lib/checks/aria/fallbackrole.json +11 -0
- data/node_modules/axe-core/lib/checks/aria/invalidrole.js +14 -3
- data/node_modules/axe-core/lib/checks/aria/invalidrole.json +4 -1
- data/node_modules/axe-core/lib/checks/aria/required-children.js +41 -30
- data/node_modules/axe-core/lib/checks/aria/valid-attr-value.js +24 -9
- data/node_modules/axe-core/lib/checks/aria/valid-attr-value.json +2 -2
- data/node_modules/axe-core/lib/checks/color/color-contrast.js +23 -7
- data/node_modules/axe-core/lib/checks/color/color-contrast.json +7 -1
- data/node_modules/axe-core/lib/checks/keyboard/focusable-disabled.js +5 -0
- data/node_modules/axe-core/lib/checks/keyboard/focusable-modal-open.js +14 -0
- data/node_modules/axe-core/lib/checks/keyboard/focusable-modal-open.json +11 -0
- data/node_modules/axe-core/lib/checks/keyboard/focusable-not-tabbable.js +5 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-has-elm.js +5 -1
- data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-after.js +2 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-banner.json +1 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-contentinfo.json +1 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate-main.json +1 -0
- data/node_modules/axe-core/lib/checks/keyboard/page-no-duplicate.js +14 -2
- data/node_modules/axe-core/lib/checks/lists/only-listitems.js +43 -49
- data/node_modules/axe-core/lib/checks/lists/only-listitems.json +4 -1
- data/node_modules/axe-core/lib/checks/media/no-autoplay-audio.js +93 -0
- data/node_modules/axe-core/lib/checks/media/no-autoplay-audio.json +15 -0
- data/node_modules/axe-core/lib/checks/navigation/identical-links-same-purpose-after.js +100 -0
- data/node_modules/axe-core/lib/checks/navigation/identical-links-same-purpose.js +31 -0
- data/node_modules/axe-core/lib/checks/navigation/identical-links-same-purpose.json +12 -0
- data/node_modules/axe-core/lib/checks/navigation/region.js +42 -8
- data/node_modules/axe-core/lib/checks/navigation/region.json +0 -1
- data/node_modules/axe-core/lib/checks/shared/svg-non-empty-title.js +4 -0
- data/node_modules/axe-core/lib/checks/shared/svg-non-empty-title.json +11 -0
- data/node_modules/axe-core/lib/commons/aria/index.js +12 -4
- data/node_modules/axe-core/lib/commons/color/get-background-color.js +5 -157
- data/node_modules/axe-core/lib/commons/dom/get-element-stack.js +272 -174
- data/node_modules/axe-core/lib/commons/dom/is-focusable.js +3 -1
- data/node_modules/axe-core/lib/commons/dom/is-hidden-with-css.js +2 -2
- data/node_modules/axe-core/lib/commons/dom/is-modal-open.js +98 -0
- data/node_modules/axe-core/lib/commons/dom/is-visible.js +57 -2
- data/node_modules/axe-core/lib/commons/dom/url-props-from-attribute.js +143 -0
- data/node_modules/axe-core/lib/commons/dom/visually-contains.js +62 -12
- data/node_modules/axe-core/lib/commons/matches/attributes.js +12 -8
- data/node_modules/axe-core/lib/commons/matches/from-definition.js +15 -10
- data/node_modules/axe-core/lib/commons/matches/index.js +11 -9
- data/node_modules/axe-core/lib/commons/matches/node-name.js +11 -21
- data/node_modules/axe-core/lib/commons/matches/properties.js +12 -9
- data/node_modules/axe-core/lib/commons/text/unicode.js +27 -24
- data/node_modules/axe-core/lib/core/base/virtual-node/virtual-node.js +11 -3
- data/node_modules/axe-core/lib/core/constants.js +1 -1
- data/node_modules/axe-core/lib/core/reporters/v1.js +6 -3
- data/node_modules/axe-core/lib/core/utils/contains.js +1 -1
- data/node_modules/axe-core/lib/core/utils/is-hidden.js +6 -6
- data/node_modules/axe-core/lib/core/utils/matches.js +263 -0
- data/node_modules/axe-core/lib/core/utils/preload-media.js +65 -0
- data/node_modules/axe-core/lib/core/utils/preload.js +33 -24
- data/node_modules/axe-core/lib/core/utils/qsa.js +7 -208
- data/node_modules/axe-core/lib/rules/aria-hidden-focus.json +5 -1
- data/node_modules/axe-core/lib/rules/aria-roles.json +1 -1
- data/node_modules/axe-core/lib/rules/button-name.json +1 -1
- data/node_modules/axe-core/lib/rules/color-contrast-matches.js +1 -1
- data/node_modules/axe-core/lib/rules/color-contrast.json +0 -3
- data/node_modules/axe-core/lib/rules/html-namespace-matches.js +1 -0
- data/node_modules/axe-core/lib/rules/identical-links-same-purpose-matches.js +13 -0
- data/node_modules/axe-core/lib/rules/identical-links-same-purpose.json +14 -0
- data/node_modules/axe-core/lib/rules/landmark-no-duplicate-banner.json +1 -1
- data/node_modules/axe-core/lib/rules/landmark-no-duplicate-contentinfo.json +1 -1
- data/node_modules/axe-core/lib/rules/landmark-no-duplicate-main.json +12 -0
- data/node_modules/axe-core/lib/rules/landmark-one-main.json +2 -2
- data/node_modules/axe-core/lib/rules/link-name.json +2 -4
- data/node_modules/axe-core/lib/rules/meta-viewport.json +1 -1
- data/node_modules/axe-core/lib/rules/no-autoplay-audio-matches.js +18 -0
- data/node_modules/axe-core/lib/rules/no-autoplay-audio.json +15 -0
- data/node_modules/axe-core/lib/rules/region.json +1 -2
- data/node_modules/axe-core/lib/rules/role-img-alt.json +2 -1
- data/node_modules/axe-core/lib/rules/svg-img-alt.json +24 -0
- data/node_modules/axe-core/lib/rules/svg-namespace-matches.js +1 -0
- data/node_modules/axe-core/locales/da.json +782 -0
- data/node_modules/axe-core/locales/fr.json +221 -42
- data/node_modules/axe-core/locales/ja.json +124 -24
- data/node_modules/axe-core/package.json +29 -26
- data/node_modules/axe-core/sri-history.json +26 -10
- metadata +27 -9
- data/node_modules/axe-core/doc/examples/jasmine/package-lock.json +0 -1489
- data/node_modules/axe-core/doc/examples/jest_react/package-lock.json +0 -7525
- data/node_modules/axe-core/doc/examples/mocha/package-lock.json +0 -1671
- data/node_modules/axe-core/doc/examples/phantomjs/package-lock.json +0 -862
- data/node_modules/axe-core/doc/examples/qunit/package-lock.json +0 -2951
- data/node_modules/axe-core/lib/checks/navigation/region-after.js +0 -1
- data/node_modules/axe-core/typings/axe-core/axe-core-tests.js +0 -151
@@ -23,27 +23,43 @@
|
|
23
23
|
},
|
24
24
|
"aria-hidden-body": {
|
25
25
|
"description": "S’assure que aria-hidden='true' n’est pas présent sur le corps du document (élément body)",
|
26
|
-
"help": "aria-hidden='true' ne doit pas être présent sur body"
|
26
|
+
"help": "aria-hidden='true' ne doit pas être présent sur <body>"
|
27
|
+
},
|
28
|
+
"aria-hidden-focus": {
|
29
|
+
"description": "S'assure que aria-hidden n'est pas assigmé aux éléments qui recoivent le focus au clavier",
|
30
|
+
"help": "ARIA hidden n'est pas assigné aux éléments qui reçoivent le focus au clavier"
|
31
|
+
},
|
32
|
+
"aria-input-field-name": {
|
33
|
+
"description": "S'assure que chaque champ de formulaire avec ARIA est dôté d'un intitulé accessible",
|
34
|
+
"help": "Les champs de formulaire ARIA ont un intitulé accessible"
|
27
35
|
},
|
28
36
|
"aria-required-attr": {
|
29
37
|
"description": "S’assure que les éléments avec des rôles ARIA ont les attributs ARIA requis",
|
30
38
|
"help": "Les attributs ARIA requis doivent être présents"
|
31
39
|
},
|
32
40
|
"aria-required-children": {
|
33
|
-
"description": "S’assure que les éléments avec un rôle ARIA
|
34
|
-
"help": "Certains rôles ARIA doivent
|
41
|
+
"description": "S’assure que les éléments avec un rôle ARIA comportent aussi des rôles pour les descendants directs",
|
42
|
+
"help": "Certains rôles ARIA doivent comporter des descendants directs spécifiques"
|
35
43
|
},
|
36
44
|
"aria-required-parent": {
|
37
45
|
"description": "S’assure que les éléments avec un rôle ARIA requérant des rôles parents y sont contenus",
|
38
46
|
"help": "Certains rôles ARIA doivent être contenus par des parents spécifiques"
|
39
47
|
},
|
48
|
+
"aria-roledescription": {
|
49
|
+
"description": "S'assure que aria-roledescription n'est utilisé que sur des éléments qui ont un rôle implicite ou explicite",
|
50
|
+
"help": "Utiliser aria-roledescription sur les éléments dont le rôle a une valeur sémantique"
|
51
|
+
},
|
40
52
|
"aria-roles": {
|
41
53
|
"description": "S’assure que les éléments avec un attribut role utilisent une valeur valide",
|
42
54
|
"help": "Les rôles ARIA doivent se conformer aux valeurs valides"
|
43
55
|
},
|
56
|
+
"aria-toggle-field-name": {
|
57
|
+
"description": "S'assure que chaque champ de basculement ARIA a un libellé accessible",
|
58
|
+
"help": "Les champs de basculement ARIA ont un libellé accessible"
|
59
|
+
},
|
44
60
|
"aria-valid-attr-value": {
|
45
|
-
"description": "S’assure que tous les attributs ARIA
|
46
|
-
"help": "Les attributs ARIA doivent
|
61
|
+
"description": "S’assure que tous les attributs ARIA comportent des valeurs valides",
|
62
|
+
"help": "Les attributs ARIA doivent comporter des valeurs valides"
|
47
63
|
},
|
48
64
|
"aria-valid-attr": {
|
49
65
|
"description": "S’assure que les attributs commençant par aria- sont des attributs ARIA valides",
|
@@ -54,9 +70,13 @@
|
|
54
70
|
"help": "Les éléments <audio> doivent avoir une psite de sous-titres"
|
55
71
|
},
|
56
72
|
"autocomplete-valid": {
|
57
|
-
"description": "S’assure que l’attribut autocomplete est
|
73
|
+
"description": "S’assure que l’attribut autocomplete est correctement adapté au champ de formulaire",
|
58
74
|
"help": "L’attribut autocomplete doit être utilisé correctement"
|
59
75
|
},
|
76
|
+
"avoid-inline-spacing": {
|
77
|
+
"description": "S'assure que l'espacement du texte défini à travers une attribution de styles peut être ajusté via une feuille de style personalisée",
|
78
|
+
"help": "L'espacement du texte inline peut être ajusté avec des feuilles de style personalisées"
|
79
|
+
},
|
60
80
|
"blink": {
|
61
81
|
"description": "S’assure que l’élément <blink> n’est pas utilisé",
|
62
82
|
"help": "L’élément <blink> est déprécié et ne doit pas être utilisé"
|
@@ -66,17 +86,21 @@
|
|
66
86
|
"help": "Les boutons doivent avoir un texte perceptible"
|
67
87
|
},
|
68
88
|
"bypass": {
|
69
|
-
"description": "S’assure que chaque page dispose au
|
70
|
-
"help": "Chaque page doit fournir des moyens
|
89
|
+
"description": "S’assure que chaque page dispose au minimum d’un mécanisme de contournement de la navigation pour accéder directement au contenu",
|
90
|
+
"help": "Chaque page doit fournir des moyens de contourner les contenus répétés"
|
71
91
|
},
|
72
92
|
"checkboxgroup": {
|
73
93
|
"description": "S’assure que les éléments <input type=\"checkbox\"> en relation sont regroupés et que la désignation du groupe est cohérente",
|
74
94
|
"help": "Les cases à cocher avec la même valeur pour l’attribut name doivent faire partie d’un groupe"
|
75
95
|
},
|
76
96
|
"color-contrast": {
|
77
|
-
"description": "S’assure que les contrastes entre le premier plan et l’arrière-plan
|
97
|
+
"description": "S’assure que les contrastes entre le premier plan et l’arrière-plan rencontrent les seuils de contrastes exigés par les WCAG 2 AA",
|
78
98
|
"help": "Les éléments doivent avoir un contraste de couleurs suffisant"
|
79
99
|
},
|
100
|
+
"css-orientation-lock": {
|
101
|
+
"description": "S'assure que les contenus ne sont pas limités à une orientation spécifique de l'écran, et que le contenu est utilisable sous toutes les orientations de l'écran",
|
102
|
+
"help": "Les CSS Media queries ne sont pas utilisées pour vérrouiller l'orientation de l'écran"
|
103
|
+
},
|
80
104
|
"definition-list": {
|
81
105
|
"description": "S’assure que les éléments <dl> sont correctement structurés",
|
82
106
|
"help": "Les éléments <dl> ne doivent contenir directement que des groupes d’éléments <dt> et <dd> correctement ordonnés, ou des éléments <script> ou <template>"
|
@@ -89,6 +113,14 @@
|
|
89
113
|
"description": "S’assure que chaque document HTML contient un élément <title> non vide",
|
90
114
|
"help": "Chaque document doit avoir un élément <title> pour aider à la navigation"
|
91
115
|
},
|
116
|
+
"duplicate-id-active": {
|
117
|
+
"description": "S'assure que la valeur d'attribut id de chaque élément actif est unique",
|
118
|
+
"help": "Les IDs des éléments actifs doivent être uniques"
|
119
|
+
},
|
120
|
+
"duplicate-id-aria": {
|
121
|
+
"description": "S'assure que chaque valeur d'attribut id utilisée avec ARIA et dans les étiquettes est unique",
|
122
|
+
"help": "Les IDs utilisés avec ARIA et dans les étiquettes doivent être uniques"
|
123
|
+
},
|
92
124
|
"duplicate-id": {
|
93
125
|
"description": "S’assure que la valeur de chaque attribut id est unique",
|
94
126
|
"help": "La valeur de l’attribut id doit être unique"
|
@@ -98,9 +130,13 @@
|
|
98
130
|
"help": "Les niveaux de titre ne doivent pas être vides"
|
99
131
|
},
|
100
132
|
"focus-order-semantics": {
|
101
|
-
"description": "S’assure que les éléments dans le parcours du focus
|
133
|
+
"description": "S’assure que les éléments dans le parcours du focus onnt un rôle approprié",
|
102
134
|
"help": "Les éléments dans le parcours du focus doivent avoir un rôle approprié pour le contenu interactif"
|
103
135
|
},
|
136
|
+
"form-field-multiple-labels": {
|
137
|
+
"description": "S'assure que le champ de formulaire n'a pas plusieurs éléments d'étiquettes",
|
138
|
+
"help": "Le champ de formulaire ne devrait pas comporter plusieurs éléments d'étiquettes"
|
139
|
+
},
|
104
140
|
"frame-tested": {
|
105
141
|
"description": "S’assure que les éléments <iframe> et <frame> contiennent le script axe-core",
|
106
142
|
"help": "Les cadres doivent être testés avec axe-core"
|
@@ -126,7 +162,7 @@
|
|
126
162
|
"help": "L’élément <html> doit avoir un attribut lang"
|
127
163
|
},
|
128
164
|
"html-lang-valid": {
|
129
|
-
"description": "S’assure que l’attribut lang sur l’élément
|
165
|
+
"description": "S’assure que l’attribut lang sur l’élément <html> a une valeur valide",
|
130
166
|
"help": "L’élément <html> doit avoir une valeur valide pour l’attribut lang"
|
131
167
|
},
|
132
168
|
"html-xml-lang-mismatch": {
|
@@ -134,29 +170,41 @@
|
|
134
170
|
"help": "Les éléments HTML avec les attributs lang et xml:lang doivent avoir la même langue de base"
|
135
171
|
},
|
136
172
|
"image-alt": {
|
137
|
-
"description": "S’assure que les éléments <img> ont une alternative textuelle, ou un rôle none ou presentation",
|
173
|
+
"description": "S’assure que les éléments <img> ont une alternative textuelle, ou un rôle de type 'none' ou 'presentation'",
|
138
174
|
"help": "Les images doivent avoir une alternative textuelle"
|
139
175
|
},
|
140
176
|
"image-redundant-alt": {
|
141
177
|
"description": "S’assure que l’intitulé des liens et boutons n’est pas répété dans l’alternative de l’image",
|
142
178
|
"help": "L’intitulé des liens et boutons ne doit pas être répété dans l’alternative de l’image"
|
143
179
|
},
|
180
|
+
"input-button-name": {
|
181
|
+
"description": "S'assure que la valeur textuelle des contrôles de boutons est perceptible",
|
182
|
+
"help": "La valeur textuelle des contrôles de boutons doit être perceptible"
|
183
|
+
},
|
144
184
|
"input-image-alt": {
|
145
185
|
"description": "S’assure que les éléments <input type=\"image\"> ont une alternative textuelle",
|
146
186
|
"help": "Les boutons images doivent avoir une alternative textuelle"
|
147
187
|
},
|
188
|
+
"label-content-name-mismatch": {
|
189
|
+
"description": "S'assure que dans le cas d'éléments identifiés par leur contenu textuel, le texte visible fait partie du intitulé accessible",
|
190
|
+
"help": "Le contenu textuel des éléments doit aussi se retrouver dans leur intitulé accessible"
|
191
|
+
},
|
148
192
|
"label-title-only": {
|
149
193
|
"description": "S’assure que chaque élément de formulaire n’est pas labellisé uniquement par les attributs title ou aria-describedby",
|
150
194
|
"help": "Chaque élément de formulaire doit avoir un label visible"
|
151
195
|
},
|
152
196
|
"label": {
|
153
|
-
"description": "S’assure que chaque élément de formulaire a
|
154
|
-
"help": "Chaque élément de formulaire doit avoir
|
197
|
+
"description": "S’assure que chaque élément de formulaire a une étiquette",
|
198
|
+
"help": "Chaque élément de formulaire doit avoir une étiquette"
|
155
199
|
},
|
156
200
|
"landmark-banner-is-top-level": {
|
157
201
|
"description": "La région banner ne devrait pas être contenue dans une autre région",
|
158
202
|
"help": "La région banner doit être au niveau le plus haut"
|
159
203
|
},
|
204
|
+
"landmark-complementary-is-top-level": {
|
205
|
+
"description": "S'assure que les landmarks complementary ou aside se retrouvent au plus haut niveau",
|
206
|
+
"help": "Aside ne doit pas être contenu dans un autre landmark"
|
207
|
+
},
|
160
208
|
"landmark-contentinfo-is-top-level": {
|
161
209
|
"description": "La région contentinfo ne devrait pas être contenue dans une autre région",
|
162
210
|
"help": "La région contentinfo doit être au niveau le plus haut"
|
@@ -173,10 +221,18 @@
|
|
173
221
|
"description": "S’assure que le document n’a pas plus d’une région contentinfo",
|
174
222
|
"help": "Le document contient au plus une région contentinfo"
|
175
223
|
},
|
224
|
+
"landmark-no-duplicate-main": {
|
225
|
+
"description": "S'assure que le document a tout au plus, un seul landmark main",
|
226
|
+
"help": "Le document ne doit pas contenir plus d'un landmark main"
|
227
|
+
},
|
176
228
|
"landmark-one-main": {
|
177
|
-
"description": "S’assure qu’une navigation pointe vers le contenu principal de la page. Si la page contient des iframes, chaque iframe ne doit contenir qu’une région main
|
229
|
+
"description": "S’assure qu’une navigation pointe vers le contenu principal de la page. Si la page contient des iframes, chaque iframe ne doit contenir au plus qu’une région main",
|
178
230
|
"help": "La page doit contenir une région main"
|
179
231
|
},
|
232
|
+
"landmark-unique": {
|
233
|
+
"help": "S'assure que chaque landmark est unique",
|
234
|
+
"description": "Les landmarks doivent comporter un rôle unique, ou une étiquette accessible par la combinaison de role/label/title"
|
235
|
+
},
|
180
236
|
"layout-table": {
|
181
237
|
"description": "S’assure que les éléments <table> de présentation n’utilisent pas les éléments <th>, <caption> ni l’attribut summary",
|
182
238
|
"help": "Les tableaux de présentation ne doivent pas utiliser les éléments de tableaux de données"
|
@@ -233,10 +289,18 @@
|
|
233
289
|
"description": "S’assure que tout le contenu est localisé dans une région",
|
234
290
|
"help": "Le contenu doit être localisé dans une région"
|
235
291
|
},
|
292
|
+
"role-img-alt": {
|
293
|
+
"description": "S'assure que les éléments avec [role='img'] ont une équivalence textuelle",
|
294
|
+
"help": "Les éléments avec [role='img'] ont une équivalence textuelle"
|
295
|
+
},
|
236
296
|
"scope-attr-valid": {
|
237
297
|
"description": "S’assure que l’attribut scope est utilisé correctement dans les tableaux",
|
238
298
|
"help": "L’attribut scope doit être utilisé correctement"
|
239
299
|
},
|
300
|
+
"scrollable-region-focusable": {
|
301
|
+
"description": "Les éléments dont le contenu défile devraient être accesibles au clavier",
|
302
|
+
"help": "S'assure que les régions défilantes sont accessibles au clavier"
|
303
|
+
},
|
240
304
|
"server-side-image-map": {
|
241
305
|
"description": "S’assure que les images réactives côté serveur ne sont pas utilisées",
|
242
306
|
"help": "Les images réactives côté serveur ne devraient pas être utilisées"
|
@@ -255,7 +319,7 @@
|
|
255
319
|
},
|
256
320
|
"table-fake-caption": {
|
257
321
|
"description": "S’assure que les tableaux avec une légende utilisent l’élément <caption>",
|
258
|
-
"help": "Les données ou les cellules d’entête ne devraient pas être utilisées pour légender un tableau de données
|
322
|
+
"help": "Les données ou les cellules d’entête ne devraient pas être utilisées pour légender un tableau de données"
|
259
323
|
},
|
260
324
|
"td-has-header": {
|
261
325
|
"description": "S’assure que chaque cellule de données non vide dans un tableau de données a une ou plusieurs cellules d’entête",
|
@@ -289,19 +353,37 @@
|
|
289
353
|
},
|
290
354
|
"aria-allowed-attr": {
|
291
355
|
"pass": "Les attributs ARIA sont utilisés correctement pour le rôle défini",
|
292
|
-
"fail":
|
356
|
+
"fail": {
|
357
|
+
"singular": "L'attribut ARIA n'est pas autorisé: ${data.values}",
|
358
|
+
"plural": "Les attributs ARIA ne sont pas autorisés: ${data.values}"
|
359
|
+
}
|
293
360
|
},
|
294
361
|
"aria-allowed-role": {
|
295
362
|
"pass": "Le rôle ARIA est autorisé pour l’élément donné",
|
296
|
-
"fail":
|
363
|
+
"fail": {
|
364
|
+
"singular": "Le rôle ARIA ${data.values} n'est pas autorisé pour l'élément donné",
|
365
|
+
"plural": "Les rôles ARIA ${data.values} ne sont pas autorisés pour l'élément donné"
|
366
|
+
},
|
367
|
+
"incomplete": {
|
368
|
+
"singular": "Le rôle ARIA ${data.values} doit être retiré lorsque l'élément est rendu visible, car il n'est pas autorisé pour cet élément",
|
369
|
+
"plural": "Les rôles ARIA ${data.values} doivent être retirés lorsque l'élément est rendu visible, car il nee sont pas autorisés pour cet élément"
|
370
|
+
}
|
297
371
|
},
|
298
372
|
"aria-hidden-body": {
|
299
373
|
"pass": "Aucun attribut aria-hidden n’est présent sur body",
|
300
374
|
"fail": "aria-hidden=true ne devrait pas être présent sur body"
|
301
375
|
},
|
376
|
+
"aria-roledescription": {
|
377
|
+
"pass": "aria-roledescription utilisé sur un élément sémantique supporté",
|
378
|
+
"incomplete": "Vérifier que la valeur de aria-roledescription est annoncée par les lecteurs d'écran supportés",
|
379
|
+
"fail": "Attribuer à l'élément un role qui supporte aria-roledescription"
|
380
|
+
},
|
302
381
|
"aria-errormessage": {
|
303
382
|
"pass": "Utilise une technique prise en charge pour aria-errormessage",
|
304
|
-
"fail":
|
383
|
+
"fail": {
|
384
|
+
"singular": "La valeur de aria-errormessage `${data.values}` doit recourir à une technique pour annoncer le message (aria-live, aria-describedby, role=alert, etc.)",
|
385
|
+
"plural": "Les valeurs aria-errormessage `${data.values}` doivent recourir à une technique pour annoncer le message (aria-live, aria-describedby, role=alert, etc.)"
|
386
|
+
}
|
305
387
|
},
|
306
388
|
"has-widget-role": {
|
307
389
|
"pass": "L’élément a un rôle widget.",
|
@@ -315,18 +397,38 @@
|
|
315
397
|
"pass": "Le rôle ARIA est valide",
|
316
398
|
"fail": "Le rôle doit être un des rôles ARIA valides"
|
317
399
|
},
|
400
|
+
"no-implicit-explicit-label": {
|
401
|
+
"pass": "Il n'y a pas de décalage entre le <label> et le intitulé accessible",
|
402
|
+
"incomplete": "Vérifier que le <label> n'a pas à faire partie du nom du champ de formulaire ARIA ${data}"
|
403
|
+
},
|
318
404
|
"aria-required-attr": {
|
319
405
|
"pass": "Tous les attributs ARIA requis sont présents",
|
320
|
-
"fail":
|
406
|
+
"fail": {
|
407
|
+
"singular": "L'attribut ARIA requis est manquant: ${data.values}",
|
408
|
+
"plural": "Les attributs ARIA requis sont manquants: ${data.values}"
|
409
|
+
}
|
321
410
|
},
|
322
411
|
"aria-required-children": {
|
323
412
|
"pass": "Les descendants ARIA requis sont présents",
|
324
|
-
"fail":
|
325
|
-
|
413
|
+
"fail": {
|
414
|
+
"singular": "Le descendant ARIA requis est manquant: ${data.values}",
|
415
|
+
"plural": "Les descendants ARIA requis sont manquants: ${data.values}"
|
416
|
+
},
|
417
|
+
"incomplete": {
|
418
|
+
"singular": "Le rôle du descendant ARIA attendu doit être ajouté: ${data.values}",
|
419
|
+
"plural": "Les rôles des descendants ARIA attendus doivent être ajoutés: ${data.values}"
|
420
|
+
}
|
326
421
|
},
|
327
422
|
"aria-required-parent": {
|
328
423
|
"pass": "Les rôles parents ARIA requis sont présents",
|
329
|
-
"fail":
|
424
|
+
"fail": {
|
425
|
+
"singular": "Le rôle parent ARIA requis est manquant: ${data.values}",
|
426
|
+
"plural": "Les rôles parents ARIA requis sont manquants: ${data.values}"
|
427
|
+
}
|
428
|
+
},
|
429
|
+
"aria-unsupported-attr": {
|
430
|
+
"pass": "L'attribut ARIA est supporté",
|
431
|
+
"fail": "L'attribut ARIA n'est pas suffisamment supporté par les lecteurs d'écran et autres technologies d'assistance: ${data.values}"
|
330
432
|
},
|
331
433
|
"unsupportedrole": {
|
332
434
|
"pass": "Le rôle ARIA est supporté",
|
@@ -334,11 +436,21 @@
|
|
334
436
|
},
|
335
437
|
"aria-valid-attr-value": {
|
336
438
|
"pass": "Les valeurs d’attribut ARIA sont valides",
|
337
|
-
"fail":
|
439
|
+
"fail": {
|
440
|
+
"singular": "La valeur d’attribut ARIA est invalide: ${data.values}",
|
441
|
+
"plural": "Les valeurs d’attribut ARIA sont invalides: ${data.values}"
|
442
|
+
},
|
443
|
+
"incomplete": {
|
444
|
+
"singular": "Le id de l'attribut ARIA de l'élément n'existe pas dans cette page: ${data.values}",
|
445
|
+
"plural": "Le id de l'attribut ARIA des éléments n'existent pas dans cette page: ${data.values}"
|
446
|
+
}
|
338
447
|
},
|
339
448
|
"aria-valid-attr": {
|
340
449
|
"pass": "{{=it.data && it.data.length > 1 ? 'Les noms d’attributs ARIA sont valides' : 'Le nom d’attribut ARIA est valide'}}",
|
341
|
-
"fail":
|
450
|
+
"fail": {
|
451
|
+
"singular": "Le nom d’attribut ARIA est invalide: ${data.values}",
|
452
|
+
"plural": "Les noms d’attributs ARIA sont invalides: ${data.values}"
|
453
|
+
}
|
342
454
|
},
|
343
455
|
"valid-scrollable-semantics": {
|
344
456
|
"pass": "L’élément a une sémantique valide pour un élément dans l’ordre de tabulation.",
|
@@ -348,6 +460,7 @@
|
|
348
460
|
"pass": "L’élément a un contraste de couleurs suffisant de {{=it.data.contrastRatio}}",
|
349
461
|
"fail": "L’élément a un contraste de couleurs insuffisant de {{=it.data.contrastRatio}} (couleur du texte : {{=it.data.fgColor}}, couleur d’arrière-plan : {{=it.data.bgColor}}, corps : {{=it.data.fontSize}}, graisse : {{=it.data.fontWeight}}). Le rapport de contraste attendu est {{=it.data.expectedContrastRatio}}",
|
350
462
|
"incomplete": {
|
463
|
+
"default": "Impossible de déterminer le rapport de contraste",
|
351
464
|
"bgImage": "La couleur d’arrière-plan de l’élément n’a pu être déterminée à cause d’une image d’arrière-plan",
|
352
465
|
"bgGradient": "La couleur d’arrière-plan de l’élément n’a pu être déterminée à cause d’un dégradé d’arrière-plan",
|
353
466
|
"imgNode": "La couleur d’arrière-plan de l’élément n’a pu être déterminée, car l’élément contient une balise image",
|
@@ -357,19 +470,19 @@
|
|
357
470
|
"elmPartiallyObscuring": "La couleur d’arrière-plan de l’élément n’a pu être déterminée, car il chevauche partiellement un autre élément",
|
358
471
|
"outsideViewport": "La couleur d’arrière-plan de l’élément n’a pu être déterminée, car il est à l’extérieur du viewport",
|
359
472
|
"equalRatio": "L’élément a un rapport de contraste de 1:1 avec son arrière-plan",
|
360
|
-
"
|
473
|
+
"shortTextContent": "Le contenu de l'élément est trop court pour déterminer S'il s'agit réellement de contenu textuel"
|
361
474
|
}
|
362
475
|
},
|
363
476
|
"link-in-text-block": {
|
364
477
|
"pass": "Les liens peuvent être distingués du texte environnant par un autre moyen que la couleur",
|
365
478
|
"fail": "Les liens doivent se distinguer du texte environnant par un autre moyen que la couleur",
|
366
479
|
"incomplete": {
|
480
|
+
"default": "Impossible de déterminer le rapport de contraste",
|
367
481
|
"bgContrast": "Le rapport de contraste de l’élément n’a pu être déterminé. Recherchez un style différent pour le hover/focus.",
|
368
482
|
"bgImage": "Le rapport de contraste de l’élément n’a pu être déterminé à cause d’une image d’arrière-plan",
|
369
483
|
"bgGradient": "Le rapport de contraste de l’élément n’a pu être déterminé à cause d’un dégradé d’arrière-plan",
|
370
484
|
"imgNode": "Le rapport de contraste de l’élément n’a pu être déterminé, car l’élément contient une balise image",
|
371
|
-
"bgOverlap": "Le rapport de contraste de l’élément n’a pu être déterminé à cause d’un chevauchement"
|
372
|
-
"default": "Impossible de déterminer le rapport de contraste"
|
485
|
+
"bgOverlap": "Le rapport de contraste de l’élément n’a pu être déterminé à cause d’un chevauchement"
|
373
486
|
}
|
374
487
|
},
|
375
488
|
"autocomplete-appropriate": {
|
@@ -382,20 +495,47 @@
|
|
382
495
|
},
|
383
496
|
"fieldset": {
|
384
497
|
"pass": "L’élément est contenu dans un fieldset",
|
385
|
-
"fail":
|
498
|
+
"fail": {
|
499
|
+
"default": "L’élément n'est pas contenu dans un fieldset ou un ARIA group",
|
500
|
+
"no-legend": "Le fieldset ne possède pas un legend comme descendant direct",
|
501
|
+
"empty-legend": "Le legend n'offre pas de texte visible pour les lecteurs d'écran",
|
502
|
+
"mixed-inputs": "Le fieldset contient des contrôles sans rapports directs",
|
503
|
+
"no-group-label": "Le ARIA group ne possèdee pas de aria-label ou aria-labelledby",
|
504
|
+
"group-mixed-inputs": "Le ARIA group contient des contrôles sans rapports directs"
|
505
|
+
}
|
386
506
|
},
|
387
507
|
"group-labelledby": {
|
388
508
|
"pass": "Tous les éléments avec le nom \"{{=it.data.name}}\" font référence au même élément avec aria-labelledby",
|
389
|
-
"fail":
|
509
|
+
"fail": {
|
510
|
+
"default": "Les éléments avec le nom \"${data.name}\" ne possèdent pas à la fois une étiquette commune, et une étiquette unique référencée par aria-labelledby",
|
511
|
+
"no-shared-label": "Les éléments avec le nom \"${data.name}\" ne partagent pas tous une étiquette commune, référencée par aria-labelledby",
|
512
|
+
"no-unique-label": "Les éléments avec le nom \"${data.name}\" n'ont pas tous une étiquette unique, référencée par aria-labelledby"
|
513
|
+
}
|
390
514
|
},
|
391
515
|
"accesskeys": {
|
392
516
|
"pass": "La valeur de l'attribut accesskey est unique",
|
393
517
|
"fail": "Plusieurs éléments ont le même accesskey au sein du document"
|
394
518
|
},
|
519
|
+
"focusable-content": {
|
520
|
+
"pass": "L'élément contient des éléments focalisables",
|
521
|
+
"fail": "L'élément devrait avoir du contenu focalisable"
|
522
|
+
},
|
523
|
+
"focusable-disabled": {
|
524
|
+
"pass": "Aucun élément focalisable contenu dans l'élément",
|
525
|
+
"fail": "Le contenu focalisable devrait être désactivé ou retiré du DOM"
|
526
|
+
},
|
527
|
+
"focusable-element": {
|
528
|
+
"pass": "L'élément est focalisable",
|
529
|
+
"fail": "L'élément devrait être focalisable"
|
530
|
+
},
|
395
531
|
"focusable-no-name": {
|
396
532
|
"pass": "L’élément n’est pas dans l’ordre de tabulation ou a un intitulé accessible",
|
397
533
|
"fail": "L’élément est dans l’ordre de tabulation et n’a pas d’intitulé accessible"
|
398
534
|
},
|
535
|
+
"focusable-not-tabbable": {
|
536
|
+
"pass": "Aucun élément focalisable contenu dans l'élément",
|
537
|
+
"fail": "Le contenu focalisable devrait se voir assigné un tabindex='-1' ou être retiré du DOM"
|
538
|
+
},
|
399
539
|
"landmark-is-top-level": {
|
400
540
|
"pass": "La région {{=it.data.role }} est au niveau le plus haut.",
|
401
541
|
"fail": "La région {{=it.data.role }} est contenue dans une autre région."
|
@@ -424,6 +564,10 @@
|
|
424
564
|
"pass": "L’élément n’a pas de tabindex supérieur à 0",
|
425
565
|
"fail": "L’élément a un tabindex supérieur à 0"
|
426
566
|
},
|
567
|
+
"alt-space-value": {
|
568
|
+
"pass": "L'élément a une valeur d'attribut alt valide",
|
569
|
+
"fail": "L'élément a un attribut alt qui contient un caractères d'espacement, qui n'est pas ignoré par les lecteurs d'écran"
|
570
|
+
},
|
427
571
|
"duplicate-img-label": {
|
428
572
|
"pass": "L’élément ne duplique pas un texte existant dans l’alternative textuelle de l’élément <img>",
|
429
573
|
"fail": "L’élément contient un élément <img> dont l’alternative textuelle duplique un texte existant"
|
@@ -444,14 +588,22 @@
|
|
444
588
|
"pass": "L’élément de formulaire a un <label> implicite (imbriqué)",
|
445
589
|
"fail": "L’élément de formulaire n’a pas de <label> implicite (imbriqué)"
|
446
590
|
},
|
591
|
+
"label-content-name-mismatch": {
|
592
|
+
"pass": "L'élément contient du texte visible qui n'est pas inclus dans l'intitulé accessible",
|
593
|
+
"fail": "Le texte contenu dans l'élément n'est pas inclus dans l'intitulé accessible"
|
594
|
+
},
|
447
595
|
"multiple-label": {
|
448
596
|
"pass": "L’élément de formulaire n’a pas plusieurs éléments <label>",
|
449
|
-
"
|
597
|
+
"incomplete": "Des éléments associés à plusieurs étiquettes ne sont pas suffisamment supportés par les teechnologies d'assistance. S'assurer que la première étiquette contient toute l'information nécessaire."
|
450
598
|
},
|
451
599
|
"title-only": {
|
452
600
|
"pass": "L’élément de formulaire n’a pas uniquement l’attribut title comme étiquette",
|
453
601
|
"fail": "Seul l’attribut title est utilisé comme étiquette pour l’élément de formulaire"
|
454
602
|
},
|
603
|
+
"landmark-is-unique": {
|
604
|
+
"pass": "Les landmarks doivent comporter un rôle unique, ou une étiquette accessible par la combinaison de role/label/title",
|
605
|
+
"fail": "L'attribut landmark doit comporter une valeur d'attribut aria-label, aria-labelledby, ou title unique pour rendre le landmark distinct"
|
606
|
+
},
|
455
607
|
"has-lang": {
|
456
608
|
"pass": "L’élément <html> a un attribut lang",
|
457
609
|
"fail": "L’élément <html> n’a pas d’attribut lang"
|
@@ -470,7 +622,10 @@
|
|
470
622
|
},
|
471
623
|
"listitem": {
|
472
624
|
"pass": "L’item de liste a un élément <ul>, <ol> ou role=\"list\" parent",
|
473
|
-
"fail":
|
625
|
+
"fail": {
|
626
|
+
"default": "L'item de liste n'a pas d'élément <ul> ou <ol> parent",
|
627
|
+
"roleNotValid": "L'item de liste n'a pas d'élément <ul> ou <ol> parent sans un role ou un role=\"list\""
|
628
|
+
}
|
474
629
|
},
|
475
630
|
"only-dlitems": {
|
476
631
|
"pass": "L’élément de liste n’a que des descendants directs qui sont autorisés dans les éléments <dt> ou <dd>",
|
@@ -478,7 +633,10 @@
|
|
478
633
|
},
|
479
634
|
"only-listitems": {
|
480
635
|
"pass": "L’élément de liste n’a que des descendants directs qui sont autorisés dans les éléments <li>",
|
481
|
-
"fail":
|
636
|
+
"fail": {
|
637
|
+
"default": "L’élément de liste comporte des descendants directs qui ne sont pas autorisés à l'intérieur de l'élément <li>",
|
638
|
+
"roleNotValid": "L’élément de liste comporte des descendants directs avec un rôle qui n'est pas autorisé: ${data.roles}"
|
639
|
+
}
|
482
640
|
},
|
483
641
|
"structured-dlitems": {
|
484
642
|
"pass": "S’il n’est pas vide, l’élément contient au moins un élément <dt> et un élément <dd>",
|
@@ -486,12 +644,10 @@
|
|
486
644
|
},
|
487
645
|
"caption": {
|
488
646
|
"pass": "L’élément multimédia a une piste de sous-titres",
|
489
|
-
"fail": "L’élément multimédia n’a pas de piste de sous-titres",
|
490
647
|
"incomplete": "Aucune piste de sous-titres n’a pu être trouvée pour cet élément"
|
491
648
|
},
|
492
649
|
"description": {
|
493
650
|
"pass": "L’élément multimédia a une piste d’audiodescription",
|
494
|
-
"fail": "L’élément multimédia n’a pas de piste d’audiodescription",
|
495
651
|
"incomplete": "Aucune piste d’audiodescription n’a pu être trouvée pour cet élément"
|
496
652
|
},
|
497
653
|
"frame-tested": {
|
@@ -499,6 +655,11 @@
|
|
499
655
|
"fail": "L’iframe n’a pu être testée avec axe-core",
|
500
656
|
"incomplete": "L’iframe doit encore être testée avec axe-core"
|
501
657
|
},
|
658
|
+
"css-orientation-lock": {
|
659
|
+
"pass": "L'utilisation de l'écran est indépendant de l'orientation et n'est pas limitée à un mode d'affichage donné",
|
660
|
+
"fail": "L'utilisation de l'écran est limitée à une orientation donnée par CSS, rendant l'affichage inutilisable",
|
661
|
+
"incomplete": "Le verouillage de l'orientation d'affichage par CSS ne peut être déterminé"
|
662
|
+
},
|
502
663
|
"meta-viewport-large": {
|
503
664
|
"pass": "La balise <meta> ne limite pas l’agrandissement sur les appareils mobiles",
|
504
665
|
"fail": "La balise <meta> limite l’agrandissement sur les appareils mobiles"
|
@@ -544,6 +705,18 @@
|
|
544
705
|
"pass": "L’attribut title de l’élément est unique",
|
545
706
|
"fail": "L’attribut title de l’élément n’est pas unique"
|
546
707
|
},
|
708
|
+
"duplicate-id-active": {
|
709
|
+
"pass": "Le document ne comporte aucun élément actif partageant la même valeur d'attribut id",
|
710
|
+
"fail": "Le document comporte ou un plusieurs éléments actifs partageant la même valeur d'attribut id: ${data}"
|
711
|
+
},
|
712
|
+
"duplicate-id-aria": {
|
713
|
+
"pass": "Le document ne comporte aucun élément référencés par ARIA ou étiquettes partageant la même valeur d'attribut id",
|
714
|
+
"fail": "Le document comporte un ou plusieurs éléments référencés par ARIA partageant la même valeur d'attribut id: ${data}"
|
715
|
+
},
|
716
|
+
"duplicate-id": {
|
717
|
+
"pass": "Le document n’a pas d’éléments qui partagent le même attribut id",
|
718
|
+
"fail": "Le document a plusieurs éléments avec le même attribut id : {{=it.data}}"
|
719
|
+
},
|
547
720
|
"aria-label": {
|
548
721
|
"pass": "L’attribut aria-label existe et n’est pas vide",
|
549
722
|
"fail": "L’attribut aria-label n’existe pas ou est vide"
|
@@ -552,6 +725,13 @@
|
|
552
725
|
"pass": "L’attribut aria-labelledby existe et fait référence à des éléments visibles par les lecteurs d’écran",
|
553
726
|
"fail": "L’attribut aria-labelledby n’existe pas, fait référence à des éléments qui n’existent pas ou à des éléments vides ou non visibles"
|
554
727
|
},
|
728
|
+
"avoid-inline-spacing": {
|
729
|
+
"pass": "Aucun style inline affectant l'espacement du texte avec '!important' n'a été spécifié",
|
730
|
+
"fail": {
|
731
|
+
"singular": "Retirer '!important' du style inline ${data.values}, car le remplacement n'est pas pris en charge par la plupart des navigateurs",
|
732
|
+
"plural": "Retirer '!important' des styles inline ${data.values}, car le remplacement n'est pas pris en charge par la plupart des navigateurs"
|
733
|
+
}
|
734
|
+
},
|
555
735
|
"button-has-visible-text": {
|
556
736
|
"pass": "L’élément a un contenu textuel visible par les lecteurs d’écran",
|
557
737
|
"fail": "L’élément n’a aucun contenu textuel visible par les lecteurs d’écran"
|
@@ -560,13 +740,9 @@
|
|
560
740
|
"pass": "Le document a un élément <title> non vide",
|
561
741
|
"fail": "Le document n’a pas d’élément <title> non vide"
|
562
742
|
},
|
563
|
-
"duplicate-id": {
|
564
|
-
"pass": "Le document n’a pas d’éléments qui partagent le même attribut id",
|
565
|
-
"fail": "Le document a plusieurs éléments avec le même attribut id : {{=it.data}}"
|
566
|
-
},
|
567
743
|
"exists": {
|
568
744
|
"pass": "L’élément n’existe pas",
|
569
|
-
"
|
745
|
+
"incomplete": "Element exists"
|
570
746
|
},
|
571
747
|
"has-alt": {
|
572
748
|
"pass": "L’élément a un attribut alt",
|
@@ -585,7 +761,10 @@
|
|
585
761
|
"fail": "L’élément n’a pas d'attribut alt ou l’attribut alt est vide"
|
586
762
|
},
|
587
763
|
"non-empty-if-present": {
|
588
|
-
"pass":
|
764
|
+
"pass": {
|
765
|
+
"default": "L'élément n'a pas d'attribut value",
|
766
|
+
"has-label": "L'élément a un attribut value non-vide"
|
767
|
+
},
|
589
768
|
"fail": "L’élément a un attribut value, et cet attribut est vide"
|
590
769
|
},
|
591
770
|
"non-empty-title": {
|
@@ -659,5 +838,5 @@
|
|
659
838
|
"failureMessage": "Corriger tous les éléments suivants : {{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
|
660
839
|
}
|
661
840
|
},
|
662
|
-
|
841
|
+
"incompleteFallbackMessage": "axe n'a pu en déterminer la raison. Il est temps de sortir l'inspecteur d'éléments!"
|
663
842
|
}
|