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 detallado en tus pruebas, consulta Pruebas dirigidas con Appium.
Cómo funciona
- Comienza Escaneo Automático al inicio de tu prueba
- Interactúa con tu aplicación: cada cambio de pantalla se captura automáticamente
- Detén escaneo automático: los resultados se procesan y se descargan a tu máquina local
Los resultados se guardan en build/AxeDevToolsMobileResults/ dentro de tu directorio del 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 parte del controlador UiAutomator2; es posible que ya lo tengas configurado. |
Iniciar autoescaneo
Antes de comenzar tu suite de pruebas, inicia el Escaneo Automático 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 autoescaneo
Justo antes de que finalice la suite de pruebas, llama a la API axeStopAutoScanSession 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 usan JavaScript. Consulta Ejemplos de código de autoescaneo con UIAutomator2 para 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 finaliza la sesión de Escaneo Automático, se genera un informe HTML en build/AxeDevToolsMobileResults/. El informe contiene violaciones de accesibilidad, aprobaciones y recomendaciones para cada pantalla capturada durante la sesión.
Soporte de autoescaneo
Reglas
Escaneo Automático ejecuta el conjunto completo de reglas de 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 el Descripción General de Reglas para Android.
Centro de Desarrolladores
Escaneo Automático sube automáticamente tus resultados a Axe Developer Hub. Si solo quieres guardar los resultados localmente, configura axeUploadResults a false.
Modo Sin Conexión
Si no tienes credenciales de la nube, usa la variante offline del controlador con una clave de licencia offline en su lugar. Instala @axe-devtools/axe-appium3-uiautomator2-driver-offline y pasa 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 personalizada (por ejemplo, axe.company.com), solo para nube privada/premisas |
axeAccountURL |
cadena | Sí | URL de backend personalizada (por ejemplo, axe.company.com), solo para nube privada/premisas |
axeHtmlReportPath |
cadena | No | Directorio de salida configurable por el usuario para el informe HTML y 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
Añade 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. ¿Utilizas una plataforma de pruebas en la nube? Aun así, puedes usar Axe DevTools Mobile para buscar problemas de accesibilidad. Consulta Pruebas automatizadas en plataformas en la nube con Appium.
