Notes de version d'Axe DevTools Mobile du 30 juin 2026

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

30 juin 2026

Not for use with personal data

Versions des composants

iOS

  • SDK iOS (axeDevToolsXCUI v4.0.1)

Comment mettre à jour : SDK iOS

Android

  • SDK Android (axe-devtools-android v9.0.0)
  • Plugin Gradle Android (axe-devtools-android-plugin v1.1.0)
  • Analyseur Android (axe Accessibility Analyzer v3.0.0)

Comment mettre à jour : Plugin Gradle Android, Analyseur Android

Quoi de neuf ?

iOS Nouvelle règle : Texte coupé

Deque s'engage à offrir et optimiser des règles qui détecteront précisément les véritables problèmes d'accessibilité. Notre nouvelle règle pour iOS aide à garantir que le contenu reste visible pour les utilisateurs, quelle que soit leur taille de texte préférée. En savoir plus sur cette règle : Texte coupé.

Nouvelles API

Vous pouvez utiliser les API suivantes lors de tests ciblés sur iOS et Android.

  • Appeler generateHtmlReportAndSummary une fois par exécution de test produit un rapport HTML autonome et le sauvegarde localement sur votre appareil.
  • startScanSession initie une session de test et se connecte à Axe Developer Hub, où les résultats seront publiés. Notez que startSession a été déprécié au profit de startScanSession.

Chemin de sortie configurable pour les résultats

Vous pouvez maintenant indiquer le axeHtmlReportPath pour les analyses automatiques et les tests ciblés sur Android. Par défaut, les résultats sont stockés dans build/reports/AxeDevToolsMobileResults. Lors de l'utilisation de l'analyse automatique, les résultats sont envoyés automatiquement à cet emplacement. Lors de la réalisation de tests ciblés, c'est là que les résultats seront stockés lors de l'utilisation de l'API generateHtmlReportAndSummary pour créer manuellement un rapport.

De même, l'analyse automatique iOS prend désormais en charge un répertoire de sortie configurable par l'utilisateur pour le rapport HTML et le résumé .txt. Auparavant, l'emplacement de sortie était codé en dur à ~/AxeDevToolsMobileResults.

Corrections

iOS

  • Correction d'un problème avec les captures d'écran en mode paysage sur les appareils physiques
  • Dans SwiftUI, les analyses en plein écran ne sont plus incorrectement marquées comme partielles
  • Amélioration des performances de l'analyse automatique
  • Améliorations de la précision des règles Contraste des couleurs et Dans ScrollView

Mises à jour

iOS

  • La sortie JSON de l'analyse automatique est maintenant consolidée sous AxeDevToolsMobileResults/axe-test-data
  • axeProjectId est maintenant requis dans axe_config.json pour l'analyse automatique

Dépréciations et suppressions

iOS

  • Le flux d'authentification déprécié login(withUsername:andPassword:toServer:) a été supprimé
  • La startSession(apiKey: String, projectId: String, serverUrl: String) méthode de publication des résultats sur Developer Hub avec des tests ciblés a été dépréciée, et startScanSession(apiKey: String, projectId: String, axeAccountUrl: String) a été configurée pour la remplacer
  • La axeServerUrl propriété de configuration pour Auto Scan a été dépréciée, et axeAccountUrl a été configurée pour la remplacer

Android

  • Le flux d'authentification déprécié loginWithUsername(username: String, password: String, serverConfig: String) a été supprimé
  • La startSession(apiKey: String, projectId: String, serverUrl: String) méthode de publication des résultats sur Developer Hub avec des tests ciblés a été dépréciée, et startScanSession(apiKey: String, projectId: String, axeAccountUrl: String) a été configurée pour la remplacer
  • La axeServerUrl propriété de configuration pour Auto Scan a été dépréciée, et axeAccountUrl a été configurée pour la remplacer

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 notifier une fois que ce sera résolu ou d'une solution de contournement identifiée si aucune n'est listée.

important
  • Les tests automatisés de 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 de tester en utilisant axe DevTools pour Web ou axe Monitor pour les tests d'accessibilité les plus complets pour le web.

iOS

Le contraste des couleurs peut s'exécuter sur des éléments uniquement en icônes grâce à l'OCR

La règle de Contraste des Couleurs utilise le framework 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 mal identifier de petits glyphes ressemblant à des icônes - comme les chevrons de flèches de retour (<), les puces, les symboles décoratifs - comme du texte. Lorsque cela se produit, la règle de Contraste des Couleurs s'exécute sur un élément qui ne contient pas de texte lisible, ce qui peut produire un résultat pour un bouton uniquement en icônes. Comme la sortie de l'OCR n'est pas déterministe d'un scan à l'autre, le même élément peut apparaître dans les résultats de Contraste des Couleurs lors d'un scan et être déclaré "INAPPLICABLE" lors du scan suivant. Ceci est une caractéristique connue de l'OCR, et non un bug dans la règle.

Pour contourner ce problème, vous pouvez utiliser les ignore API pour supprimer les résultats de Contraste des Couleurs 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 Contraste des Couleurs globalement axeDevTools?.configuration.ignore(rule: AxeRuleId.ColorContrast.toString())

En savoir plus sur l'ignorance des règles.

Titre d'écran faux positif dans les applications Flutter

Flutter ne mappe pas AppBar.title à la propriété de titre d'écran native - UIViewController.title, provoquant l'échec de la règle Titre d'écran sur tous les écrans Flutter, qu'un titre descriptif soit présent ou non.

Ceci est une limitation connue de la plateforme Flutter suivie dans flutter/flutter#185894.

Faux positifs pour la règle de Contraste des Couleurs avec des arrière-plans en dégradé 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 des Couleurs peut signaler des faux positifs pour les arrière-plans en dégradé. 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 manuellement le Contraste des Couleurs pour ces vues.

Inexacte isVisible propriété de XCTest

Les API d'accessibilité d'Apple peuvent signaler de manière incorrecte le contenu web à l'intérieur de WKWebView comme "isVisible", même lorsque la vue web est couverte par des superpositions natives (telles que 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 savoir si son contenu web est réellement non obstrué et perceptible pour l'utilisateur.

Bug d'accessibilité iOS 26 avec les steppers

iOS 26 contient un bug d'accessibilité où les boutons de stepper par défaut n'annoncent pas "atténué" 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 tant que cela n'est pas résolu, les règles suivantes peuvent signaler des résultats sur les boutons de stepper désactivés : AssociatedText, InaccessibleAction, et ColorContrast.

Jusqu'à ce qu'Apple corrige ce bug, la solution consiste à [ignorer les règles](ios-ignore-rule). Les boutons de l'incrémentateur par défaut ont les identifiants « Décrémenter » et « Incrémenter », 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 multiplateformes

Certaines écrans peuvent signaler des faux positifs avec LabelInName et LabelAtFront en raison d'une propriété associatedText incorrecte (#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 activé la règle Supports Dynamic Type, vous ne pourrez pas la tester avec un simulateur iPhone 15 Pro. Un bug a été signalé à Apple.

Règles contre les contrôles imbriqués

En cherchant une amélioration pour nos règles, nous avons constaté 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 une révision des résultats pour les applications UIKit

Dans les applications UIKit, une image sans `accessibilityLabel` n'est pas focalisable avec les technologies d'assistance par défaut.
Les propriétés que nous utilisons pour vérifier la focalisation à partir d'Apple peuvent être inexactes lorsque `accessibilityIdentifier` est défini sur l'image. En raison de ce comportement inattendu, les résultats des problèmes de nom ImageView dans les applications UIKit présenteront comme nécessitant une révision. Un rapport de bug a été soumis à Apple. (#1633)

Faux positif : Dans Scroll View, Label In Name, Label à l'avant, et v2.11.0 Nom de vue d'image & Nom de contrôle actif

Nous travaillons activement sur des correctifs pour les faux positifs suivants et mettrons à jour cette liste à 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 nécessitent un texte plus large, 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é 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 à proximité pour aider à déterminer le statut de la règle. Dans certaines hiérarchies de vues, le texte à proximité incorrect peut être détecté provoquant l'échec de ces règles. (#1622)

Android

Préoccupations potentielles en matière 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 texte pour afficher des lettres au lieu de générer des images avec les lettres souhaitées en tant que vecteurs, puis que vous déclarez cette vue texte comme non importante pour l'accessibilité, nous ne pourrons pas déterminer de manière fiable si vous avez introduit une violation de l'accessibilité.

Si vous modifiez le texte focalisable pour ignorer deux caractères ou moins, vous pourriez involontairement ignorer de nombreux boutons d'un seul mot dans diverses langues (par exemple, « OK », « Non », « Sí »). Pour éviter ces problèmes, vous devez extraire les lettres souhaitées du mot que vous souhaitez représenter dans l'icône et générer les lettres dans le cadre de l'image plutôt qu'en tant que 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, provoquant l'échec de la règle de titre d'écran sur toutes les écrans Flutter, qu'un titre descriptif soit présent ou non.

C'est une limitation connue de la plateforme Flutter suivie dans flutter/flutter#185894.

Détection de texte annoncé faux positif

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. Puisque AccessibilityEvents sont déclenchés par des 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 depuis la vue, que notre outil pourra alors 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 repose sur l'apprentissage automatique pour détecter le texte, afin de garantir que le texte analysé est visible pour les utilisateurs de votre application. Dans les cas où le texte contenu dans une vue a 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, 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 de faux positifs avec la EditTextName règle. Le texte d'indication n'a été introduit qu'à partir d'Android 8 (SDK 26). Utiliser 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. Cependant, s'il est important que l'application soit accessible sur les versions antérieures d'Android, vous pouvez envisager d'éviter l'utilisation de la hintText fonctionnalité, car elle n'est pas officiellement prise en charge.

Vues Android masquées retournant des résultats

Vous pourriez voir des résultats pour des vues qui sont masquées derrière d'autres vues à l'écran. Ces vues masquées ne sont pas accessibles par la technologie d'assistance, mais axe DevTools Mobile les signale quand même 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 via ML Kit

La détection de texte via ML Kit est requise dans de nombreuses règles 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 fait 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 la bibliothèque ML Kit dans votre projet manuellement. 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 Implementation

Espacement de la cible tactile et Jetpack Compose

La règle d'espacement de la cible tactile n'est actuellement pas exécutée sur les composants de curseur écrits en Jetpack Compose. Aucune action ne peut être prise 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 essayons d'enregistrer les résultats localement présente une erreur de permissions. Le résultat sera quand 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 // } }
Veuillez noter que ce code ne doit être commenté que pour l'API 30 car cela entraînera des problèmes lors de l'enregistrement local pour d'autres niveaux d'API.

Détection du 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 complètement sur l'écran avant d'effectuer l'analyse.

App de l'Analyseur : Bouton d'action flottant disparaît

Introduit avec l'API 31 (Android 12), la capacité de masquer 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 désactiver pour les versions de test internes où vous pouvez utiliser en toute sécurité des données de test et éliminer ainsi les inquiétudes liées à la 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 la fonctionnalité complète des outils de développement axe pour Mobile, assurez-vous que les captures d'écran sont activées. Nous recommandons d'activer les captures d'écran sur une version de test ou de débogage 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 réglé sur true

Si vous réduisez votre build, vous verrez un plantage avec un journal d'erreurs indiquant qu'un adaptateur n'a pas été trouvé lors de la tentative de connexion à la bibliothèque axe DevTools. Désactivez la réduction pour vos versions de débogage avec axe DevTools implémenté. (#729)

Les builds avec r8 activé lancent 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.** { *; }

Messages d'erreur lors de l'utilisation des API Compose

Les API Compose sont obsolètes, veuillez utiliser les API agnostiques de 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 à l'API Compose setTestTag.

MAUI : Règle de nom de champ de texte éditable

En raison des limitations de l'architecture d'application MAUI rendue dans l'écosystème Android, la règle de nom de champ de texte éditable apparaîtra comme nécessitant une révision dans le tableau de bord lorsqu'un échec est suspecté pour la version SDK 5.5.0 et plus. 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 se trouvant derrière le modal. Dans ce cas, nous recommandons de ne pas exécuter notre outil sur ces modaux ou dialogues personnalisés et plutôt de les vérifier manuellement pour s'assurer qu'ils fonctionnent avec les technologies 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. 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 axe DevTools Mobile.

Certains noms de scan Android sont non formatés

Certains noms de scan Android qui sont par défaut au titre de l'écran apparaîtront comme le nom de classe complet incluant l'identifiant de bundle. Dans une future version, cela sera résolu afin que le titre de l'écran soit formaté sous un nom plus lisible. Comme solution de contournement, vous pouvez définir le nom du scan depuis le tableau de bord ou les frameworks. (#1643)