Acelere Seus Testes
Técnicas para reduzir o tempo que o Axe Watcher adiciona ao seu conjunto de testes de ponta a ponta
Integrar o Axe Watcher ao seu conjunto de testes de ponta a ponta adiciona tempo porque o Watcher analisa cada página que seus testes visitam. Se esse overhead se tornar um problema, as técnicas abaixo permitem que você o reduza sem abrir mão da cobertura que considera importante.
Excluir Páginas Que Você Não Precisa Testar
Se o seu conjunto de testes visita páginas que você não precisa testar para acessibilidade (páginas de login, páginas de terceiros, painéis de administração, fluxos de checkout de outra equipe), você pode ignorá-las totalmente usando excludeUrlPatterns. Pular páginas inteiras é a maneira mais eficaz de reduzir o tempo de teste.
JavaScript ou TypeScript:
axe: {
excludeUrlPatterns: [ 'https://example.com/login*', 'https://example.com/admin/**' ]
}Java:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setExcludeUrlPatterns(new String[] {
"https://example.com/login*",
"https://example.com/admin/**"
});Veja Excluir URLs da Análise para a sintaxe de padrões e exemplos de correspondência.
Limitar Análise a Seções Específicas da Página
Em vez de analisar a página inteira, use runContext para se concentrar na seção que seu teste exercita. Por exemplo, se um teste cobre apenas o formulário de checkout, não há necessidade de analisar a navegação, rodapé ou barra lateral.
JavaScript ou TypeScript:
axe: {
runContext: {
include: '.checkout-form',
exclude: '.site-navigation'
}
}Java:
AxeRunContext context = new AxeRunContext()
.setInclude(Arrays.asList(".checkout-form"))
.setExclude(Arrays.asList(".site-navigation"));
AxeWatcherOptions options = new AxeWatcherOptions();
options.setRunContext(context);Quando você especifica elementos para incluir via runContext, o Axe Watcher analisa somente os elementos correspondentes. Se um seletor não corresponder a nada na página, nada será analisado e nenhum estado da página será capturado. Verifique seus seletores antes de implantar esta configuração.
Veja (JavaScript/TypeScript) runContext ou (Java) AxeRunContext para mais informações.
Desativar Regras Dispendiosas
Algumas regras do axe-core são computacionalmente dispendiosas. A regra color-contrast, por exemplo, requer que o navegador calcule a cor renderizada de cada elemento de texto visível na página, o que pode adicionar tempo significativo em páginas com muito conteúdo.
Você pode desativar regras específicas usando runOptions.rules:
JavaScript ou TypeScript:
axe: {
runOptions: {
rules: {
'color-contrast': { enabled: false }
}
}
}Java:
Map<String, AxeRuleOptions> rules = new HashMap<>();
rules.put("color-contrast", new AxeRuleOptions().setEnabled(false));
AxeRunOptions runOptions = new AxeRunOptions();
runOptions.setRules(rules);
AxeWatcherOptions options = new AxeWatcherOptions();
options.setRunOptions(runOptions);Desativar uma regra significa que os problemas detectados por essa regra não aparecerão nos seus resultados. Considere executar regras desativadas em um conjunto de testes separado e dedicado, em vez de pular permanentemente.
Usar runOptions.rules (ou runOnly) gera um aviso porque essas configurações podem conflitar com a configuração global do Axe da sua organização. Veja Usando runOptions com runOnly ou Rules.
Veja (JavaScript/TypeScript) runOptions ou (Java) AxeRunOptions para mais informações.
Usar o Modo Manual para Controlar Quais Testes Analisam Páginas
Por padrão, o Watcher analisa automaticamente cada página que seus testes visitam. Se a maior parte do seu conjunto de testes visita páginas que você não precisa verificar, você pode desativar a análise automática globalmente e habilitá-la apenas nos testes que precisam.
JavaScript ou TypeScript:
axe: {
autoAnalyze: false
}Java:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setAutoAnalyze(false);Com a análise automática desativada, você chama analyze() explicitamente onde precisar de um resultado, e usa start() / stop() para delimitar seções do seu conjunto de testes onde deseja que a análise automática seja retomada.
Veja Controle Seus Escaneamentos para instruções completas e exemplos.
Executar Testes em Paralelo
Se sua infraestrutura de testes suporta execução em paralelo, rodar seu conjunto de testes com múltiplos trabalhadores reduz o tempo total de execução. O Watcher suporta testes em paralelo; você só precisa garantir que cada trabalhador compartilhe o mesmo buildID não-nulo para que seus resultados sejam combinados em vez de sobrescritos.
Veja Executando Testes em Paralelo para instruções de configuração.
Resumo
| Técnica | Melhor para | Compromisso |
|---|---|---|
| Excluir páginas | Páginas que sua equipe não possui ou não precisa testar | Páginas importantes podem ser esquecidas por engano |
| Limitar seções de página | Páginas grandes onde apenas parte é relevante para seu teste | Problemas fora das seções selecionadas não são encontrados |
| Desativar regras dispendiosas | Equipes descobrem que certas regras dispendiosas não se aplicam à sua situação | Essas regras não são executadas neste conjunto de testes |
| Modo manual | Conjuntos de testes que visitam muitas páginas irrelevantes para testes de acessibilidade | Requer chamadas explícitas analyze() / start() / stop() no código de teste |
| Teste em paralelo | Equipes com infraestrutura de CI que suporta trabalhadores paralelos | Requer coordenação de buildID entre trabalhadores |
