Tests

Une méthode essentielle pour tester l'accessibilité est le test manuel : activez les services d'accessibilité, comme TalkBack ou Switch Access, et vérifiez que tout fonctionne comme prévu. Cela vous permet de comprendre directement comment les utilisateurs ayant des besoins d'accessibilité peuvent utiliser votre application.

En plus de la vérification manuelle, vous devez également utiliser des tests automatisés pour signaler tout problème potentiel susceptible d'avoir un impact sur 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é (le 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 la dépendance ui-test-junit4-accessibility, appelez enableAccessibilityChecks() dans AndroidComposeTestRule, puis 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é.

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

Si vous combinez des vues avec Compose et que vous utilisez déjà un AccessibilityValidator, ou si 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 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.