Важным способом тестирования доступности является форма ручного тестирования: включение служб доступности, таких как 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 могут помочь вам обнаружить возможные проблемы на ранних этапах процесса разработки.
{% дословно %}Рекомендуется для вас
- Примечание. Текст ссылки отображается, когда JavaScript отключен.
- Доступность в Compose
- [Material Design 2 в Compose][19]
- Тестирование макета Compose