Analyse Automatique
Identifiez automatiquement les problèmes d'accessibilité à mesure que vos XCUITests existants interagissent avec votre application
Aperçu
En s'intégrant aux gestes standard de XCUITest, Analyse Automatique capture et scanne chaque écran avec lequel votre suite de tests interagit, sans besoin d'ajouter des appels de scan individuels, d'importations ou de modifications à vos tests.
Comment cela fonctionne
- Lorsque le test bundle démarre, Auto Scan charge
axe_config.jsonet commence à observer les interactions - Après chaque interaction prise en charge, Analyse Automatique capture l'écran actuel
- Lorsque le test bundle se termine, Auto Scan traite vos résultats, enregistre un résultat JSON pour chaque écran - ainsi qu'un résumé et un rapport HTML - dans
AxeDevToolsMobileResults/, et télécharge éventuellement les résultats sur le Developer Hub
Commencer
- Créer
axe_config.json:
{
"axeAutoScanMode": true,
"axeAppBundleId": "com.example.myapp",
"axeMobileApiKey": "<API_KEY>",
"axeProjectId": "<PROJECT_ID>",
"axeHtmlReportPath": "~/my-custom-report-folder"
}- Ajoutez
axe_config.jsonau bundle cible de test UI dans Xcode (Project Navigator > Add Files > Cochez l'objectif de test UI) - Ajoutez
axe_config.jsonà.gitignore - Exécuter les tests normalement
Exemple de code
L'extrait ci-dessous est un XCUITest standard, sans code spécifique à Analyse Automatique :
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
}
}Interprétation des résultats
Résumé console
Un résumé console semblable à ce qui suit est imprimé lorsque la suite de tests se termine :
---- 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
----------------------------------------------------Une exécution propre affichera Axe Clean - 0 Issues Found 🎉 dans la console.
Fichiers de sortie
À la fin de chaque exécution de test, Auto Scan génère un rapport HTML autonome qui inclut des captures d'écran, des niveaux d'impact et des informations détaillées sur les problèmes. Les fichiers de sortie sont enregistrés dans un répertoire de sortie configurable par l'utilisateur que vous pouvez définir dans axe_config.json. Le axeHtmlReportPath accepte un chemin absolu, ou un chemin préfixé par ~ (par exemple ~/my-axe-reports). Si non défini, le répertoire de sortie par défaut est ~/AxeDevToolsMobileResults.
| Fichier | Format |
|---|---|
AxeDevToolsMobile_<timestamp>.html |
Rapport HTML interactif avec problèmes par écran, détails des éléments, niveaux d'impact |
AxeDevToolsSummary_<timestamp>.txt |
Résumé textuel (identique à la sortie console) |
axe-test-data/<APP-ID>-<SCREEN-TITLE>.json |
Résultat JSON individuel - 1 pour chaque analyse effectuée |
Support Analyse Automatique
Règles
Auto Scan exécute l'ensemble complet de règles Axe à l'exception de ScreenOrientation, SupportsDynamicType, et toutes les règles expérimentales. Trouvez des informations détaillées sur ce que nous vérifions dans le Aperçu des Règles pour iOS.
Developer Hub
Auto Scan télécharge automatiquement vos résultats sur Axe Developer Hub. Si vous souhaitez seulement enregistrer les résultats localement, définissez axeUploadResults sur false.
Référence de configuration
Propriétés
| Propriété | Type | Requis | Détails |
|---|---|---|---|
axeAutoScanMode |
Booléen | Requis | Par défaut sur false. Doit être défini sur true pour activer l'analyse automatique. |
axeAppBundleId |
Chaîne | Requis | ID du bundle de l'application testée |
axeUploadResults |
Booléen | Optionnel | Par défaut sur true. Définissez sur false pour des résultats locaux uniquement |
axeMobileApiKey |
Chaîne | Optionnel | Une clé API Axe DevTools Mobile de axe.deque.com est requise si axeUploadResults=true |
axeProjectId |
Chaîne | Optionnel | Un ID de projet de Developer Hub est requis si axeUploadResults=true |
axeServerUrl (Obsolète) |
Chaîne | Optionnel | URL backend personnalisée (par ex. axe.company.com), pour sur site/nuage privé seulement |
axeAccountUrl |
Chaîne | Optionnel | URL backend personnalisée (par ex. axe.company.com), pour sur site/nuage privé seulement |
axeHtmlReportPath |
Chaîne | Optionnel | Répertoire de sortie configurable par l'utilisateur pour le rapport HTML et le résumé. Par défaut sur ~/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
Chaîne | Optionnel | Requis uniquement pour mode hors ligne, lorsque axeUploadResults=false |
Si vous utilisez nos outils et préférez obtenir les résultats en mode hors ligne, vous devrez définir une valeur pour le axeOfflineLicenseKey au lieu de axeMobileApiKey et axeProjectId.
Bonnes pratiques
Désactiver les animations
Obtenez des résultats précis et complets avec Auto Scan en désactivant les animations. Cela garantit que les écrans sont entièrement rendus lors de la capture.
Les deux éléments ci-dessous sont requis :
Configuration du test :
override func setUpWithError() throws {
let app = XCUIApplication()
app.launchArguments.append("-DisableAnimations")
app.launch()
}Chemin de lancement de l'application (AppDelegate ou @main) :
if ProcessInfo.processInfo.arguments.contains("-DisableAnimations") {
UIView.setAnimationsEnabled(false)
}L'argument de lancement transmet le drapeau au processus de l'application. La vérification côté application agit en conséquence. Aucun ne fonctionne seul.
Remarque : UIView.setAnimationsEnabled(false) ne couvre pas les animations natives de SwiftUI (withAnimation {}). Les applications SwiftUI peuvent nécessiter un traitement supplémentaire.
Dépannage
- Pas de résultats ? Vérifiez que
axe_config.jsonest inclus dans le bundle cible de test UI. Vérifiez Statut de l'objectif dans l'inspecteur de fichiers de XCode. - Voir des résultats localement, mais pas dans Developer Hub ? Le téléchargement vers le Developer Hub échoue si la taille d'un fichier de résultat dépasse 20 Mo, mais tous les résultats sont toujours enregistrés localement et affichés dans le rapport HTML local.
- Vérifiez les journaux. Cherchez des messages
AutoScandans la console.
Quelle est la suite ?
Vous pouvez consulter vos résultats dans Axe Developer Hub. Découvrez comment intégrer Axe DevTools Mobile dans votre pipeline CI/CD. Vous utilisez une plateforme de test cloud ? Vous pouvez toujours utiliser Axe DevTools Mobile pour rechercher des problèmes d'accessibilité : Intégration avec les plateformes cloud.
Si vous avez besoin d'un contrôle plus granulaire dans vos tests, consultez Test ciblé avec XCUITest.
