テスト

ユーザー補助機能のテストに欠かせない方法は、手動テストです。TalkBack やスイッチ アクセスなどのユーザー補助サービスをオンにして、すべてが想定どおりに動作するかどうかを確認します。これにより、ユーザー補助を必要とするユーザーがアプリをどのように使用しているかを直接把握できます。

手動検証と併用して、自動テストを使用して、アプリを継続的に変更する際にユーザー エクスペリエンスに影響する可能性のある問題を報告する必要があります。

既存の Compose テスト API を使用すると、セマンティック要素を操作する自動テストを作成したり、UI で定義されたプロパティをアサートしたりできます。

ユーザー補助のチェック

ユーザー補助機能の自動テストでは、ユーザー補助機能テスト フレームワーク(Espresso のユーザー補助検証ツールとユーザー補助機能チェックの基盤となるフレームワークと同じ)を使用して、Compose 1.8.0 以降でユーザー補助機能関連のチェックを自動的に実行することもできます。

チェックを有効にするには、ui-test-junit4-accessibility dependency を追加し、AndroidComposeTestRuleenableAccessibilityChecks() を呼び出して、アクションまたは 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()
}

この特定のテストは、例外と、アイテムにユーザー補助サービスで読み取り可能なラベルがない可能性があるというメッセージで失敗します。

その他のチェックでは、色のコントラスト、タップ ターゲットのサイズが小さい、要素の移動順序に関するユーザー補助機能の問題を探します。

View と Compose を組み合わせて使用していて、すでに AccessibilityValidator を使用している場合、または 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 とユーザー補助機能テスト フレームワークの両方を使用する自動テストを、手動テストと組み合わせることで、開発プロセスの早い段階で潜在的な問題を検出できます。