Notes de mise à jour Axe DevTools Mobile du 2 juillet 2026
2 juillet 2026
Versions des composants
Appium
iOS
- Pilote Appium 2 iOS (axe-appium2-xcuitest-driver v2.5.0)
- (Dérivé de XCUITest v9.10.4)
- Pilote Appium 3 iOS (axe-appium3-xcuitest-driver v1.4.0)
- (Dérivé de XCUITest v11.10.0)
Comment mettre à jour : Pilote Appium iOS
Android
- Pilote Appium 2 Android (axe-appium2-uiautomator2-driver v2.5.0)
- (Dérivé de UiAutomator2 v4.2.8)
- Pilote Appium 3 Android (axe-appium3-uiautomator2-driver v1.4.0)
- (Dérivé de UiAutomator2 v7.6.1)
Comment mettre à jour : Pilote Appium Android
Quoi de neuf ?
Rapports HTML Agrégés
L'ajout de mobile: generateHtmlReportAndSummary une fois par test produira un rapport HTML autonome pour les analyses ciblées et le transférera du dispositif vers un répertoire local - axeHtmlReportPath. Trouvez les détails de mise en œuvre ici : Générer un rapport et un résumé HTML.
Dépréciations et suppressions
La propriété de configuration axeServerUrl pour l'analyse automatique a été dépréciée, ainsi que le axeServiceUrl pour les tests ciblés. axeAccountURL a été configuré pour remplacer ces deux propriété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 qu'il sera résolu ou d'une solution de contournement identifiée si aucune n'est listé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 tests d'accessibilité sur votre pile technologique.
- Bien que vous puissiez obtenir quelques résultats à partir de vues web ou de PDF rendus, nous recommandons fortement d'utiliser axe DevTools for Web ou axe Monitor pour des tests d'accessibilité web des plus complets.
iOS
Le contraste des couleurs peut fonctionner sur des éléments icônes uniquement en raison de l'OCR
La règle de contraste des couleurs utilise le cadre Vision d'Apple (reconnaissance optique de caractères ou OCR) pour lire le texte à l'intérieur des limites d'un élément. L'OCR peut parfois identifier à tort de petites glyphes ressemblant à des icônes - tels que des chevrons de retour (<), des puces, des symboles décoratifs - comme du texte. Lorsque cela se produit, la règle de contraste peut s'appliquer à un élément sans texte lisible, produisant un résultat pour un bouton icône uniquement. Parce que le résultat de l'OCR n'est pas déterministe entre les analyses, le même élément peut apparaître dans les résultats de contraste de couleur dans une analyse et être signalé comme "INAPPLICABLE" dans la suivante. C'est une caractéristique connue de l'OCR, pas un bug dans la règle.
Pour contourner ce problème, vous pouvez utiliser les ignore API pour supprimer les résultats de contraste de couleur pour les éléments concernés.
// Ignore Color Contrast for a specific element by accessibility identifier
axeDevTools?.configuration.ignore(rulesFor: [
"backButton": [AxeRuleId.ColorContrast.toString()]
])// Ou ignorez le contraste des couleurs globalement axeDevTools?.configuration.ignore(rule: AxeRuleId.ColorContrast.toString())
En savoir plus sur l'ignorance des règles.
Faux positif du titre d'écran dans les applications Flutter
Flutter ne mappe pas AppBar.title à la propriété de titre d'écran native - UIViewController.title, ce qui entraîne l'échec de la règle de titre d'écran sur tous les écrans Flutter, qu'un titre descriptif soit présent ou non.
Il s'agit d'une limitation connue de la plateforme Flutter suivie dans flutter/flutter#185894.
Faux positifs pour la règle du contraste des couleurs avec des arrière-plans dégradés sur petits écrans
Lors de l'exécution de contrôles d'accessibilité sur des tailles d'écran plus petites ou avec des tailles de police plus petites, la règle du contraste des couleurs peut signaler des faux positifs pour les arrière-plans en dégradé. Dans de tels cas, elle peut ne pas être capable de déterminer la couleur de premier plan et comparer à la place les couleurs d'arrière-plan entre elles, ce qui entraîne un échec.
Pour contourner ce problème, essayez d'exécuter les contrôles d'accessibilité sur des appareils plus grands. Alternativement, vous pouvez choisir d'ignorer la règle dans vos tests et vérifier manuellement le contraste des couleurs pour ces vues.
Propriété inexacte isVisible provenant de XCTest
Les API d'accessibilité d'Apple peuvent signaler incorrectement le contenu web à l'intérieur de WKWebView comme étant "isVisible", même lorsque la vue web est couverte par des superpositions natives (comme des vues modales, des alertes ou d'autres éléments d'interface utilisateur natifs). Cela se produit parce que le système d'accessibilité vérifie si le conteneur WKWebView lui-même est visible, plutôt que de vérifier si son contenu web est effectivement non obstrué et perceptible par l'utilisateur.
Bug d'accessibilité d'iOS 26 avec les stepper
iOS 26 contient un bug d'accessibilité où les boutons stepper par défaut n'annoncent pas "grisé" par la technologie d'assistance pour indiquer qu'ils ne sont pas activés. En conséquence, les règles iOS voient également ces boutons comme activés même s'ils ne le sont pas. Un rapport de bug a été déposé auprès d'Apple, mais jusqu'à ce que cela soit résolu, les règles suivantes peuvent signaler des résultats sur les boutons stepper désactivés : AssociatedText, InaccessibleAction, et ColorContrast.
Jusqu'à ce qu'Apple corrige ce bug, la solution sera de [ignorer les règles](ios-ignore-rule). Les boutons stepper par défaut ont les identifiants "Decrement" et "Increment", et peuvent être ignorés par identifiant si nécessaire.
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.
Faux positif : LabelInName et LabelAtFront dans les applications SwiftUI et multiplateformes
Certains écrans peuvent signaler des faux positifs avec LabelInName et LabelAtFront en raison d'une propriété incorrecte associatedText trouvée (#1622)
La règle Supports Dynamic Type ne fonctionne pas avec le simulateur iOS 15 Pro
Un problème affecte le simulateur iPhone 15 Pro, empêchant l'exécution de la règle Supports Dynamic Type. Si vous êtes abonné à la règle Supports Dynamic Type, vous ne pourrez pas la tester avec un simulateur iPhone 15 Pro. Un bug a été déposé auprès d'Apple.
Règles contre les contrôles imbriqués
Lors de l'examen d'une amélioration de nos règles, nous avons constaté que dans XCTest, les contrôles imbriqués ne sont pas renvoyés dans l'arbre d'accessibilité. Un bug a été déposé auprès d'Apple. (#1110)
La règle du nom 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 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 Scroll View, 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 que des correctifs seront publiés.
In Scroll View
Le texte dans les éléments se comportant comme des bannières peut être signalé avec un message "Nécessite une révision". Pour rendre ces éléments disponibles à ceux qui ont besoin de 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 à l'intérieur, ActiveControlName peut signaler un faux positif sur l'UIImageView. Supprimer le `accessibilityIdentifier` résout le problème. Un bug a été déposé auprès d'Apple. (#1633)
Label In Name and Label At Front
Ces deux règles recherchent l'étiquette visible d'un contrôle parmi les éléments voisins pour aider à déterminer l'état de la règle. Dans certaines hiérarchies de vues, le texte voisin incorrect peut être détecté, ce qui entraîne l'échec de ces règles. (#1622)
Android
Préoccupations potentielles en matière d'accessibilité pour le texte focalisable
Lorsque vous utilisez un texte décoratif dans des vues telles que "Icônes de contact", il est possible d'introduire un problème d'accessibilité. Si vous utilisez une vue de texte pour afficher des lettres au lieu de générer des images avec les lettres souhaitées sous forme de vecteurs, et que vous déclarez ensuite que la vue de texte n'est pas importante pour l'accessibilité, nous ne pourrons pas dire de manière fiable si vous avez introduit une violation d'accessibilité.
Si vous éditez le texte focalisable pour ignorer deux caractères ou moins, vous pouvez par inadvertance ignorer de nombreux boutons à un seul mot dans différentes langues (par exemple "OK", "No", "Sí"). Pour éviter ces problèmes, vous devriez prendre les lettres désirées du mot que vous souhaitez représenter dans l'icône et générer les lettres comme partie de l'image au lieu de vues de texte séparées. `FocusableText` ne s'exécutera alors pas sur ces vues.
Faux positif de titre d'écran dans les applications Flutter
Flutter ne mappe pas AppBar.title à la propriété de titre d'écran native - Activity.setTitle, ce qui entraîne l'échec de la règle de titre d'écran sur tous les écrans Flutter, qu'un titre descriptif soit présent ou non.
Il s'agit d'une limitation connue de la plateforme Flutter suivie dans flutter/flutter#185894.
Faux positif de détection de texte annoncé
Dans certains cas, la technologie d'assistance repose sur AccessibilityEvent des descriptions du système Android pour annoncer des informations à l'utilisateur lorsqu'aucune autre annonce n'est disponible. Étant donné que AccessibilityEventsont déclenchés par les actions de l'utilisateur, nous ne pouvons pas accéder à la description correcte si cette information n'est pas fournie.
Pour éviter ce problème, assurez-vous que toutes les vues pertinentes sont marquées comme importantes pour l'accessibilité. Cela permettra à Talkback d'accéder aux informations de la vue, que notre outil pourra ensuite détecter.
La règle de contraste des couleurs ne fonctionne pas lorsque les couleurs du texte et de l'arrière-plan sont identiques
Notre règle de contraste des couleurs repose sur 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 est incapable de 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 d'indication peuvent voir des faux positifs avec la EditTextName règle. Le texte d'indication n'a été introduit qu'à partir d'Android 8 (SDK 26). L'utilisation de cet élément dans votre application XML attribuera le texte d'indication à 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 il est important que l'app soit accessible sur des versions antérieures d'Android, vous pourriez envisager d'éviter l'utilisation de la hintText fonction, car elle n'est pas officiellement supportée.
Vues cachées d'Android renvoyant des résultats
Vous pouvez voir des résultats pour les vues qui sont cachées derrière d'autres vues à l'écran. Ces vues cachées ne sont pas accessibles aux 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 accéder à 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 nécessaire dans de nombreuses règles d'axe DevTools Mobile pour assurer 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. Cependant, dans certains cas, 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 fichier de votre application build.gradle , ajoutez ce qui suit sous les dépendances :
debugImplementation 'com.google.mlkit:text-recognition:16.0.1'
Find a full working example of the ML Kit library being imported in the Android Mobile SDK Getting Started section, under Mise en œuvre
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 le moment. Cependant, une solution arrive bientôt!
Erreur lors de l'enregistrement des résultats localement sur API 30
Sur Android API 30, l'un des emplacements où nous tentons de sauvegarder les résultats localement présente une erreur de permissions. Le résultat sera toujours sauvegardé en tant que 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
// }
}
Veuillez noter que ce code ne doit être commenté que pour API 30 car cela posera des problèmes lors de la sauvegarde locale pour d'autres niveaux d'API.
Détection de défilement sur les applications hybrides et multiplateformes
Dans certaines applications hybrides et multiplateformes, nous pouvons obtenir 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 procéder à l'analyse.
Analyzer App : le bouton d'action flottant disparaît
Introduite avec API 31 (Android 12) est la capacité de masquer les superpositions non-système. Afin d'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 en matière de sécurité, nous vous recommandons de la désactiver pour les versions de test internes où vous pouvez utiliser en toute sécurité des données de test et ainsi éliminer 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) à setHideOverlayWindows(false) sur les fenêtres d'activités concernées.
Capture d'écran manquante (boîte noire) dans le tableau de bord
Pour déverrouiller 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 appli qui utilise des données simulées 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'erreur 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 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.** { *; }
Messages d'erreur lors de l'utilisation des API Compose
Les API Compose sont obsolètes, veuillez utiliser les API indépendantes de la mise en page pour continuer à recevoir des mises à jour. Si vous continuez à utiliser les API Compose et que vous 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 à Compose setTestTag API.
MAUI : règle du nom de l'éditeur de texte
En raison des limitations de l'architecture d'application MAUI dans l'écosystème Android, la règle du nom de l'éditeur de texte sera affichée comme nécessite une révision dans le tableau de bord lorsqu'un échec est suspecté pour la version SDK 5.5.0 et supérieure. Veuillez confirmer le comportement correct manuellement pour ce cas.
Android natif : boîtes de dialogue / modales personnalisées
Lorsque vous implémentez des boîtes de dialogue ou modales personnalisées qui n'étendent pas les contrôles natifs, vous pouvez obtenir des résultats pour les vues derrière la modale. Dans ce cas, nous vous recommandons de ne pas exécuter notre outil sur ces modales ou boîtes de dialogue personnalisées et de les vérifier manuellement pour vous assurer qu'elles fonctionnent avec la technologie d'assistance comme souhaité.
Tableau de bord Web
Capture d'écran manquante
Si la capture d'écran est manquante sur la page de détails de l'analyse, votre application peut empêcher les captures d'écran d'être prises. Cela est souvent pour des raisons de sécurité dans votre application de production. Envisagez de supprimer cette exigence pour votre build de test afin de permettre toutes les fonctionnalités du tableau de bord axe DevTools Mobile.
Certains noms de scan Android ne sont pas formatés
Certains noms de scan Android qui sont prédéfinis en tant que titre d'écran apparaîtront sous la forme du nom complet de la classe, y compris l'identifiant du bundle. Dans une future version, cela sera résolu afin que le titre de l'écran soit formaté en un nom plus lisible. En attendant, vous pouvez définir le nom de scan depuis le tableau de bord ou les cadres. (#1643)
