Auto Scan
Identifique automaticamente problemas de acessibilidade enquanto seus testes XCUITest existentes interagem com seu aplicativo
Visão Geral
Conectando-se aos gestos padrão do XCUITest, o Auto Scan captura e examina cada tela com a qual seu conjunto de testes interage, sem a necessidade de adicionar chamadas de verificação individuais, importações ou modificações aos seus testes.
Como funciona
- Quando o pacote de teste é iniciado, o Auto Scan carrega
axe_config.jsone começa a observar interações - Após cada interação suportada, o Auto Scan captura a tela atual
- Quando o pacote de teste é finalizado, o Auto Scan processa os seus resultados, salva um resultado em JSON para cada tela - juntamente com um resumo e um relatório em HTML - em
AxeDevToolsMobileResults/e, opcionalmente, faz upload dos resultados para o Developer Hub
Primeiros Passos
- Crie
axe_config.json:
{
"axeAutoScanMode": true,
"axeAppBundleId": "com.example.myapp",
"axeMobileApiKey": "<API_KEY>",
"axeProjectId": "<PROJECT_ID>",
"axeHtmlReportPath": "~/my-custom-report-folder"
}- Adicione
axe_config.jsonao alvo de teste de interface do usuário no Xcode (Project Navigator > Add Files > Check the UI test target) - Adicione
axe_config.jsona.gitignore - Executar testes normalmente
Código de Exemplo
O trecho abaixo é um XCUITest padrão, sem código específico do Auto Scan:
import XCTest
class MyAppUITests: XCTestCase {
let app = XCUIApplication()
override func setUpWithError() throws {
app.launch() // triggers initial capture
}
func testSettings() throws {
app.buttons["Settings"].tap() // triggers capture
}
}Interpretando Resultados
Resumo do console
Um resumo do console semelhante ao seguinte é impresso quando o conjunto de testes termina:
---- Axe DevTools Mobile Accessibility Summary ----
Scan 1:
Screen: HomeScreen
Issues: 3
Issues by rule:
- ColorContrast: 2
- TouchTargetSize: 1
Scan 2:
Screen: SettingsScreen
Issues: 0
Total Scans: 2
❌ Total Issues: 3
----------------------------------------------------Uma execução limpa mostrará Axe Clean - 0 Issues Found 🎉 no console.
Arquivos de saída
No final de cada execução de teste, o Auto Scan gera um relatório HTML autossuficiente que inclui capturas de tela, níveis de impacto e informações detalhadas sobre questões. Os arquivos de saída são salvos em um diretório de saída configurável pelo usuário, que você pode definir em axe_config.json. O axeHtmlReportPath aceita um caminho absoluto ou um caminho com prefixo ~ (ex. ~/my-axe-reports). Se não for definido, o diretório de saída padrão é ~/AxeDevToolsMobileResults.
| Arquivo | Formato |
|---|---|
AxeDevToolsMobile_<timestamp>.html |
Relatório HTML interativo com problemas por tela, detalhes dos elementos, níveis de impacto |
AxeDevToolsSummary_<timestamp>.txt |
Resumo de texto (igual à saída do console) |
axe-test-data/<APP-ID>-<SCREEN-TITLE>.json |
Resultado JSON individual - 1 para cada verificação realizada |
Suporte do Auto Scan
Regras
O Auto Scan executa o conjunto completo de regras Axe, com exceção de ScreenOrientation, SupportsDynamicType e todas as regras experimentais. Encontre informações detalhadas sobre o que verificamos no Visão Geral das Regras para iOS.
Developer Hub
O Auto Scan faz upload automático dos seus resultados para o Axe Developer Hub. Se você deseja apenas salvar 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 ser definido para true para habilitar a varredura automática. |
axeAppBundleId |
Texto | Obrigatório | ID do pacote do aplicativo em teste |
axeUploadResults |
Booleano | Opcional | Padrão para true. Defina para false apenas para resultados locais |
axeMobileApiKey |
Texto | Opcional | Uma chave API Axe DevTools Mobile de axe.deque.com é necessária se axeUploadResults=true |
axeProjectId |
Texto | Opcional | Um ID de Projeto de Developer Hub é necessário se axeUploadResults=true |
axeServerUrl (Obsoleto) |
Texto | Opcional | URL de backend personalizado (ex. axe.company.com), apenas para nuvem privada/instalação local |
axeAccountUrl |
Texto | Opcional | URL de backend personalizado (ex. axe.company.com), apenas para nuvem privada/instalação local |
axeHtmlReportPath |
Texto | Opcional | Diretório de saída configurável pelo usuário para relatório HTML e resumo. Padrão para ~/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
Texto | Opcional | Somente necessário para modo offline, quando axeUploadResults=false |
Se você estiver utilizando nossas ferramentas e preferir obter resultados em modo offline, você definirá um valor para o axeOfflineLicenseKey em vez de axeMobileApiKey e axeProjectId.
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.
Ambos os itens abaixo são necessários:
Configuração de teste:
override func setUpWithError() throws {
let app = XCUIApplication()
app.launchArguments.append("-DisableAnimations")
app.launch()
}Caminho de lançamento do app (AppDelegate ou @main):
if ProcessInfo.processInfo.arguments.contains("-DisableAnimations") {
UIView.setAnimationsEnabled(false)
}O argumento de lançamento passa o sinalizador para o processo do aplicativo. A verificação do lado do aplicativo age sobre ele. Nenhum funciona sozinho.
Nota: UIView.setAnimationsEnabled(false) não cobre animações nativas do SwiftUI (withAnimation {}). Aplicações SwiftUI podem necessitar de tratamento adicional.
Resolução de Problemas
- Nenhum resultado? Verifique se
axe_config.jsonestá incluído no bundle de teste de interface do usuário. Verifique Associação de Alvo no File Inspector do XCode. - Vendo resultados localmente, mas não no Developer Hub? O upload para o Developer Hub falha se o tamanho de qualquer arquivo de resultado for maior que 20 MB, embora todos os resultados ainda sejam salvos localmente e exibidos no relatório HTML local.
- Verifique os logs. Procure por mensagens
AutoScanno console.
O que vem a seguir?
Você pode visualizar seus resultados em Axe Developer Hub. Aprenda como integrar o Axe DevTools Mobile no seu pipeline CI/CD. Está usando uma plataforma de teste baseada em nuvem? Você ainda pode usar o Axe DevTools Mobile para procurar problemas de acessibilidade: Integre com Plataformas de Nuvem.
Se você precisar de um controle mais granular em seus testes, consulte Testes Direcionados com XCUITest.
