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

Identifica automáticamente problemas de accesibilidad mientras tus XCUITests existentes interactúan con tu aplicación

Not for use with personal data

Resumen

Conectándose a los gestos estándar de XCUITest, Auto Scan captura y analiza cada pantalla con la que interactúa tu suite de pruebas, sin necesidad de agregar llamadas individuales de escaneo, importaciones o modificaciones a tus pruebas.

Cómo funciona

  1. Cuando el paquete de pruebas comienza, Auto Scan carga axe_config.json y comienza a observar interacciones
  2. Después de cada interacción soportada, Auto Scan captura la pantalla actual
  3. Cuando el paquete de pruebas termina, Auto Scan procesa tus resultados, guarda un resultado JSON para cada pantalla - junto con un resumen y un reporte HTML - en AxeDevToolsMobileResults/, y opcionalmente sube los resultados al Developer Hub

Comenzando

  1. Crear axe_config.json:
{
  "axeAutoScanMode": true,
  "axeAppBundleId": "com.example.myapp",
  "axeMobileApiKey": "<API_KEY>",
  "axeProjectId": "<PROJECT_ID>",
  "axeHtmlReportPath": "~/my-custom-report-folder"
}
  1. Agregar axe_config.json al paquete de objetivos de prueba de UI en Xcode (Navegador de Proyecto > Agregar Archivos > Marcar el objetivo de prueba de UI)
  2. Agregar axe_config.json a .gitignore
  3. Ejecutar pruebas normalmente

Código de Ejemplo

El fragmento a continuación es un XCUITest estándar, sin código específico de 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
    }
}

Interpretación de Resultados

Resumen de la consola

Un resumen de consola similar al siguiente se imprime cuando finaliza la suite de pruebas:

----  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
----------------------------------------------------

Una ejecución limpia mostrará Axe Clean - 0 Issues Found 🎉 en la consola.

Archivos de salida

Al final de cada ejecución de prueba, Auto Scan genera un informe HTML autónomo que incluye capturas de pantalla, niveles de impacto e información detallada de los problemas. Los archivos de salida se guardan en un directorio de salida configurable por el usuario que puedes definir en axe_config.json. El axeHtmlReportPath acepta una ruta absoluta, o una ruta ~prefijada (por ejemplo, ~/my-axe-reports). Si se deja sin establecer, el directorio de salida predeterminado es ~/AxeDevToolsMobileResults.

Archivo Formato
AxeDevToolsMobile_<timestamp>.html Informe interactivo en HTML con problemas por pantalla, detalles de elementos, niveles de impacto
AxeDevToolsSummary_<timestamp>.txt Resumen de texto (igual que la salida de la consola)
axe-test-data/<APP-ID>-<SCREEN-TITLE>.json Resultado JSON individual - 1 para cada escaneo realizado

Soporte de Auto Scan

Reglas

Auto Scan ejecuta el conjunto completo de reglas de Axe con la excepción de ScreenOrientation, SupportsDynamicType, y todas las reglas experimentales. Encuentra información detallada sobre lo que verificamos en el Resumen de Reglas para iOS.

Developer Hub

Auto Scan sube automáticamente tus resultados al Axe Developer Hub. Si solo deseas guardar los resultados localmente, configura axeUploadResults a false.

Referencia de Configuración

Propiedades

Propiedad Tipo Requerido Detalles
axeAutoScanMode Booleano Requerido Por defecto es false. Debe configurarse como true para habilitar el escaneo automático.
axeAppBundleId Cadena Requerido ID de paquete de la aplicación en prueba
axeUploadResults Booleano Opcional Por defecto es true. Configure como false para resultados locales solamente
axeMobileApiKey Cadena Opcional Una clave API de Axe DevTools Mobile de axe.deque.com es requerido si axeUploadResults=true
axeProjectId Cadena Opcional Un ID de Proyecto de Developer Hub es requerido si axeUploadResults=true
axeServerUrl (En desuso) Cadena Opcional URL de backend personalizado (por ejemplo, axe.company.com), para nube privada/on-prem solamente
axeAccountUrl Cadena Opcional URL de backend personalizado (por ejemplo, axe.company.com), para nube privada/on-prem solamente
axeHtmlReportPath Cadena Opcional Directorio de salida configurable por el usuario para el informe y resumen en HTML. Por defecto es ~/AxeDevToolsMobileResults
axeOfflineLicenseKey Cadena Opcional Solo es necesario para modo sin conexión, cuando axeUploadResults=false
note

Si está utilizando nuestras herramientas y prefiere obtener resultados en modo sin conexión, deberá establecer un valor para el axeOfflineLicenseKey en lugar de axeMobileApiKey y axeProjectId.

Buenas Prácticas

Desactivar Animaciones

Obtén los resultados más precisos y completos de Auto Scan desactivando las animaciones. Esto asegurará que las pantallas estén completamente renderizadas al capturarlas.

Se requieren ambas piezas a continuación:

Configuración de prueba:

override func setUpWithError() throws {
    let app = XCUIApplication()
    app.launchArguments.append("-DisableAnimations")
    app.launch()
}

Ruta de lanzamiento de la aplicación (AppDelegate o @main):

if ProcessInfo.processInfo.arguments.contains("-DisableAnimations") {
    UIView.setAnimationsEnabled(false)
}

El argumento de lanzamiento pasa la bandera al proceso de la aplicación. La verificación del lado de la aplicación actúa sobre ella. Ninguno funciona por sí solo.

Nota: UIView.setAnimationsEnabled(false) no cubre las animaciones nativas de SwiftUI (withAnimation {}). Las aplicaciones SwiftUI pueden requerir una gestión adicional.

Resolución de Problemas

  • ¿No hay resultados? Verifica que axe_config.json esté incluido en el paquete de destino de prueba de UI. Revisa Membresía de Destino en el Inspector de Archivos de XCode.
  • ¿Ves resultados localmente, pero no en Developer Hub? La carga a Developer Hub falla si el tamaño de cualquier archivo de resultados es mayor de 20 MB, aunque todos los resultados se guardan localmente y se muestran en el informe HTML local.
  • Revisa los registros. Busca AutoScan mensajes en la consola.

¿Qué sigue?

Puedes ver tus resultados en Axe Developer Hub. Aprende cómo integrar Axe DevTools Mobile en tu pipeline CI/CD. ¿Estás usando una plataforma de pruebas basada en la nube? Aún puedes usar Axe DevTools Mobile para buscar problemas de accesibilidad: Integración con Plataformas en la Nube.

tip

Si necesitas más control granular en tus pruebas, consulta Pruebas Dirigidas con XCUITest.