Analyse Automatique
Identifiez automatiquement les problèmes d'accessibilité pendant que vos tests d'interface existants interagissent avec votre application
Aperçu
L'Analyse Automatique identifie automatiquement les problèmes d'accessibilité pendant que vos tests Espresso ou UIAutomator existants interagissent avec votre application, sans avoir besoin d'ajouter des appels de scan individuels ou de modifications à vos tests. L'Analyse Automatique surveille les changements d'écran et analyse chaque écran unique automatiquement.
Si vous avez besoin d'un contrôle plus précis dans vos tests, consultez Tests Ciblés.
Comment ça fonctionne
Notre plugin Gradle remplacera votre runner d'instrumentation JUnit par notre runner personnalisé. Cela nous permet d'observer votre suite de tests et de traiter vos résultats au moment approprié. Obtenez le plugin Gradle AxeDevToolsMobile.
Lorsque le test est terminé, Auto Scan traite vos résultats et enregistre un résultat JSON pour chaque écran ainsi qu'un rapport HTML autonome dans AxeDevToolsMobileResults, et télécharge éventuellement les résultats sur Developer Hub.
Commencer
-
Quelques valeurs doivent être définies pour configurer et authentifier les utilisateurs. Nous recommandons d'ajouter celles-ci comme variables d'environnement sur votre ordinateur et sur vos pipelines CI/CD pour garder vos clés sécurisées.
Groovy (
build.gradle) :axeDevTools { axeMobileApiKey = '' axeAutoScanMode = true axeProjectId = '' }Kotlin DSL (
build.gradle.kts) :axeDevTools { axeMobileApiKey = "" axeAutoScanMode = true axeProjectId = "" } -
Si vous utilisez nos outils et préférez obtenir les résultats en mode hors ligne, vous définirez une valeur pour le
axeOfflineLicenseKeyà la place deaxeMobileApiKeyetaxeProjectId.Groovy (
build.gradle) :axeDevTools { axeOfflineLicenseKey = '' axeAutoScanMode = true }Kotlin DSL (
build.gradle.kts) :axeDevTools { axeOfflineLicenseKey = "" axeAutoScanMode = true }
Ignorer les écrans lors de la numérisation
Par défaut, Auto Scan examine chaque écran unique de votre application pendant l'exécution de vos tests. Si certains écrans ne doivent pas être inclus dans la numérisation - par exemple, les écrans de connexion ou la navigation en dehors de l'application sous test - vous pouvez empêcher la numérisation de cette section en l'entourant de AxeAutoScan.skipScan. Auto Scan cesse de surveiller les changements d'écran pendant l'exécution de ce bloc, et reprend automatiquement lorsque le bloc se termine. Les écrans qui apparaissent à l'intérieur de ces blocs ne sont jamais numérisés.
Vous allez importer com.deque.mobile.devtools.productinterfaces.AxeAutoScan. L'exemple d'implémentation ci-dessous utilise Jetpack Compose, mais le comportement est le même dans les tests Espresso et UIAutomator :
import androidx.compose.ui.test.junit4.createAndroidComposeRule
import com.deque.mobile.devtools.productinterfaces.AxeAutoScan
import org.junit.Rule
import org.junit.Test
class AutoScanDemoTest {
@get:Rule
val composeTestRule = createAndroidComposeRule<MainActivity>()
@Test
fun homeLoggedIn() {
AxeAutoScan.skipScan {
// Navigation to Login screen
composeTestRule.onNodeWithText("Sign in").performClick()
// Username/password entry
composeTestRule.onNodeWithTag("username").performTextInput("test@example.com")
composeTestRule.onNodeWithTag("password").performTextInput("password")
// Submit form data
composeTestRule.onNodeWithText("Submit").performClick()
// Wait to return to Home screen
composeTestRule.waitUntil(timeoutMillis = 5_000) {
composeTestRule.onAllNodesWithTag("home_screen")
.fetchSemanticsNodes().isNotEmpty()
}
}
// Auto Scan starts again - after return to Home screen everything is captured
composeTestRule.onNodeWithTag("account_menu").performClick()
}
}Quelques éléments à noter concernant skipScan :
- La numérisation reprend même si une assertion à l'intérieur du bloc échoue. Auto Scan redémarrera avant que l'erreur ne se propage.
- Appeler
skipScanlorsque"axeAutoScanMode" = falseest sans danger ; il n'est pas nécessaire de protéger l'appel ou de conserver deux versions d'un test.
Interprétation des Résultats
Résumé de la Console
Une fois la suite de tests terminée, vous pouvez voir un post-traitement dans vos journaux Gradle, suivi d'un résumé.
HTML rule report written to: /Users/user/Documents/workspace/android/project-name/app/build/reports/AxeDevToolsMobileResults/AxeDevToolsMobile_1773882427726.html
---- 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
---------------------------------------------------Fichiers de Sortie
Auto Scan génère un rapport HTML autonome avec des captures d'écran, des données de hiérarchie de vue et des informations détaillées sur les problèmes. Les résultats JSON individuels sont enregistrés dans le répertoire axe-test-data. Tous les fichiers sont enregistrés dans le répertoire app/build/reports/AxeDevToolsMobileResults.
| Fichier | Format |
|---|---|
AxeDevToolsReport.html |
Rapport HTML interactif avec problèmes par écran, détails des éléments, niveaux d'impact |
<timestamp>-axe-node-hierarchy.json |
Résultat JSON individuel - 1 pour chaque analyse effectuée |
Si vous préférez enregistrer vos résultats dans un répertoire spécifique, vous pouvez l'indiquer dans le bloc de configuration du plugin de votre fichier build.gradle.
axeDevTools {
axeMobileApiKey = "AXE_API_KEY"
axeProjectId = "DEVHUB_PROJECT_ID"
axeAutoScanMode = true
axeHtmlReportPath =
"User/Desktop/reports/AxeDevToolsMobileResults"
axeAccountUrl = "https://axe.deque.com"
Support d'Analyse Automatique
Règles
Auto Scan exécute l'ensemble complet de règles Axe à l'exception de ScreenOrientation. Trouvez des informations détaillées sur ce que nous vérifions dans le Vue d'ensemble des règles pour Android.
Centre de développement
Auto Scan télécharge automatiquement vos résultats sur Axe Developer Hub. Si vous souhaitez uniquement enregistrer les résultats localement, réglez 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 réglé sur true pour activer l'analyse automatique. |
axeMobileApiKey |
Chaîne | Requis* | Une clé API Axe DevTools Mobile de axe.deque.com est requis si axeUploadResults=true |
axeOfflineLicenseKey |
Chaîne | Requis* | Requis uniquement pour mode hors ligne, lorsque axeUploadResults=false |
axeUploadResults |
Booléen | Optionnel | Par défaut sur true. Régler sur false uniquement pour les résultats locaux. |
axeProjectId |
Chaîne | Optionnel | Un ID de projet de Developer Hub est requis si axeUploadResults=true |
axeServerUrl (Obsolète) |
Chaîne | Optionnel | URL de backend personnalisé (par ex. axe.company.com), uniquement pour sur site/nuage privé |
axeAccountUrl |
Chaîne | Optionnel | URL de backend personnalisé (par ex. axe.company.com), uniquement pour sur site/nuage privé |
axeHtmlReportPath |
Chaîne | Optionnel | Répertoire de sortie configurable par l'utilisateur pour le rapport HTML et le résumé. Par défaut sur build/reports/AxeDevToolsMobileResults |
axeOfflineLicenseKey |
Chaîne | Optionnel | Requis uniquement pour mode hors ligne, lorsque axeUploadResults=false |
* Remarque : Vous devez définir soit le axeMobileApiKey soit le axeOfflineLicenseKey dans votre configuration. La clé API est requise sauf en mode hors ligne. La clé de licence hors ligne est requise uniquement pour le mode hors ligne.
Meilleures Pratiques
Désactiver les Animations
Obtenez les résultats les plus précis et complets avec Auto Scan en désactivant l'animation. Cela garantira que les écrans sont entièrement rendus lorsqu'ils sont capturés. Si les animations ne sont pas désactivées, vous pouvez remarquer :
- Des numérisations en double que vous pensez avoir dû être éliminées
- Des numérisations avec des captures d'écran montrant un état transitoire
- Un taux de capture d'écran significativement inférieur à ce que vous pourriez attendre
Dépannage
Si vous ne voyez pas apparaître de numérisations dans Developer Hub, vous devriez vérifier vos journaux pour trouver des indices de ce qui pourrait mal fonctionner ou passer en revue cette liste de vérification.
- Vérifiez que
axeAutoScanMode=truedans votre bloc de configurationaxeDevTools - Vérifiez que vous avez pu obtenir notre dépendance depuis Maven Central
- Assurez-vous d'utiliser la bonne variable pour votre clé API/licence et ID de projet
- Vérifiez la taille de vos fichiers de sortie. Le téléversement 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.
Et ensuite ?
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 basée sur le cloud ? Vous pouvez toujours utiliser Axe DevTools Mobile pour rechercher des problèmes d'accessibilité : Intégrer avec des plateformes cloud.
