Notes de version d'Axe DevTools Mobile du 16 janvier 2025
16 janvier 2025
Versions des composants
- SDK iOS (axeDevToolsXCUI v2.13.0)
- Analyseur iOS (axe-devtools-mobile-analyzer v1.4.5)
- Driver iOS Appium (axe-appium-xcuitest-driver v1.1.0)
Comment mettre à jour : SDK iOS, Analyseur iOS, Driver iOS Appium
Corrections
- Mises à jour pour améliorer les performances et la précision des règles suivantes : Texte associé, Contraste des couleurs, Traits conflictuels, Action inaccessible, Dans la vue déroulante, Étiquette dans le nom, Étiquette à l'avant, Nom des éléments imbriqués
- La version minimale d'iOS prise en charge est désormais iOS 16
- Correction du problème avec la fonctionnalité Ignorer les règles, notamment l'ignorance par identifiant d'accessibilité avec SwiftUI
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 ainsi 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 d'Axe DevTools Mobile s'exécutent sur des applications natives iOS, Android natives 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 Web ou Axe Monitor pour des tests d'accessibilité web plus complets.
iOS
Erreur dans le projet d'analyse & test par identifiant de bundle en 2.8.1
La fonctionnalité de test d'une application par identifiant de bundle a été compromise dans la version 2.8.1, ce qui a entraîné une erreur intitulée "No target application path specified via test configuration: ...". Mettez à jour vers la version 2.8.2 ou la dernière version pour résoudre l'erreur. Mettez à jour vers la dernière version au sein du projet Analyzeur iOS.
Faux positifs : 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 détectée (#1622)
La règle de support du type dynamique ne fonctionne pas avec le simulateur iOS 15 Pro
Il y a un problème affectant le simulateur iPhone 15 Pro qui empêche l'exécution de la règle de support du type dynamique. Si vous êtes inscrit à la règle de support du type dynamique, vous ne pourrez pas la tester avec un simulateur iPhone 15 Pro. Un bogue a été signalé à Apple.
Règles contre les contrôles imbriqués
Tout en cherchant à améliorer 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 a besoin d'une révision des 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 focalisabilité 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 de l'ImageView dans les applications UIKit seront signalés comme nécessitant une révision. Un rapport de bogue a été déposé auprès d'Apple. (#1633)
Faux positifs : Dans la vue déroulante, Étiquette dans le nom, Étiquette à l'avant, et Image View Name & ActiveControlName de la v2.11.0
Nous travaillons activement sur les correctifs pour les faux positifs suivants et mettrons cette liste à jour au fur et à mesure que les correctifs seront publiés.
In Scroll View
Peut signaler des problèmes pour le texte au sein des éléments agissant comme des bannières. Pour rendre ces éléments disponibles à 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 à l'intérieur, ActiveControlName peut signaler un faux positif sur le UIImageView. Supprimer le `accessibilityIdentifier` résout le problème. Un bogue a été signalé à 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 voisins pour aider à déterminer le statut de la règle. Dans certaines hiérarchies de vue, le texte voisin incorrect peut être détecté, causant l'échec de ces règles. (#1622)
Android
Erreur lors de l'enregistrement des résultats localement sur l'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 est toujours enregistré sous forme de fichier JSON malgré cette erreur affichée. 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
// }
}
Please note that this code should only be commented out for API 30 as it will cause problems when saving locally for other API levels.
Détection de défilement sur les applications hybrides et multiplateformes
Dans certaines applications hybrides et multiplateformes, nous pouvons renvoyer des résultats inattendus lorsque des éléments dans une vue déroulante sont partiellement hors écran. Pour tester un élément pour l'accessibilité, assurez-vous qu'il soit entièrement affiché avant d'effectuer le scan.
Application Analyzer : le bouton d'action flottant disparaît
Introduite avec l'API 31 (Android 12), la possibilité de masquer les superpositions non-système. Pour utiliser l'application Axe Analyzer, veuillez vous assurer que ce paramètre 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é les données de test et éliminer les préoccupations de sécurité de cette manière. 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 de la méthode setHideOverlayWindows(true) à setHideOverlayWindows(false) sur les fenêtres d'activité concernées.
Capture d'écran manquante (boîte noire) dans le tableau de bord
Pour débloquer la pleine fonctionnalité 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 application qui utilise des données factices pour éviter des 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'erreurs signalant 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 semblable à :
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 semblable à :
Expected exactly '1' node but found '2' nodes that satisfy: (isRoot)
ou : No View initialized, did you call AxeDevToolsCompose.setComposeTestRule()?
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 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.
Message de journal :MlKitContext has not been initialized
Si vous rencontrez ce message, certains résultats de règles peuvent ne pas revenir comme prévu lorsque cette règle utilise l'intelligence artificielle. Les règles affectées incluent le Contraste des couleurs, le Texte focalisable et le Nom de l'élément imbriqué. (#841)
MAUI : règle du Nom de l'Édition de Texte
En raison des limitations de l'architecture de l'application MAUI dans l'écosystème Android, la règle du Nom de l'Édition de Texte 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 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 assurer qu'ils se comportent 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 du scan, votre application empêche peut-être la prise de captures d'écran. Souvent, cela est pour 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 ne sont pas formatés
Certains noms de scan Android qui sont par défaut le titre de l'écran apparaîtront comme le nom de classe complet y compris l'identifiant du package. Dans une future version, cela sera résolu afin que le titre de l'écran soit formaté en 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)
