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 est résolu ou si une solution temporaire est identifiée si aucune n'est indiquée.
- Les tests automatisés d'Axe DevTools Mobile s'exécutent 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.
- Même si vous pouvez obtenir certains résultats à partir de vues web ou de PDF rendus, nous recommandons fortement de tester en utilisant Axe DevTools for Web ou Axe Monitor pour un test d'accessibilité web des plus complets.
iOS
Le Contraste de Couleur peut s'exécuter sur des éléments composés uniquement d'icônes en raison de la ROC
La règle de Contraste de Couleur utilise le framework Vision d'Apple (Reconnaissance Optique de Caractères, ou ROC) pour lire le texte à l'intérieur des limites d'un élément. La ROC peut parfois mal identifier de petits glyphes ressemblant à des icônes - tels que les chevrons de flèche arrière (<), les puces, les symboles décoratifs - comme du texte. Lorsque cela se produit, la règle de Contraste de Couleur s'exécute sur un élément qui ne contient aucun texte lisible, ce qui peut produire un résultat pour un bouton composé uniquement d'une icône. Comme la sortie de la ROC n'est pas déterministe sur plusieurs analyses, le même élément peut apparaître dans les résultats du Contraste de Couleur lors d'une analyse et être signalé comme "INAPPLICABLE" lors de la suivante. Il s'agit d'une caractéristique connue de la ROC, pas d'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()]
])// Or ignore Color Contrast globally axeDevTools?.configuration.ignore(rule: AxeRuleId.ColorContrast.toString())
En savoir plus sur l'ignorance des règles.
Faux positif du titre de l'écran dans les applications Flutter
Flutter ne mappe pas AppBar.title à la propriété native du titre de l'écran - UIViewController.title, ce qui entraîne l'échec de la règle du titre de l'é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 de Contraste de Couleur avec des arrière-plans dégradés sur les petits écrans
Lors de l'exécution de vérifications d'accessibilité sur des tailles d'écran plus petites ou avec des tailles de police plus petites, la règle de Contraste de Couleur peut signaler des faux positifs pour les arrière-plans dégradés. Dans de tels cas, il peut être incapable de déterminer la couleur de premier plan et comparer à la place les couleurs d'arrière-plan entre elles, entraînant un échec.
Pour contourner ce problème, essayez d'exécuter les vérifications d'accessibilité sur des appareils plus grands. Alternativement, vous pouvez choisir d'ignorer la règle dans vos tests et vérifier le Contraste de Couleur manuellement pour ces vues.
Inexactitude de la isVisible propriété dans XCTest
Les API d'accessibilité d'Apple peuvent signaler incorrectement le contenu web à l'intérieur de WKWebView comme "isVisible", même lorsque la vue Web est recouverte par des superpositions natives (telles que les vues modales, les 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 savoir si son contenu web est réellement non obstrué et perceptible par l'utilisateur.
Bug d'accessibilité iOS 26 avec les steppers
iOS 26 contient un bug d'accessibilité où les boutons par défaut des steppers n'annoncent pas "dimmed" 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 steppers désactivés : AssociatedText, InaccessibleAction, et ColorContrast.
Jusqu'à ce qu'Apple corrige ce bug, la solution sera d'[ignorer les règles](ios-ignore-rule). Les boutons steppers 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 SwiftUI & Applications Multi-Plateformes
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 Supports Dynamic Type ne fonctionne pas avec le simulateur iOS 15 Pro
Il y a un problème affectant le simulateur iPhone 15 Pro qui empêche la règle Supports Dynamic Type de s'exécuter. Si vous avez opté pour la règle Supports Dynamic Type, vous ne pourrez pas la tester à l'aide d'un simulateur iPhone 15 Pro. Un bug a été signalé à Apple.
Règles contre les contrôles imbriqués
En cherchant à améliorer nos règles, nous avons découvert que dans XCTest, les contrôles imbriqués ne sont pas renvoyés dans l'arbre d'accessibilité. Un bug a été signalé à Apple. (#1110)
La règle Name d'ImageView a besoin de réviser les résultats pour les applications UIKit
Dans les applications UIKit, une image sans `accessibilityLabel` n'est pas focalisable par défaut avec la technologie d'assistance.
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 d'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 Nom Image View & ActiveControlName
Nous travaillons activement sur des corrections pour les faux positifs suivants et nous mettrons à jour cette liste à mesure que des corrections seront publiées.
In Scroll View
Le texte à l'intérieur des éléments de type bannière peut être marqué d'un message "À revoir". 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 l'étiquette visible d'un contrôle parmi les éléments voisins pour aider à déterminer le statut de la règle. Dans certaines hiérarchies de vues, un texte voisin incorrect peut être détecté, entraînant l'échec de ces règles. (#1622)
Android
Libellé à l'avant Fausse détection avec texte visible masqué
La règle du libellé à l'avant vérifie que le libellé visible d'un élément se trouve au début de son texte annoncé. Un échec de la règle peut survenir lorsque le texte visible d'un élément interactif contient une abréviation (par exemple, « Go », « km ») ou un identifiant masqué/tronqué, et que l'annonce d'accessibilité se compose des mots représentés (par exemple, « gigaoctets », « kilomètres »), même si cela est le modèle recommandé pour rendre le contenu abrégé ou tronqué accessible aux lecteurs d'écran.
Si la première partie du libellé visible d'un élément interactif correspond au début de l'annonce du lecteur d'écran et que seule la partie abrégée/masquée diffère, le résultat signalé peut être ignoré en toute sécurité. Vérifiez avec un lecteur d'écran que l'annonce complète est lue comme prévu.
Préoccupations potentielles d'accessibilité pour le texte focalisable
Lors de l'utilisation de 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 comme vecteurs, et que vous déclarez ensuite que cette vue de texte est sans importance pour l'accessibilité, nous ne pourrons pas dire avec certitude si vous avez introduit une violation d'accessibilité.
Si vous modifiez le texte focalisable pour ignorer deux caractères ou moins, vous pouvez par inadvertance ignorer de nombreux boutons d'un seul mot dans diverses langues (par exemple, "OK", "No", "Sí"). Pour éviter ces problèmes, vous devriez saisir les lettres souhaitées du mot que vous souhaitez représenter dans l'icône et générer les lettres comme partie de l'image, plutôt que comme vues de texte distinctes. `FocusableText` ne fonctionnera alors pas sur ces vues.
Faux positif du titre de l'écran dans les applications Flutter
Flutter ne mappe pas AppBar.title à la propriété native du titre de l'écran - Activity.setTitle, ce qui entraîne l'échec de la règle du titre de l'é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 dépend des AccessibilityEvent descriptions du système Android pour annoncer des informations à l'utilisateur lorsqu'aucune autre annonce n'est disponible. Étant donné que AccessibilityEvents sont déclenchées 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 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 scanné est visible par 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, donc 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'avec Android 8 (SDK 26). Utiliser cet élément dans votre application XML assignera 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 de réaliser vos tests sur des versions d'Android plus récentes. S'il est important que l'application soit accessible 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.
Les vues cachées d'Android renvoient des résultats
Vous pouvez 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 accessibles par la technologie d'assistance, mais Axe DevTools Mobile les signale quand même comme 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. Elles ne nécessitent pas de correction pour assurer l'accessibilité.
Erreur lors de l'exécution de la détection de texte ML Kit
La détection de texte avec 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. 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 devriez 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 :
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 Implementation
Espacement des cibles tactiles et Jetpack Compose
La règle d'espacement des cibles tactiles ne s'exécute actuellement sur aucun composant de curseur écrit dans Jetpack Compose. Aucune mesure ne peut être prise pour le moment. Cependant, une correction 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 essayons d'enregistrer les résultats localement présente une erreur de permissions. Le résultat sera toujours 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
// }
}
Veuillez noter que ce code ne doit être commenté que pour l'API 30 car il 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 visible à l'écran avant d'effectuer le scan.
Analyzer App : Disparition du bouton d'action flottant
Introduite avec l'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 réglage n'est pas activé. Si vous avez choisi d'utiliser cette fonctionnalité pour ses améliorations de sécurité, nous vous recommandons de la laisser désactivée 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 tous les appels à la méthode setHideOverlayWindows(true) vers setHideOverlayWindows(false) sur les fenêtres d'activité affectées.
Capture d'écran manquante (boîte noire) dans le tableau de bord
Pour débloquer toutes les fonctionnalités d'Axe DevTools for 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 simulées pour éviter les problèmes de sécurité. Consultez notre guide pour activation des captures d'écran dans les applications Android.
Crash lorsque minifiedEnabled est défini sur true
Si vous minifiez votre build, vous constaterez 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ée. (#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 agnostiques au layout pour continuer à recevoir les 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 à Compose setTestTag API.
MAUI : règle du nom Edit Text
En raison des limitations de l'architecture des applications MAUI dans l'écosystème Android, la règle du nom Edit Text apparaîtra comme Nécessite une révision dans le tableau de bord lorsqu'un échec est suspecté pour la version SDK 5.5.0 et ultérieure. Veuillez confirmer manuellement le bon comportement 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 situées derrière le modal. Dans ce cas, nous recommandons de ne pas exécuter notre outil contre ces modaux ou dialogues personnalisés et plutôt de les vérifier manuellement pour s'assurer qu'ils 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 des détails de l'analyse, votre application peut empêcher la prise de captures d'écran. Souvent, c'est pour des raisons de sécurité dans votre application de production. Envisagez de supprimer cette exigence pour votre version 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 d'analyse Android, qui sont par défaut le titre de l'écran, apparaîtront comme le nom complet de la classe incluant l'identifiant du bundle. Dans une future version, cela sera corrigé afin que le titre de l'écran soit formaté en un nom plus lisible. En attendant, vous pouvez définir le nom d'analyse depuis le tableau de bord ou les frameworks. (#1643)
