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 se inicia el paquete de pruebas, 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 informe HTML, en AxeDevToolsMobileResults/ y opcionalmente sube los resultados a 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. Agrega axe_config.json al paquete de prueba de la interfaz de usuario en Xcode (Project Navigator > Add Files > Check the UI test target)
  2. Añadir 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 sobre 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 con prefijo ~ (por ejemplo, ~/my-axe-reports). Si no se establece, 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 carga automáticamente tus resultados al Axe Developer Hub. Si solo deseas guardar los resultados localmente, configura axeUploadResults en false.

Referencia de Configuración

Propiedades

Propiedad Tipo Requerido Detalles
axeAutoScanMode Booleano Requerido Predeterminado a false. Debe configurarse en true para habilitar el escaneo automático.
axeAppBundleId Cadena Requerido ID de paquete de la aplicación en prueba
axeUploadResults Booleano Opcional Predeterminado a true. Configurar en false solo para resultados locales
axeMobileApiKey Cadena Opcional Se requiere una clave API de Axe DevTools Mobile de axe.deque.com si axeUploadResults=true
axeProjectId Cadena Opcional Si axeUploadResults=true, se requiere un ID de proyecto de Developer Hub
axeServerUrl (Obsoleto) Cadena Opcional URL de backend personalizado (ejemplo: axe.company.com), solo para nube privada/on-prem
axeAccountUrl Cadena Opcional URL de backend personalizado (ejemplo: axe.company.com), solo para nube privada/on-prem
axeHtmlReportPath Cadena Opcional Directorio de salida configurable por el usuario para el informe HTML y el resumen. Predeterminado a ~/AxeDevToolsMobileResults
axeOfflineLicenseKey Cadena Opcional Solo requerido para modo sin conexión, cuando axeUploadResults=false
note

Si estás usando nuestras herramientas y prefieres obtener los resultados en modo offline, establecerás 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 animaciones nativas de SwiftUI (withAnimation {}). Las aplicaciones SwiftUI pueden necesitar un manejo adicional.

Resolución de Problemas

  • ¿No hay resultados? Verifica que axe_config.json esté incluido en el paquete de prueba de la interfaz de usuario. 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 resultado es mayor a 20MB, aunque todos los resultados se guardan localmente y se muestran en el informe HTML local.
  • Revisa los registros. Busca mensajes de AutoScan 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. ¿Usas 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 un control más detallado en tus pruebas, consulta Pruebas Dirigidas con XCUITest.