Notes de mise à jour d'Axe DevTools Mobile du 21 mai 2025
21 mai 2025
Versions des composants
iOS
- SDK iOS (axeDevToolsXCUI v2.15.0)
- Analyzer iOS (axe-devtools-mobile-analyzer v1.4.11)
- Driver Appium iOS (axe-appium-xcuitest-driver v1.4.0)
Comment mettre à jour : SDK iOS, Analyzer iOS, Driver Appium iOS
Android
- SDK Android (axe-devtools-android v6.3.0)
- Analyzer Android (Axe Accessibility Analyzer v1.13.0)
- Driver Appium Android (axe-appium-uiautomator2-driver v1.4.1)
Comment mettre à jour SDK Android, Analyzer Android, Driver Appium Android
Quoi de neuf ?
Alignement des sources de règles
Désormais, lorsque vous vous référez à nos règles d'accessibilité, vous constaterez qu'elles sont soit directement alignées avec les critères de succès des Web Content Accessibility Guidelines (WCAG), soit considérées comme une meilleure pratique définie par une note dans les WCAG, des conseils d'experts A11y de Deque, ou des recommandations d'Apple et de Google.
SDK et application Analyzer Android
Mise en œuvre d'une nouvelle méthode améliorée pour tester l'orientation de l'écran.
Règles expérimentales désactivées par défaut
Pour s'aligner sur le comportement d'Axe DevTools pour le Web, nous avons désactivé par défaut les règles expérimentales dans le tableau de bord Axe DevTools Mobile. En savoir plus sur règles expérimentales et comment vous pouvez les activer si vous le souhaitez.
Correctifs
iOS
- Les règles ne soulèveront plus de problèmes pour les contrôles dans le clavier fourni par le système d'exploitation
- Améliorations de la précision des règles Label dans le nom et Contrôle actif
Android
- Amélioration de la gestion des erreurs pour une exception lors de la collecte de AccessibilityNodeInfo
- Ajustement de l'implémentation de MLKit pour réduire les décalages de version
- Améliorations de la précision des règles de Nom EditText et Contraste de couleur
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 qu'il sera résolu ou vous indiquer une solution de contournement, si aucune n'est disponible.
- Les tests automatisés d'Axe DevTools Mobile s'exécutent sur des applications natives iOS, Android natives et React Native. Veuillez contacter votre représentant Deque pour des solutions de test d'accessibilité sur votre pile technologique.
- Bien que vous puissiez obtenir des résultats à partir de vues web ou de PDF rendus, nous vous recommandons fortement d'utiliser Axe DevTools pour le Web ou Axe Monitor pour un test d'accessibilité web plus complet.
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 iOS Analyzer 1.4.7 empêche les analyses de s'exécuter, renvoyant le message "Test échoué". Pour exécuter des analyses sur un appareil physique, mettez à jour vers le dernier projet iOS Analyzer.
Erreur dans le projet Analyzer & tests par ID de bundle dans 2.8.1
La fonctionnalité avec test d'une application par identifiant de bundle a été cassée dans la version 2.8.1, ce qui a entraîné une erreur intitulée "Aucun chemin d'application cible spécifié via la configuration de test : ...". Mettez à jour à la version 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 et SDK v2.12.3
Analyser 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. Mettre à jour vers le dernier projet iOS Analyzer.Mettre à jour vers le dernier SDK iOS.
Faux positif : LabelInName et LabelAtFront dans SwiftUI & Apps multiplateformes
Certaines écrans peuvent signaler des faux positifs avec LabelInName et LabelAtFront en raison d'une propriété associatedText incorrecte étant 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 l'exécution de la règle de prise en charge du type dynamique. Si vous êtes inscrit à la règle de prise en charge du type dynamique, vous ne pourrez pas la tester avec un simulateur iPhone 15 Pro. Un rapport de bug a été déposé auprès d'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 rapport de bug a été déposé auprès d'Apple. (#1110)
La règle du nom de l'ImageView nécessite des résultats de révision pour les applications UIKit
Dans les applications UIKit, une image sans `accessibilityLabel` n'est pas focalisable par la technologie d'assistance par défaut.
Les propriétés que nous utilisons pour vérifier la focalisation d'Apple peuvent être inexactes lorsqu'un `accessibilityIdentifier` est défini sur l'image. En raison de ce comportement inattendu, les résultats pour les problèmes de nom de l'ImageView dans les applications UIKit seront signalés comme nécessitant une révision. Un rapport de bug a été déposé auprès d'Apple. (#1633)
Faux positif : Dans la vue de défilement, Label In Name, Label at Front, et v2.11.0 Image View Name & ActiveControlName
Nous travaillons activement sur des correctifs pour les faux positifs suivants et mettrons à jour cette liste au fur et à mesure des corrections.
In Scroll View
Peut signaler des problèmes pour le texte au sein des é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 une UIImageView a un `accessibilityIdentifier` défini mais n'est pas focalisable par VoiceOver, et qu'elle a des contrôles focalisables imbriqués en elle, ActiveControlName peut signaler un faux positif sur l'UIImageView. Supprimer le `accessibilityIdentifier` résout le problème. Un rapport de bug a été déposé auprès d'Apple. (#1633)
Label In Name and Label At Front
Ces deux règles recherchent le label visible d'un contrôle parmi les éléments proches pour aider à déterminer le statut de la règle. Dans certaines hiérarchies de vues, le texte incorrect à proximité peut être détecté, provoquant l'échec de ces règles. (#1622)
Android
La règle du contraste des couleurs ne s'applique pas lorsque les couleurs du texte et du fond 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 le fond, notre algorithme d'apprentissage automatique est incapable de détecter si un texte est présent, donc la règle de contraste des couleurs ne s'applique pas à cette vue.
EditTextName sur Android 7 (SDK 24-25)
Les applications écrites en XML qui utilisent la fonctionnalité de texte d'indice peuvent voir des faux positifs avec la EditTextName règle. Le texte d'indice n'a été introduit qu'avec Android 8 (SDK 26). L'utilisation de cet élément dans votre application XML attribuera le texte d'indice à 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 est importante sur les versions antérieures d'Android, vous pourriez envisager d'éviter l'utilisation de la hintText fonctionnalité, car elle n'est pas officiellement supportée.
Vues cachées Android retournant des résultats
Vous pourriez voir des résultats pour des vues qui sont cachées derrière d'autres vues sur l'écran. Ces vues cachées ne sont pas disponibles pour la technologie d'assistance, mais Axe DevTools Mobile les signale toujours comme des problèmes.
Nous travaillons sur un correctif 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 ML Kit
La détection de texte ML Kit est requise dans de nombreuses règles de 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 des cibles tactiles et Jetpack Compose
La règle d'espacement des cibles tactiles ne s'exécute actuellement sur aucun composant curseur écrit en Jetpack Compose. Aucune action ne peut être entreprise pour l'instant. Cependant, un correctif arrive bientôt !
Erreur lors de la sauvegarde des résultats localement sur API 30
Sur Android API 30, un des emplacements où nous tentons de sauvegarder les résultats localement a une erreur de permissions. Le résultat sera tout de même sauvegardé sous forme de fichier JSON malgré cette erreur affichée. 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 de défilement sur les applications hybrides et multiplateformes
Dans certaines applications hybrides et multiplateformes, nous pourrions retourner des résultats inattendus lorsque des éléments dans une vue de défilement sont partiellement hors écran. Pour tester un élément pour l'accessibilité, assurez-vous qu'il est entièrement à l'écran avant de réaliser l'analyse.
App Analyzer : le bouton d'action flottant disparaît
Introduite avec API 31 (Android 12), est la capacité de cacher les superpositions non-systèmes. Pour utiliser l'application Axe Analyzer, assurez-vous 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 laisser désactivée pour les versions de test internes où vous pouvez utiliser des données de test en toute sécurité et éliminer ainsi les préoccupations de sécurité. 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 tout appel à la méthode setHideOverlayWindows(true) pour setHideOverlayWindows(false) sur les fenêtres d'activité concernées.
Capture d'écran manquante (boîte noire) dans le tableau de bord
Pour débloquer toutes les fonctionnalités de Axe DevTools pour mobile, assurez-vous que les captures d'écran sont activées. Nous vous 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 true
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 réduire la bibliothèque axeDevTools, entraînant 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 API indépendantes de la disposition pour continuer à recevoir des mises à jour. Si vous continuez à utiliser les API Compose et rencontrez une erreur telle que `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 de journal :MlKitContext has not been initialized
Si vous rencontrez ce message, certains résultats de règles peuvent ne pas être retournés comme prévu lorsque cette règle utilise l'intelligence artificielle. Les règles affectées incluent le Contraste des Couleurs, le Texte Focusable et le Nom de l'Élément Imbriqué. (#841)
MAUI : Règle du nom de texte à éditer
En raison des limitations de rendu de l'architecture de l'application MAUI dans l'écosystème Android, la règle du nom de texte à éditer apparaîtra comme Nécessitant une Révision sur le tableau de bord lorsqu'un échec est suspecté pour la version SDK 5.5.0 et supérieure. Veuillez confirmer manuellement le comportement correct dans 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 souhaité avec les technologies d'assistance.
Tableau de Bord Web
Capture d'écran manquante
Si la capture d'écran est manquante de la page de détails de l'analyse, il est possible que votre application empêche la prise de captures d'écran. Souvent, cela est dû à des raisons de sécurité dans votre application de production. Envisagez de supprimer cette exigence pour votre build de test afin de permettre une fonctionnalité complète dans le tableau de bord Mobile Axe DevTools.
Certains noms d'analyse Android ne sont pas formatés
Certains noms d'analyse Android par défaut se basant sur le titre de l'écran apparaîtront sous forme de nom de classe complet incluant l'identifiant de bundle. Dans une version future, cela sera résolu pour que le titre de l'écran soit formaté sous un nom plus lisible. En attendant, vous pouvez définir le nom de l'analyse depuis le tableau de bord ou les frameworks. (#1643)
