Concepts et implémentation de Jetpack Compose
Les tests d'accessibilité vous permettent de découvrir votre application du point de vue de vos utilisateurs et d'identifier des problèmes d'usabilité que vous n'auriez peut-être pas remarqués autrement. Les tests d'accessibilité peuvent révéler des opportunités pour améliorer l'efficacité et la polyvalence de votre application pour tous vos utilisateurs, y compris pour les personnes ayant un handicap.
Ce document décrit les approches suivantes :
- Tests avec des outils d'analyse : identifiez des opportunités pour améliorer l'accessibilité de votre application à l'aide d'outils.
- Tests automatisés : activez les tests d'accessibilité dans Espresso et Robolectric.
Tests avec des outils d'analyse
Les outils d'analyse peuvent identifier des opportunités d'amélioration de l'accessibilité que vous pourriez manquer avec les tests manuels.
Accessibility Scanner
L'application Accessibility Scanner analyse votre écran et suggère des moyens d'améliorer l'accessibilité de votre application. Accessibility Scanner utilise le framework de test d'accessibilité et fournit des suggestions spécifiques après avoir examiné les libellés de contenu, les éléments cliquables, le contraste, etc.
Le framework de test d'accessibilité Android est intégré à Android Studio pour vous aider à détecter les problèmes d'accessibilité dans vos mises en page. Pour lancer le panneau, cliquez sur le bouton de rapport d'erreur ! dans l'éditeur de mise en page.
Figure 1. Démonstration d'Accessibility Scanner.
Pour en savoir plus, consultez les ressources suivantes :
Lecteur UI Automator
L'outil uiautomatorviewer fournit une IUG pratique pour scanner et analyser les composants d'UI actuellement affichés sur un appareil Android. Vous pouvez utiliser UI Automator pour inspecter la hiérarchie de la mise en page et afficher les propriétés des composants d'interface utilisateur qui sont visibles au premier plan de l'appareil. Ces informations vous permettent de créer des tests plus précis, par exemple en créant un sélecteur d'interface utilisateur correspondant à une propriété visible spécifique. L'outil se trouve dans le répertoire tools du SDK Android.
Dans les tests d'accessibilité, cet outil est utile pour déboguer les problèmes détectés à l'aide d'autres méthodes de test. Par exemple, si les tests manuels révèlent qu'une vue ne contient pas le texte prononçable requis ou qu'une vue est sélectionnée alors qu'elle ne devrait pas l'être, vous pouvez utiliser l'outil pour identifier l'origine du problème.
Pour en savoir plus sur le lecteur UI Automator, consultez la section Rédiger des tests automatisés avec UI Automator.
Lint
Android Studio affiche des avertissements d'analyse lint pour différents problèmes d'accessibilité et fournit des liens vers les emplacements pertinents de votre code source. Dans l'exemple suivant, un attribut contentDescription est manquant dans une image. La description de contenu manquante génère le message suivant :
[Accessibility] Missing 'contentDescription' attribute on image
L'image 2 illustre l'affichage de ce message dans Android Studio :
contentDescriptionTests automatiques
La plate-forme Android est compatible avec plusieurs frameworks de test, tels qu'Espresso, qui vous permet de créer et d'exécuter des tests automatisés pour évaluer l'accessibilité de votre application.
Espresso
Espresso est une bibliothèque de tests Android conçue pour faciliter et accélérer le test des interfaces utilisateur. Il vous permet d'interagir avec les composants d'UI testés dans votre application et de vérifier que certains comportements se produisent ou que des conditions spécifiques sont remplies.
Pour obtenir une présentation vidéo des tests d'accessibilité avec Espresso, regardez cette vidéo entre 31:54 et 34:19 : Inclusive design and testing: Making your app more accessible - Google I/O 2016 (Conception et tests inclusifs : rendre votre application plus accessible - Google I/O 2016).
Cette section explique comment effectuer des vérifications d'accessibilité à l'aide d'Espresso.
Activer les vérifications
Vous pouvez activer et configurer les tests d'accessibilité à l'aide de la classe AccessibilityChecks :
Kotlin
import androidx.test.espresso.accessibility.AccessibilityChecks
@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
init {
AccessibilityChecks.enable()
}
}
Java
import androidx.test.espresso.accessibility.AccessibilityChecks;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyWelcomeWorkflowIntegrationTest {
@BeforeClass
public void enableAccessibilityChecks() {
AccessibilityChecks.enable();
}
}
Par défaut, les vérifications s'exécutent lorsque vous effectuez une action de vue définie dans ViewActions. Chaque vérification inclut la vue sur laquelle l'action est effectuée, ainsi que toutes les vues descendantes. Vous pouvez évaluer la hiérarchie complète des vues d'un écran lors de chaque vérification en transmettant true à setRunChecksFromRootView(), comme indiqué dans l'extrait de code suivant :
Kotlin
AccessibilityChecks.enable().setRunChecksFromRootView(true)
Java
AccessibilityChecks.enable().setRunChecksFromRootView(true);
Supprimer les sous-ensembles de résultats
Une fois qu'Espresso a effectué des vérifications d'accessibilité sur votre application, vous verrez peut-être des options d'amélioration de l'accessibilité dont vous ne pourrez pas vous occuper immédiatement. Pour éviter que les tests Espresso échouent continuellement en raison de ces résultats, vous pouvez les ignorer temporairement. Le framework de test d'accessibilité (ATF) fournit cette fonctionnalité à l'aide de la
setSuppressingResultMatcher()
méthode, qui indique à Espresso de supprimer tous les résultats correspondant à l'expression de correspondance donnée.
Lorsque vous modifiez votre application pour améliorer un aspect de l'accessibilité, il est utile qu'Espresso affiche des résultats pour le plus grand nombre possible d'autres aspects de l'accessibilité. Pour cette raison, il est préférable de ne supprimer que des opportunités d'amélioration connues spécifiques.
Lorsque vous supprimez temporairement les résultats des tests d'accessibilité que vous prévoyez de traiter plus tard, il est important de ne pas supprimer accidentellement des résultats similaires. Pour cette raison, utilisez des expressions de correspondance restreintes. Pour ce faire, choisissez une expression de correspondance afin qu'Espresso ne supprime un résultat donné que s'il répond à chacune des vérifications d'accessibilité suivantes :
- Les vérifications d'accessibilité d'un certain type, telles que celles qui vérifient la taille des cibles tactiles.
- Les vérifications de l'accessibilité d'un élément d'interface particulier, comme un bouton.
Le ATF définit plusieurs expressions de correspondance
pour vous aider à définir les résultats à afficher dans vos tests Espresso. L'exemple suivant supprime les résultats des vérifications liées au contraste des couleurs d'un seul élément TextView. L'ID de l'élément est countTV.
Kotlin
AccessibilityChecks.enable().apply {
setSuppressingResultMatcher(
allOf(
matchesCheck(TextContrastCheck::class.java),
matchesViews(withId(R.id.countTV))
)
)
}
Java
AccessibilityValidator myChecksValidator =
AccessibilityChecks.enable()
.setSuppressingResultMatcher(
allOf(
matchesCheck(TextContrastCheck.class),
matchesViews(withId(R.id.countTV))));