Escaneo Automático con el Controlador XCUITest
Resumen
Escaneo Automático captura automáticamente instantáneas de accesibilidad mientras navegas por tu aplicación iOS. En lugar de activar manualmente escaneos en cada pantalla, comienzas una sesión de escaneo automático, interactúas con la aplicación y finalizas la sesión para generar un informe.
Si necesitas un control más detallado en tus pruebas, consulta Pruebas Dirigidas con Appium.
Cómo funciona
- Inicia una sesión de escaneo automático (con tus credenciales)
- Navega a través de tu aplicación — las pantallas se escanean automáticamente
- Detén la sesión — se genera un informe HTML en
~/AxeDevToolsMobileResults/
Primeros pasos
Inicia el servidor de Appium como de costumbre:
appiumConfigura tus Pruebas
Desde tus scripts de automatización de Appium, añade las capacidades requeridas para Axe DevTools Mobile.
| Nombre | Tipo | Descripción |
|---|---|---|
| automationName | String |
Configura en 'AxeXCUITest' para utilizar el controlador con Axe DevTools Mobile integrado para ejecutar escaneos de accesibilidad. |
| bundleId | String |
El identificador del paquete de la aplicación en prueba. Ten en cuenta que bundleId es parte del controlador XCUITest; es posible que ya lo tengas configurado. |
Iniciar Escaneo Automático
Antes de iniciar tu suite de pruebas, inicia el Auto Scan llamando a la API axeStartAutoScanSession:
beforeAll(async () => { // Start auto scan
await driver.executeScript('mobile: axeStartAutoScanSession', [{
axeMobileApiKey: 'your-api-key',
axeProjectId: 'your-devhub-project-id',
axeAccountURL: 'https://axe.deque.com',
axeHtmlReportPath: './reports/accessibility' // optional (local dir; default 'build/AxeDevToolsMobileResults')
...
}]);
})Detener Escaneo Automático
Justo antes de que la suite de pruebas termine, llama a la API axeStopAutoScanSession para detener el Auto Scan y agregar y cargar los resultados.
// Stop - the report is pulled to axeHtmlReportPath on the local machine
const result = await driver.executeScript('mobile: axeStopAutoScanSession');
// result.localDirectory -> local directory the report was saved intoLos fragmentos de código anteriores utilizan JavaScript. Consulta Ejemplos de Código de Escaneo Automático con XCUITest para ejemplos más completos en varios lenguajes de programación.
Interpretación de Resultados
Resumen de consola
Un resumen de consola similar al siguiente se imprime cuando la suite de pruebas finaliza:
---- 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
Cuando la sesión de Auto Scan se detiene, se genera un informe HTML en ~/AxeDevToolsMobileResults/. El informe contiene violaciones de accesibilidad, aprobaciones y recomendaciones para cada pantalla capturada durante la sesión.
Soporte de Escaneo Automático
Normas
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 Normas para iOS.
Centro de Desarrollo
Auto Scan carga automáticamente tus resultados en Axe Developer Hub. Si solo deseas guardar los resultados localmente, establece axeUploadResults en false.
Modo sin conexión
Si no tienes credenciales de la nube, usa una clave de licencia sin conexión en su lugar:
// JavaScript example
await driver.execute('mobile: axeStartAutoScanSession', {
axeOfflineLicenseKey: 'YOUR_OFFLINE_LICENSE_KEY'
});
// ... navigate through the app ...
await driver.execute('mobile: axeStopAutoScanSession', {});Referencia de configuración
Propiedades
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
axeUploadResults |
Booleano | Opcional | Cargar resultados al panel de control (predeterminado: true) |
axeMobileApiKey |
Cadena | Requerido* | Clave API para escaneo basado en la nube |
axeProjectId |
Cadena | Opcional | ID de proyecto para organizar resultados |
axeOfflineLicenseKey |
Cadena | Requerido* | Clave de licencia para modo sin conexión (alternativa a las credenciales de la nube) |
axeServerUrl (Obsoleto) |
cadena | Sí | URL de backend personalizado (por ejemplo, axe.company.com), solo para nube privada/en las instalaciones |
axeAccountURL |
cadena | Sí | URL de backend personalizado (por ejemplo, axe.company.com), solo para nube privada/en las instalaciones |
axeHtmlReportPath |
cadena | No | Directorio de salida configurable por el usuario para el informe HTML y el resumen. Predeterminado a ??? |
Proporciona ya sea credenciales de nube (axeMobileApiKey + axeProjectId + axeAccountURL) o un axeOfflineLicenseKey.
Mejores prácticas
Desactivar animaciones
Obtén los resultados más precisos y completos de Auto Scan desactivando la animación. Esto garantizará que las pantallas estén completamente renderizadas cuando se capturan. Agrega lo siguiente bajo capabilities:
capabilities: {
// ...existing capabilities
'appium:reduceMotion': true, // enables iOS "Reduce Motion" accessibility setting
}Solución de problemas
- ¿Ves resultados localmente, pero no en Developer Hub? La carga al Developer Hub falla si el tamaño de alguno de los archivos de resultados supera los 20MB, aunque todos los resultados todavía se guardan localmente y se muestran en el informe HTML local.
- Revise 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 de CI/CD. ¿Utilizas una plataforma de pruebas basada en la nube? Aún puedes usar Axe DevTools Mobile para identificar problemas de accesibilidad: Integrarse con plataformas en la nube.
