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 as interações
  2. Após cada interação suportada, o Auto Scan captura a tela atual
  3. 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

  1. Crie axe_config.json:
{
  "axeAutoScanMode": true,
  "axeAppBundleId": "com.example.myapp",
  "axeMobileApiKey": "<API_KEY>",
  "axeProjectId": "<PROJECT_ID>"
}
  1. Adicione axe_config.json ao bundle de destino do teste de interface no Xcode (Project Navigator > Add Files > Check the UI test target)
  2. Adicione axe_config.json para .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

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
note

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

tip

Se você precisar de um controle mais detalhado nos seus testes, veja Testes Direcionados com XCUITest.