@axe-core/watcher 3.23.0-next.65042bad → 3.23.0-next.86c61d3a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cypress/cypress.js +4 -7
- package/dist/cypress/cypress.js.map +1 -1
- package/dist/sendResultsToServer.js +12 -4
- package/dist/sendResultsToServer.js.map +1 -1
- package/dist/utils/initializeSession.js +6 -3
- package/dist/utils/initializeSession.js.map +1 -1
- package/dist/utils/shouldUseEnvProxy.d.ts +5 -0
- package/dist/utils/shouldUseEnvProxy.js +24 -0
- package/dist/utils/shouldUseEnvProxy.js.map +1 -0
- package/dist/utils/sync-fetch-worker.mjs +135 -43
- package/dist/utils/sync-fetch.d.ts +1 -1
- package/dist/utils/sync-fetch.js +52 -44
- package/dist/utils/sync-fetch.js.map +1 -1
- package/dist/utils/test-constants.d.ts +14 -0
- package/dist/utils/test-constants.js +12 -0
- package/dist/utils/test-constants.js.map +1 -0
- package/dist/utils/writeVariables.d.ts +5 -0
- package/dist/utils/writeVariables.js +2 -4
- package/dist/utils/writeVariables.js.map +1 -1
- package/extension/axe-versions/axe-core@4.11.0/axe.min.js +12 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/README.md +9 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/_template.json +1131 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/da.json +799 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/de.json +1127 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/el.json +1069 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/es.json +790 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/eu.json +789 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/fr.json +994 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/he.json +1017 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/it.json +1108 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/ja.json +1127 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/ko.json +1003 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/nl.json +48 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/no_NB.json +799 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/pl.json +1109 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/pt_BR.json +970 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/pt_PT.json +1123 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/ru.json +1127 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/zh_CN.json +1116 -0
- package/extension/axe-versions/axe-core@4.11.0/locales/zh_TW.json +1108 -0
- package/extension/axe-versions-mapper.js +2 -0
- package/extension/axe.js +1 -1
- package/extension/axe.js.LICENSE.txt +1 -1
- package/extension/background.js +1 -1
- package/extension/content.js +1 -1
- package/package.json +8 -7
@@ -0,0 +1,1123 @@
|
|
1
|
+
{
|
2
|
+
"lang": "pt_PT",
|
3
|
+
"rules": {
|
4
|
+
"accesskeys": {
|
5
|
+
"description": "Garantir que cada valor do atributo 'accesskey' seja único",
|
6
|
+
"help": "O valor do atributo 'accesskey' deve ser único"
|
7
|
+
},
|
8
|
+
"area-alt": {
|
9
|
+
"description": "Garantir que os elementos <area> dos mapas de imagem tenham texto alternativo",
|
10
|
+
"help": "Os elementos <area> ativos devem ter texto alternativo"
|
11
|
+
},
|
12
|
+
"aria-allowed-attr": {
|
13
|
+
"description": "Garantir que a função de um elemento suporte os seus atributos ARIA",
|
14
|
+
"help": "Os elementos devem usar apenas atributos ARIA suportados"
|
15
|
+
},
|
16
|
+
"aria-allowed-role": {
|
17
|
+
"description": "Garantir que o atributo 'role' tenha um valor apropriado para o elemento",
|
18
|
+
"help": "A 'role' ARIA deve ser apropriada para o elemento"
|
19
|
+
},
|
20
|
+
"aria-braille-equivalent": {
|
21
|
+
"description": "Garantir que 'aria-braillelabel' e 'aria-brailleroledescription' tenham um equivalente não braile",
|
22
|
+
"help": "Os atributos 'aria-braille' devem ter um equivalente não braile"
|
23
|
+
},
|
24
|
+
"aria-command-name": {
|
25
|
+
"description": "Garantir que cada botão, link e item de menu ARIA tenha um nome acessível",
|
26
|
+
"help": "Os comandos ARIA devem ter um nome acessível"
|
27
|
+
},
|
28
|
+
"aria-conditional-attr": {
|
29
|
+
"description": "Garantir que os atributos ARIA sejam usados conforme descrito na especificação da função do elemento",
|
30
|
+
"help": "Os atributos ARIA devem ser usados conforme especificado para a função do elemento"
|
31
|
+
},
|
32
|
+
"aria-deprecated-role": {
|
33
|
+
"description": "Garantir que os elementos não usem funções obsoletas",
|
34
|
+
"help": "Não se devem usar funções ARIA obsoletas"
|
35
|
+
},
|
36
|
+
"aria-dialog-name": {
|
37
|
+
"description": "Garantir que cada diálogo e diálogo de alerta ARIA tenha um nome acessível",
|
38
|
+
"help": "Os nós de diálogo e diálogo de alerta ARIA devem ter um nome acessível"
|
39
|
+
},
|
40
|
+
"aria-hidden-body": {
|
41
|
+
"description": "Garantir que 'aria-hidden=\"true\"' não esteja presente no corpo do documento.",
|
42
|
+
"help": "'aria-hidden=\"true\"' não deve estar presente no corpo do documento"
|
43
|
+
},
|
44
|
+
"aria-hidden-focus": {
|
45
|
+
"description": "Garantir que elementos com 'aria-hidden' não sejam focáveis nem contenham elementos focáveis",
|
46
|
+
"help": "Um elemento oculto por ARIA não deve ser focável nem conter elementos focáveis"
|
47
|
+
},
|
48
|
+
"aria-input-field-name": {
|
49
|
+
"description": "Garantir que cada campo de entrada ARIA tenha um nome acessível",
|
50
|
+
"help": "Os campos de entrada ARIA devem ter um nome acessível"
|
51
|
+
},
|
52
|
+
"aria-meter-name": {
|
53
|
+
"description": "Garantir que cada nó de medidor ARIA tenha um nome acessível",
|
54
|
+
"help": "Os nós de medidor ARIA devem ter um nome acessível"
|
55
|
+
},
|
56
|
+
"aria-progressbar-name": {
|
57
|
+
"description": "Garantir que cada nó de barra de progresso ARIA tenha um nome acessível",
|
58
|
+
"help": "Os nós de barra de progresso ARIA devem ter um nome acessível"
|
59
|
+
},
|
60
|
+
"aria-prohibited-attr": {
|
61
|
+
"description": "Garantir que os atributos ARIA não sejam proibidos para a função de um elemento",
|
62
|
+
"help": "Os elementos devem usar apenas atributos ARIA permitidos"
|
63
|
+
},
|
64
|
+
"aria-required-attr": {
|
65
|
+
"description": "Garantir que os elementos com funções ARIA tenham todos os atributos ARIA obrigatórios",
|
66
|
+
"help": "Devem ser fornecidos os atributos ARIA obrigatórios"
|
67
|
+
},
|
68
|
+
"aria-required-children": {
|
69
|
+
"description": "Garantir que os elementos com uma função ARIA que requer funções filhas as contenham",
|
70
|
+
"help": "Certas funções ARIA devem conter determinados elementos filhos"
|
71
|
+
},
|
72
|
+
"aria-required-parent": {
|
73
|
+
"description": "Garantir que os elementos com uma função ARIA que requer funções parentais estejam contidos por estes",
|
74
|
+
"help": "Certas funções ARIA devem estar contidas em pais específicos"
|
75
|
+
},
|
76
|
+
"aria-roledescription": {
|
77
|
+
"description": "Garantir que 'aria-roledescription' seja usado apenas em elementos com uma função implícita ou explícita",
|
78
|
+
"help": "'aria-roledescription' deve estar em elementos com uma função semântica"
|
79
|
+
},
|
80
|
+
"aria-roles": {
|
81
|
+
"description": "Garantir que todos os elementos com o atributo 'role' usem um valor válido",
|
82
|
+
"help": "As funções 'roles' ARIA utilizadas devem corresponder a valores válidos"
|
83
|
+
},
|
84
|
+
"aria-text": {
|
85
|
+
"description": "Garantir que 'role=\"text\"' seja usado em elementos sem descendentes focáveis",
|
86
|
+
"help": "'\"role=text\"' não deve ter descendentes focáveis"
|
87
|
+
},
|
88
|
+
"aria-toggle-field-name": {
|
89
|
+
"description": "Garantir que cada campo de alternância ARIA tenha um nome acessível",
|
90
|
+
"help": "Os campos de alternância ARIA devem ter um nome acessível"
|
91
|
+
},
|
92
|
+
"aria-tooltip-name": {
|
93
|
+
"description": "Garantir que cada nó de 'tooltip' ARIA tenha um nome acessível",
|
94
|
+
"help": "Os nós de 'tooltip' ARIA devem ter um nome acessível"
|
95
|
+
},
|
96
|
+
"aria-treeitem-name": {
|
97
|
+
"description": "Garantir que cada nó de 'treeitem' ARIA tenha um nome acessível",
|
98
|
+
"help": "Os nós de 'treeitem' ARIA devem ter um nome acessível"
|
99
|
+
},
|
100
|
+
"aria-valid-attr-value": {
|
101
|
+
"description": "Garantir que todos os atributos ARIA tenham valores válidos",
|
102
|
+
"help": "Os atributos ARIA devem corresponder a valores válidos"
|
103
|
+
},
|
104
|
+
"aria-valid-attr": {
|
105
|
+
"description": "Garantir que os atributos que começam com 'aria-' sejam atributos ARIA válidos",
|
106
|
+
"help": "Os atributos ARIA devem corresponder a nomes válidos"
|
107
|
+
},
|
108
|
+
"audio-caption": {
|
109
|
+
"description": "Garantir que os elementos <audio> tenham legendas",
|
110
|
+
"help": "Os elementos <audio> devem ter uma pista de legendas"
|
111
|
+
},
|
112
|
+
"autocomplete-valid": {
|
113
|
+
"description": "Garantir que o atributo 'autocomplete' esteja correto e seja adequado para o campo de formulário",
|
114
|
+
"help": "O atributo 'autocomplete' deve ser utilizado corretamente"
|
115
|
+
},
|
116
|
+
"avoid-inline-spacing": {
|
117
|
+
"description": "Garantir que o espaçamento do texto definido através de atributos de estilo possa ser ajustado com folhas de estilo personalizadas",
|
118
|
+
"help": "O espaçamento do texto 'inline' deve ser ajustável com folhas de estilo personalizadas"
|
119
|
+
},
|
120
|
+
"blink": {
|
121
|
+
"description": "Garantir que os elementos <blink> não sejam usados",
|
122
|
+
"help": "Os elementos <blink> estão obsoletos e não devem ser usados"
|
123
|
+
},
|
124
|
+
"button-name": {
|
125
|
+
"description": "Garantir que os botões tenham texto discernível",
|
126
|
+
"help": "Os botões devem ter texto discernível"
|
127
|
+
},
|
128
|
+
"bypass": {
|
129
|
+
"description": "Garantir que cada página tenha pelo menos um mecanismo para o utilizador contornar a navegação e saltar diretamente para o conteúdo",
|
130
|
+
"help": "A página deve ter meios para contornar blocos repetitivos"
|
131
|
+
},
|
132
|
+
"color-contrast-enhanced": {
|
133
|
+
"description": "Garantir que o contraste entre as cores de primeiro plano e de fundo cumpra os limites de razão de contraste aprimorada, WCAG 2 AAA",
|
134
|
+
"help": "Os elementos devem cumprir os limites de razão de contraste aprimorada"
|
135
|
+
},
|
136
|
+
"color-contrast": {
|
137
|
+
"description": "Garantir que o contraste entre as cores de primeiro plano e de fundo cumpra os limites mínimos de razão de contraste, WCAG 2 AA",
|
138
|
+
"help": "Os elementos devem cumprir os limites mínimos de razão de contraste"
|
139
|
+
},
|
140
|
+
"css-orientation-lock": {
|
141
|
+
"description": "Garantir que o conteúdo não esteja bloqueado a uma orientação de ecrã específica, e que seja operativo em todas as orientações de ecrã",
|
142
|
+
"help": "As media queries CSS não devem bloquear a orientação do ecrã"
|
143
|
+
},
|
144
|
+
"definition-list": {
|
145
|
+
"description": "Garantir que os elementos <dl> estejam estruturados corretamente",
|
146
|
+
"help": "Os elementos <dl> devem conter apenas grupos de <dt> e <dd> ordenados corretamente, ou elementos <script>, <template> ou <div>"
|
147
|
+
},
|
148
|
+
"dlitem": {
|
149
|
+
"description": "Garantir que os elementos <dt> e <dd> estejam contidos num <dl>",
|
150
|
+
"help": "Os elementos <dt> e <dd> devem estar contidos num <dl>"
|
151
|
+
},
|
152
|
+
"document-title": {
|
153
|
+
"description": "Garantir que cada documento HTML contenha um elemento <title> não vazio",
|
154
|
+
"help": "Os documentos devem ter um elemento <title> para ajudar na navegação"
|
155
|
+
},
|
156
|
+
"duplicate-id-active": {
|
157
|
+
"description": "Garantir que cada valor do atributo 'id' dos elementos ativos seja único",
|
158
|
+
"help": "Os IDs dos elementos ativos devem ser únicos"
|
159
|
+
},
|
160
|
+
"duplicate-id-aria": {
|
161
|
+
"description": "Garantir que cada valor do atributo 'id' utilizado em ARIA e em etiquetas seja único",
|
162
|
+
"help": "Os IDs usados em ARIA e etiquetas devem ser únicos"
|
163
|
+
},
|
164
|
+
"duplicate-id": {
|
165
|
+
"description": "Garantir que cada valor do atributo 'id' seja único",
|
166
|
+
"help": "O valor do atributo 'id' deve ser único"
|
167
|
+
},
|
168
|
+
"empty-heading": {
|
169
|
+
"description": "Garantir que os cabeçalhos tenham texto discernível",
|
170
|
+
"help": "Os cabeçalhos não devem estar vazios"
|
171
|
+
},
|
172
|
+
"empty-table-header": {
|
173
|
+
"description": "Garantir que os cabeçalhos de tabelas tenham texto discernível",
|
174
|
+
"help": "O texto dos cabeçalhos de tabela não deve estar vazio"
|
175
|
+
},
|
176
|
+
"focus-order-semantics": {
|
177
|
+
"description": "Garantir que os elementos na ordem de foco tenham uma função apropriada para conteúdo interativo",
|
178
|
+
"help": "Os elementos na ordem de foco devem ter uma função apropriada"
|
179
|
+
},
|
180
|
+
"form-field-multiple-labels": {
|
181
|
+
"description": "Garantir que o campo de formulário não possua múltiplos elementos 'label'",
|
182
|
+
"help": "O campo de formulário não deve ter múltiplos elementos 'label'"
|
183
|
+
},
|
184
|
+
"frame-focusable-content": {
|
185
|
+
"description": "Garantir que os elementos <frame> e <iframe> com conteúdo focável não tenham tabindex=-1",
|
186
|
+
"help": "Os frames com conteúdo focável não devem ter tabindex=-1"
|
187
|
+
},
|
188
|
+
"frame-tested": {
|
189
|
+
"description": "Garantir que os elementos <iframe> e <frame> contenham o script axe-core",
|
190
|
+
"help": "Os frames devem ser testados com axe-core"
|
191
|
+
},
|
192
|
+
"frame-title-unique": {
|
193
|
+
"description": "Garantir que os elementos <iframe> e <frame> contenham um atributo 'title' único",
|
194
|
+
"help": "Os frames devem ter um atributo 'title' único"
|
195
|
+
},
|
196
|
+
"frame-title": {
|
197
|
+
"description": "Garantir que os elementos <iframe> e <frame> tenham um atributo 'title' acessível",
|
198
|
+
"help": "Os frames devem ter um atributo 'title' acessível"
|
199
|
+
},
|
200
|
+
"heading-order": {
|
201
|
+
"description": "Garantir que a ordem dos cabeçalhos seja semanticamente correta",
|
202
|
+
"help": "Os níveis de cabeçalho devem aumentar apenas de um em um"
|
203
|
+
},
|
204
|
+
"hidden-content": {
|
205
|
+
"description": "Informa os utilizadores sobre conteúdo oculto.",
|
206
|
+
"help": "O conteúdo oculto na página deve ser analisado"
|
207
|
+
},
|
208
|
+
"html-has-lang": {
|
209
|
+
"description": "Garantir que cada documento HTML tenha um atributo 'lang'",
|
210
|
+
"help": "O elemento <html> deve ter um atributo 'lang'"
|
211
|
+
},
|
212
|
+
"html-lang-valid": {
|
213
|
+
"description": "Garantir que o atributo 'lang' do elemento <html> tenha um valor válido",
|
214
|
+
"help": "O elemento <html> deve ter um valor válido para o atributo 'lang'"
|
215
|
+
},
|
216
|
+
"html-xml-lang-mismatch": {
|
217
|
+
"description": "Garantir que os elementos HTML com atributos 'lang' e 'xml:lang' válidos concordem na língua base da página",
|
218
|
+
"help": "Os elementos HTML com 'lang' e 'xml:lang' devem ter a mesma língua base"
|
219
|
+
},
|
220
|
+
"identical-links-same-purpose": {
|
221
|
+
"description": "Garantir que links com o mesmo nome acessível tenham um propósito semelhante",
|
222
|
+
"help": "Links com o mesmo nome devem ter um propósito semelhante"
|
223
|
+
},
|
224
|
+
"image-alt": {
|
225
|
+
"description": "Garantir que os elementos <img> tenham texto alternativo ou um 'role' igual a 'none' ou 'presentation'",
|
226
|
+
"help": "As imagens devem ter texto alternativo"
|
227
|
+
},
|
228
|
+
"image-redundant-alt": {
|
229
|
+
"description": "Garantir que o texto alternativo da imagem não seja repetido como texto",
|
230
|
+
"help": "O texto alternativo das imagens não deve ser repetido como texto"
|
231
|
+
},
|
232
|
+
"input-button-name": {
|
233
|
+
"description": "Garantir que os botões de 'input' tenham texto discernível",
|
234
|
+
"help": "Os botões de 'input' devem ter texto discernível"
|
235
|
+
},
|
236
|
+
"input-image-alt": {
|
237
|
+
"description": "Garantir que os elementos <input type=\"image\"> tenham texto alternativo",
|
238
|
+
"help": "Os botões de imagem devem ter texto alternativo"
|
239
|
+
},
|
240
|
+
"label-content-name-mismatch": {
|
241
|
+
"description": "Garantir que os elementos etiquetados através do seu conteúdo incluam o texto visível como parte do seu nome acessível",
|
242
|
+
"help": "Os elementos devem incluir o seu texto visível como parte do nome acessível"
|
243
|
+
},
|
244
|
+
"label-title-only": {
|
245
|
+
"description": "Garantir que cada elemento de formulário tenha uma etiqueta visível e não seja etiquetado apenas através de etiquetas ocultas, ou dos atributos 'title' ou 'aria-describedby'",
|
246
|
+
"help": "Os elementos de formulário devem ter uma etiqueta visível"
|
247
|
+
},
|
248
|
+
"label": {
|
249
|
+
"description": "Garantir que cada elemento de formulário tenha uma etiqueta",
|
250
|
+
"help": "Os elementos de formulário devem ter etiquetas"
|
251
|
+
},
|
252
|
+
"landmark-banner-is-top-level": {
|
253
|
+
"description": "Garantir que o marco de 'banner' esteja no nível principal",
|
254
|
+
"help": "O marco de 'banner' não deve estar contido noutro marco"
|
255
|
+
},
|
256
|
+
"landmark-complementary-is-top-level": {
|
257
|
+
"description": "Garantir que o marco 'complementary' ou 'aside' estejam no nível principal",
|
258
|
+
"help": "O 'aside' não deve estar contido noutro marco"
|
259
|
+
},
|
260
|
+
"landmark-contentinfo-is-top-level": {
|
261
|
+
"description": "Garantir que o marco 'contentinfo' esteja no nível principal",
|
262
|
+
"help": "O marco 'contentinfo' não deve estar contido noutro marco"
|
263
|
+
},
|
264
|
+
"landmark-main-is-top-level": {
|
265
|
+
"description": "Garantir que o marco 'main' esteja no nível principal",
|
266
|
+
"help": "O marco 'main' não deve estar contido noutro marco"
|
267
|
+
},
|
268
|
+
"landmark-no-duplicate-banner": {
|
269
|
+
"description": "Garantir que o documento tenha, no máximo, um marco de 'banner'",
|
270
|
+
"help": "O documento não deve ter mais do que um marco de 'banner'"
|
271
|
+
},
|
272
|
+
"landmark-no-duplicate-contentinfo": {
|
273
|
+
"description": "Garantir que o documento tenha, no máximo, um marco 'contentinfo'",
|
274
|
+
"help": "O documento não deve ter mais do que um marco 'contentinfo'"
|
275
|
+
},
|
276
|
+
"landmark-no-duplicate-main": {
|
277
|
+
"description": "Garantir que o documento tenha, no máximo, um marco 'main'",
|
278
|
+
"help": "O documento não deve ter mais do que um marco 'main'"
|
279
|
+
},
|
280
|
+
"landmark-one-main": {
|
281
|
+
"description": "Garantir que o documento tenha um marco 'main'",
|
282
|
+
"help": "O documento deve ter um marco 'main'"
|
283
|
+
},
|
284
|
+
"landmark-unique": {
|
285
|
+
"description": "Garantir que os marcos sejam únicos",
|
286
|
+
"help": "Os marcos devem ter uma combinação única de 'role' ou 'role'/'label'/'title' (ou seja, nome acessível)"
|
287
|
+
},
|
288
|
+
"link-in-text-block": {
|
289
|
+
"description": "Garantir que os links se distingam do texto circundante de forma que não dependa da cor",
|
290
|
+
"help": "Os links devem ser distinguíveis sem depender da cor"
|
291
|
+
},
|
292
|
+
"link-name": {
|
293
|
+
"description": "Garantir que os links tenham texto discernível",
|
294
|
+
"help": "Os links devem ter texto discernível"
|
295
|
+
},
|
296
|
+
"list": {
|
297
|
+
"description": "Garantir que as listas estejam estruturadas corretamente",
|
298
|
+
"help": "Os elementos <ul> e <ol> devem conter diretamente apenas elementos <li>, <script> ou <template>"
|
299
|
+
},
|
300
|
+
"listitem": {
|
301
|
+
"description": "Garantir que os elementos <li> sejam usados de forma semântica",
|
302
|
+
"help": "Os elementos <li> devem estar contidos num <ul> ou <ol>"
|
303
|
+
},
|
304
|
+
"marquee": {
|
305
|
+
"description": "Garantir que os elementos <marquee> não sejam usados",
|
306
|
+
"help": "Os elementos <marquee> estão obsoletos e não devem ser usados"
|
307
|
+
},
|
308
|
+
"meta-refresh-no-exceptions": {
|
309
|
+
"description": "Garantir que <meta http-equiv=\"refresh\"> não seja usado para atualização com atraso",
|
310
|
+
"help": "Não se deve usar atualização com atraso"
|
311
|
+
},
|
312
|
+
"meta-refresh": {
|
313
|
+
"description": "Garantir que <meta http-equiv=\"refresh\"> não seja usado para atualização com atraso",
|
314
|
+
"help": "Não se deve usar atualização com atraso inferior a 20 horas"
|
315
|
+
},
|
316
|
+
"meta-viewport-large": {
|
317
|
+
"description": "Garantir que <meta name=\"viewport\"> permita uma ampliação significativa",
|
318
|
+
"help": "Os utilizadores devem ser capazes de ampliar e escalar o texto até 500%"
|
319
|
+
},
|
320
|
+
"meta-viewport": {
|
321
|
+
"description": "Garantir que <meta name=\"viewport\"> não desative a escalabilidade e ampliação do texto",
|
322
|
+
"help": "A ampliação e escalabilidade não devem ser desativadas"
|
323
|
+
},
|
324
|
+
"nested-interactive": {
|
325
|
+
"description": "Garantir que os controles interativos não estejam aninhados, pois nem sempre são anunciados pelos leitores de ecrã ou podem causar problemas de foco para tecnologias assistivas",
|
326
|
+
"help": "Os controles interativos não devem estar aninhados"
|
327
|
+
},
|
328
|
+
"no-autoplay-audio": {
|
329
|
+
"description": "Garantir que os elementos <video> ou <audio> não reproduzam áudio automaticamente por mais de 3 segundos sem um mecanismo de controlo para parar ou silenciar o áudio",
|
330
|
+
"help": "Os elementos <video> ou <audio> não devem reproduzir automaticamente"
|
331
|
+
},
|
332
|
+
"object-alt": {
|
333
|
+
"description": "Garantir que os elementos <object> tenham texto alternativo",
|
334
|
+
"help": "Os elementos <object> devem ter texto alternativo"
|
335
|
+
},
|
336
|
+
"p-as-heading": {
|
337
|
+
"description": "Garantir que texto em negrito, itálico e tamanho de fonte não sejam usados para estilizar elementos <p> como cabeçalhos",
|
338
|
+
"help": "Os elementos <p> estilizados não devem ser usados como cabeçalhos"
|
339
|
+
},
|
340
|
+
"page-has-heading-one": {
|
341
|
+
"description": "Garantir que a página, ou pelo menos um dos seus 'frames', contenha um cabeçalho de nível 1",
|
342
|
+
"help": "A página deve conter um cabeçalho de nível 1"
|
343
|
+
},
|
344
|
+
"presentation-role-conflict": {
|
345
|
+
"description": "Os elementos marcados como 'none' ou 'presentation' não devem ter ARIA global ou 'tabindex', para garantir que todos os leitores de ecrã os ignorem",
|
346
|
+
"help": "Garantir que os elementos marcados como 'none' ou 'presentation' sejam consistentemente ignorados"
|
347
|
+
},
|
348
|
+
"region": {
|
349
|
+
"description": "Garantir que todo o conteúdo da página esteja contido em marcos (landmarks)",
|
350
|
+
"help": "Todo o conteúdo da página deve estar contido em marcos (landmarks)"
|
351
|
+
},
|
352
|
+
"role-img-alt": {
|
353
|
+
"description": "Garantir que os elementos com 'role=\"img\"' tenham texto alternativo",
|
354
|
+
"help": "Os elementos com 'role=\"img\"' devem ter um texto alternativo"
|
355
|
+
},
|
356
|
+
"scope-attr-valid": {
|
357
|
+
"description": "Garantir que o atributo 'scope' seja usado corretamente em tabelas",
|
358
|
+
"help": "O atributo 'scope' deve ser usado corretamente"
|
359
|
+
},
|
360
|
+
"scrollable-region-focusable": {
|
361
|
+
"description": "Garantir que os elementos com conteúdo rolável sejam acessíveis por teclado",
|
362
|
+
"help": "A região rolável deve ser acessível por teclado"
|
363
|
+
},
|
364
|
+
"select-name": {
|
365
|
+
"description": "Garantir que o elemento 'select' tenha um nome acessível",
|
366
|
+
"help": "O elemento 'select' deve ter um nome acessível"
|
367
|
+
},
|
368
|
+
"server-side-image-map": {
|
369
|
+
"description": "Garantir que os mapas de imagem do lado do servidor não sejam usados",
|
370
|
+
"help": "Os mapas de imagem do lado do servidor não devem ser usados"
|
371
|
+
},
|
372
|
+
"skip-link": {
|
373
|
+
"description": "Garantir que todos os links de salto tenham um destino focável",
|
374
|
+
"help": "O destino do link de salto deve existir e ser focável"
|
375
|
+
},
|
376
|
+
"summary-name": {
|
377
|
+
"description": "Garantir que os elementos 'summary' tenham texto discernível",
|
378
|
+
"help": "Os elementos 'summary' devem ter texto discernível"
|
379
|
+
},
|
380
|
+
"svg-img-alt": {
|
381
|
+
"description": "Garantir que os elementos <svg> com uma função 'img', 'graphics-document' ou 'graphics-symbol' tenham um texto acessível",
|
382
|
+
"help": "Os elementos <svg> com a função 'img' devem ter um texto alternativo"
|
383
|
+
},
|
384
|
+
"tabindex": {
|
385
|
+
"description": "Garantir que os valores do atributo 'tabindex' não sejam superiores a 0",
|
386
|
+
"help": "Os elementos não devem ter 'tabindex' superior a zero"
|
387
|
+
},
|
388
|
+
"table-duplicate-name": {
|
389
|
+
"description": "Garantir que o elemento <caption> não contenha o mesmo texto que o atributo 'summary'",
|
390
|
+
"help": "As tabelas não devem ter o mesmo 'summary' e <caption>"
|
391
|
+
},
|
392
|
+
"table-fake-caption": {
|
393
|
+
"description": "Garantir que as tabelas com caption utilizem o elemento <caption>.",
|
394
|
+
"help": "Não se devem usar células de dados ou de cabeçalho para dar caption a uma tabela de dados."
|
395
|
+
},
|
396
|
+
"target-size": {
|
397
|
+
"description": "Garantir que os alvos tácteis tenham tamanho e espaço suficientes",
|
398
|
+
"help": "Todos os alvos tácteis devem ter 24px de dimensão ou deixar espaço suficiente"
|
399
|
+
},
|
400
|
+
"td-has-header": {
|
401
|
+
"description": "Garantir que cada célula de dados não vazia numa tabela maior do que 3x3 tenha um ou mais cabeçalhos",
|
402
|
+
"help": "Os elementos <td> não vazios em tabelas maiores devem ter um cabeçalho associado"
|
403
|
+
},
|
404
|
+
"td-headers-attr": {
|
405
|
+
"description": "Garantir que cada célula numa tabela que usa o atributo 'headers' se refira apenas a outras células nessa tabela",
|
406
|
+
"help": "As células de tabela que usam o atributo 'headers' devem referir-se apenas a células na mesma tabela"
|
407
|
+
},
|
408
|
+
"th-has-data-cells": {
|
409
|
+
"description": "Garantir que os elementos <th> e os elementos com 'role=columnheader/rowheader' tenham células de dados que descrevem",
|
410
|
+
"help": "Os cabeçalhos de tabela numa tabela de dados devem referir-se às células de dados"
|
411
|
+
},
|
412
|
+
"valid-lang": {
|
413
|
+
"description": "Garantir que os atributos 'lang' tenham valores válidos",
|
414
|
+
"help": "O atributo 'lang' deve ter um valor válido"
|
415
|
+
},
|
416
|
+
"video-caption": {
|
417
|
+
"description": "Garantir que os elementos <video> tenham legendas",
|
418
|
+
"help": "Os elementos <video> devem ter legendas"
|
419
|
+
}
|
420
|
+
},
|
421
|
+
"checks": {
|
422
|
+
"abstractrole": {
|
423
|
+
"pass": "Funções abstratas não são utilizadas",
|
424
|
+
"fail": {
|
425
|
+
"singular": "A função abstrata não pode ser usada diretamente: ${data.values}",
|
426
|
+
"plural": "As funções abstratas não podem ser usadas diretamente: ${data.values}"
|
427
|
+
}
|
428
|
+
},
|
429
|
+
"aria-allowed-attr": {
|
430
|
+
"pass": "Os atributos ARIA são usados corretamente para a função definida",
|
431
|
+
"fail": {
|
432
|
+
"singular": "Atributo ARIA não é permitido: ${data.values}",
|
433
|
+
"plural": "Atributos ARIA não são permitidos: ${data.values}"
|
434
|
+
},
|
435
|
+
"incomplete": "Verifique se não há problemas se o atributo ARIA for ignorado neste elemento: ${data.values}"
|
436
|
+
},
|
437
|
+
"aria-allowed-role": {
|
438
|
+
"pass": "A função ARIA é permitida para o elemento",
|
439
|
+
"fail": {
|
440
|
+
"singular": "A função ARIA ${data.values} não é permitida para o elemento",
|
441
|
+
"plural": "As funções ARIA ${data.values} não são permitidas para o elemento"
|
442
|
+
},
|
443
|
+
"incomplete": {
|
444
|
+
"singular": "A função ARIA ${data.values} deve ser removida quando o elemento se tornar visível, pois não é permitida para o elemento",
|
445
|
+
"plural": "As funções ARIA ${data.values} devem ser removidas quando o elemento se tornar visível, pois não são permitidas para o elemento"
|
446
|
+
}
|
447
|
+
},
|
448
|
+
"aria-busy": {
|
449
|
+
"pass": "O elemento tem o atributo 'aria-busy'",
|
450
|
+
"fail": "O elemento utiliza 'aria-busy=\"true\"' enquanto mostra um carregador"
|
451
|
+
},
|
452
|
+
"aria-conditional-attr": {
|
453
|
+
"pass": "O atributo ARIA é permitido",
|
454
|
+
"fail": {
|
455
|
+
"checkbox": "Remova aria-checked, ou defina-o como '\"${data.checkState}\"' para corresponder ao estado real da caixa de seleção",
|
456
|
+
"rowSingular": "Este atributo é suportado em linhas de 'treegrid', mas não em ${data.ownerRole}: ${data.invalidAttrs}",
|
457
|
+
"rowPlural": "Estes atributos são suportados em linhas de 'treegrid', mas não em ${data.ownerRole}: ${data.invalidAttrs}"
|
458
|
+
}
|
459
|
+
},
|
460
|
+
"aria-errormessage": {
|
461
|
+
"pass": "'aria-errormessage' existe e referencia elementos visíveis para leitores de ecrã que utilizam uma técnica suportada de 'aria-errormessage'",
|
462
|
+
"fail": {
|
463
|
+
"singular": "O valor de 'aria-errormessage' `${data.values}` deve utilizar uma técnica para anunciar a mensagem (por exemplo, aria-live, aria-describedby, role=alert, etc.)",
|
464
|
+
"plural": "Os valores de 'aria-errormessage' `${data.values}` devem utilizar uma técnica para anunciar a mensagem (por exemplo, aria-live, aria-describedby, role=alert, etc.)",
|
465
|
+
"hidden": "O valor de 'aria-errormessage' `${data.values}` não pode referenciar um elemento oculto"
|
466
|
+
},
|
467
|
+
"incomplete": {
|
468
|
+
"singular": "Assegure que o valor de 'aria-errormessage' `${data.values}` referencia um elemento existente",
|
469
|
+
"plural": "Assegure que os valores de 'aria-errormessage' `${data.values}` referenciem elementos existentes",
|
470
|
+
"idrefs": "Não foi possível determinar se o elemento 'aria-errormessage' existe na página: ${data.values}"
|
471
|
+
}
|
472
|
+
},
|
473
|
+
"aria-hidden-body": {
|
474
|
+
"pass": "Não há nenhum atributo 'aria-hidden' no corpo do documento",
|
475
|
+
"fail": "'aria-hidden=true' não deve estar presente no corpo do documento"
|
476
|
+
},
|
477
|
+
"aria-level": {
|
478
|
+
"pass": "Os valores de 'aria-level' são válidos",
|
479
|
+
"incomplete": "Valores de 'aria-level' superiores a 6 não são suportados em todas as combinações de leitores de ecrã e navegadores"
|
480
|
+
},
|
481
|
+
"aria-prohibited-attr": {
|
482
|
+
"pass": "O atributo ARIA é permitido",
|
483
|
+
"fail": {
|
484
|
+
"hasRolePlural": "Os atributos ${data.prohibited} não podem ser usados com a função '\"${data.role}\"'.",
|
485
|
+
"hasRoleSingular": "O atributo ${data.prohibited} não pode ser usado com a função '\"${data.role}\"'.",
|
486
|
+
"noRolePlural": "Os atributos ${data.prohibited} não podem ser usados num ${data.nodeName} sem um atributo 'role' válido.",
|
487
|
+
"noRoleSingular": "O atributo ${data.prohibited} não pode ser usado num ${data.nodeName} sem um atributo 'role' válido."
|
488
|
+
},
|
489
|
+
"incomplete": {
|
490
|
+
"hasRoleSingular": "O atributo ${data.prohibited} não é bem suportado com a função '\"${data.role}\"'.",
|
491
|
+
"hasRolePlural": "Os atributos ${data.prohibited} não são bem suportados com a função '\"${data.role}\"'.",
|
492
|
+
"noRoleSingular": "O atributo ${data.prohibited} não é bem suportado num ${data.nodeName} sem um atributo 'role' válido.",
|
493
|
+
"noRolePlural": "Os atributos ${data.prohibited} não são bem suportados num ${data.nodeName} sem um atributo 'role' válido."
|
494
|
+
}
|
495
|
+
},
|
496
|
+
"aria-required-attr": {
|
497
|
+
"pass": "Todos os atributos ARIA obrigatórios estão presentes",
|
498
|
+
"fail": {
|
499
|
+
"singular": "Atributo ARIA obrigatório não está presente: ${data.values}",
|
500
|
+
"plural": "Atributos ARIA obrigatórios não estão presentes: ${data.values}"
|
501
|
+
}
|
502
|
+
},
|
503
|
+
"aria-required-children": {
|
504
|
+
"pass": {
|
505
|
+
"default": "Os elementos filhos ARIA obrigatórios estão presentes",
|
506
|
+
"aria-busy": "O elemento tem o atributo 'aria-busy', pelo que é permitido omitir os elementos filhos obrigatórios"
|
507
|
+
},
|
508
|
+
"fail": {
|
509
|
+
"singular": "A função ARIA de filho obrigatório não está presente: ${data.values}",
|
510
|
+
"plural": "A função ARIA de filhos obrigatórios não está presente: ${data.values}",
|
511
|
+
"unallowed": "O elemento tem filhos que não são permitidos: ${data.values}"
|
512
|
+
},
|
513
|
+
"incomplete": {
|
514
|
+
"singular": "Espera-se que seja adicionada a função ARIA de filho: ${data.values}",
|
515
|
+
"plural": "Espera-se que sejam adicionadas as funções ARIA de filhos: ${data.values}"
|
516
|
+
}
|
517
|
+
},
|
518
|
+
"aria-required-parent": {
|
519
|
+
"pass": "A função ARIA parental obrigatória está presente",
|
520
|
+
"fail": {
|
521
|
+
"singular": "A função ARIA parental obrigatória não está presente: ${data.values}",
|
522
|
+
"plural": "As funções ARIA parentais obrigatórias não estão presentes: ${data.values}"
|
523
|
+
}
|
524
|
+
},
|
525
|
+
"aria-roledescription": {
|
526
|
+
"pass": "'aria-roledescription' é utilizado numa função semântica suportada",
|
527
|
+
"incomplete": "Verifique se o 'aria-roledescription' é anunciado por leitores de ecrã suportados",
|
528
|
+
"fail": "Atribua ao elemento uma função que suporte 'aria-roledescription'"
|
529
|
+
},
|
530
|
+
"aria-unsupported-attr": {
|
531
|
+
"pass": "O atributo ARIA é suportado",
|
532
|
+
"fail": "O atributo ARIA não é amplamente suportado em leitores de ecrã e tecnologias assistivas: ${data.values}"
|
533
|
+
},
|
534
|
+
"aria-valid-attr-value": {
|
535
|
+
"pass": "Os valores dos atributos ARIA são válidos",
|
536
|
+
"fail": {
|
537
|
+
"singular": "Valor de atributo ARIA inválido: ${data.values}",
|
538
|
+
"plural": "Valores de atributo ARIA inválidos: ${data.values}"
|
539
|
+
},
|
540
|
+
"incomplete": {
|
541
|
+
"noId": "O ID do elemento do atributo ARIA não existe na página: ${data.needsReview}",
|
542
|
+
"noIdShadow": "O ID do elemento do atributo ARIA não existe na página ou é descendente de uma shadow DOM tree diferente: ${data.needsReview}",
|
543
|
+
"ariaCurrent": "O valor do atributo ARIA é inválido e será tratado como '\"aria-current=true\"': ${data.needsReview}",
|
544
|
+
"idrefs": "Não foi possível determinar se o ID do elemento do atributo ARIA existe na página: ${data.needsReview}",
|
545
|
+
"empty": "O valor do atributo ARIA é ignorado quando está vazio: ${data.needsReview}",
|
546
|
+
"controlsWithinPopup": "Não foi possível determinar se o ID referenciado por 'aria-controls existe' na página enquanto se utiliza 'aria-haspopup': ${data.needsReview}"
|
547
|
+
}
|
548
|
+
},
|
549
|
+
"aria-valid-attr": {
|
550
|
+
"pass": "O nome do atributo ARIA é válido",
|
551
|
+
"fail": {
|
552
|
+
"singular": "Nome de atributo ARIA inválido: ${data.values}",
|
553
|
+
"plural": "Nomes de atributos ARIA inválidos: ${data.values}"
|
554
|
+
}
|
555
|
+
},
|
556
|
+
"braille-label-equivalent": {
|
557
|
+
"pass": "'aria-braillelabel' é utilizado num elemento com texto acessível",
|
558
|
+
"fail": "'aria-braillelabel' é utilizado num elemento sem texto acessível",
|
559
|
+
"incomplete": "Não foi possível calcular o texto acessível"
|
560
|
+
},
|
561
|
+
"braille-roledescription-equivalent": {
|
562
|
+
"pass": "'aria-brailleroledescription' é utilizado num elemento com aria-roledescription",
|
563
|
+
"fail": {
|
564
|
+
"noRoleDescription": "'aria-brailleroledescription' é utilizado num elemento sem 'aria-roledescription'",
|
565
|
+
"emptyRoleDescription": "'aria-brailleroledescription' é utilizado num elemento com 'aria-roledescription' vazio"
|
566
|
+
}
|
567
|
+
},
|
568
|
+
"deprecatedrole": {
|
569
|
+
"pass": "A função ARIA não está obsoleta",
|
570
|
+
"fail": "A função utilizada está obsoleta: ${data}"
|
571
|
+
},
|
572
|
+
"fallbackrole": {
|
573
|
+
"pass": "Foi utilizado apenas um valor de 'role'",
|
574
|
+
"fail": "Utilize apenas um valor de 'role', pois as funções de 'fallback' não são suportadas em navegadores mais antigos",
|
575
|
+
"incomplete": "Utilize apenas o role 'presentation' ou 'none', pois são sinónimos."
|
576
|
+
},
|
577
|
+
"has-global-aria-attribute": {
|
578
|
+
"pass": {
|
579
|
+
"singular": "O elemento tem o atributo ARIA global: ${data.values}",
|
580
|
+
"plural": "O elemento tem os atributos ARIA globais: ${data.values}"
|
581
|
+
},
|
582
|
+
"fail": "O elemento não tem atributo ARIA global"
|
583
|
+
},
|
584
|
+
"has-widget-role": {
|
585
|
+
"pass": "O elemento tem uma função de 'widget'.",
|
586
|
+
"fail": "O elemento não tem uma função de 'widget'."
|
587
|
+
},
|
588
|
+
"invalidrole": {
|
589
|
+
"pass": "A função ARIA é válida",
|
590
|
+
"fail": {
|
591
|
+
"singular": "A função deve ser uma das funções ARIA válidas: ${data.values}",
|
592
|
+
"plural": "As funções devem ser uma das funções ARIA válidas: ${data.values}"
|
593
|
+
}
|
594
|
+
},
|
595
|
+
"is-element-focusable": {
|
596
|
+
"pass": "O elemento é focável.",
|
597
|
+
"fail": "O elemento não é focável."
|
598
|
+
},
|
599
|
+
"no-implicit-explicit-label": {
|
600
|
+
"pass": "Não há discrepância entre uma <label> e o nome acessível",
|
601
|
+
"incomplete": "Verifique se a <label> não precisa fazer parte do nome do campo ARIA ${data}"
|
602
|
+
},
|
603
|
+
"unsupportedrole": {
|
604
|
+
"pass": "A função ARIA é suportada",
|
605
|
+
"fail": "A função utilizada não é amplamente suportada em leitores de ecrã e tecnologias assistivas: ${data}"
|
606
|
+
},
|
607
|
+
"valid-scrollable-semantics": {
|
608
|
+
"pass": "O elemento tem semântica válida para um elemento na ordem de foco.",
|
609
|
+
"fail": "O elemento tem semântica inválida para um elemento na ordem de foco."
|
610
|
+
},
|
611
|
+
"color-contrast-enhanced": {
|
612
|
+
"pass": "O elemento tem um contraste de cor suficiente de ${data.contrastRatio}",
|
613
|
+
"fail": {
|
614
|
+
"default": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} (cor de primeiro plano: ${data.fgColor}, cor de fundo: ${data.bgColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}",
|
615
|
+
"fgOnShadowColor": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} entre a cor de primeiro plano e a cor da sombra (cor de primeiro plano: ${data.fgColor}, cor do text-shadow: ${data.shadowColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}",
|
616
|
+
"shadowOnBgColor": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} entre a cor da sombra e a cor de fundo (cor do text-shadow: ${data.shadowColor}, cor de fundo: ${data.bgColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}"
|
617
|
+
},
|
618
|
+
"incomplete": {
|
619
|
+
"default": "Não foi possível determinar a razão de contraste",
|
620
|
+
"bgImage": "A cor de fundo do elemento não pôde ser determinada devido a uma imagem de fundo",
|
621
|
+
"bgGradient": "A cor de fundo do elemento não pôde ser determinada devido a um gradiente de fundo",
|
622
|
+
"imgNode": "A cor de fundo do elemento não pôde ser determinada porque o elemento contém um nó de imagem",
|
623
|
+
"bgOverlap": "A cor de fundo do elemento não pôde ser determinada porque está sobreposto por outro elemento",
|
624
|
+
"fgAlpha": "A cor de primeiro plano do elemento não pôde ser determinada devido à transparência alfa",
|
625
|
+
"elmPartiallyObscured": "A cor de fundo do elemento não pôde ser determinada porque está parcialmente encoberta por outro elemento",
|
626
|
+
"elmPartiallyObscuring": "A cor de fundo do elemento não pôde ser determinada porque se sobrepõe parcialmente a outros elementos",
|
627
|
+
"outsideViewport": "A cor de fundo do elemento não pôde ser determinada porque está fora da área visível",
|
628
|
+
"equalRatio": "O elemento tem uma razão de contraste 1:1 com o fundo",
|
629
|
+
"shortTextContent": "O conteúdo do elemento é demasiado curto para determinar se é realmente conteúdo textual",
|
630
|
+
"nonBmp": "O conteúdo do elemento contém apenas caracteres não textuais",
|
631
|
+
"pseudoContent": "A cor de fundo do elemento não pôde ser determinada devido a um pseudo-elemento"
|
632
|
+
}
|
633
|
+
},
|
634
|
+
"color-contrast": {
|
635
|
+
"pass": {
|
636
|
+
"default": "O elemento tem um contraste de cor suficiente de ${data.contrastRatio}",
|
637
|
+
"hidden": "O elemento está oculto"
|
638
|
+
},
|
639
|
+
"fail": {
|
640
|
+
"default": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} (cor de primeiro plano: ${data.fgColor}, cor de fundo: ${data.bgColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}",
|
641
|
+
"fgOnShadowColor": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} entre a cor de primeiro plano e a cor da sombra (cor de primeiro plano: ${data.fgColor}, cor do text-shadow: ${data.shadowColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}",
|
642
|
+
"shadowOnBgColor": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} entre a cor da sombra e a cor de fundo (cor do text-shadow: ${data.shadowColor}, cor de fundo: ${data.bgColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}"
|
643
|
+
},
|
644
|
+
"incomplete": {
|
645
|
+
"default": "Não foi possível determinar a razão de contraste",
|
646
|
+
"bgImage": "A cor de fundo do elemento não pôde ser determinada devido a uma imagem de fundo",
|
647
|
+
"bgGradient": "A cor de fundo do elemento não pôde ser determinada devido a um gradiente de fundo",
|
648
|
+
"imgNode": "A cor de fundo do elemento não pôde ser determinada porque o elemento contém um nó de imagem",
|
649
|
+
"bgOverlap": "A cor de fundo do elemento não pôde ser determinada porque está sobreposto por outro elemento",
|
650
|
+
"complexTextShadows": "Não foi possível determinar o contraste do elemento porque utiliza sombras de texto complexas",
|
651
|
+
"fgAlpha": "A cor de primeiro plano do elemento não pôde ser determinada devido à transparência alfa",
|
652
|
+
"elmPartiallyObscured": "A cor de fundo do elemento não pôde ser determinada porque está parcialmente encoberta por outro elemento",
|
653
|
+
"elmPartiallyObscuring": "A cor de fundo do elemento não pôde ser determinada porque se sobrepõe parcialmente a outros elementos",
|
654
|
+
"outsideViewport": "A cor de fundo do elemento não pôde ser determinada porque está fora da área visível",
|
655
|
+
"equalRatio": "O elemento tem uma razão de contraste 1:1 com o fundo",
|
656
|
+
"shortTextContent": "O conteúdo do elemento é demasiado curto para determinar se é realmente texto",
|
657
|
+
"nonBmp": "O conteúdo do elemento contém apenas caracteres não textuais",
|
658
|
+
"pseudoContent": "A cor de fundo do elemento não pôde ser determinada devido a um pseudo-elemento"
|
659
|
+
}
|
660
|
+
},
|
661
|
+
"link-in-text-block-style": {
|
662
|
+
"pass": "Os links podem ser distinguidos do texto circundante através de estilos visuais",
|
663
|
+
"incomplete": {
|
664
|
+
"default": "Verifique se o link necessita de estilos para se distinguir do texto próximo",
|
665
|
+
"pseudoContent": "Verifique se o pseudo-estilo do link é suficiente para o distinguir do texto circundante"
|
666
|
+
},
|
667
|
+
"fail": "O link não tem estilos (como sublinhado) para se distinguir do texto circundante"
|
668
|
+
},
|
669
|
+
"link-in-text-block": {
|
670
|
+
"pass": "Os links podem ser distinguidos do texto circundante de alguma forma que não seja pela cor",
|
671
|
+
"fail": {
|
672
|
+
"fgContrast": "O link tem um contraste de cor insuficiente de ${data.contrastRatio}:1 com o texto circundante. (O contraste mínimo é ${data.requiredContrastRatio}:1, cor do link: ${data.nodeColor}, cor do texto circundante: ${data.parentColor})",
|
673
|
+
"bgContrast": "O fundo do link tem um contraste de cor insuficiente de ${data.contrastRatio} (o contraste mínimo é ${data.requiredContrastRatio}:1, cor de fundo do link: ${data.nodeBackgroundColor}, cor de fundo circundante: ${data.parentBackgroundColor})"
|
674
|
+
},
|
675
|
+
"incomplete": {
|
676
|
+
"default": "Não foi possível determinar a razão de contraste do primeiro plano do elemento",
|
677
|
+
"bgContrast": "Não foi possível determinar a razão de contraste do fundo do elemento",
|
678
|
+
"bgImage": "Não foi possível determinar a razão de contraste do elemento devido a uma imagem de fundo",
|
679
|
+
"bgGradient": "Não foi possível determinar a razão de contraste do elemento devido a um gradiente de fundo",
|
680
|
+
"imgNode": "Não foi possível determinar a razão de contraste do elemento porque contém um nó de imagem",
|
681
|
+
"bgOverlap": "Não foi possível determinar a razão de contraste do elemento devido à sobreposição de elementos"
|
682
|
+
}
|
683
|
+
},
|
684
|
+
"autocomplete-appropriate": {
|
685
|
+
"pass": "O valor de 'autocomplete' está num elemento apropriado",
|
686
|
+
"fail": "O valor de 'autocomplete' é inapropriado para este tipo de entrada"
|
687
|
+
},
|
688
|
+
"autocomplete-valid": {
|
689
|
+
"pass": "o atributo 'autocomplete' está formatado corretamente",
|
690
|
+
"fail": "o atributo 'autocomplete' está formatado incorretamente",
|
691
|
+
"incomplete": "o atributo 'autocomplete' tem um valor não padrão. Verifique se poderia ser utilizado algum valor padrão."
|
692
|
+
},
|
693
|
+
"accesskeys": {
|
694
|
+
"pass": "O valor do atributo 'accesskey' é único",
|
695
|
+
"fail": "O documento tem múltiplos elementos com o mesmo 'accesskey'"
|
696
|
+
},
|
697
|
+
"focusable-content": {
|
698
|
+
"pass": "O elemento contém elementos focáveis",
|
699
|
+
"fail": "O elemento deveria ter conteúdo focável"
|
700
|
+
},
|
701
|
+
"focusable-disabled": {
|
702
|
+
"pass": "Não há elementos focáveis contidos no elemento",
|
703
|
+
"incomplete": "Verifique se os elementos focáveis movem imediatamente o indicador de foco",
|
704
|
+
"fail": "O conteúdo focável deve ser desativado ou removido do DOM"
|
705
|
+
},
|
706
|
+
"focusable-element": {
|
707
|
+
"pass": "O elemento é focável",
|
708
|
+
"fail": "O elemento deveria ser focável"
|
709
|
+
},
|
710
|
+
"focusable-modal-open": {
|
711
|
+
"pass": "Não há elementos focáveis enquanto um modal está aberto",
|
712
|
+
"incomplete": "Verifique se os elementos focáveis não são tabuláveis no estado atual"
|
713
|
+
},
|
714
|
+
"focusable-no-name": {
|
715
|
+
"pass": "O elemento não está na ordem de tabulação ou tem texto acessível",
|
716
|
+
"fail": "O elemento está na ordem de tabulação e não tem texto acessível",
|
717
|
+
"incomplete": "Não foi possível determinar se o elemento tem um nome acessível"
|
718
|
+
},
|
719
|
+
"focusable-not-tabbable": {
|
720
|
+
"pass": "Não há elementos focáveis contidos no elemento",
|
721
|
+
"incomplete": "Verifique se os elementos focáveis movem imediatamente o indicador de foco",
|
722
|
+
"fail": "O conteúdo focável deve ter 'tabindex=\"-1\"' ou ser removido do DOM"
|
723
|
+
},
|
724
|
+
"frame-focusable-content": {
|
725
|
+
"pass": "O elemento não tem descendentes focáveis",
|
726
|
+
"fail": "O elemento tem descendentes focáveis",
|
727
|
+
"incomplete": "Não foi possível determinar se o elemento tem descendentes"
|
728
|
+
},
|
729
|
+
"landmark-is-top-level": {
|
730
|
+
"pass": "O marco ${data.role} está no nível principal.",
|
731
|
+
"fail": "O marco ${data.role} está contido noutro marco."
|
732
|
+
},
|
733
|
+
"no-focusable-content": {
|
734
|
+
"pass": "O elemento não tem descendentes focáveis",
|
735
|
+
"fail": {
|
736
|
+
"default": "O elemento tem descendentes focáveis",
|
737
|
+
"notHidden": "Utilizar um tabindex negativo num elemento dentro de um controlo interativo não impede que as tecnologias assistivas foquem o elemento (mesmo com aria-hidden=\"true\")"
|
738
|
+
},
|
739
|
+
"incomplete": "Não foi possível determinar se o elemento tem descendentes"
|
740
|
+
},
|
741
|
+
"page-has-heading-one": {
|
742
|
+
"pass": "A página tem pelo menos um cabeçalho de nível 1",
|
743
|
+
"fail": "A página deve ter um cabeçalho de nível 1"
|
744
|
+
},
|
745
|
+
"page-has-main": {
|
746
|
+
"pass": "O documento tem pelo menos um marco 'main'",
|
747
|
+
"fail": "O documento não tem um marco 'main'"
|
748
|
+
},
|
749
|
+
"page-no-duplicate-banner": {
|
750
|
+
"pass": "O documento não tem mais do que um marco de 'banner'",
|
751
|
+
"fail": "O documento tem mais do que um marco de 'banner'"
|
752
|
+
},
|
753
|
+
"page-no-duplicate-contentinfo": {
|
754
|
+
"pass": "O documento não tem mais do que um marco 'contentinfo'",
|
755
|
+
"fail": "O documento tem mais do que um marco 'contentinfo'"
|
756
|
+
},
|
757
|
+
"page-no-duplicate-main": {
|
758
|
+
"pass": "O documento não tem mais do que um marco 'main'",
|
759
|
+
"fail": "O documento tem mais do que um marco 'main'"
|
760
|
+
},
|
761
|
+
"tabindex": {
|
762
|
+
"pass": "O elemento não tem um 'tabindex' superior a 0",
|
763
|
+
"fail": "O elemento tem um 'tabindex' superior a 0"
|
764
|
+
},
|
765
|
+
"alt-space-value": {
|
766
|
+
"pass": "O elemento tem um valor válido para o atributo 'alt'",
|
767
|
+
"fail": "O elemento tem um atributo 'alt' que contém apenas um espaço, o qual não é ignorado por todos os leitores de ecrã"
|
768
|
+
},
|
769
|
+
"duplicate-img-label": {
|
770
|
+
"pass": "O elemento não duplica o texto existente no atributo 'alt' da <img>",
|
771
|
+
"fail": "O elemento contém uma <img> com texto 'alt' que duplica texto existente"
|
772
|
+
},
|
773
|
+
"explicit-label": {
|
774
|
+
"pass": "O elemento tem uma <label> explícita",
|
775
|
+
"fail": "O elemento não tem uma <label> explícita",
|
776
|
+
"incomplete": "Não foi possível determinar se o elemento de formulário tem uma <label> explícita"
|
777
|
+
},
|
778
|
+
"help-same-as-label": {
|
779
|
+
"pass": "O texto de ajuda (title ou aria-describedby) não duplica o texto da etiqueta",
|
780
|
+
"fail": "O texto de ajuda (title ou aria-describedby) é igual ao texto da etiqueta"
|
781
|
+
},
|
782
|
+
"hidden-explicit-label": {
|
783
|
+
"pass": "O elemento de formulário tem uma <label> explícita visível",
|
784
|
+
"fail": "O elemento de formulário tem uma <label> explícita que está oculta",
|
785
|
+
"incomplete": "Não foi possível determinar se o elemento de formulário tem uma <label> explícita oculta"
|
786
|
+
},
|
787
|
+
"implicit-label": {
|
788
|
+
"pass": "O elemento tem uma <label> implícita (envolvida)",
|
789
|
+
"fail": "O elemento não tem uma <label> implícita (envolvida)",
|
790
|
+
"incomplete": "Não foi possível determinar se o elemento de formulário tem uma <label> implícita (envolvida)"
|
791
|
+
},
|
792
|
+
"label-content-name-mismatch": {
|
793
|
+
"pass": "O elemento contém texto visível como parte do seu nome acessível",
|
794
|
+
"fail": "O texto dentro do elemento não está incluído no nome acessível"
|
795
|
+
},
|
796
|
+
"multiple-label": {
|
797
|
+
"pass": "O campo de formulário não tem múltiplos <label>",
|
798
|
+
"incomplete": "Múltiplos <label> não são amplamente suportadas em tecnologias assistivas. Assegure que a primeira etiqueta contém toda a informação necessária."
|
799
|
+
},
|
800
|
+
"title-only": {
|
801
|
+
"pass": "O elemento de formulário não utiliza apenas o atributo 'title' para a sua etiqueta",
|
802
|
+
"fail": "Apenas o 'title' é usado para gerar a etiqueta do elemento de formulário"
|
803
|
+
},
|
804
|
+
"landmark-is-unique": {
|
805
|
+
"pass": "Os marcos devem ter uma combinação única de 'role' ou 'role'/'label'/'title' (ou seja, nome acessível)",
|
806
|
+
"fail": "O marco deve ter um 'aria-label', 'aria-labelledby' ou 'title' únicos para torná-lo distinguível"
|
807
|
+
},
|
808
|
+
"has-lang": {
|
809
|
+
"pass": "O elemento <html> tem um atributo 'lang'",
|
810
|
+
"fail": {
|
811
|
+
"noXHTML": "O atributo 'xml:lang' não é válido em páginas HTML, use o atributo 'lang'.",
|
812
|
+
"noLang": "O elemento <html> não tem um atributo 'lang'"
|
813
|
+
}
|
814
|
+
},
|
815
|
+
"valid-lang": {
|
816
|
+
"pass": "O valor do atributo 'lang' está incluído na lista de línguas válidas",
|
817
|
+
"fail": "O valor do atributo 'lang' não está incluído na lista de línguas válidas"
|
818
|
+
},
|
819
|
+
"xml-lang-mismatch": {
|
820
|
+
"pass": "Os atributos 'lang' e 'xml:lang' têm a mesma língua base",
|
821
|
+
"fail": "Os atributos 'lang' e 'xml:lang' não têm a mesma língua base"
|
822
|
+
},
|
823
|
+
"dlitem": {
|
824
|
+
"pass": "O item de lista de descrições tem um elemento pai <dl>",
|
825
|
+
"fail": "O item de lista de descrições não tem um elemento pai <dl>"
|
826
|
+
},
|
827
|
+
"listitem": {
|
828
|
+
"pass": "O item de lista tem um elemento pai <ul>, <ol> ou 'role=\"list\"'",
|
829
|
+
"fail": {
|
830
|
+
"default": "O item de lista não tem um elemento pai <ul> ou <ol>",
|
831
|
+
"roleNotValid": "O elemento pai do item de lista tem uma role que não é 'role=\"list\"'"
|
832
|
+
}
|
833
|
+
},
|
834
|
+
"only-dlitems": {
|
835
|
+
"pass": "O elemento <dl> tem apenas filhos diretos permitidos: <dt>, <dd> ou <div>",
|
836
|
+
"fail": "O elemento <dl> tem filhos diretos não permitidos: ${data.values}"
|
837
|
+
},
|
838
|
+
"only-listitems": {
|
839
|
+
"pass": "O elemento de lista tem apenas filhos diretos permitidos, que devem ser <li>",
|
840
|
+
"fail": "O elemento de lista tem filhos diretos não permitidos: ${data.values}"
|
841
|
+
},
|
842
|
+
"structured-dlitems": {
|
843
|
+
"pass": "Quando não está vazio, o elemento tem tanto <dt> como <dd>",
|
844
|
+
"fail": "Quando não está vazio, o elemento não tem pelo menos um elemento <dt> seguido de pelo menos um <dd>"
|
845
|
+
},
|
846
|
+
"caption": {
|
847
|
+
"pass": "O elemento multimédia tem uma pista de legendas",
|
848
|
+
"incomplete": "Verifique se as legendas estão disponíveis para o elemento"
|
849
|
+
},
|
850
|
+
"frame-tested": {
|
851
|
+
"pass": "O 'iframe' foi testado com axe-core",
|
852
|
+
"fail": "O 'iframe' não pôde ser testado com axe-core",
|
853
|
+
"incomplete": "O 'iframe' ainda tem de ser testado com axe-core"
|
854
|
+
},
|
855
|
+
"no-autoplay-audio": {
|
856
|
+
"pass": "<video> ou <audio> não reproduzem áudio por mais do que a duração permitida ou têm um mecanismo de controlo",
|
857
|
+
"fail": "<video> ou <audio> reproduzem áudio por mais do que a duração permitida e não têm um mecanismo de controlo",
|
858
|
+
"incomplete": "Verifique se o <video> ou <audio> não reproduzem áudio por mais do que a duração permitida ou fornecem um mecanismo de controlo"
|
859
|
+
},
|
860
|
+
"css-orientation-lock": {
|
861
|
+
"pass": "O ecrã é operativo, e não existe bloqueio de orientação",
|
862
|
+
"fail": "O bloqueio de orientação CSS está aplicado e torna o ecrã inoperável",
|
863
|
+
"incomplete": "Não é possível determinar o bloqueio de orientação CSS"
|
864
|
+
},
|
865
|
+
"meta-viewport-large": {
|
866
|
+
"pass": "A tag <meta> não impede uma ampliação significativa em dispositivos móveis",
|
867
|
+
"fail": "A tag <meta> limita a ampliação em dispositivos móveis"
|
868
|
+
},
|
869
|
+
"meta-viewport": {
|
870
|
+
"pass": "A tag <meta> não desativa a ampliação em dispositivos móveis",
|
871
|
+
"fail": "${data} na tag <meta> desativa a ampliação em dispositivos móveis"
|
872
|
+
},
|
873
|
+
"target-offset": {
|
874
|
+
"pass": {
|
875
|
+
"default": "O alvo tem espaço suficiente dos seus vizinhos mais próximos. O espaço clicável seguro tem um diâmetro de ${data.closestOffset}px, que é, no mínimo, ${data.minOffset}px.",
|
876
|
+
"large": "O alvo excede largamente o tamanho mínimo de ${data.minOffset}px."
|
877
|
+
},
|
878
|
+
"fail": "O alvo tem espaço insuficiente em relação aos vizinhos mais próximos. O espaço clicável seguro tem um diâmetro de ${data.closestOffset}px, em vez de, pelo menos, ${data.minOffset}px.",
|
879
|
+
"incomplete": {
|
880
|
+
"default": "O elemento com tabindex negativo tem espaço insuficiente em relação aos seus vizinhos mais próximos. O espaço clicável seguro tem um diâmetro de ${data.closestOffset}px, em vez de, pelo menos, ${data.minOffset}px. É este um alvo?",
|
881
|
+
"nonTabbableNeighbor": "O alvo tem espaço insuficiente em relação aos seus vizinhos mais próximos. O espaço clicável seguro tem um diâmetro de ${data.closestOffset}px, em vez de, pelo menos, ${data.minOffset}px. Será que o vizinho é um alvo?",
|
882
|
+
"tooManyRects": "Não foi possível obter o tamanho do alvo porque há elementos sobrepostos em excesso"
|
883
|
+
}
|
884
|
+
},
|
885
|
+
"target-size": {
|
886
|
+
"pass": {
|
887
|
+
"default": "O controlo tem um tamanho suficiente (${data.width}px por ${data.height}px, devendo ter pelo menos ${data.minSize}px por ${data.minSize}px)",
|
888
|
+
"obscured": "O controlo é ignorado porque está totalmente encoberto e, por isso, não é clicável",
|
889
|
+
"large": "O alvo excede largamente o tamanho mínimo de ${data.minSize}px."
|
890
|
+
},
|
891
|
+
"fail": {
|
892
|
+
"default": "O alvo tem um tamanho insuficiente (${data.width}px por ${data.height}px, devendo ter pelo menos ${data.minSize}px por ${data.minSize}px)",
|
893
|
+
"partiallyObscured": "O alvo tem um tamanho insuficiente porque está parcialmente encoberto (o menor espaço é de ${data.width}px por ${data.height}px, devendo ser pelo menos ${data.minSize}px por ${data.minSize}px)"
|
894
|
+
},
|
895
|
+
"incomplete": {
|
896
|
+
"default": "O elemento com 'tabindex' negativo tem um tamanho insuficiente (${data.width}px por ${data.height}px, devendo ser pelo menos ${data.minSize}px por ${data.minSize}px). É este um alvo?",
|
897
|
+
"contentOverflow": "O tamanho do elemento não pôde ser determinado com precisão devido ao conteúdo com overflow",
|
898
|
+
"partiallyObscured": "O elemento com 'tabindex' negativo tem um tamanho insuficiente porque está parcialmente encoberto (o menor espaço é de ${data.width}px por ${data.height}px, devendo ser pelo menos ${data.minSize}px por ${data.minSize}px). É este um alvo?",
|
899
|
+
"partiallyObscuredNonTabbable": "O alvo tem um tamanho insuficiente porque está parcialmente encoberto por um vizinho com 'tabindex' negativo (o menor espaço é de ${data.width}px por ${data.height}px, devendo ser pelo menos ${data.minSize}px por ${data.minSize}px). Será que o vizinho é um alvo?",
|
900
|
+
"tooManyRects": "Não foi possível obter o tamanho do alvo porque há elementos sobrepostos em excesso"
|
901
|
+
}
|
902
|
+
},
|
903
|
+
"header-present": {
|
904
|
+
"pass": "A página tem um cabeçalho",
|
905
|
+
"fail": "A página não tem um cabeçalho"
|
906
|
+
},
|
907
|
+
"heading-order": {
|
908
|
+
"pass": "Ordem dos cabeçalhos válida",
|
909
|
+
"fail": "Ordem dos cabeçalhos inválida",
|
910
|
+
"incomplete": "Não foi possível determinar o cabeçalho anterior"
|
911
|
+
},
|
912
|
+
"identical-links-same-purpose": {
|
913
|
+
"pass": "Não existem outros links com o mesmo nome que direcionem para uma URL diferente",
|
914
|
+
"incomplete": "Verifique se os links têm o mesmo propósito ou se são intencionalmente ambíguos."
|
915
|
+
},
|
916
|
+
"internal-link-present": {
|
917
|
+
"pass": "Foi encontrado um link de salto válido",
|
918
|
+
"fail": "Não foi encontrado um link de salto válido"
|
919
|
+
},
|
920
|
+
"landmark": {
|
921
|
+
"pass": "A página tem uma região de marco",
|
922
|
+
"fail": "A página não tem uma região de marco"
|
923
|
+
},
|
924
|
+
"meta-refresh-no-exceptions": {
|
925
|
+
"pass": "A tag <meta> não atualiza imediatamente a página",
|
926
|
+
"fail": "A tag <meta> força a atualização da página com temporização"
|
927
|
+
},
|
928
|
+
"meta-refresh": {
|
929
|
+
"pass": "A tag <meta> não atualiza imediatamente a página",
|
930
|
+
"fail": "A tag <meta> força a atualização da página com temporização (inferior a 20 horas)"
|
931
|
+
},
|
932
|
+
"p-as-heading": {
|
933
|
+
"pass": "Os elementos <p> não estão estilizados como cabeçalhos",
|
934
|
+
"fail": "Deveriam ser usados elementos de cabeçalho em vez de elementos <p> estilizados",
|
935
|
+
"incomplete": "Não foi possível determinar se os elementos <p> estão estilizados como cabeçalhos"
|
936
|
+
},
|
937
|
+
"region": {
|
938
|
+
"pass": "Todo o conteúdo da página está contido em marcos",
|
939
|
+
"fail": "Algum conteúdo da página não está contido em marcos"
|
940
|
+
},
|
941
|
+
"skip-link": {
|
942
|
+
"pass": "O destino do link de salto existe",
|
943
|
+
"incomplete": "O destino do link de salto deve tornar-se visível na ativação",
|
944
|
+
"fail": "Não há destino para o link de salto"
|
945
|
+
},
|
946
|
+
"unique-frame-title": {
|
947
|
+
"pass": "O atributo 'title' do elemento é único",
|
948
|
+
"fail": "O atributo 'title' do elemento não é único"
|
949
|
+
},
|
950
|
+
"duplicate-id-active": {
|
951
|
+
"pass": "O documento não tem elementos ativos que partilhem o mesmo atributo 'id'",
|
952
|
+
"fail": "O documento tem elementos ativos com o mesmo atributo 'id': ${data}"
|
953
|
+
},
|
954
|
+
"duplicate-id-aria": {
|
955
|
+
"pass": "O documento não tem elementos referenciados com ARIA ou etiquetas que partilhem o mesmo atributo 'id'",
|
956
|
+
"fail": "O documento tem múltiplos elementos referenciados com ARIA com o mesmo atributo 'id': ${data}"
|
957
|
+
},
|
958
|
+
"duplicate-id": {
|
959
|
+
"pass": "O documento não tem elementos estáticos que partilhem o mesmo atributo 'id'",
|
960
|
+
"fail": "O documento tem múltiplos elementos estáticos com o mesmo atributo 'id': ${data}"
|
961
|
+
},
|
962
|
+
"aria-label": {
|
963
|
+
"pass": "O atributo 'aria-label' existe e não está vazio",
|
964
|
+
"fail": "O atributo 'aria-label' não existe ou está vazio"
|
965
|
+
},
|
966
|
+
"aria-labelledby": {
|
967
|
+
"pass": "O atributo 'aria-labelledby' existe e referencia elementos visíveis para leitores de ecrã",
|
968
|
+
"fail": "O atributo 'aria-labelledby' não existe, referencia elementos que não existem ou que estão vazios",
|
969
|
+
"incomplete": "Assegure que 'aria-labelledby' referencia um elemento existente"
|
970
|
+
},
|
971
|
+
"avoid-inline-spacing": {
|
972
|
+
"pass": "Não foram especificados estilos 'inline' com '!important' que afetem o espaçamento do texto",
|
973
|
+
"fail": {
|
974
|
+
"singular": "Remova '!important' do estilo 'inline' ${data.values}, pois a sua sobreposição não é suportada pela maioria dos navegadores",
|
975
|
+
"plural": "Remova '!important' dos estilos 'inline' ${data.values}, pois a sua sobreposição não é suportada pela maioria dos navegadores"
|
976
|
+
}
|
977
|
+
},
|
978
|
+
"button-has-visible-text": {
|
979
|
+
"pass": "O elemento tem texto interno que é visível para leitores de ecrã",
|
980
|
+
"fail": "O elemento não tem texto interno que seja visível para leitores de ecrã",
|
981
|
+
"incomplete": "Não foi possível determinar se o elemento tem filhos"
|
982
|
+
},
|
983
|
+
"doc-has-title": {
|
984
|
+
"pass": "O documento tem um elemento <title> não vazio",
|
985
|
+
"fail": "O documento não tem um elemento <title> não vazio"
|
986
|
+
},
|
987
|
+
"exists": {
|
988
|
+
"pass": "O elemento não existe",
|
989
|
+
"incomplete": "O elemento existe"
|
990
|
+
},
|
991
|
+
"has-alt": {
|
992
|
+
"pass": "O elemento tem um atributo 'alt'",
|
993
|
+
"fail": "O elemento não tem um atributo 'alt'"
|
994
|
+
},
|
995
|
+
"has-visible-text": {
|
996
|
+
"pass": "O elemento tem texto que é visível para leitores de ecrã",
|
997
|
+
"fail": "O elemento não tem texto que seja visível para leitores de ecrã",
|
998
|
+
"incomplete": "Não foi possível determinar se o elemento tem filhos"
|
999
|
+
},
|
1000
|
+
"important-letter-spacing": {
|
1001
|
+
"pass": "O espaçamento entre letras no atributo 'style' não está definido como !important, ou cumpre o mínimo",
|
1002
|
+
"fail": "O espaçamento entre letras no atributo 'style' não deve usar !important, ou ter ${data.minValue}em (atualmente ${data.value}em)"
|
1003
|
+
},
|
1004
|
+
"important-line-height": {
|
1005
|
+
"pass": "A altura da linha no atributo 'style' não está definida como !important, ou cumpre o mínimo",
|
1006
|
+
"fail": "A altura da linha no atributo 'style' não deve usar !important, ou ter ${data.minValue}em (atualmente ${data.value}em)"
|
1007
|
+
},
|
1008
|
+
"important-word-spacing": {
|
1009
|
+
"pass": "O espaçamento entre palavras no atributo 'style' não está definido como !important, ou cumpre o mínimo",
|
1010
|
+
"fail": "O espaçamento entre palavras no atributo 'style' não deve usar !important, ou ter ${data.minValue}em (atualmente ${data.value}em)"
|
1011
|
+
},
|
1012
|
+
"is-on-screen": {
|
1013
|
+
"pass": "O elemento não está visível",
|
1014
|
+
"fail": "O elemento está visível"
|
1015
|
+
},
|
1016
|
+
"non-empty-alt": {
|
1017
|
+
"pass": "O elemento tem um atributo 'alt' não vazio",
|
1018
|
+
"fail": {
|
1019
|
+
"noAttr": "O elemento não tem um atributo 'alt'",
|
1020
|
+
"emptyAttr": "O elemento tem um atributo 'alt' vazio"
|
1021
|
+
}
|
1022
|
+
},
|
1023
|
+
"non-empty-if-present": {
|
1024
|
+
"pass": {
|
1025
|
+
"default": "O elemento não tem um atributo 'value'",
|
1026
|
+
"has-label": "O elemento tem um atributo 'value' não vazio"
|
1027
|
+
},
|
1028
|
+
"fail": "O elemento tem um atributo 'value' e este está vazio"
|
1029
|
+
},
|
1030
|
+
"non-empty-placeholder": {
|
1031
|
+
"pass": "O elemento tem um atributo 'placeholder'",
|
1032
|
+
"fail": {
|
1033
|
+
"noAttr": "O elemento não tem um atributo 'placeholder'",
|
1034
|
+
"emptyAttr": "O elemento tem um atributo 'placeholder' vazio"
|
1035
|
+
}
|
1036
|
+
},
|
1037
|
+
"non-empty-title": {
|
1038
|
+
"pass": "O elemento tem um atributo 'title'",
|
1039
|
+
"fail": {
|
1040
|
+
"noAttr": "O elemento não tem um atributo 'title'",
|
1041
|
+
"emptyAttr": "O elemento tem um atributo 'title' vazio"
|
1042
|
+
}
|
1043
|
+
},
|
1044
|
+
"non-empty-value": {
|
1045
|
+
"pass": "O elemento tem um atributo 'value' não vazio",
|
1046
|
+
"fail": {
|
1047
|
+
"noAttr": "O elemento não tem um atributo 'value'",
|
1048
|
+
"emptyAttr": "O elemento tem um atributo 'value' vazio"
|
1049
|
+
}
|
1050
|
+
},
|
1051
|
+
"presentational-role": {
|
1052
|
+
"pass": "A semântica por defeito do elemento foi substituída por 'role=\"${data.role}\"'",
|
1053
|
+
"fail": {
|
1054
|
+
"default": "A semântica por defeito do elemento não foi substituída por 'role=\"none\"' ou 'role=\"presentation\"'",
|
1055
|
+
"globalAria": "A função do elemento não é de apresentação porque tem um atributo ARIA global",
|
1056
|
+
"focusable": "A função do elemento não é de apresentação porque é focável",
|
1057
|
+
"both": "A função do elemento não é de apresentação porque tem um atributo ARIA global e é focável",
|
1058
|
+
"iframe": "Utilizar o atributo '\"title\"' num elemento ${data.nodeName} com uma função de apresentação comporta-se de forma inconsistente entre os leitores de ecrã"
|
1059
|
+
}
|
1060
|
+
},
|
1061
|
+
"role-none": {
|
1062
|
+
"pass": "A semântica por defeito do elemento foi substituída por 'role=\"none\"'",
|
1063
|
+
"fail": "A semântica por defeito do elemento não foi substituída por 'role=\"none\"'"
|
1064
|
+
},
|
1065
|
+
"role-presentation": {
|
1066
|
+
"pass": "A semântica por defeito do elemento foi substituída por 'role=\"presentation\"'",
|
1067
|
+
"fail": "A semântica por defeito do elemento não foi substituída por 'role=\"presentation\"'"
|
1068
|
+
},
|
1069
|
+
"svg-non-empty-title": {
|
1070
|
+
"pass": "O elemento tem um filho que é um título",
|
1071
|
+
"fail": {
|
1072
|
+
"noTitle": "O elemento não tem um filho que seja um título",
|
1073
|
+
"emptyTitle": "O título do filho do elemento está vazio"
|
1074
|
+
},
|
1075
|
+
"incomplete": "Não foi possível determinar se o elemento tem um filho que seja um título"
|
1076
|
+
},
|
1077
|
+
"caption-faked": {
|
1078
|
+
"pass": "A primeira linha de uma tabela não é utilizada como <caption>",
|
1079
|
+
"fail": "O primeiro filho da tabela deveria ser um caption em vez de uma célula"
|
1080
|
+
},
|
1081
|
+
"html5-scope": {
|
1082
|
+
"pass": "O atributo scope é usado apenas em elementos de cabeçalho de tabela (<th>)",
|
1083
|
+
"fail": "No HTML 5, os atributos scope só podem ser usados em elementos de cabeçalho de tabela (<th>)"
|
1084
|
+
},
|
1085
|
+
"same-caption-summary": {
|
1086
|
+
"pass": "O conteúdo do atributo 'summary' e do <caption> não está duplicado",
|
1087
|
+
"fail": "O conteúdo do atributo 'summary' e do elemento <caption> são idênticos",
|
1088
|
+
"incomplete": "Não foi possível determinar se o elemento <table> tem um caption"
|
1089
|
+
},
|
1090
|
+
"scope-value": {
|
1091
|
+
"pass": "O atributo 'scope' é usado corretamente",
|
1092
|
+
"fail": "O valor do atributo 'scope' só pode ser 'row' ou 'col'"
|
1093
|
+
},
|
1094
|
+
"td-has-header": {
|
1095
|
+
"pass": "Todas as células de dados não vazias têm cabeçalhos de tabela",
|
1096
|
+
"fail": "Algumas células de dados não vazias não têm cabeçalhos de tabela"
|
1097
|
+
},
|
1098
|
+
"td-headers-attr": {
|
1099
|
+
"pass": "O atributo 'headers' é usado exclusivamente para referir-se a outras células da tabela",
|
1100
|
+
"incomplete": "O atributo 'headers' está vazio",
|
1101
|
+
"fail": "O atributo 'headers' não é usado exclusivamente para referir-se a outras células da tabela"
|
1102
|
+
},
|
1103
|
+
"th-has-data-cells": {
|
1104
|
+
"pass": "Todos os cabeçalhos de tabela numa tabela de dados referem-se às células de dados",
|
1105
|
+
"fail": "Nem todas as células de cabeçalho de tabela referem-se a células de dados",
|
1106
|
+
"incomplete": "Faltam células de dados na tabela ou estão vazias"
|
1107
|
+
},
|
1108
|
+
"hidden-content": {
|
1109
|
+
"pass": "Todo o conteúdo da página foi analisado.",
|
1110
|
+
"fail": "Houve problemas na análise do conteúdo desta página.",
|
1111
|
+
"incomplete": "Existe conteúdo oculto na página que não foi analisado. Será necessário acionar a sua exibição para o analisar."
|
1112
|
+
}
|
1113
|
+
},
|
1114
|
+
"failureSummaries": {
|
1115
|
+
"any": {
|
1116
|
+
"failureMessage": "Corrija qualquer um dos seguintes:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
|
1117
|
+
},
|
1118
|
+
"none": {
|
1119
|
+
"failureMessage": "Corrija todos os seguintes:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
|
1120
|
+
}
|
1121
|
+
},
|
1122
|
+
"incompleteFallbackMessage": "O axe não conseguiu identificar a razão. Hora de recorrer ao inspetor de elementos!"
|
1123
|
+
}
|