Controllo accessibilità

I test di accessibilità consentono di sperimentare l'app dal punto di vista dell'intera base utenti, inclusi quelli con esigenze di accessibilità. Questo tipo di test può rivelare opportunità per rendere la tua app più potente e versatile.

In questa pagina viene descritto come aggiungere i controlli di accessibilità ai test Espresso esistenti. Per ulteriori informazioni sull'accessibilità, consulta le Guide all'accessibilità.

Abilita controlli

Puoi attivare e configurare i test di accessibilità utilizzando la 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();
    }
}

Per impostazione predefinita, i controlli vengono eseguiti quando esegui un'azione di visualizzazione definita in ViewActions. Ogni controllo include la vista su cui viene eseguita l'azione e tutte le visualizzazioni discendenti. Puoi valutare l'intera gerarchia delle visualizzazioni di una schermata durante ogni controllo passando true a setRunChecksFromRootView(), come mostrato nel seguente snippet di codice:

Kotlin

AccessibilityChecks.enable().setRunChecksFromRootView(true)

Java

AccessibilityChecks.enable().setRunChecksFromRootView(true);

Elimina sottoinsiemi di risultati

Dopo che Espresso ha eseguito i controlli di accessibilità sulla tua app, potresti trovare diverse opportunità per migliorarne l'accessibilità che non puoi risolvere immediatamente. Per evitare che i test del caffè espresso non continui a non riuscire a causa di questi risultati, puoi ignorarli temporaneamente. Il framework di test di accessibilità (ATF) fornisce questa funzionalità utilizzando il metodo setSuppressingResultMatcher(), che indica a Espresso di eliminare tutti i risultati che soddisfano l'espressione matcher specificata.

Quando apporti modifiche alla tua app che riguardano un aspetto dell'accessibilità, è vantaggioso per Espresso mostrare risultati per il maggior numero possibile di altri aspetti dell'accessibilità. Per questo motivo, è meglio eliminare solo specifiche opportunità di miglioramento note.

Quando sopponi temporaneamente i risultati dei test di accessibilità che prevedi di risolvere in seguito, è importante non eliminare accidentalmente risultati simili. Per questo motivo, utilizza matcher con ambito ristretto. Per farlo, scegli un corrispondenza in modo che Espresso elimini un determinato risultato solo se soddisfa ciascuno dei seguenti controlli di accessibilità:

  1. Controlli di accessibilità di un certo tipo, ad esempio quelli relativi alle dimensioni dei touch target.
  2. Controlli di accessibilità che valutano un determinato elemento dell'interfaccia utente, ad esempio un pulsante.

Il report ATF definisce diversi matcher per aiutarti a definire i risultati da mostrare nei test Espresso. L'esempio seguente elimina i risultati dei controlli relativi al contrasto di colore di un singolo elemento TextView. L'ID dell'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))));