O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Verificação de acessibilidade

O teste de acessibilidade permite que você experimente seu app da perspectiva de toda sua base de usuários, incluindo usuários com necessidades de acessibilidade. Essa forma de teste pode mostrar oportunidades para tornar seu app mais poderoso e versátil

Esta página descreve como adicionar verificações de acessibilidade aos testes do Espresso. Para saber mais sobre acessibilidade, consulte os guias de acessibilidade.

Ativar verificações

Você pode ativar e configurar o teste de acessibilidade usando a classe 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();
        }
    }
    

Por padrão, as verificações são executadas quando você realiza qualquer ação de visualização definida em ViewActions. Cada verificação inclui a visualização em que a ação é realizada, bem como todas as visualizações descendentes. É possível avaliar toda a hierarquia de visualização de uma tela durante cada verificação passando true para setRunChecksFromRootView(), conforme mostrado no snippet de código a seguir:

Kotlin

    AccessibilityChecks.enable().setRunChecksFromRootView(true)
    

Java

    AccessibilityChecks.enable().setRunChecksFromRootView(true);
    

Suprimir subconjuntos de resultados

Depois que o Espresso executa verificações de acessibilidade, você pode encontrar várias oportunidades de melhorar a acessibilidade do seu app que não podem ser solucionadas imediatamente. Para evitar que os testes do Espresso falhem continuamente devido a esses resultados, ignore-os temporariamente. O Accessibility Test Framework (ATF) fornece essa funcionalidade usando o método setSuppressingResultMatcher(), que instrui o Espresso a suprimir todos os resultados que satisfazem a expressão matcher escolhida.

Quando você faz modificações no app que contemplam um aspecto da acessibilidade, o Espresso pode mostrar resultados para o máximo possível de outros aspectos da acessibilidade. Por esse motivo, é melhor suprimir apenas possibilidades conhecidas específicas de melhoria.

Quando você suprimir temporariamente os resultados do teste de acessibilidade que planeja resolver posteriormente, é importante não suprimir acidentalmente as descobertas semelhantes. Por esse motivo, use matchers com escopo limitado. Para fazer isso, escolha um matcher para que o Espresso suprima determinado resultado somente se ele atender a cada uma das seguintes verificações de acessibilidade:

  1. Verificações de acessibilidade de um determinado tipo, como aquelas que verificam o tamanho da área de toque.
  2. Verificações de acessibilidade que avaliam um determinado elemento da IU, como um botão.

O ATF define vários matchers para ajudar você a definir quais resultados serão exibidos nos testes do Espresso. O exemplo a seguir suprime os resultados de verificações relacionadas ao contraste de cor de um único elemento TextView. O ID do elemento é 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);