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 as interações - Após cada interação suportada, o Auto Scan captura a tela atual
- Quando o pacote de teste termina, o Auto Scan processa seus resultados, salva um resultado JSON para cada tela - junto com um resumo e um relatório HTML - em
AxeDevToolsMobileResults/, e opcionalmente faz o 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>"
}- Adicione
axe_config.jsonao bundle de destino do teste de interface no Xcode (Project Navigator > Add Files > Check the UI test target) - Adicione
axe_config.jsonpara.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
O Auto Scan gera alguns arquivos diferentes ao final de cada execução de teste, incluindo um relatório HTML autônomo que inclui capturas de tela, dados de hierarquia de visualização e informações detalhadas sobre problemas. Todos os arquivos são salvos no diretório AxeDevToolsResults diretório.
| Arquivo | Formato |
|---|---|
AxeDevToolsSummary_<epoch>.txt |
Resumo de texto (igual à saída do console) |
AxeDevToolsReport_<epoch>.html |
Relatório HTML interativo com problemas por tela, detalhes dos elementos, níveis de impacto, hierarquia de visualização |
<bundleId-screenTitle>.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 carrega automaticamente 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 é false. Deve ser definido como true para habilitar a varredura automática. |
axeAppBundleId |
Texto | Obrigatório | ID do pacote do aplicativo em teste |
axeUploadResults |
Booleano | Opcional | Padrão é true. Defina como false para resultados locais apenas |
axeMobileApiKey |
Texto | Opcional | Uma chave de API do Axe DevTools Mobile de axe.deque.com é necessária se axeUploadResults=true |
axeProjectId |
Texto | Opcional | Um ID de projeto do Developer Hub é necessário se axeUploadResults=true |
axeServerUrl |
Texto | Opcional | URL de backend personalizada, apenas para nuvem privada/local |
axeOfflineLicenseKey |
Texto | Opcional | Necessário apenas para modo offline, quando axeUploadResults=false |
Se você estiver usando nossas ferramentas e preferir obter resultados em modo offline, deverá 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 {}). Aplicativos SwiftUI podem precisar de tratamento adicional.
Resolução de Problemas
- Nenhum resultado? Verifique se
axe_config.jsonestá incluído no pacote de alvo de teste de IU. Verifique Associação de Alvo no Inspetor de Arquivos 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
AutoScanmensagens no console.
O que vem a seguir?
Você pode ver seus resultados no Axe Developer Hub. Saiba 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 detalhado nos seus testes, veja Testes Direcionados com XCUITest.
