Scansione Automatica

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Identifica automaticamente i problemi di accessibilità mentre i tuoi test UI esistenti interagiscono con la tua app

Not for use with personal data

Panoramica

Scansione Automatica identifica automaticamente i problemi di accessibilità mentre i tuoi test Espresso o UIAutomator esistenti interagiscono con la tua app, senza la necessità di aggiungere singole chiamate di scansione o modifiche ai tuoi test. Scansione Automatica rileva i cambiamenti di schermo e analizza automaticamente ogni schermata unica.

tip

Se hai bisogno di un controllo più dettagliato nei tuoi test, consulta Test Mirati.

Come funziona

Il nostro plugin Gradle sostituirà il runner di strumentazione JUnit con il nostro runner personalizzato. Questo ci permette di osservare la tua suite di test e di elaborare i risultati al momento appropriato. Ottieni il plugin Gradle AxeDevToolsMobile. Quando il test termina, Auto Scan elabora i tuoi risultati e salva un risultato JSON per ogni schermata, nonché un report HTML autonomo in AxeDevToolsMobileResults, e carica facoltativamente i risultati su Developer Hub.

Introduzione

  1. Alcuni valori devono essere impostati per configurare e autenticare gli utenti. Consigliamo di aggiungerli come variabili d'ambiente sul tuo computer e nelle tue pipeline CI/CD per mantenere le tue chiavi al sicuro.

    Groovy (build.gradle):

    axeDevTools {
        axeMobileApiKey = ''
        axeAutoScanMode = true
        axeProjectId = ''
    }

    Kotlin DSL (build.gradle.kts):

    axeDevTools {
        axeMobileApiKey = ""
        axeAutoScanMode = true
        axeProjectId = ""
    }
  2. Se stai utilizzando i nostri strumenti e preferisci ottenere i risultati in modalità offline, imposterai un valore per axeOfflineLicenseKey al posto di axeMobileApiKey e axeProjectId.

    Groovy (build.gradle):

    axeDevTools {
        axeOfflineLicenseKey = ''
        axeAutoScanMode = true
    }

    Kotlin DSL (build.gradle.kts):

    axeDevTools {
        axeOfflineLicenseKey = ""
        axeAutoScanMode = true
    }

Salta le schermate durante la scansione

Per impostazione predefinita, Auto Scan esamina ogni schermata unica nella tua app mentre i test sono in esecuzione. Se certe schermate non devono essere incluse nella scansione - per esempio, schermate delle credenziali o navigazioni al di fuori dell'app in test - puoi sopprimere la scansione di quella sezione incapsulandola in AxeAutoScan.skipScan. Auto Scan smette di osservare i cambiamenti dello schermo mentre quel blocco è in esecuzione e riprende automaticamente quando il blocco termina. Le schermate che appaiono all'interno di questi blocchi non vengono mai scansionate.

Importa com.deque.mobile.devtools.productinterfaces.AxeAutoScan. L'esempio di implementazione qui sotto utilizza Jetpack Compose, ma il comportamento è lo stesso nei test con Espresso e UIAutomator:

import androidx.compose.ui.test.junit4.createAndroidComposeRule
import com.deque.mobile.devtools.productinterfaces.AxeAutoScan
import org.junit.Rule
import org.junit.Test

class AutoScanDemoTest {

    @get:Rule
    val composeTestRule = createAndroidComposeRule<MainActivity>()

    @Test
    fun homeLoggedIn() {
        AxeAutoScan.skipScan {
            // Navigation to Login screen
            composeTestRule.onNodeWithText("Sign in").performClick()

            // Username/password entry
            composeTestRule.onNodeWithTag("username").performTextInput("test@example.com")
            composeTestRule.onNodeWithTag("password").performTextInput("password")

            // Submit form data
            composeTestRule.onNodeWithText("Submit").performClick()

            // Wait to return to Home screen
            composeTestRule.waitUntil(timeoutMillis = 5_000) {
                composeTestRule.onAllNodesWithTag("home_screen")
                    .fetchSemanticsNodes().isNotEmpty()
            }
        }

        // Auto Scan starts again - after return to Home screen everything is captured
        composeTestRule.onNodeWithTag("account_menu").performClick()
    }
}

Alcune cose da notare su skipScan:

  • La scansione riprende anche se un asserzione all'interno del blocco fallisce. Auto Scan ricomincerà prima che l'errore si propaghi.
  • Chiamare skipScan quando "axeAutoScanMode" = false è innocuo; non è necessario proteggere la chiamata o mantenere due versioni di un test.

Interpretazione dei Risultati

Sommario Console

Una volta che la suite di test termina, puoi vedere alcuni post-elaborazione nei tuoi log Gradle, seguite da un sommario.

HTML rule report written to: /Users/user/Documents/workspace/android/project-name/app/build/reports/AxeDevToolsMobileResults/AxeDevToolsMobile_1773882427726.html
---- Axe DevTools Mobile Accessibility Summary ----
Scan 1:
  Screen: Home Page
  Issues: 6
  Issues by rule:
    - TouchSizeWcag: 3
    - LabelAtFront: 1
    - LabelInName: 1
    - FocusableText: 1
    
Scan 35:
  Screen: Wikipedia Alpha
  Issues: 5
  Issues by rule:
    - LabelAtFront: 1
    - LabelInName: 1
    - TouchTargetSpacing: 1
    - TouchSizeWcag: 1
    - ColorContrast: 1
    
Total Scans: 35
❌ Total Issues: 123
---------------------------------------------------

File di Output

Auto Scan genera un report HTML autonomo con screenshot, dati della gerarchia delle viste e informazioni dettagliate sui problemi. I risultati JSON individuali sono salvati nella directory axe-test-data. Tutti i file sono salvati nella directory app/build/reports/AxeDevToolsMobileResults.

File Formato
AxeDevToolsReport.html Rapporto HTML interattivo con problemi per schermata, dettagli degli elementi, livelli di impatto
<timestamp>-axe-node-hierarchy.json Risultato JSON individuale - 1 per ogni scansione effettuata
note

Se preferisci salvare i tuoi risultati in una directory specifica, puoi indicarlo nel blocco di configurazione del plugin del tuo file build.gradle.

axeDevTools {
    axeMobileApiKey = "AXE_API_KEY"
    axeProjectId = "DEVHUB_PROJECT_ID"
    axeAutoScanMode = true
    axeHtmlReportPath = 
        "User/Desktop/reports/AxeDevToolsMobileResults"
    axeAccountUrl = "https://axe.deque.com"

Supporto Scansione Automatica

Regole

Auto Scan esegue l'intero set di regole Axe con l'eccezione di ScreenOrientation. Trova informazioni dettagliate su cosa verifichiamo nella Panoramica delle regole per Android.

Hub dello sviluppatore

Auto Scan carica automaticamente i tuoi risultati su Axe Developer Hub. Se vuoi solo salvare i risultati localmente, imposta axeUploadResults su false.

Riferimento di configurazione

Proprietà

Proprietà Tipo Obbligatorio Dettagli
axeAutoScanMode Booleano Obbligatorio Impostato di default su false. Deve essere impostato su true per abilitare l'auto scan.
axeMobileApiKey Stringa Richiesto* Una chiave API di Axe DevTools Mobile da axe.deque.com è obbligatorio se axeUploadResults=true
axeOfflineLicenseKey Stringa Richiesto* Richiesto solo per modalità offline, quando axeUploadResults=false
axeUploadResults Booleano Opzionale Impostato di default su true. Imposta su false solo per risultati locali
axeProjectId Stringa Opzionale Un ID Progetto da Developer Hub è obbligatorio se axeUploadResults=true
axeServerUrl (Deprecato) Stringa Opzionale URL backend personalizzato (ad es., axe.company.com), solo per cloud on-prem/private
axeAccountUrl Stringa Opzionale URL backend personalizzato (ad es., axe.company.com), solo per cloud on-prem/private
axeHtmlReportPath Stringa Opzionale Directory di output configurabile dall'utente per report HTML e riepilogo. Impostato di default su build/reports/AxeDevToolsMobileResults
axeOfflineLicenseKey Stringa Opzionale Richiesto solo per modalità offline, quando axeUploadResults=false

* Nota: Devi impostare o axeMobileApiKey o axeOfflineLicenseKey nella tua configurazione. La chiave API è richiesta a meno che non si utilizzi la modalità offline. La chiave di licenza offline è richiesta solo per la modalità offline.

Buone Pratiche

Disabilita le Animazioni

Ottieni risultati più accurati e completi da Auto Scan disabilitando le animazioni. Questo garantirà che gli schermi siano completamente renderizzati quando catturati. Se le animazioni non sono disabilitate, potresti notare:

  • Scansioni duplicate che ritieni dovessero essere ignorate
  • Scansioni con schermate che mostrano uno stato di transizione
  • Una frequenza di cattura dello schermo significativamente inferiore a quella che potresti aspettarti

Risoluzione dei Problemi

Se non visualizzi scansioni nel Developer Hub, dovresti controllare i tuoi log per suggerimenti su cosa potrebbe non funzionare o passare attraverso questa checklist.

  • Verifica che axeAutoScanMode=true nel tuo blocco di configurazione axeDevTools
  • Verifica di aver potuto ottenere la nostra dipendenza da Maven Central
  • Assicurati di usare la variabile corretta per il tuo API/License Key e Project ID
  • Controlla la dimensione dei tuoi file di output. Il caricamento nel Developer Hub fallisce se la dimensione di un qualsiasi file di risultato è superiore a 20MB, tuttavia tutti i risultati sono comunque salvati localmente e mostrati nel report HTML locale.

Cosa fare dopo?

Puoi visualizzare i tuoi risultati in Axe Developer Hub. Scopri come integrare Axe DevTools Mobile nella tua pipeline CI/CD. Stai utilizzando una piattaforma di test basata su cloud? Puoi comunque utilizzare Axe DevTools Mobile per cercare problemi di accessibilità: Integrare con le Piattaforme Cloud.