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 bundle de test commence, Analyse Automatique charge
axe_config.jsonet commence à observer les interactions - Après chaque interaction prise en charge, Analyse Automatique capture l'écran actuel
- Lorsque le bundle de test se termine, Analyse Automatique 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 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"
}- Ajouter
axe_config.jsonau bundle cible des tests UI dans Xcode (Project Navigator > Add Files > Check the UI test target) - Ajouter
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
----------------------------------------------------Un passage réussi affichera Axe Clean - 0 Issues Found 🎉 dans la console.
Fichiers de sortie
À la fin de chaque 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 laissé 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
Analyse Automatique exécute l'ensemble complet de règles Axe à l'exception de ScreenOrientation, SupportsDynamicTypeet toutes les règles expérimentales. Trouvez des informations détaillées sur ce que nous vérifions dans l' Aperçu des Règles pour iOS.
Developer Hub
Analyse Automatique télécharge automatiquement vos résultats sur Axe Developer Hub. Si vous souhaitez uniquement enregistrer les résultats localement, définissez axeUploadResults à false.
Référence de configuration
Propriétés
| Propriété | Type | Requis | Détails |
|---|---|---|---|
axeAutoScanMode |
Booléen | Requis | Par défaut à 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 à true. Définir sur false pour les résultats locaux uniquement |
axeMobileApiKey |
Chaîne | Optionnel | Une clé API Axe DevTools Mobile de axe.deque.com est requis 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 exemple axe.company.com), pour sur site/nuage privé uniquement |
axeAccountUrl |
Chaîne | Optionnel | URL backend personnalisée (par exemple axe.company.com), pour sur site/nuage privé uniquement |
axeHtmlReportPath |
Chaîne | Optionnel | Répertoire de sortie configurable par l'utilisateur pour le rapport HTML et le résumé. Par défaut à ~/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 devez 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 du test UI. Vérifiez le 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 Developer Hub échoue si la taille d'un fichier de résultat dépasse 20 Mo, bien que tous les résultats soient toujours enregistrés localement et affichés dans le rapport HTML local.
- Vérifiez les journaux. Cherchez les
AutoScanmessages dans la console.
Quelle est la suite ?
Vous pouvez consulter vos résultats dans Axe Developer Hub. Apprenez comment intégrer Axe DevTools Mobile dans votre pipeline CI/CD. Utilisez-vous 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.
