axe DevTools Mobile Notes de version du 16 août 2023
16 août 2023
Versions des composants
- axeDevToolsXCUI v2.6.0
- axe-devtools-android v4.0.0
Quoi de neuf ?
Présentation d'axe DevTools Mobile Analyzer
Utilisez le nouvel axe DevTools Mobile Analyzer pour tester les applications iOS ou Android créées avec n'importe quelle technologie sans accès au code source. Testez les applications natives et multiplateformes, telles que SwiftUI et UIKit dans iOS, Jetpack Compose et XML dans Android, React Native, Flutter, Xamarin et Ionic. axe DevTools Mobile Analyzer remplace le bouton d'action flottant intégré pour les tests d'accessibilité initiés par l'utilisateur (manuels). Pour effectuer le changement, supprimez le code intégré du bouton d'action flottant de votre application et suivez la documentation pour commencer avec le nouvel axe DevTools Mobile Analyzer.
iOS
- Les vues créées avec SwiftUI et les applications multiplateformes peuvent désormais être testées via des tests initiés par l'utilisateur (manuels) à l'aide du nouveau axe DevTools Mobile Analyzer pour iOS.
- La règle Supports Dynamic Type est désormais disponible dans le framework XCUI. Cette règle redimensionne le texte plusieurs fois et réévalue l'écran après chaque redimensionnement pour rechercher des problèmes, ce qui prend quelques secondes à exécuter. C'est pour cette raison que nous l'avons rendu disponible sur une base d'adhésion volontaire. Pour participer, définissez
optInToSDT
sur true à partir de l'API de configuration axe.axeDevTools.configuration.optInToSDT = true
. - La version iOS minimale prise en charge est désormais iOS 14 (anciennement iOS 13).
Android
- Les applications multiplateformes peuvent désormais être testées via des tests initiés par l'utilisateur (manuels) à l'aide du nouveau axe DevTools Mobile Analyzer pour Android.
- Les applications utilisant les vues Jetpack Compose exécuteront désormais l'ensemble de règles complet via des tests initiés par l'utilisateur (manuels) ou automatisés. (Auparavant, les applications Android utilisant Jetpack Compose avaient un ensemble de règles plus restreint.)
- Nous prenons désormais en charge le framework de test UI Automator pour les tests automatisés.
- Le SDK Android mis à jour permet une analyse d'accessibilité automatisée via Espresso et UI Automator à l'aide du registre d'instrumentation, qui ne nécessite pas de spécifier de vue ou d'activité.
- Changement incompatible : la classe
DashboardService
a été remplacée par la classeResultsDashboard
.
Tableau de bord
- Temps de chargement amélioré pour le nombre de problèmes et le résumé à partir de l'écran principal du tableau de bord.
- Amélioration de l'apparence de la hiérarchie des vues lors de l'affichage dans le navigateur Safari.
Corrections de bogues
axe DevTools Mobile pour iOS
- Règle de contraste de couleur - Nous n'exécuterons plus de règles de contraste de couleur sur les boutons désactivés car les règles de contraste de couleur ne sont pas applicables aux éléments désactivés.
- Règle des contrôles en collision - Tout contrôle qui n'est pas marqué comme focalisable pour l'accessibilité ou qui n'est pas un élément d'accessibilité ne sera plus pris en compte lors de l'examen des contrôles en collision.
- Résultats enregistrés localement - Le nom de l'analyse est désormais correctement ajouté au fichier JSON lorsqu'il est enregistré localement ou téléchargé à partir du tableau de bord. Cela corrige le titre « analyse sans nom » qui s'affichait auparavant dans les rapports HTML générés à partir de la CLI de Reporter.
Tableau de bord axe DevTools Mobile
- Corrections d'accessibilité : ajout du rôle aria manquant="button", amélioration de l'en-tête modal d'annonce, suppression de l'info-bulle dans la hiérarchie des vues et ajout de meilleures annonces de lecteur d'écran pour la pagination.
- Correction du nom de l'analyse dans la capture d'écran qui chevauchait auparavant le bouton « Inspecter ».
- Correction d'un problème où les utilisateurs d'essai gratuit voyaient un spinner infini.
Mises à jour
Cette version marque la dernière de nos mises à jour du framework UIKit pour les tests automatisés sur les applications iOS. Nous continuerons à proposer ce framework dans un avenir prévisible, mais nous n'effectuerons plus de corrections de bugs ni de mises à jour. Nous vous encourageons à passer au framework XCUI qui sera mis à jour avec de nouvelles règles et améliorations à l'avenir. Si vous utilisez actuellement le framework UIKit pour les tests unitaires ou d'interface utilisateur automatisés et que vous souhaitez bénéficier d'une assistance pour la transition vers le framework XCUI, veuillez nous le faire savoir. Soumettez une demande à support.deque.com ou envoyez un e-mail à helpdesk@deque.com.
Problèmes connus
Si vous rencontrez l'un des problèmes ci-dessous, veuillez nous contacter à helpdesk@deque.com ou support.deque.com. Nous serons alors en mesure de vous informer une fois le problème résolu ou d'une solution de contournement identifiée, si aucune n'est listée.
- Les tests automatisés axe DevTools Mobile s'exécutent sur les applications natives iOS, natif Android et React Native. Veuillez contacter votre représentant Deque pour des solutions de test d'accessibilité sur votre pile technologique.
- Pour vous aider à obtenir des résultats précis et des conseils de correction applicables, les règles axe DevTools Mobile ne s'exécutent pas dans les vues Web ou les PDF rendus. Pour tester le contenu HTML, veuillez utiliser axe DevTools pour le Web. axe Monitor prend en charge la numérisation des PDF pour l'accessibilité.
axe DevTools Mobile pour iOS
axeDevToolsUIKit.xcframework
Les vues créées avec SwiftUI ne peuvent pas être testées à l'aide de ce framework pour les tests automatisés.
Utilisez le framework axeDevToolsXCUI dans UITesting pour les vues SwiftUI.
La prise en charge des règles personnalisées n'est disponible que dans Swift
L'API de règle personnalisée n'est pas ouverte à Objective-C.
Faux positifs : DansScrollView, SupportsTypeDynamique, Vues en Collision
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.
InScrollView
InScrollView peut signaler des problèmes de texte dans les éléments se comportant comme des bannières. Pour rendre ces éléments accessibles à ceux qui ont besoin d’un texte plus grand, utilisez UILargeContentViewer
.
SupportsDynamicType
Vous pouvez voir des faux positifs dans les scénarios suivants :
- Si vous utilisez la
UIContentSizeCategoryDidChange
notification, le framework peut signaler à tort que le texte ne répond pas à Dynamic Type dans UITests. - Si vous utilisez
NotificationCenter.default.addObserver(forName:.., object:.., queue:.., using:..)
pour répondre à laUIContentSizeCategoryDidChange
notification. - Si vous utilisez
traitCollectionDidChange
sur la vue parent ou le contrôleur de vue d'un texte pour répondre à Dynamic Type.
Lorsqu'une sous-vue déroulante contient du texte et que cette sous-vue ne s'étend pas jusqu'au bord des limites de l'écran, vous verrez des erreurs pour le texte situé dans les limites de la vue.
axeDevToolsXCUI.xcframework
Picker SwiftUI et Picker UIKit
Les vues Picker dans SwiftUI et UIKit peuvent entraîner le blocage du framework sur les simulateurs ou les appareils. (#636)
Règles contre les contrôles imbriqués
En recherchant 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’arborescence d’accessibilité. Un bug a été signalé à Apple. (#1110)
Faux positif : dans Scroll View, 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.
En mode défilement
Peut signaler des problèmes de texte dans les éléments se comportant comme des bannières. Pour rendre ces éléments accessibles à ceux qui ont besoin d’un texte plus grand, utilisez UILargeContentViewer
. (#622)
Nom du contrôle actif
Si un UIImageView possède un `accessibilityIdentifier` attribut mais n'est pas focalisable par VoiceOver et qu'il contient des contrôles focalisables imbriqués, ActiveControlName peut signaler un faux positif sur le UIImageView. La suppression du `accessibilityIdentifier` résout le problème. (#1178)
Faux négatifs : nom de la vue d'image, Texte pouvant être mis au point dans iOS 13 via iOS 14.8.1
Nous travaillons activement sur des correctifs pour les faux négatifs suivants et mettrons à jour cette liste au fur et à mesure que des correctifs seront publiés.
Image View Name
Si un UIImageView a un `accessibilityIdentifier` attribut défini mais n'est pas focalisable par VoiceOver, ImageViewName peut signaler un faux négatif sur le UIImageView. La suppression du `accessibilityIdentifier` résout le problème. (#1188)
Texte focalisable
Les éléments marqués comme éléments non accessibles peuvent signaler des résultats incorrects en raison d'un bogue dans le framework d'Apple.
axe DevTools Mobile pour Android
Crash lors de l'utilisation de Proguard
Si votre version de débogage ou de test utilise Proguard, suivez les étapes pour ignorer Deque dans vos paramètres Proguard.
Crash lorsque `minifiedEnabled` est défini sur true
Si vous minifiez votre construction, vous verrez un crash avec un journal d'erreurs signalant qu'un adaptateur n'a pas pu être trouvé lors de la tentative de se connecter à la bibliothèque axe DevTools. Désactivez la minification pour vos constructions de débogage avec axe DevTools intégré. (#729)
Erreurs de compilation avec le projet Java8 et axe DevTools Android 3.1.0
Essayez les importations suivantes :
implementation 'androidx.core:core-ktx:1.9.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'Après avoir importé la bibliothèque ci-dessus, si vous voyez des erreurs liées à la version minSDK pour la bibliothèque core-ktx, essayez ce qui suit dans le manifeste Android de votre projet :
<uses-sdk tools:overrideLibrary="androidx.core" />
Les builds avec r8 activé génèrent une erreur
Une construction 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)Pour résoudre cette erreur, ajoutez la ligne suivante à votre fichier ProGuard pour conserver les classes axeDevTools :
keep class com.deque.** { *; }
Message d'erreur similaire à :
Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)
Si vous rencontrez une erreur du type `Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)`, veuillez nous contacter à helpdesk@deque.com ou support.deque.com pour obtenir de l'aide. Dans certaines conditions, deux nœuds racine Compose peuvent exister en même temps.
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 dans le titre de l'écran apparaîtront comme le nom de classe complet, y compris l'identifiant du bundle. Dans une version ultérieure, ce problème sera résolu afin que le titre de l'écran soit formaté en un nom plus lisible. Pour contourner ce problème, vous pouvez définir le nom du scan à partir du tableau de bord ou des frameworks. (#1643)