Test

Erişilebilirliği test etmenin önemli bir yolu, manuel testtir. TalkBack veya Anahtar Erişimi gibi erişilebilirlik hizmetlerini etkinleştirip her şeyin beklendiği gibi çalışıp çalışmadığını kontrol edebilirsiniz. Bu sayede, erişilebilirlik ihtiyaçları olan kullanıcıların uygulamanızı nasıl deneyimleyebileceği hakkında doğrudan bilgi edinebilirsiniz.

Uygulamanızda sürekli değişiklikler yaparken kullanıcı deneyimini etkileyebilecek olası sorunları işaretlemek için manuel doğrulama ile birlikte otomatik testleri de kullanmanız gerekir.

Mevcut Compose test API'leri, semantik öğelerle etkileşime geçen otomatik testler yazmanıza ve kullanıcı arayüzünüzde tanımlanan özellikleri doğrulamanıza olanak tanır.

Erişilebilirlik kontrolleri

Otomatik erişilebilirlik testi için Compose 1.8.0'dan itibaren erişilebilirlikle ilgili bazı kontrolleri otomatik olarak gerçekleştirmek üzere Erişilebilirlik Testi Çerçevesi'ni (Espresso'daki Erişilebilirlik Tarayıcı ve erişilebilirlik kontrollerini destekleyen temel çerçeve) de kullanabilirsiniz.

Kontrolleri etkinleştirmek için ui-test-junit4-accessibility dependency ekleyin, AndroidComposeTestRule içinde enableAccessibilityChecks()'yi çağırın ve bir işlem tetikleyin veya tryPerformAccessibilityChecks kullanın:

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

Bu test, bir istisna ve öğenin erişilebilirlik hizmetleri tarafından okunabilen bir etikete sahip olmayabileceğine dair bir mesajla başarısız olur.

Diğer kontrollerde renk kontrastı, küçük dokunma hedefi boyutu veya öğelerin geçiş sırasıyla ilgili erişilebilirlik sorunları aranır.

Görüntüleme ile Oluşturma'yı birlikte kullanıyorsanız ve zaten bir AccessibilityValidator kullanıyorsanız veya yapılandırmanız gerekiyorsa bunu kuralda ayarlayabilirsiniz:

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

Manuel testle birlikte, hem Compose API'lerini hem de Erişilebilirlik Testi Çerçevesi'ni kullanan otomatik testler, olası sorunları geliştirme sürecinin başlarında tespit etmenize yardımcı olabilir.