Autoescaneo con el controlador UIAutomator2
Descripción general
El autoescaneo monitorea continuamente tu aplicación Android para detectar problemas de accesibilidad mientras se ejecutan las pruebas. En lugar de escanear una pantalla a la vez, captura instantáneas de accesibilidad en cada cambio de interfaz y las procesa todas al final.
Si necesitas un control más granular en tus pruebas, consulta Pruebas dirigidas con Appium.
Cómo funciona
- Comienza el autoescaneo al inicio de tu prueba
- Interactúa con tu aplicación: cada cambio de pantalla se captura automáticamente
- Detén el autoescaneo: los resultados se procesan y se transfieren a tu máquina local
Los resultados se guardan en build/AxeDevToolsMobileResults/ en el directorio de tu proyecto.
Cómo empezar
Inicia el servidor de Appium como de costumbre:
appiumConfigura tus pruebas
Desde tus scripts de automatización Appium, añade las capacidades requeridas para Axe DevTools Mobile.
| Nombre | Tipo | Descripción |
|---|---|---|
| automationName | String |
Configurar en 'AxeUiAutomator2' para utilizar el controlador con Axe DevTools Mobile integrado para escaneos de accesibilidad. |
| appPackage | String |
El nombre del paquete de la aplicación en prueba. Ten en cuenta que appPackage es una parte del controlador UiAutomator2; es posible que ya lo tengas configurado. |
Iniciar autoescaneo
Antes de iniciar tu suite de pruebas, inicia el autoescaneo llamando a la 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 autoescaneo
Justo antes de que la suite de pruebas termine, llama a la axeStopAutoScanSession API para detener el autoescaneo 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 usan JavaScript. Consulta Ejemplos de código de autoescaneo con UIAutomator2 para ver ejemplos más completos en múltiples lenguajes de programación.
Interpretando los resultados
Resumen de consola
Una vez que la suite de pruebas termina, puedes encontrar un resumen en la ventana de consola donde se está ejecutando el servidor de Appium.
---- Axe DevTools Mobile Accessibility Summary ----
Scan 1:
Screen: Home Page
Issues: 6
Issues by rule:
- TouchSizeWcag: 3
- LabelAtFront: 1
- LabelInName: 1
- FocusableText: 1
Scan 35:
Screen: Wikipedia Alpha
Issues: 5
Issues by rule:
- LabelAtFront: 1
- LabelInName: 1
- TouchTargetSpacing: 1
- TouchSizeWcag: 1
- ColorContrast: 1
Total Scans: 35
❌ Total Issues: 123
---------------------------------------------------Archivos de salida
Cuando la sesión de autoescaneo se detiene, se genera un reporte HTML en build/AxeDevToolsMobileResults/. El reporte contiene violaciones de accesibilidad, aprobados y recomendaciones para cada pantalla capturada durante la sesión.
Soporte de autoescaneo
Reglas
El autoescaneo ejecuta el conjunto completo de reglas Axe con la excepción de ScreenOrientation y todas las reglas experimentales (por ejemplo, NestedActiveControl, NestedElementName, InaccessibleAction). Encuentra información detallada sobre lo que revisamos en la Descripción General de Reglas para Android.
Centro de Desarrolladores
Auto Scan carga automáticamente tus resultados en Axe Developer Hub. Si solo deseas guardar los resultados localmente, configura axeUploadResults a false.
Modo Sin Conexión
Si no tienes credenciales de la nube, utiliza la variante sin conexión del controlador con una clave de licencia para el modo sin conexión. Instala @axe-devtools/axe-appium3-uiautomator2-driver-offline y pasa en axeOfflineLicenseKey al iniciar la sesión.
Referencia de Configuración
Propiedades
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
axeUploadResults |
booleano | No | Sube los resultados al Centro de Desarrolladores |
axeMobileApiKey |
cadena | Sí* | Tu clave API de Axe DevTools Mobile |
axeProjectId |
cadena | No | ID de proyecto para organizar resultados |
axeOfflineLicenseKey |
cadena | Sí* | Clave de licencia para el modo sin conexión (alternativa a las credenciales de la nube) |
axeServerUrl (Obsoleto) |
cadena | Sí | URL de backend personalizable (por ejemplo, axe.company.com), para nube privada/premisas solamente |
axeAccountURL |
cadena | Sí | URL de backend personalizable (por ejemplo, axe.company.com), para nube privada/premisas solamente |
axeHtmlReportPath |
cadena | No | Directorio de salida configurable por el usuario para el informe HTML y el resumen. Por defecto es build/AxeDevToolsMobileResults |
*Proporciona ya sea credenciales de la nube (axeMobileApiKey + axeProjectId + axeAccountURL) o un axeOfflineLicenseKey.
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 cuando se capturen. Si no se desactivan las animaciones, es posible que notes:
- Escaneos duplicados que crees que debieron haber sido descartados
- Escaneos con capturas de pantalla que muestran un estado transitorio
- Una tasa de captura de pantalla significativamente menor de la que podrías esperar
Agregue lo siguiente bajo capabilities:
capabilities: {
// ...existing capabilities
'appium:disableWindowAnimation': true, // disables window animations
}Solución de problemas
Si no ves que aparezcan escaneos en Developer Hub, deberías revisar tus registros para obtener pistas sobre lo que podría estar mal o seguir esta lista de verificación.
- Asegúrate de estar usando la variable correcta para tu clave API/Licencia y el ID de proyecto
- Revisa el tamaño de tus archivos de salida. La carga en el Developer Hub falla si el tamaño de cualquier archivo de resultados es mayor a 20 MB, aunque todos los resultados aún se guardan localmente y se muestran en el informe HTML local.
¿Qué sigue?
Puedes ver tus resultados en Axe Developer Hub. Aprende cómo integrar Axe DevTools Mobile en tu pipeline CI/CD. ¿Estás utilizando una plataforma de pruebas basada en la nube? Aún puedes usar Axe DevTools Mobile para buscar problemas de accesibilidad. Consulta Pruebas automatizadas en plataformas en la nube con Appium.
