Тестирование

Один из основных способов проверки доступности – ручное тестирование. Для этого нужно включить сервисы специальных возможностей, например TalkBack или Switch Access, и проверить, все ли работает правильно. Это позволяет понять, как пользователи с особыми потребностями могут взаимодействовать с вашим приложением.

В дополнение к проверке вручную следует использовать автоматическое тестирование, чтобы выявлять потенциальные проблемы, которые могут повлиять на удобство использования приложения, по мере того как вы вносите в него изменения.

Существующие API тестирования Compose позволяют писать автоматические тесты, которые взаимодействуют с семантическими элементами и проверяют свойства, определенные в вашем интерфейсе.

Проверки специальных возможностей

Для автоматического тестирования доступности можно также использовать Accessibility Test Framework – тот же фреймворк, на котором основаны сканер доступности и проверки доступности в Espresso. С его помощью можно автоматически выполнять некоторые проверки доступности, начиная с Compose 1.8.0.

Чтобы включить проверки, добавьте зависимость ui-test-junit4-accessibility, вызовите enableAccessibilityChecks() в AndroidComposeTestRule и активируйте действие или 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()
}

Этот тест завершается с исключением и сообщением о том, что у объекта может не быть ярлыка, который можно прочитать с помощью сервисов специальных возможностей.

Другие доступные проверки выявляют проблемы с доступностью, связанные с цветовым контрастом, небольшим размером области прикосновения или порядком перехода между элементами.

Если вы используете представления вместе с функцией создания писем и уже применяете AccessibilityValidator или вам нужно его настроить, вы можете сделать это в правиле:

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

В сочетании с ручным тестированием автоматические тесты с использованием как Compose API, так и Accessibility Test Framework помогут вам выявить возможные проблемы на ранних этапах разработки.