Escaneamento Automático com o Driver UIAutomator2
Visão Geral
O escaneamento automático monitora continuamente seu aplicativo Android em busca de problemas de acessibilidade enquanto seus testes são executados. Em vez de escanear uma tela por vez, ele captura instantâneos de acessibilidade a cada mudança de interface e os processa todos ao final.
Se precisar de mais controle detalhado em seus testes, veja Testes Focados com Appium.
Como funciona
- Inicie o Escaneamento Automático no início do seu teste
- Interaja com seu aplicativo — cada alteração de tela é capturada automaticamente
- Pare o escaneamento automático — os resultados são processados e transferidos para sua máquina local
Os resultados são salvos em build/AxeDevToolsMobileResults/ no diretório do seu projeto.
Começando
Inicie o servidor Appium como de costume:
appiumConfigurar Seus Testes
A partir dos seus scripts de automação Appium, adicione as capacidades necessárias para Axe DevTools Mobile.
| Nome | Tipo | Descrição |
|---|---|---|
| automationName | String |
Defina para 'AxeUiAutomator2' para utilizar o driver com Axe DevTools Mobile embutido para escaneamentos de acessibilidade. |
| appPackage | String |
O nome do pacote do aplicativo em teste. Note que appPackage é parte do driver UiAutomator2; você pode já tê-lo configurado. |
Iniciar Escaneamento Automático
Antes de iniciar seu conjunto de testes, inicie o Escaneamento Automático chamando a axeStartAutoScanSession API:
beforeAll(async () => { // Start auto scan
await driver.executeScript('mobile: axeStartAutoScanSession',
[{ axeMobileApiKey: 'your-api-key',
axeProjectId: 'your-devhub-project-id'
...
}]);
})Parar Escaneamento Automático
Logo antes de o conjunto de testes terminar, chame a axeStopAutoScanSession API para parar o Escaneamento Automático, agregar e enviar os resultados.
await driver.executeScript('mobile: axeStopAutoScanSession', []);Os trechos de código acima estão usando JavaScript. Veja Exemplos de Código de Escaneamento Automático com UIAutomator2 para exemplos mais completos em várias linguagens de programação.
Interpretando Resultados
Resumo do Console
Uma vez que o conjunto de testes termine, você pode encontrar um resumo na janela do console onde o servidor Appium está rodando.
---- Axe DevTools Mobile Accessibility Summary ----
Scan 1:
Screen: Home Page
Issues: 6
Issues by rule:
- TouchSizeWcag: 3
- LabelAtFront: 1
- LabelInName: 1
- FocusableText: 1
Scan 35:
Screen: Wikipedia Alpha
Issues: 5
Issues by rule:
- LabelAtFront: 1
- LabelInName: 1
- TouchTargetSpacing: 1
- TouchSizeWcag: 1
- ColorContrast: 1
Total Scans: 35
❌ Total Issues: 123
---------------------------------------------------Arquivos de Saída
Quando a sessão de Escaneamento Automático termina, um relatório HTML é gerado em build/AxeDevToolsMobileResults/. O relatório contém violações de acessibilidade, aprovações e recomendações para cada tela capturada durante a sessão.
Suporte ao Escaneamento Automático
Regras
O Escaneamento Automático executa o conjunto completo de regras do Axe com exceção de ScreenOrientation e todas as regras experimentais (por exemplo, NestedActiveControl, NestedElementName, InaccessibleAction). Encontre informações detalhadas sobre o que verificamos em Visão Geral das Regras para Android.
Central de Desenvolvedores
A varredura automática faz o upload automático dos seus resultados para a Central de Desenvolvedores Axe. Se você quer salvar os resultados apenas localmente, configure axeUploadResults para false.
Modo Offline
Se você não tem credenciais de nuvem, use a variante offline do driver com uma chave de licença offline. Instale @axe-devtools/axe-appium3-uiautomator2-driver-offline e insira axeOfflineLicenseKey ao iniciar a sessão.
Referência de Configuração
Propriedades
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
axeUploadResults |
booleano | Não | Enviar resultados para a Central de Desenvolvedores |
axeMobileApiKey |
string | Sim* | Sua chave de API do Axe DevTools Mobile |
axeProjectId |
string | Não | ID do projeto para organizar os resultados |
axeOfflineLicenseKey |
string | Sim* | Chave de licença para o modo offline (alternativa às credenciais de nuvem) |
axeServerUrl |
string | Não | URL do servidor Axe personalizado (para nuvem privada ou local) |
*Fornecer **ou** credenciais de nuvem (axeMobileApiKey + axeProjectId + opcional axeServerUrl) **ou** uma axeOfflineLicenseKey.
Desativar Animações
Obtenha os resultados mais precisos e abrangentes da varredura automática desativando a animação. Isso garantirá que as telas estejam completamente renderizadas quando capturadas. Se as animações não estiverem desativadas, você pode notar:
- Varreduras duplicadas que você acredita que deveriam ter sido eliminadas
- Varreduras com capturas de tela mostrando um estado transitório
- Uma taxa de captura de tela significativamente menor do que você esperava
Adicione o seguinte sob capabilities:
capabilities: {
// ...existing capabilities
'appium:disableWindowAnimation': true, // disables window animations
}Resolução de Problemas
Se as varreduras não estiverem aparecendo na Central de Desenvolvedores, você deve verificar seus logs em busca de dicas do que pode estar errado ou seguir esta lista de verificação.
- Certifique-se de que está usando a variável correta para sua chave de API/Licença e ID do Projeto
- Verifique o tamanho dos seus arquivos de saída. O upload para a Central de Desenvolvedores falhará se o tamanho de qualquer arquivo de resultado for maior que 20MB, embora todos os resultados ainda sejam salvos localmente e exibidos no relatório HTML local.
O que vem a seguir?
Você pode ver seus resultados no Axe Developer Hub. Saiba como integrar o Axe DevTools Mobile no seu pipeline de CI/CD. Está usando uma plataforma de teste baseada em nuvem? Você ainda pode usar o Axe DevTools Mobile para procurar problemas de acessibilidade. Veja Testes Automatizados em Plataformas em Nuvem com Appium.
