Valor inválido de atributo ARIA
A Silktide verifica o valor de cada atributo ARIA nas suas páginas em relação aos valores permitidos pela norma. Um atributo com um valor incorreto, como o estado de uma caixa de seleção definido como "yes" em vez de "true", é ignorado pelos navegadores, por isso o estado que descreve nunca é anunciado.
<!-- Problema: "yes" não é um valor válido, por isso o estado é descartado -->
<div role="checkbox" aria-checked="yes">Subscribe</div>
<!-- Correção: use o token definido -->
<div role="checkbox" aria-checked="true">Subscribe</div>
Por que isso é importante
Cada atributo define exatamente quais valores aceita, e os
navegadores descartam qualquer outro valor em vez de tentar adivinhar. Os erros
normalmente são valores aparentemente intuitivos — aria-expanded="1",
aria-checked="yes", aria-level="0" — que passam em todos os testes visuais,
enquanto as pessoas que usam
se deparam com um controle cujo estado não é anunciado: um menu que nunca diz
se está aberto, uma caixa de seleção que nunca diz se está marcada.
Como corrigir
- Substitua valores informais pelos tokens definidos pelo atributo:
trueefalse, em vez deyes,no,1ou0. - Verifique os atributos numéricos: atributos de contagem, como
aria-levelearia-rowindex, começam em 1, não em 0. - Remova atributos deixados vazios, como
aria-checked=""— se não houver nenhum estado a transmitir, o atributo não deve estar presente.
Os valores exatos permitidos por cada atributo estão listados na referência de atributos ARIA da MDN.
Como a Silktide faz esta verificação
- Encontra todos os elementos da página que têm pelo menos um atributo
aria-. - Verifica o valor de cada atributo em relação ao tipo definido pela ARIA 1.2:
atributos true/false, atributos de três estados, como
aria-checked(true,false,mixed), números e números inteiros, além de atributos com listas fixas de palavras, comoaria-liveearia-current. - Comunica cada valor que não está em conformidade, indicando o que era esperado.
Os atributos que fazem referência a IDs de elementos são testados pelas suas
próprias verificações, como ID de aria-controls ausente,
e os atributos de texto livre, como aria-label, aceitam qualquer texto.
Resolução de problemas
O valor é definido por um framework
As bibliotecas de componentes ocasionalmente serializam os estados de forma
incorreta — por exemplo, gerando aria-expanded="undefined". O resultado aponta
para o elemento, mas a correção normalmente está na forma como o componente é
configurado ou numa atualização da biblioteca.
Esta verificação não comunica nada, embora eu espere resultados
Os testes de ARIA podem ser desativados por website. Verifique as definições avançadas do website.