ユーザー補助機能の確認

ユーザー補助機能をテストすることで、ユーザー補助が必要なユーザーを含めた、すべてのユーザーの立場でアプリを体験できます。このようなテストを行うことで、有用で使いやすいアプリにするためのヒントが得られます。

このページでは、既存の Espresso テストにユーザー補助機能チェックを追加する方法について説明します。ユーザー補助機能の詳細については、ユーザー補助機能のガイドをご覧ください。

チェックを有効にする

次のように AccessibilityChecks クラスを使用して、ユーザー補助のテストを有効にして設定することができます。

Kotlin

    import androidx.test.espresso.contrib.AccessibilityChecks

    @RunWith(AndroidJUnit4::class)
    @LargeTest
    class MyWelcomeWorkflowIntegrationTest {
        companion object {
            @Before @JvmStatic
            fun enableAccessibilityChecks() {
                AccessibilityChecks.enable()
            }
        }
    }
    

Java

    import androidx.test.espresso.contrib.AccessibilityChecks;

    @RunWith(AndroidJUnit4.class)
    @LargeTest
    public class MyWelcomeWorkflowIntegrationTest {
        @Before
        public static void enableAccessibilityChecks() {
            AccessibilityChecks.enable();
        }
    }
    

デフォルトでは、このチェックは ViewActions で定義されたビュー アクションを行うと実行されます。チェックの範囲には、アクションを行ったビューと、そのすべての子孫ビューが含まれます。次のコード スニペットに示すように、truesetRunChecksFromRootView() に渡すことで、それぞれのチェックを行っている間に画面のビュー階層全体を評価できます。

Kotlin

    AccessibilityChecks.enable().setRunChecksFromRootView(true)
    

Java

    AccessibilityChecks.enable().setRunChecksFromRootView(true);
    

結果の一部を抑制する

Espresso がユーザー補助機能チェックを実行した後、すぐには対応できない改善点が見つかることがあります。その結果が原因で Espresso テストの失敗が続かないように、一時的にテストを無視できます。ユーザー補助機能テスト フレームワーク(ATF)では、setSuppressingResultMatcher() メソッドでこの機能を使用できます。このメソッドは、指定されたマッチャー式を満たす結果を抑制するように Espresso を設定します。

ユーザー補助機能の 1 つの観点に対処する変更をアプリに加えるとき、他の観点に関する結果をできるだけ多く Espresso に表示させるのが有益です。そのため、特定の改善点のみ抑制することをおすすめします。

後で対処することを予定しているユーザー補助機能テストの結果を一時的に表示しないようにするとき、似たような結果を誤って表示しないようにするのが重要です。このために、範囲を限定したマッチャーを使用します。具体的には、次のユーザー補助機能チェックのそれぞれを満たす場合にのみ結果を抑制するように、マッチャーを選びます。

  1. タッチ ターゲットのサイズを確認するなど、特定タイプのユーザー補助機能チェック。
  2. ボタンなどの特定の UI 要素を評価するユーザー補助機能チェック。

Espresso テストで表示する結果を定義するために、ATF で定義されているマッチャーを利用できます。次の例では、1 つの TextView 要素の色のコントラストに関連するチェックの結果を抑制します。要素の ID は countTV です。

Kotlin

    AccessibilityChecks.enable().apply {
            setSuppressingResultMatcher(
                    allOf(
                        matchesCheckNames(`is`("TextContrastViewCheck")),
                        matchesViews(withId(R.id.countTV))
                    )
            )
    }
    

Java

    AccessibilityValidator myChecksValidator = AccessibilityChecks.enable();
    Matcher<? super AccessibilityViewCheckResult> myChecksMatcher =
            Matchers.allOf(matchesCheckNames(is("TextContrastViewCheck")),
                           matchesViews(withId(R.id.countTV)));
    myChecksValidator.setSuppressingResultMatcher(myChecksMatcher);