Pengujian

Cara penting untuk menguji aksesibilitas adalah bentuk pengujian manual: dengan mengaktifkan layanan aksesibilitas, seperti TalkBack atau Tombol Akses, dan memeriksa apakah semuanya berfungsi seperti yang diharapkan. Hal ini memberikan insight langsung tentang pengalaman pengguna dengan kebutuhan aksesibilitas saat menggunakan aplikasi Anda.

Bersama dengan verifikasi manual, Anda juga harus menggunakan pengujian otomatis untuk menandai potensi masalah yang dapat memengaruhi pengalaman pengguna saat Anda melakukan perubahan berkelanjutan pada aplikasi.

API pengujian Compose yang ada memungkinkan Anda menulis pengujian otomatis yang berinteraksi dengan elemen semantik dan menegaskan properti yang ditentukan di UI Anda.

Pemeriksaan aksesibilitas

Untuk pengujian aksesibilitas otomatis, Anda juga dapat menggunakan Framework Pengujian Aksesibilitas—framework dasar yang sama yang mendukung Accessibility Scanner dan pemeriksaan aksesibilitas di Espresso—untuk melakukan beberapa pemeriksaan terkait aksesibilitas secara otomatis, mulai dari Compose 1.8.0.

Untuk mengaktifkan pemeriksaan, tambahkan dependensi ui-test-junit4-accessibility, panggil enableAccessibilityChecks() di AndroidComposeTestRule, dan picu tindakan atau 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()
}

Pengujian khusus ini gagal dengan pengecualian dan pesan bahwa item mungkin tidak memiliki label yang dapat dibaca oleh layanan aksesibilitas.

Pemeriksaan lain yang tersedia mencari masalah aksesibilitas terkait kontras warna, ukuran target sentuh yang kecil, atau urutan traversal elemen.

Jika Anda menggabungkan View dengan Compose dan sudah menggunakan AccessibilityValidator, atau perlu mengonfigurasinya, Anda dapat menetapkannya dalam aturan:

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

Selain pengujian manual, pengujian otomatis menggunakan API Compose dan Framework Pengujian Aksesibilitas dapat membantu Anda mendeteksi kemungkinan masalah di awal proses pengembangan.