Testowanie

Podstawowym sposobem testowania ułatwień dostępu jest testowanie ręczne: włącz usługi ułatwień dostępu, takie jak TalkBack czy Switch Access, i sprawdź, czy wszystko działa zgodnie z oczekiwaniami. Dzięki temu możesz bezpośrednio sprawdzić, jak użytkownicy z potrzebami związanymi z ułatwieniami dostępu mogą korzystać z Twojej aplikacji.

Oprócz ręcznej weryfikacji należy też używać testów automatycznych, aby oznaczać potencjalne problemy, które mogą wpływać na wrażenia użytkowników podczas wprowadzania ciągłych zmian w aplikacji.

Istniejące interfejsy API do testowania Compose umożliwiają pisanie testów automatycznych, które wchodzą w interakcję z elementami semantycznymi, oraz potwierdzanie właściwości zdefiniowanych w interfejsie.

Sprawdzanie ułatwień dostępu

W przypadku automatycznego testowania ułatwień dostępu możesz też użyć Accessibility Test Framework – tej samej platformy, która obsługuje Accessibility Scanner i kontrole ułatwień dostępu w Espresso – aby automatycznie przeprowadzać niektóre kontrole związane z ułatwieniami dostępu, zaczynając od Compose 1.8.0.

Aby włączyć testy, dodaj zależność ui-test-junit4-accessibility, wywołaj enableAccessibilityChecks() w AndroidComposeTestRule i wywołaj działanie lub 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()
}

Ten test kończy się niepowodzeniem z powodu wyjątku i komunikatu, że element może nie mieć etykiety, którą mogą odczytać usługi ułatwień dostępu.

Inne dostępne testy sprawdzają, czy nie występują problemy z dostępnością związane z kontrastem kolorów, małym rozmiarem docelowego elementu dotykowego lub kolejnością przechodzenia między elementami.

Jeśli łączysz widoki z Compose i używasz już AccessibilityValidator lub musisz go skonfigurować, możesz go ustawić w regule:

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

W połączeniu z testowaniem ręcznym testy automatyczne wykorzystujące zarówno interfejsy Compose API, jak i platformę Accessibility Test Framework mogą pomóc w wykryciu potencjalnych problemów na wczesnym etapie procesu programowania.