Conjuntos de Regras Personalizados
Gere e aplique conjuntos de regras personalizados para testes de acessibilidade com o Axe DevTools para Web CLI.
O comando axe ruleset gera arquivos de conjunto de regras JSON que controlam quais regras de acessibilidade axe executa e como elas se comportam. Existem dois fluxos de trabalho:
- Configurações de diretrizes padrão: Gere uma configuração pré-construída filtrada para um padrão específico de acessibilidade (WCAG 2.2, Section 508, etc.).
- Conjuntos de regras personalizados: Modifique ou estenda regras existentes do axe-core (ou defina novas) descrevendo suas alterações em um arquivo de entrada
changes.json. O nome de arquivo necessáriochanges.jsoné comoaxe rulesetlocaliza suas alterações.
Ambos os fluxos de trabalho produzem um arquivo JSON de saída. Para aplicá-lo durante a varredura, passe-o para a flag --custom do comando de varredura:
# Standard config workflow
axe ruleset --wcag22 # generates wcag22.json
axe <url> --custom wcag22.json
# Custom ruleset workflow
axe ruleset --custom ./my-changes/ # reads changes.json from the directory, generates axe-ruleset.json
axe <url> --custom axe-ruleset.jsonConfigurações de Diretrizes Padrão
Essas flags geram um arquivo JSON pré-configurado para um padrão específico de acessibilidade. O argumento opcional [filename] define o nome do arquivo de saída; se omitido, o arquivo é nomeado <standard>.json (por exemplo, wcag22.json). Os arquivos são gravados no diretório atual, a menos que você especifique um destino com -d, --destination.
| Flag | Padrão |
|---|---|
--508 [filename] |
Section 508 |
--en301549 [filename] |
EN 301 549 |
--ttv5 [filename] |
Trusted Tester v5 |
--rgaav4 [filename] |
RGAA Versão 4 |
--wcag2 [filename] |
WCAG 2.0 Nível AA |
--wcag21 [filename] |
WCAG 2.1 Nível AA |
--wcag22 [filename] |
WCAG 2.2 Nível AA |
--wcag2aaa [filename] |
WCAG 2.0 Nível AAA |
--wcag21aaa [filename] |
WCAG 2.1 Nível AAA |
--wcag22aaa [filename] |
WCAG 2.2 Nível AAA |
Executar axe ruleset sem nenhuma dessas flags gera arquivos de configuração individuais para todos os padrões suportados de uma só vez.
--all [filename]
Gera um único arquivo JSON contendo todas as regras e verificações do axe-core, com cada regra definida para enabled: false. Use isso como ponto de partida quando você deseja uma configuração de opt-in. Cada regra está desativada por padrão, e você habilita somente as regras que escolher, modificando o arquivo.
Opções de Configuração Padrão
-d, --destination <path>
Diretório de saída para o arquivo JSON gerado. O padrão é o diretório atual.
-f, --format [format]
Formato de saída: json (padrão) ou js.
-l, --log
Imprime uma lista de todas as regras incluídas no arquivo gerado no console.
-a, --axe-source <path>
Caminho para um arquivo de origem customizado do axe-core. Use isso se você precisar gerar configurações para uma versão específica ou corrigida do axe-core.
Conjuntos de Regras Personalizados
Um conjunto de regras personalizado permite que você modifique como as regras existentes do axe-core se comportam ou defina novas regras completamente. As alterações são descritas em um arquivo changes.json, que usa o mesmo formato do objeto passado para axe.configure().
Algumas das ações que você pode realizar com conjuntos de regras personalizadas incluem:
- Alterar o nível de impacto dos resultados de uma verificação (por exemplo, rebaixar
seriousparaminor) - Desativar regras que não se aplicam ao seu contexto
- Criar novas regras para impor a política de acessibilidade da sua organização
- Restringir quais técnicas são aceitas para um determinado requisito (por exemplo, desautorizar
titlecomo um nome acessível para imagens) - Modificar os limites de contraste na regra
color-contrast - Atualizar quais funções e propriedades ARIA são suportadas
Gerando um Conjunto de Regras Personalizado
Para gerar um conjunto de regras personalizado, crie um arquivo changes.json descrevendo suas alterações, então execute axe ruleset --custom <directory>, onde <directory> é a pasta que contém seu changes.json. Se você omitir --custom, o diretório atual será usado.
O arquivo changes.json pode especificar alterações nas regras e verificações existentes do axe-core, bem como novas regras ou verificações.
Observe que impacto é uma propriedade das verificações, não das regras. Embora a saída gerada axe-ruleset.json mostre um campo impact em cada regra, este é um valor resolvido calculado a partir das verificações subjacentes da regra; não é algo que você define em uma regra em changes.json. Colocar impact diretamente em uma regra no seu arquivo de entrada causará um erro.
Para alterar a severidade percebida dos resultados de uma regra, modifique o impacto na verificação subjacente. Por exemplo, para alterar a verificação valid-lang de serious para minor:
{
"checks": [{
"id": "valid-lang",
"metadata": {
"impact": "minor"
}
}]
}O seguinte é incorreto e produzirá um erro:
{
"rules": [{
"id": "valid-lang",
"impact": "minor"
}]
}Salve isso como changes.json em um diretório e execute:
axe ruleset --custom ./my-changes/Usando Diretórios de Regras e Verificações
Para personalizações mais complexas, você pode organizar novas regras e verificações em diretórios rules/ e checks/ separados, junto com changes.json. Cada regra ou verificação é seu próprio arquivo JSON. Isso não altera a saída gerada, mas facilita o gerenciamento de várias regras e verificações personalizadas.
Por exemplo, para criar uma nova regra chamada h1-no-duplicate que verifica mais de um <h1> em uma página:
directory
├ changes.json
├ rules
│ └ h1-no-duplicate.json
└ checks
└ page-no-duplicate-h1.jsonComo a regra e a verificação estão definidas em arquivos separados, changes.json é um objeto vazio:
{}O arquivo de regra h1-no-duplicate.json define quais verificações executar:
{
"id": "h1-no-duplicate",
"selector": "h1:not([role]), [role=heading][aria-level=1]",
"tags": ["cat.semantics", "best-practice"],
"metadata": {
"description": "Ensures the document has at most one h1 element",
"help": "Document must not have more than one h1 element"
},
"all": [],
"any": ["page-no-duplicate-h1"],
"none": []
}O arquivo de verificação page-no-duplicate-h1.json define a verificação e suas mensagens de resultado:
{
"id": "page-no-duplicate-h1",
"evaluate": "page-no-duplicate-evaluate",
"after": "page-no-duplicate-after",
"options": {
"selector": "h1:not([role]), [role=heading][aria-level=1]"
},
"metadata": {
"impact": "moderate",
"messages": {
"pass": "Document does not have more than one h1 element",
"fail": "Document has more than one h1 element"
}
}
}Os campos evaluate e after referenciam IDs de funções JavaScript que implementam a lógica de verificação. Para verificações que modificam uma verificação existente do axe-core, use o ID de uma função existente de avaliação ou após do axe-core. Para verificações totalmente novas, você também deve registrar as funções JavaScript correspondentes com axe-core. Consulte documentação da API do axe-core para detalhes.
Após executar axe ruleset --custom, o JSON gerado combina as definições de regras e verificações em um único arquivo (parte relevante mostrada):
{
"rules": [{
"id": "h1-no-duplicate",
"selector": "h1:not([role]), [role=heading][aria-level=1]",
"tags": ["cat.semantics", "best-practice"],
"metadata": {
"description": "Ensures the document has at most one h1 element",
"help": "Document must not have more than one h1 element"
},
"all": [],
"any": ["page-no-duplicate-h1"],
"none": [],
"enabled": true
}],
"checks": [{
"id": "page-no-duplicate-h1",
"evaluate": "page-no-duplicate-evaluate",
"after": "page-no-duplicate-after",
"options": {
"selector": "h1:not([role]), [role=heading][aria-level=1]"
},
"metadata": {
"impact": "moderate",
"messages": {
"pass": "Document does not have more than one h1 element",
"fail": "Document has more than one h1 element"
}
},
"enabled": true
}]
}Opções de Conjunto de Regras Personalizadas
-c, --custom [path]
Caminho para o diretório que contém seu arquivo changes.json (e subdiretórios opcionais rules/ e checks/). O padrão é o diretório atual.
-t, --tags <list>
Lista separada por vírgulas de tags do axe-core usada para filtrar quais regras do conjunto de regras padrão do axe-core são incluídas na saída.
-x, --disable-other-rules
Desativa todas as regras do axe-core que não estão explicitamente incluídas na propriedade rules de changes.json ou do diretório rules/. Ativado por padrão, portanto, o conjunto de regras gerado substitui o conjunto de regras completo do axe-core em vez de expandi-lo; apenas suas regras personalizadas são executadas. Passe --no-disable-other-rules para incluir todas as regras padrão do axe-core juntamente com suas personalizadas.
--only-changes
Válido apenas com --custom. Gere apenas as alterações e adições descritas em changes.json, sem as definições completas de regra e verificação do axe-core. Produz um arquivo menor adequado para uso como sobreposição em um conjunto de regras existente.
-d, --destination <path>, -f, --format, -l, --log, -a, --axe-source <path>
Consulte Opções de Configuração Padrão. Essas opções se aplicam a conjuntos de regras personalizados também.
Carregando um Conjunto de Regras
Existem três maneiras de aplicar um conjunto de regras gerado ao escanear. Elas são verificadas nesta ordem:
-
Variável de ambiente: Defina
AXE_RULESET_PATHpara o caminho do arquivo do conjunto de regras. Isso tem precedência sobre todos os outros métodos e se aplica a todas as execuções naquele ambiente. -
flag
--custom: Passe o arquivo do conjunto de regras explicitamente usando o flag--customemaxe <url>,axe specouaxe bulk-spec. -
Arquivo local: Coloque um arquivo chamado
axe-ruleset.jsonno diretório ondeaxeé executado. Ele será usado automaticamente se nenhum dos anteriores estiver definido.
Se nenhum destes for especificado, ou se o Axe DevTools não puder carregar o arquivo especificado, o conjunto de regras padrão wcag2.1 é usado.
Suporte
Criar conjuntos de regras personalizados requer um entendimento significativo do axe-core. Para detalhes, veja documentação da API do axe-core. Se você gostaria de suporte na criação e manutenção do seu conjunto de regras personalizado, entre em contato com seu representante Deque.
