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 el paquete de pruebas comienza, 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 reporte HTML - en
AxeDevToolsMobileResults/, y opcionalmente sube los resultados al Developer Hub
Comenzando
- Crear
axe_config.json:
{
"axeAutoScanMode": true,
"axeAppBundleId": "com.example.myapp",
"axeMobileApiKey": "<API_KEY>",
"axeProjectId": "<PROJECT_ID>",
"axeHtmlReportPath": "~/my-custom-report-folder"
}- Agregar
axe_config.jsonal paquete de objetivos de prueba de UI en Xcode (Navegador de Proyecto > Agregar Archivos > Marcar el objetivo de prueba de UI) - Agregar
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 de 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 ~prefijada (por ejemplo, ~/my-axe-reports). Si se deja sin establecer, 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 sube automáticamente tus resultados al Axe Developer Hub. Si solo deseas guardar los resultados localmente, configura axeUploadResults a false.
Referencia de Configuración
Propiedades
| Propiedad | Tipo | Requerido | Detalles |
|---|---|---|---|
axeAutoScanMode |
Booleano | Requerido | Por defecto es false. Debe configurarse como true para habilitar el escaneo automático. |
axeAppBundleId |
Cadena | Requerido | ID de paquete de la aplicación en prueba |
axeUploadResults |
Booleano | Opcional | Por defecto es true. Configure como false para resultados locales solamente |
axeMobileApiKey |
Cadena | Opcional | Una clave API de Axe DevTools Mobile de axe.deque.com es requerido si axeUploadResults=true |
axeProjectId |
Cadena | Opcional | Un ID de Proyecto de Developer Hub es requerido si axeUploadResults=true |
axeServerUrl (En desuso) |
Cadena | Opcional | URL de backend personalizado (por ejemplo, axe.company.com), para nube privada/on-prem solamente |
axeAccountUrl |
Cadena | Opcional | URL de backend personalizado (por ejemplo, axe.company.com), para nube privada/on-prem solamente |
axeHtmlReportPath |
Cadena | Opcional | Directorio de salida configurable por el usuario para el informe y resumen en HTML. Por defecto es ~/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
Cadena | Opcional | Solo es necesario para modo sin conexión, cuando axeUploadResults=false |
Si está utilizando nuestras herramientas y prefiere obtener resultados en modo sin conexión, deberá establecer 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 las animaciones nativas de SwiftUI (withAnimation {}). Las aplicaciones SwiftUI pueden requerir una gestión adicional.
Resolución de Problemas
- ¿No hay resultados? Verifica que
axe_config.jsonesté incluido en el paquete de destino de prueba de UI. 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 resultados es mayor de 20 MB, aunque todos los resultados se guardan localmente y se muestran en el informe HTML local.
- Revisa los registros. Busca
AutoScanmensajes en la consola.
¿Qué sigue?
Puedes ver tus resultados en Axe Developer Hub. Aprende cómo integrar Axe DevTools Mobile en tu pipeline CI/CD. ¿Estás usando 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 más control granular en tus pruebas, consulta Pruebas Dirigidas con XCUITest.
