Classe AxeWatcherController

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

Controlla quando e come avvengono i test di accessibilità nei test Java di Selenium e Playwright con Axe Watcher

Not for use with personal data

La classe AxeWatcherController offre un controllo dettagliato su quando e come Axe Watcher esegue l'analisi dell'accessibilità durante i tuoi test Selenium. (Per Playwright, usa AxeWatcherPlaywrightController, che offre la stessa API.) Fornisce metodi per avviare, fermare, analizzare e flush dei risultati dei test, permettendoti di personalizzare il processo di test secondo le tue esigenze specifiche.

Quando esegui test automatici, axe Watcher può operare in due modalità:

  • Modalità automatica (predefinita): Analizza automaticamente ogni pagina visitata dalla tua suite di test
  • Modalità manuale: Ti dà il controllo su quali pagine e stati vengono analizzati

La AxeWatcherController è particolarmente utile quando vuoi escludere certe pagine dall'analisi o focalizzarti su specifici stati della pagina.

Accesso al Controller

Non istanzi AxeWatcherController direttamente. Invece, accedila attraverso l'istanza WebDriver avvolta:

WebDriver driver = watcher.wrapDriver(new ChromeDriver(chromeOptions));
AxeWatcherController controller = ((AxeWatcherDriver) driver).axeWatcher();

Metodi

setTestContext(String testFilePath, List<String> testLocation)

Registra quale test è attualmente in esecuzione in modo che le violazioni di accessibilità prodotte possano essere attribuite a esso in Axe Developer Hub. Chiamalo prima che il test avvii qualsiasi analisi, tipicamente in un hook @BeforeEach.

Passa null, null per cancellare un contesto precedentemente impostato.

Parametri:

  • testFilePath - Percorso al file sorgente del test, o null se sconosciuto. I percorsi assoluti sono resi relativi alla directory home dell'utente.
  • testLocation - La posizione del test all'interno del file (ad esempio il nome della classe e del metodo, o una catena di titoli describe/it), o null.

Restituisce:

  • AxeWatcherController - L'istanza corrente per concatenare i metodi

Esempio:

@BeforeEach
public void setUp() {
    ((AxeWatcherDriver) driver).axeWatcher().setTestContext(
        "src/test/java/com/acme/LoginTest.java",
        java.util.Arrays.asList("LoginTest", "rejects bad password")
    );
}

Vedi Attribuzione delle Violazioni ai Test per maggiori informazioni.

stop()

Ferma l'analisi automatica delle pagine da parte di axe Watcher. Dopo aver chiamato questo metodo, axe Watcher non analizzerà le pagine automaticamente fino a quando non chiami start().

Restituisce:

  • AxeWatcherController - L'istanza corrente per concatenare i metodi

Esempio:

WebDriver driver = watcher.wrapDriver(new ChromeDriver(chromeOptions));
((AxeWatcherDriver) driver).axeWatcher().stop();

// These pages won't be analyzed automatically
driver.get("https://example.com/login");
driver.findElement(By.id("username")).sendKeys("testuser");
driver.findElement(By.id("password")).sendKeys("password");
driver.findElement(By.id("submit")).click();

start()

Riprende l'analisi automatica delle pagine da parte di axe Watcher una volta fermata. Ciò riattiverà l'analisi automatica delle pagine mentre il tuo test interagisce con l'applicazione.

Restituisce:

  • AxeWatcherController - L'istanza corrente per concatenare i metodi

Esempio:

WebDriver driver = watcher.wrapDriver(new ChromeDriver(chromeOptions));

// Disable automatic analysis for login process
((AxeWatcherDriver) driver).axeWatcher().stop();
driver.get("https://example.com/login");
driver.findElement(By.id("login-button")).click();

// Re-enable automatic analysis for the main application
((AxeWatcherDriver) driver).axeWatcher().start();

// These pages will be automatically analyzed
driver.findElement(By.id("dashboard-link")).click();
driver.findElement(By.id("settings-button")).click();

analyze()

Esegue un'analisi manuale dell'accessibilità della pagina corrente. Questo metodo può essere chiamato esplicitamente per forzare una scansione dell'accessibilità sullo stato attuale della pagina, indipendentemente dal fatto che l'analisi automatica sia abilitata o disabilitata.

Restituisce:

  • AxeWatcherController - L'istanza corrente per concatenare i metodi

Esempio:

WebDriver driver = watcher.wrapDriver(new ChromeDriver(chromeOptions));

// Navigate to a page
driver.get("https://example.com");

// Open a modal dialog
driver.findElement(By.id("open-modal-button")).click();

// Explicitly analyze the page with the modal open
((AxeWatcherDriver) driver).axeWatcher().analyze();

flush()

Scarica i risultati dell'analisi dell'accessibilità su axe Developer Hub. Questo metodo dovrebbe essere chiamato alla fine di ogni test (tipicamente in un metodo @AfterEach o equivalente) per garantire che tutti i risultati siano inviati a axe Developer Hub.

Restituisce:

  • AxeWatcherController - L'istanza corrente per concatenare i metodi

Esempio:

@AfterEach
public void tearDown() {
    if (driver instanceof AxeWatcherDriver) {
        ((AxeWatcherDriver) driver).axeWatcher().flush();
    }
    driver.quit();
}

Concatenazione di Metodi

Tutti i metodi in AxeWatcherController supportano la concatenazione dei metodi, permettendoti di combinare più operazioni:

((AxeWatcherDriver) driver).axeWatcher()
    .stop()                  // Stop automatic analysis
    .analyze()               // Perform a manual analysis
    .start()                 // Resume automatic analysis
    .flush();                // Flush results to axe Developer Hub

Note Importanti

  1. iFrames: I metodi del controller come analyze(), start() e stop() non funzioneranno se chiamati dall'interno di un iframe. Assicurati sempre di trovarti nel frame di livello superiore quando usi questi metodi.

  2. Protocolli della Pagina: I metodi del controller non funzioneranno su pagine con protocolli diversi da http:, https: o file:.

  3. Risultati di Flush: Chiama sempre flush() alla fine dei tuoi test per garantire che tutti i risultati di accessibilità siano inviati a axe Developer Hub.

  4. Consapevolezza dello Stato: Il controller tiene traccia del suo stato, quindi chiamare stop() quando è già fermato o start() quando è già avviato non ha effetto.

Vedi Anche