Prueba

Una forma esencial de probar la accesibilidad es una forma de prueba manual: activa los servicios de accesibilidad, como TalkBack o Accesibilidad mejorada, y comprueba si todo funciona según lo esperado. Esto proporciona información directa sobre cómo los usuarios con necesidades de accesibilidad podrían experimentar tu aplicación.

Junto con la verificación manual, también debes usar pruebas automatizadas para marcar posibles problemas que podrían afectar la experiencia del usuario a medida que realizas cambios continuos en tu app.

Las APIs de prueba de Compose existentes te permiten escribir pruebas automatizadas que interactúan con elementos semánticos y confirman las propiedades definidas en tu IU.

Comprobaciones de accesibilidad

Para las pruebas de accesibilidad automatizadas, también puedes usar el framework de pruebas de accesibilidad (el mismo framework subyacente que potencia la Prueba de accesibilidad y las verificaciones de accesibilidad en Espresso) para realizar algunas verificaciones relacionadas con la accesibilidad automáticamente, a partir de Compose 1.8.0.

Para habilitar las verificaciones, agrega ui-test-junit4-accessibility dependency, llama a enableAccessibilityChecks() en AndroidComposeTestRule y activa una acción o 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()
}

Esta prueba específica falla con una excepción y un mensaje que indica que es posible que el elemento no tenga una etiqueta que puedan leer los servicios de accesibilidad.

Otras verificaciones disponibles buscan problemas de accesibilidad con el contraste de color, el tamaño pequeño del objetivo táctil o el orden de recorrido de los elementos.

Si combinas Views con Compose y ya usas un AccessibilityValidator, o necesitas configurar uno, puedes establecerlo en la siguiente regla:

@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 combinación con las pruebas manuales, las pruebas automatizadas que usan las APIs de Compose y el framework de pruebas de accesibilidad pueden ayudarte a detectar posibles problemas al principio del proceso de desarrollo.