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

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

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

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

Проверки доступности

Для автоматического тестирования доступности вы также можете использовать платформу тестирования доступности — ту же базовую структуру, которая поддерживает сканер доступности и проверки доступности в Espresso — для автоматического выполнения некоторых проверок, связанных с доступностью, начиная с Compose 1.8.0.

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

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

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

Если вы смешиваете представления с Compose и уже используете 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 могут помочь вам обнаружить возможные проблемы на ранних этапах процесса разработки.

{% дословно %} {% дословно %} {% дословно %} {% дословно %}