테스트

접근성을 테스트하는 데 필수적인 방법은 수동 테스트의 한 형태로, TalkBack 또는 스위치 액세스와 같은 접근성 서비스를 사용 설정하고 모든 것이 예상대로 작동하는지 확인하는 것입니다. 이를 통해 접근성 기능이 필요한 사용자가 애플리케이션을 어떻게 경험할 수 있는지 직접적인 통계를 얻을 수 있습니다.

수동 확인과 함께 자동 테스트를 사용하여 앱을 지속적으로 변경할 때 사용자 환경에 영향을 줄 수 있는 잠재적 문제를 신고해야 합니다.

기존 Compose 테스트 API를 사용하면 시맨틱 요소와 상호작용하고 UI에 정의된 속성을 어설션하는 자동 테스트를 작성할 수 있습니다.

접근성 검사

자동 접근성 테스트의 경우 Compose 1.8.0부터 Espresso의 접근성 스캐너 및 접근성 검사를 지원하는 동일한 기본 프레임워크인 접근성 테스트 프레임워크를 사용하여 일부 접근성 관련 검사를 자동으로 실행할 수도 있습니다.

검사를 사용 설정하려면 ui-test-junit4-accessibility dependency를 추가하고 AndroidComposeTestRule에서 enableAccessibilityChecks()를 호출한 후 작업 또는 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와 접근성 테스트 프레임워크를 모두 사용하는 자동화 테스트를 수동 테스트와 함께 사용하면 개발 프로세스 초기에 발생할 수 있는 문제를 감지하는 데 도움이 됩니다.