Tests

Une forme de test manuel est essentielle pour tester l'accessibilité: en activant les services d'accessibilité, tels que TalkBack ou Switch Access, et en vérifiant si tout fonctionne comme prévu. Vous obtenez ainsi un aperçu direct de l'expérience que les utilisateurs ayant des besoins d'accessibilité peuvent avoir avec votre application.

En plus de la vérification manuelle, vous devez également utiliser des tests automatisés pour signaler tout problème potentiel pouvant affecter l'expérience utilisateur lorsque vous apportez des modifications continues à votre application.

Les API de test Compose existantes vous permettent d'écrire des tests automatisés qui interagissent avec des éléments sémantiques et d'affirmer les propriétés définies dans votre UI.

Vérifications de l'accessibilité.

Pour les tests d'accessibilité automatisés, vous pouvez également utiliser le framework de test d'accessibilité (même framework sous-jacent qui alimente Accessibility Scanner et les vérifications d'accessibilité dans Espresso) pour effectuer automatiquement certaines vérifications liées à l'accessibilité, à partir de Compose 1.8.0.

Pour activer les vérifications, ajoutez ui-test-junit4-accessibility dependency, appelez enableAccessibilityChecks() dans AndroidComposeTestRule et déclenchez une action ou tryPerformAccessibilityChecks:

@Rule
@JvmField
val composeTestRule = createAndroidComposeRule<ComponentActivity>()

@Test
fun noAccessibilityLabel() {
    composeTestRule.setContent {
        Box(
            modifier = Modifier
                .size(50.dp, 50.dp)
                .background(color = Color.Gray)
                .clickable { }
                .semantics {
                    contentDescription = ""
                }
        )
    }

    composeTestRule.enableAccessibilityChecks()

    // Any action (such as performClick) will perform accessibility checks too:
    composeTestRule.onRoot().tryPerformAccessibilityChecks()
}

Ce test spécifique échoue avec une exception et un message indiquant que l'élément n'a peut-être pas de libellé lisible par les services d'accessibilité.

Les autres vérifications disponibles recherchent des problèmes d'accessibilité liés au contraste des couleurs, à la petite taille des cibles tactiles ou à l'ordre de parcours des éléments.

Si vous mélangez des vues avec Compose et que vous utilisez déjà un AccessibilityValidator ou que vous devez en configurer un, vous pouvez le définir dans la règle:

@Test
fun lowContrastScreen() {
    composeTestRule.setContent {
        Box(
            modifier = Modifier
                .fillMaxSize()
                .background(color = Color(0xFFFAFBFC)),
            contentAlignment = Alignment.Center
        ) {
            Text(text = "Hello", color = Color(0xFFB0B1B2))
        }
    }

    // Optionally, set AccessibilityValidator manually
    val accessibilityValidator = AccessibilityValidator()
        .setThrowExceptionFor(
            AccessibilityCheckResult.AccessibilityCheckResultType.WARNING
        )

    composeTestRule.enableAccessibilityChecks(accessibilityValidator)

    composeTestRule.onRoot().tryPerformAccessibilityChecks()
}

En plus des tests manuels, les tests automatisés utilisant à la fois les API Compose et le framework de test d'accessibilité peuvent vous aider à détecter les problèmes potentiels dès le début du processus de développement.