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 por 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 |
Establécelo en 'AxeXCUITest' para utilizar el controlador con axe DevTools Mobile integrado para ejecutar escaneos de accesibilidad. |
| bundleId | String |
El identificador de paquete de la aplicación bajo prueba. Ten en cuenta que bundleId es parte del controlador XCUITest; puede que ya lo tengas configurado. |
Iniciar Escaneo Automático
Antes de comenzar tu suite de pruebas, inicia Escaneo Automático llamando al axeStartAutoScanSession API:
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 al axeStopAutoScanSession API para detener el Escaneo Automático y agregar y subir 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 están usando JavaScript. Consulta Ejemplos de Código de Escaneo Automático con XCUITest para ejemplos más completos en múltiples 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 Escaneo Automático 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
Escaneo Automático ejecuta el conjunto completo de normas de Axe con la excepción de ScreenOrientation, SupportsDynamicType, y todas las normas 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 al Axe Developer Hub. Si solo deseas guardar los resultados localmente, ajusta axeUploadResults a 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 | Subir resultados al panel (por defecto: 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 personalizada (p. ej. axe.company.com), para nube privada/en las instalaciones solamente |
axeAccountURL |
cadena | Sí | URL de backend personalizada (p. ej. axe.company.com), para nube privada/en las instalaciones solamente |
axeHtmlReportPath |
cadena | No | Directorio de salida configurable por el usuario para el informe HTML y resumen. Por defecto: ??? |
Proporcionar ya sea credenciales de la nube (axeMobileApiKey + axeProjectId+ axeAccountURL) o una axeOfflineLicenseKey.
Mejores prácticas
Desactivar animaciones
Obtenga los resultados más precisos y completos del escaneo automático desactivando las animaciones. Esto garantizará que las pantallas estén completamente renderizadas al ser capturadas. Agregue 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 en Developer Hub falla si el tamaño de cualquier archivo de resultados es mayor de 20MB, aunque todos los resultados se guardan localmente y se muestran en el informe HTML local.
- Revise los registros. Busque
AutoScanmensajes en 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. ¿Usas una plataforma de pruebas en la nube? Aún puedes usar Axe DevTools Mobile para buscar problemas de accesibilidad: Integrarse con plataformas en la nube.
