Notes de mise à jour d'Axe DevTools Mobile du 16 juillet 2025
16 juillet 2025
Versions des composants
Android
- SDK Android (axe-devtools-android v7.0.1)
- Analyseur Android (Axe Accessibility Analyzer v2.0.1)
- Pilote Appium Android (axe-appium-uiautomator2-driver v1.4.3)
- (Dérivé de UiAutomator2 v4.2.4)
Comment mettre à jour : SDK Android, Analyseur Android, Pilote Appium Android
Corrections
- Correction d'un problème avec la règle d'orientation de l'écran, afin que les captures d'écran affichent la même orientation que celle initialisée lors de l'analyse
- Résolution d'un problème avec les captures d'écran des analyses Appium, afin qu'elles puissent être consultées sur le tableau de bord mobile et dans les rapports HTML générés.
Problèmes connus
Si vous rencontrez l'un des problèmes ci-dessous, veuillez nous contacter à helpdesk@deque.com ou support.deque.com. Nous pourrons alors vous informer une fois résolu ou d'une solution de contournement identifiée si aucune n'est répertoriée.
- Les tests automatisés d'Axe DevTools Mobile fonctionnent sur les applications iOS natives, Android natives et React Native. Veuillez contacter votre représentant Deque pour des solutions de test d'accessibilité adaptées à votre pile technologique.
- Bien que vous puissiez obtenir certains résultats à partir de vues web ou de PDF rendus, nous recommandons fortement d'effectuer des tests en utilisant Axe DevTools for Web ou Axe Monitor pour les tests d'accessibilité web les plus complets.
iOS
Color Contrast rule does not run when text and background colors are the same
Our Color Contrast rule depends on Machine Learning to detect text, which ensures that the text being scanned is visible to users of your application. In cases where the text contained in a view is the same color as the background, our Machine Learning algorithm is unable to detect if any text is present, so the Color Contrast rule does not run on this view.
Impossible d'exécuter des analyses sur des appareils physiques avec iOS Analyzer 1.4.7
Un paramètre de configuration dans l'iOS Analyzer 1.4.7 empêche les analyses de s'exécuter, renvoyant le message "Test Failed". Pour exécuter des analyses sur un appareil physique, mettez à jour vers le dernier projet iOS Analyzer.
Erreur dans le projet Analyzer & test par ID de bundle en 2.8.1
La fonctionnalité de test d'une application par identifiant de bundle a été rompue dans la version 2.8.1, ce qui a entraîné une erreur intitulée "No target application path specified via test configuration: ...". Mettez à jour vers la 2.8.2 ou la dernière version pour résoudre l'erreur. Mettez à jour vers la dernière version dans le projet iOS Analyzer.
Erreur "Impossible de sérialiser AxeResult" dans le projet Analyzer v1.2.0 & SDK v2.12.3
L'analyse de certaines applications avec cette version de l'analyseur et du SDK entraînerait une erreur "Impossible de sérialiser AxeResult". Mettez à jour vers la dernière version pour résoudre l'erreur. Mettez à jour vers le dernier projet iOS Analyzer.Mettez à jour vers le dernier SDK iOS.
Faux positif : LabelInName et LabelAtFront dans les applications SwiftUI et multiplateformes
Certaines écrans peuvent signaler des faux positifs avec LabelInName et LabelAtFront en raison d'une propriété associatedText incorrecte trouvée (#1622)
La règle de prise en charge du type dynamique ne fonctionne pas avec le simulateur iOS 15 Pro
Un problème affecte le simulateur iPhone 15 Pro qui empêche la règle de prise en charge du type dynamique de s'exécuter. Si vous êtes inscrit à la règle de prise en charge du type dynamique, vous ne pourrez pas la tester en utilisant un simulateur iPhone 15 Pro. Un bug a été signalé à Apple.
Règles contre les contrôles imbriqués
En examinant une amélioration de nos règles, nous avons découvert que dans XCTest, les contrôles imbriqués ne sont pas retournés dans l'arbre d'accessibilité. Un bug a été signalé à Apple. (#1110)
La règle du nom de l'ImageView nécessite de revoir les résultats pour les applications UIKit
Dans les applications UIKit, une image sans `accessibilityLabel` n'est pas focalisable par défaut avec les technologies d'assistance.
Les propriétés que nous utilisons pour vérifier la focalisation depuis Apple peuvent être inexactes lorsqu'un `accessibilityIdentifier` est défini sur l'image. En raison de ce comportement imprévu, les résultats des problèmes de nom d'ImageView dans les applications UIKit seront signalés comme nécessitant une révision. Un rapport de bug a été soumis à Apple. (#1633)
Faux positif : Dans la vue de défilement, Label In Name, Label à l'avant, et v2.11.0 Image View Name & ActiveControlName
Nous travaillons activement sur des correctifs pour les faux positifs suivants et mettrons à jour cette liste à mesure que les correctifs sont publiés.
In Scroll View
Peut signaler des problèmes pour le texte dans les éléments se comportant comme des bannières. Pour rendre ces éléments accessibles à ceux qui nécessitent un texte plus grand, utilisez UILargeContentViewer. (#622)
v2.11.0 Image View Name & Active Control Name
Si un UIImageView a un `accessibilityIdentifier` défini mais n'est pas focalisable par VoiceOver, et qu'il a des contrôles focalisables imbriqués, ActiveControlName peut signaler un faux positif sur l'UIImageView. Supprimer le `accessibilityIdentifier` résout le problème. Un bug a été signalé à Apple. (#1633)
Label In Name and Label At Front
Ces deux règles recherchent le libellé visible d'un contrôle parmi les éléments à proximité pour aider à déterminer le statut de la règle. Dans certaines hiérarchies de vue, le texte incorrect à proximité peut être détecté, entraînant l'échec de ces règles. (#1622)
Android
La règle de contraste des couleurs ne s'exécute pas lorsque les couleurs du texte et de l'arrière-plan sont identiques
Notre règle de contraste des couleurs dépend de l'apprentissage automatique pour détecter le texte, ce qui garantit que le texte analysé est visible pour les utilisateurs de votre application. Dans les cas où le texte contenu dans une vue est de la même couleur que l'arrière-plan, notre algorithme d'apprentissage automatique ne peut pas détecter si un texte est présent, de sorte que la règle de contraste des couleurs ne s'exécute pas sur cette vue.
EditTextName sur Android 7 (SDK 24-25)
Les applications écrites en XML qui utilisent la fonctionnalité de texte suggestif peuvent voir des faux positifs avec la EditTextName règle. Le texte suggestif n'a été introduit qu'à partir d'Android 8 (SDK 26). Utiliser cet élément dans votre application XML assignera le texte suggestif à la valeur du champ de saisie de texte. Les versions plus récentes d'Android sont mieux équipées pour rendre cette expérience accessible.
Pour surmonter ce problème, notre première recommandation est d'exécuter vos tests sur des versions plus récentes d'Android. Si l'accessibilité de l'application sur des versions antérieures d'Android est toutefois importante, vous pourriez envisager d'éviter l'utilisation de la hintText fonctionnalité, car elle n'est pas officiellement prise en charge.
Vues cachées Android retournant des résultats
Vous pouvez voir des résultats pour des vues qui sont masquées derrière d'autres vues sur l'écran. Ces vues cachées ne sont pas disponibles pour les technologies d'assistance, mais Axe DevTools Mobile les signale tout de même comme des problèmes.
Nous travaillons sur une solution pour ce problème complexe. En attendant, si TalkBack ne peut pas atteindre ces vues, vous pouvez ignorer les problèmes correspondants. Ils ne nécessitent pas de correction pour garantir l'accessibilité.
Erreur lors de l'exécution de la détection de texte avec ML Kit
La détection de texte avec ML Kit est requise dans de nombreuses règles d'Axe DevTools Mobile pour garantir l'exactitude des résultats. La bibliothèque ML Kit devrait être importée automatiquement lors de la référence à Axe DevTools Mobile dans vos tests automatisés Espresso ou UIAutomator. Dans certains cas cependant, l'importation automatique ne se produit pas et vous verrez l'erreur suivante dans le logcat :
Axe DevTools Android: Error while running mlKit Text Detection: MlKitContext has not been initialized.
Pour résoudre ce problème, vous devez importer manuellement la bibliothèque ML Kit dans votre projet. Dans le build.gradle fichier de votre application, ajoutez ce qui suit sous les dépendances :
implementation 'com.google.mlkit:text-recognition:16.0.1'
Espacement de la cible tactile et Jetpack Compose
La règle d'espacement de la cible tactile ne s'exécute actuellement sur aucun composant de curseur écrit en Jetpack Compose. Aucune action ne peut être entreprise pour le moment. Cependant, une solution est bientôt disponible !
Erreur lors de l'enregistrement des résultats localement sur API 30
Sur Android API 30, l'un des emplacements auxquels nous tentons de sauvegarder les résultats localement présente une erreur de permissions. Le résultat sera tout de même enregistré sous forme de fichier JSON malgré l'affichage de cette erreur. L'erreur peut être supprimée en commentant le code dans le bloc suivant :
def clearDirectoryTask = task('clearDirectoryTask', type: Exec, group: 'reporting') {
executable "${android.getAdbExecutable().toString()}"
args 'shell', 'rm', '-r', '/storage/emulated/0/Documents/AxeTestCases'
// finalizedBy {
// fetchAndroidFolderAxeReportsTask
// }
}
Please note that this code should only be commented out for API 30 as it will cause problems when saving locally for other API levels.
Détection du défilement sur les applications hybrides et multiplateformes
Dans certaines applications hybrides et multiplateformes, nous pouvons renvoyer des résultats inattendus lorsque des éléments d'une vue défilante sont partiellement hors écran. Pour tester un élément pour l'accessibilité, assurez-vous qu'il est entièrement visible à l'écran avant de procéder à l'analyse.
Analyzer App : le bouton d'action flottant disparaît
Introduite avec l'API 31 (Android 12), la possibilité de masquer les superpositions non-systèmes. Afin d'utiliser l'application Axe Analyzer, veuillez vous assurer que ce paramètre n'est pas activé. Si vous avez choisi d'utiliser cette fonctionnalité pour ses améliorations de sécurité, nous recommandons de la désactiver pour les versions internes de test où vous pouvez utiliser en toute sécurité des données de test et éliminer les préoccupations de sécurité de cette manière. Note: this setting does not affect Google's accessibility scanner app as it's considered a system overlay.
Pour utiliser l'application Axe Accessibility Analyzer, mettez à jour tous les appels à la méthode setHideOverlayWindows(true) à setHideOverlayWindows(false) sur les fenêtres d'activités affectées.
Capture d'écran manquante (boîte noire) dans le tableau de bord
Pour débloquer toutes les fonctionnalités d'Axe DevTools pour Mobile, assurez-vous que les captures d'écran sont activées. Nous recommandons d'activer les captures d'écran sur une version de débogage ou de test de votre application qui utilise des données fictives pour éviter les problèmes de sécurité. Consultez notre guide pour activer les captures d'écran dans les applications Android.
Crash lorsque `minifiedEnabled` est défini sur vrai
Si vous minifiez votre build, vous verrez un crash avec un journal d'erreurs indiquant qu'un adaptateur n'a pas pu être trouvé lors de la tentative de connexion à la bibliothèque Axe DevTools. Désactivez la minification pour vos builds de débogage avec Axe DevTools implémenté. (#729)
Les builds avec r8 activé génèrent une erreur
Un build avec r8 activé peut tenter de minifier la bibliothèque axeDevTools, ce qui entraîne une erreur similaire à :
Caused by: java.lang.NullPointerException: throw with null exception
at g.b.b.a$a.a(Unknown Source:1)
at g.b.b.a$a.a(Unknown Source:0)
at g.b.b.a.a(AccessToken.java:190)
To resolve this error add the following line to your ProGuard file to keep axeDevTools classes:keep class com.deque.** { *; }
Message d'erreur similaire à :
Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)
ou : No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?
Les API Compose sont obsolètes, veuillez utiliser les APIs agnostiques à la disposition pour continuer à recevoir des mises à jour. Si vous continuez à utiliser les API Compose et rencontrez une erreur du type `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)` ou `No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?`, veuillez vous référer à API Compose setTestTag.
Message du journal :MlKitContext has not been initialized
Si vous rencontrez ce message, certains résultats de règles peuvent ne pas être renvoyés comme prévu lorsque cette règle utilise l'intelligence artificielle. Les règles affectées incluent Contraste des couleurs, Texte focalisable et Nom de l'élément imbriqué. (#841)
MAUI : règle du nom du champ de texte
En raison des limitations de l'architecture de l'application MAUI dans l'écosystème Android, la règle du nom du champ de texte s'affichera comme Nécessite une révision dans le tableau de bord lorsqu'un échec est soupçonné pour la version SDK 5.5.0 et supérieure. Veuillez confirmer le comportement correct manuellement pour ce cas.
Android natif : Dialogues/Modaux personnalisés
Lorsque vous implémentez des dialogues ou modaux personnalisés qui n'étendent pas les contrôles natifs, vous pouvez obtenir des résultats pour les vues derrière le modal. Dans ce cas, nous recommandons de ne pas exécuter notre outil contre ces modaux ou dialogues personnalisés et de les vérifier manuellement pour vous assurer qu'ils se comportent comme désiré avec les technologies d'assistance.
Tableau de bord Web
Capture d'écran manquante
Si la capture d'écran est absente de la page des détails de l'analyse, votre application peut empêcher la prise de captures d'écran. Cela est souvent dû à des raisons de sécurité dans votre application en production. Envisagez de supprimer cette exigence pour votre build de test afin de permettre une fonctionnalité complète dans le tableau de bord Axe DevTools Mobile.
Certains noms d'analyse Android ne sont pas formatés
Certains noms de scan Android qui sont par défaut le titre de l'écran apparaîtront comme le nom de classe complet, y compris l'identifiant de bundle. Dans une future version, cela sera résolu de sorte que le titre de l'écran soit formaté avec un nom plus lisible. En attendant, vous pouvez définir le nom de scan depuis le tableau de bord ou les frameworks. (#1643)
