Notes de mise à jour d'Axe DevTools Mobile du 18 octobre 2023
18 octobre 2023
Versions des composants
- axeDevToolsXCUI v2.8.0
- axe-devtools-android v4.2.0
Quoi de neuf ?
Prise en charge de la WCAG 2.2
La WCAG 2.2 a été officiellement publiée le 5 octobre. Notre règle "Espacement des cibles tactiles" a été promue hors du statut Expérimental. Cette règle est conforme à la WCAG 2.2. 2.5.8 et garantit que les cibles respectent une taille minimale ou disposent d'un espacement suffisant autour d'elles. Ceci est important pour les personnes ayant des handicaps physiques qui ne peuvent pas cliquer sur de petits boutons proches les uns des autres. En savoir plus sur le version de la WCAG 2.2. Consultez la documentation pour la règle d'espacement des cibles tactiles pour iOS et la règle d'espacement des cibles tactiles pour Android.
Le saviez-vous ? La règle d'espacement des cibles tactiles (WCAG 2.2, 2.5.8) répond aux normes AA, tandis que la règle de taille des cibles tactiles (WCAG 2.1, 2.5.5) répond aux normes AAA. Pour les contrôles importants, la WCAG recommande de viser la règle plus stricte, la règle de taille des cibles tactiles pour répondre aux normes AAA. Deque recommande également de viser la règle plus stricte sur mobile car elle impose la conformité avec la directive d'Apple 44px44pt et s'aligne davantage avec la directive de Google 48dpx48dp pour s'assurer qu'il n'y a pas de problèmes lors de la soumission de votre application aux app stores.
Changement important - Scanner uniquement les vues visibles
Axe DevTools Mobile ne scannera désormais que les vues visibles pour l'utilisateur au moment du scan. Auparavant, la valeur par défaut était de scanner toutes les vues, même celles hors écran ou cachées par d'autres vues.
Comment cela améliore-t-il les résultats ?
- En ne scannant que ce qui est visible pour l'utilisateur, les résultats reflètent plus précisément l'expérience utilisateur de quelqu'un ayant un handicap ou utilisant une technologie d'assistance. Tout ce qui se trouve derrière une boîte de dialogue ou un modal et qui ne peut pas être atteint par l'utilisateur ou par la technologie d'assistance ne sera pas scanné.
- Les règles de vision par ordinateur, telles que le contraste des couleurs, ne s'appliquent pas aux vues hors écran, donc auparavant, les vues hors écran ne recevaient des résultats que d'un ensemble de règles limité. En ne scannant que les vues dans les limites de l'écran, vous pouvez être sûr que toutes les vues scannées bénéficient de l'ensemble complet des règles.
Qu'est-ce que cela signifie pour votre équipe ?
Si vous avez actuellement les cases de "Filtrage des problèmes" sur le tableau de bord décochées, vous ne remarquerez aucune différence dans les résultats de votre tableau de bord. Les vues qui ne sont pas visibles pour l'utilisateur sont déjà exclues de vos résultats.
Sinon, dès que vous passerez à axeDevToolsXCUI v2.8.0 et axe-devtools-android v4.2.0 :
- Les vues qui sont cachées derrière d'autres vues, telles que les modals ou les popups, ne disposeront pas de résultats d'accessibilité.
- Les vues qui sont hors écran, telles que celles au-dessus ou en dessous de la position de défilement actuelle, ne disposeront pas de résultats d'accessibilité.
- Astuce : effectuez un scan à chaque position de défilement d'un écran long pour vous assurer de capturer tous les problèmes d'accessibilité. Par exemple, si l'écran d'accueil de votre application s'étend sur 3 écrans, vous feriez 3 scans comme montré ci-dessous :

- Pour les écrans longs avec un type de vue répétée, tel qu'une liste, plusieurs scans à chaque position de défilement peuvent ne pas être nécessaires. Un seul scan de la première zone visible capturera probablement les problèmes récurrents d'accessibilité.
- Astuce : effectuez un scan à chaque position de défilement d'un écran long pour vous assurer de capturer tous les problèmes d'accessibilité. Par exemple, si l'écran d'accueil de votre application s'étend sur 3 écrans, vous feriez 3 scans comme montré ci-dessous :
iOS
- La règle de texte associé a été promue hors du statut expérimental. Cette règle garantit qu'un contrôle obtient son nom accessible d'une étiquette proche disponible pour les technologies d'assistance telles que VoiceOver et Voice Control.
- La règle de contraste des couleurs a reçu une amélioration pour obtenir une taille de police estimée et améliorer encore l'exactitude des résultats. Ce changement signifie que les résultats pour certains scénarios indiqueront désormais un statut "Réussi" ou "Échoué" au lieu de "Besoin de révision".
Android
- Changement important dans les règles personnalisées - L'interface pour exécuter des règles personnalisées dans Android a reçu une mise à jour pour retourner un objet
RunRuleResultau lieu d'un typeString. Découvrez un exemple complet du changement ou plus d'informations sur règles personnalisées dans Android. - Après un examen attentif, nous avons décidé de retirer les règles expérimentales de vue cachée de notre bibliothèque - Focus de Vue Active Cachée et Focus de Vue Informative Cachée. Ces règles expérimentales ont subi de nombreuses itérations alors que nous avons recueilli des commentaires pendant deux ans. Nous avons constaté que l'automatisation de ces règles avait le potentiel de retourner des faux positifs, et avons donc décidé de les retirer de notre ensemble de règles automatisées pour soutenir notre engagement à 0 faux positifs. Avec cette version, nous avons déplacé les règles de vue cachée au statut "ignoré". Elles n'apparaîtront plus dans le nombre de résultats "échec" ou "réussi". Dans notre prochaine version (date à déterminer) elles seront entièrement retirées de la bibliothèque.
- Nous avons ajouté des résumés plus descriptifs aux règles pour mieux décrire pourquoi elles sont marquées comme Réussies, Échouées ou à Réviser.
- Les API Compose acceptent maintenant
ComposeEmptyTestRulepour lancer une activité en utilisantActivityScenario. Cela peut être plus facile que d'utiliserAndroidComposeTestRule, surtout lorsque vous utilisez à la fois des vues XML et Compose. En savoir plus sur l'utilisation de la règle de test vide Compose. - Avec cette version, nous sommes passés de la version 1.7 de Kotlin à Kotlin 1.9 pour garantir que nos bibliothèques restent compatibles avec les dernières versions de Jetpack Compose. La version 1.9 de Kotlin a une compatibilité rétroactive avec Kotlin 1.8 et supérieures. Si votre application repose sur une version de Kotlin inférieure à 1.8, veuillez continuer à utiliser axe-devtools-android v4.1.0 ou une version inférieure.
- Nous sommes passés de Moshi 1.12.0 à 1.15.0 et Jetpack Compose 1.4.3 à 1.5.1.
Corrections de bugs
iOS
- L'espacement des cibles tactiles a reçu quelques mises à jour pour gérer les cas particuliers de contrôles cachés et d'éléments complètement superposés.
- Des améliorations autour de la détection des éléments d'accessibilité dans des cas particuliers qui amélioreront la précision des résultats pour diverses règles testant les contrôles.
- La règle de support du type dynamique ne s'appliquera pas aux contrôles sans texte visible.
- Le framework ne gèle plus sur les éléments Picker. Aucun changement dans les résultats n'est attendu car il n'y a actuellement aucune règle ciblant les éléments Picker. Nous rechercherons des opportunités à l'avenir.
Android
- Nous avons ajouté des propriétés lisibles par l'homme à l'orientation de l'écran analysée pour la règle d'orientation de l'écran. Auparavant, il s'agissait de valeurs entières qui ne pouvaient pas être facilement comprises par la personne examinant les résultats.
- Vous pouvez maintenant mettre à jour la liste des règles personnalisées lors de l'utilisation du scan indifférent au layout via le registre d'instrumentation.
Tableau de bord
- Améliorations de l'accessibilité à la vue en arborescence dans la fonction "Inspecter". Vous pouvez maintenant naviguer avec succès dans la vue en arborescence à l'aide d'un clavier ou d'une technologie d'assistance.
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 en cas de solution de contournement identifiée si aucune n'est répertoriée.
- Axe DevTools Mobile effectue des tests automatisés sur les applications natives iOS, natives Android 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 certains résultats à partir de vues Web ou de PDF rendus, nous recommandons fortement d'utiliser Axe DevTools pour le Web ou Axe Monitor pour obtenir les tests d'accessibilité les plus complets pour le web.
Axe DevTools Mobile pour iOS
La règle Supporte le type dynamique ne fonctionne pas avec le simulateur iOS 15 Pro
Il existe un problème affectant le simulateur iPhone 15 Pro qui empêche la règle Supporte le type dynamique de fonctionner. Si vous avez opté pour la règle Supporte le type dynamique, vous ne pourrez pas la tester en utilisant un simulateur iPhone 15 Pro. Un bug a été signalé à 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 bug a été signalé à Apple. (#1110)
Faux positif : Dans la vue défilable, ActiveControlName
Nous travaillons activement sur des correctifs pour les faux positifs suivants et mettrons à jour cette liste au fur et à mesure de la publication des correctifs.
In Scroll View
Peut signaler des problèmes pour le texte au sein d'éléments se comportant comme une bannière. Pour rendre ces éléments accessibles à ceux qui ont besoin de texte plus grand, utilisez UILargeContentViewer. (#622)
ActiveControlName
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 à l'intérieur, ActiveControlName peut signaler un faux positif sur la UIImageView. Supprimer le `accessibilityIdentifier` résout le problème. Un bug a été signalé à Apple. (#1226)
Faux négatif : Nom de la vue d'image, Texte focalisable dans iOS 13 à 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 de la publication des correctifs.
Image View Name
Si une UIImageView a un `accessibilityIdentifier` défini mais n'est pas focalisable par VoiceOver, ImageViewName peut signaler un faux négatif sur la UIImageView. Supprimer le `accessibilityIdentifier` résout le problème. Un bug a été signalé à Apple. (#1226)
Focusable Text
Les éléments marqués comme non-accessibles peuvent signaler des résultats incorrects en raison d'un bug dans le cadre d'Apple.
Axe DevTools Mobile pour Android
Crash lors de l'utilisation de Proguard
Si votre build de débogage ou de test utilise Proguard, suivez les étapes pour ignorer Deque dans vos paramètres Proguard.
Crash lorsque `minifiedEnabled` est activé
Si vous minifiez votre build, vous verrez un plantage 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)
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'After importing the above library, if you see errors related to minSDK version for core-ktx library try the following in your project’s Android Manifest:
<uses-sdk tools:overrideLibrary="androidx.core" />
Les builds avec r8 activé génèrent une erreur
Un build 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)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)
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 assistance. Dans certaines conditions, il peut y avoir deux nœuds racine Compose existant en même temps.
Tableau de bord Axe DevTools Mobile
Certains noms de scan Android ne sont pas 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, y compris l'identifiant du bundle. Dans une future version, cela sera résolu afin que le titre de l'écran soit formaté dans un nom plus lisible. En attendant, vous pouvez définir le nom du scan depuis le tableau de bord ou les frameworks. (#1643)
