Verificação de acessibilidade

O teste de acessibilidade permite que você tenha a experiência do app da perspectiva de toda a base de usuários, incluindo usuários com necessidades de acessibilidade. Essa forma de teste pode revelar 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, 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 teste 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 especificada.

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 (link em inglês) 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);