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.accessibility.AccessibilityChecks

@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
    init {
        AccessibilityChecks.enable()
    }
}

Java

import androidx.test.espresso.accessibility.AccessibilityChecks;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyWelcomeWorkflowIntegrationTest {
    @BeforeClass
    public 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 Framework de testes de acessibilidade (ATF, na sigla em inglês) 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, é recomendável suprimir apenas oportunidades 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 parecidas. 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 interface, como um botão.

O ATF define vários matchers para ajudar você a definir quais resultados serão mostrados 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(
                    matchesCheck(TextContrastCheck::class.java),
                    matchesViews(withId(R.id.countTV))
                )
        )
}

Java

AccessibilityValidator myChecksValidator =
    AccessibilityChecks.enable()
        .setSuppressingResultMatcher(
            allOf(
                matchesCheck(TextContrastCheck.class),
                matchesViews(withId(R.id.countTV))));