Auto Scan
Identifica automáticamente problemas de accesibilidad mientras tus XCUITests existentes interactúan con tu aplicación
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
- Cuando se inicia el paquete de pruebas, Auto Scan carga
axe_config.jsony comienza a observar interacciones - Después de cada interacción soportada, Auto Scan captura la pantalla actual
- 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
- Crear
axe_config.json:
{
"axeAutoScanMode": true,
"axeAppBundleId": "com.example.myapp",
"axeMobileApiKey": "<API_KEY>",
"axeProjectId": "<PROJECT_ID>",
"axeHtmlReportPath": "~/my-custom-report-folder"
}- Agrega
axe_config.jsonal paquete de prueba de la interfaz de usuario en Xcode (Project Navigator > Add Files > Check the UI test target) - Añadir
axe_config.jsona.gitignore - 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 |
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.jsonesté 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
AutoScanen 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.
Si necesitas un control más detallado en tus pruebas, consulta Pruebas Dirigidas con XCUITest.
