Tests

Eine wichtige Methode zum Testen der Barrierefreiheit ist eine Form des manuellen Tests: Sie aktivieren Bedienungshilfen wie TalkBack oder den Schalterzugriff und prüfen, ob alles wie erwartet funktioniert. So erhalten Sie einen direkten Einblick in die Nutzung Ihrer Anwendung durch Nutzer mit Beeinträchtigungen.

Neben der manuellen Überprüfung sollten Sie auch automatisierte Tests verwenden, um potenzielle Probleme zu melden, die sich auf die Nutzerfreundlichkeit auswirken könnten, wenn Sie kontinuierlich Änderungen an Ihrer App vornehmen.

Mit vorhandenen Compose-Test-APIs können Sie automatisierte Tests schreiben, die mit semantischen Elementen interagieren und die in Ihrer Benutzeroberfläche definierten Eigenschaften prüfen.

Prüfungen der Barrierefreiheit

Für automatisierte Bedienungshilfentests können Sie auch das Accessibility Test Framework verwenden. Dieses Framework ist auch die Grundlage für den Bedienungshilfen-Scanner und die Bedienungshilfentests in Espresso. Ab Compose 1.8.0 können Sie damit einige Bedienungshilfentests automatisch ausführen.

Wenn Sie die Prüfungen aktivieren möchten, fügen Sie die ui-test-junit4-accessibility dependency hinzu, rufen Sie enableAccessibilityChecks() in der AndroidComposeTestRule auf und lösen Sie eine Aktion oder tryPerformAccessibilityChecks aus:

@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()
}

Dieser Test schlägt mit einer Ausnahme und der Meldung fehl, dass das Element möglicherweise kein Label hat, das von Bedienungshilfen gelesen werden kann.

Andere verfügbare Prüfungen suchen nach Problemen mit der Barrierefreiheit in Bezug auf Farbkontrast, kleine Berührungszielbereiche oder die Durchlaufreihenfolge von Elementen.

Wenn Sie Ansichten mit Compose kombinieren und bereits eine AccessibilityValidator verwenden oder eine konfigurieren müssen, können Sie sie in der Regel festlegen:

@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()
}

In Kombination mit manuellen Tests können automatisierte Tests mit Compose APIs und dem Accessibility Test Framework dazu beitragen, mögliche Probleme schon früh im Entwicklungsprozess zu erkennen.