Auto Scan

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Identifique automaticamente problemas de acessibilidade enquanto seus testes XCUITest existentes interagem com seu aplicativo

Not for use with personal data

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

  1. Quando o pacote de teste é iniciado, o Auto Scan carrega axe_config.json e começa a observar interações
  2. Após cada interação suportada, o Auto Scan captura a tela atual
  3. 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

  1. Crie axe_config.json:
{
  "axeAutoScanMode": true,
  "axeAppBundleId": "com.example.myapp",
  "axeMobileApiKey": "<API_KEY>",
  "axeProjectId": "<PROJECT_ID>",
  "axeHtmlReportPath": "~/my-custom-report-folder"
}
  1. Adicione axe_config.json ao alvo de teste de interface do usuário no Xcode (Project Navigator > Add Files > Check the UI test target)
  2. Adicione axe_config.json a .gitignore
  3. 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
note

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.json está 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 AutoScan no 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.

tip

Se você precisar de um controle mais granular em seus testes, consulte Testes Direcionados com XCUITest.