Varredura Automática
Identifique automaticamente problemas de acessibilidade à medida que seus testes de UI existentes interagem com seu aplicativo
Visão Geral
A Varredura Automática identifica automaticamente problemas de acessibilidade à medida que seus testes existentes do Espresso ou UIAutomator interagem com seu aplicativo, sem a necessidade de adicionar chamadas de verificação individuais ou modificar seus testes. A Varredura Automática escuta mudanças de tela e verifica cada tela única automaticamente.
Se você precisar de um controle mais granular em seus testes, veja Testes direcionados.
Como funciona
Nosso plugin Gradle substituirá seu runner de instrumentação JUnit pelo nosso runner personalizado. Isso nos permite observar seu conjunto de testes e processar seus resultados no momento apropriado. Obtenha o plugin Gradle AxeDevToolsMobile.
Quando o teste termina, o Auto Scan processa seus resultados e salva um resultado em JSON para cada tela, bem como um relatório em HTML autônomo em AxeDevToolsMobileResults, e opcionalmente faz upload dos resultados para o Developer Hub.
Começando
-
Alguns valores precisam ser definidos para configurar e autenticar usuários. Recomendamos adicioná-los como variáveis de ambiente no seu computador e nos seus pipelines CI/CD para manter suas chaves seguras.
Groovy (
build.gradle):axeDevTools { axeMobileApiKey = '' axeAutoScanMode = true axeProjectId = '' }Kotlin DSL (
build.gradle.kts):axeDevTools { axeMobileApiKey = "" axeAutoScanMode = true axeProjectId = "" } -
Se você estiver usando nossas ferramentas e preferir obter resultados no modo offline, deverá definir um valor para o
axeOfflineLicenseKeyem vez deaxeMobileApiKeyeaxeProjectId.Groovy (
build.gradle):axeDevTools { axeOfflineLicenseKey = '' axeAutoScanMode = true }Kotlin DSL (
build.gradle.kts):axeDevTools { axeOfflineLicenseKey = "" axeAutoScanMode = true }
Pular Telas ao Escanear
Por padrão, o Auto Scan analisa cada tela única em seu aplicativo enquanto seus testes são executados. Se certas telas não devem ser incluídas no escaneamento - por exemplo, telas de credenciais ou navegação fora do aplicativo em teste - você pode suprimir o escaneamento para essa seção, envolvendo-a em AxeAutoScan.skipScan. O Auto Scan para de observar mudanças de tela enquanto esse bloco está em execução, e começa novamente automaticamente quando o bloco termina. Telas que aparecem dentro desses blocos nunca são escaneadas.
Você importará com.deque.mobile.devtools.productinterfaces.AxeAutoScan. O exemplo de implementação abaixo usa Jetpack Compose, mas o comportamento é o mesmo em testes com Espresso e UIAutomator:
import androidx.compose.ui.test.junit4.createAndroidComposeRule
import com.deque.mobile.devtools.productinterfaces.AxeAutoScan
import org.junit.Rule
import org.junit.Test
class AutoScanDemoTest {
@get:Rule
val composeTestRule = createAndroidComposeRule<MainActivity>()
@Test
fun homeLoggedIn() {
AxeAutoScan.skipScan {
// Navigation to Login screen
composeTestRule.onNodeWithText("Sign in").performClick()
// Username/password entry
composeTestRule.onNodeWithTag("username").performTextInput("test@example.com")
composeTestRule.onNodeWithTag("password").performTextInput("password")
// Submit form data
composeTestRule.onNodeWithText("Submit").performClick()
// Wait to return to Home screen
composeTestRule.waitUntil(timeoutMillis = 5_000) {
composeTestRule.onAllNodesWithTag("home_screen")
.fetchSemanticsNodes().isNotEmpty()
}
}
// Auto Scan starts again - after return to Home screen everything is captured
composeTestRule.onNodeWithTag("account_menu").performClick()
}
}Alguns itens a serem observados sobre skipScan:
- O escaneamento é retomado mesmo que uma asserção dentro do bloco falhe. O Auto Scan começará novamente antes de o erro se propagar.
- Chamar
skipScanquando"axeAutoScanMode" = falseé inofensivo; não é necessário proteger a chamada ou manter duas versões de um teste.
Interpretando Resultados
Resumo do Console
Assim que a suíte de testes termina, você pode ver algum pós-processamento em seus logs do Gradle, seguido de um resumo.
HTML rule report written to: /Users/user/Documents/workspace/android/project-name/app/build/reports/AxeDevToolsMobileResults/AxeDevToolsMobile_1773882427726.html
---- 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
O Auto Scan gera um relatório em HTML autônomo com capturas de tela, dados de hierarquia de visualização e informações detalhadas sobre problemas. Resultados individuais em JSON são salvos no diretório axe-test-data. Todos os arquivos são salvos no diretório app/build/reports/AxeDevToolsMobileResults.
| Arquivo | Formato |
|---|---|
AxeDevToolsReport.html |
Relatório HTML interativo com problemas por tela, detalhes dos elementos, níveis de impacto |
<timestamp>-axe-node-hierarchy.json |
Resultado JSON individual - 1 para cada varredura realizada |
Se você preferir salvar seus resultados em um diretório específico, pode indicar isso no bloco de configuração do plugin do arquivo build.gradle.
axeDevTools {
axeMobileApiKey = "AXE_API_KEY"
axeProjectId = "DEVHUB_PROJECT_ID"
axeAutoScanMode = true
axeHtmlReportPath =
"User/Desktop/reports/AxeDevToolsMobileResults"
axeAccountUrl = "https://axe.deque.com"
Suporte à Varredura Automática
Regras
O Auto Scan executa o conjunto completo de regras do Axe, com exceção de ScreenOrientation. Encontre informações detalhadas sobre o que verificamos no Visão Geral das Regras para Android.
Central de Desenvolvedores
O Auto Scan faz upload automático de seus resultados para o Axe Developer Hub. Se você deseja apenas salvar os resultados localmente, defina axeUploadResults para false.
Referência de Configuração
Propriedades
| Propriedade | Tipo | Obrigatório | Detalhes |
|---|---|---|---|
axeAutoScanMode |
Booleano | Obrigatório | Padrão para false. Deve definir para true para habilitar o auto scan. |
axeMobileApiKey |
String | Obrigatório* | Uma chave de API do Axe DevTools Mobile de axe.deque.com é obrigatório se axeUploadResults=true |
axeOfflineLicenseKey |
String | Obrigatório* | Necessário apenas para modo offline, quando axeUploadResults=false |
axeUploadResults |
Booleano | Opcional | Padrão para true. Defina para false apenas para resultados locais |
axeProjectId |
String | Opcional | Um ID de Projeto do Developer Hub é obrigatório se axeUploadResults=true |
axeServerUrl (Obsoleto) |
String | Opcional | URL de backend personalizado (por exemplo, axe.company.com), apenas para nuvem privada/local |
axeAccountUrl |
String | Opcional | URL de backend personalizado (por exemplo, axe.company.com), apenas para nuvem privada/local |
axeHtmlReportPath |
String | Opcional | Diretório de saída configurável pelo usuário para relatório HTML e resumo. Padrão para build/reports/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
String | Opcional | Necessário apenas para modo offline, quando axeUploadResults=false |
* Nota: Você deve definir ou o axeMobileApiKey ou o axeOfflineLicenseKey na sua configuração. A chave de API é necessária a menos que esteja usando o modo offline. A chave de licença offline é necessária apenas para o modo offline.
Melhores Práticas
Desativar Animações
Obtenha os resultados mais precisos e abrangentes do Auto Scan desativando a animação. Isso garantirá que as telas estejam totalmente renderizadas quando capturadas. Se as animações não forem desativadas, você poderá notar:
- Scans duplicados que você acredita que deveriam ter sido descartados
- Scans com capturas de tela mostrando um estado transitório
- Uma taxa de captura de tela significativamente menor do que você esperava
Solução de Problemas
Se você não estiver vendo as verificações aparecerem no Developer Hub, deve verificar seus logs em busca de pistas do que pode estar errado ou passar por esta lista de verificação.
- Verifique se
axeAutoScanMode=trueno bloco de configuração daaxeDevTools - Certifique-se de que conseguiu obter nossa dependência do Maven Central
- 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 o Developer Hub falha se o tamanho de qualquer um dos arquivos 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 visualizar seus resultados no Axe Developer Hub. Aprenda como integrar o Axe DevTools Mobile em seu pipeline de CI/CD. Está usando uma plataforma de teste baseada na nuvem? Você ainda pode usar o Axe DevTools Mobile para procurar problemas de acessibilidade: Integrar com Plataformas em Nuvem.
