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

Controle quando e como os testes de acessibilidade ocorrem em seus testes Java com Selenium e Playwright usando Axe Watcher

Not for use with personal data

A classe AxeWatcherController oferece controle detalhado sobre quando e como o Axe Watcher realiza a análise de acessibilidade durante seus testes Selenium. (Para Playwright, use AxeWatcherPlaywrightController, que fornece a mesma API.) Ela oferece métodos para iniciar, parar, analisar e descarregar resultados de testes, permitindo que você personalize o processo de teste de acordo com suas necessidades específicas.

Ao executar testes automatizados, o Axe Watcher pode operar em dois modos:

  • Modo automático (padrão): Analisa automaticamente cada página visitada pela sua suíte de testes
  • Modo manual: Dá a você controle sobre quais páginas e estados são analisados

O AxeWatcherController é especialmente útil quando você quer excluir certas páginas da análise ou focar em estados específicos de página.

Acessando o Controller

Você não instancia AxeWatcherController diretamente. Em vez disso, acesse-o através da instância WebDriver encapsulada:

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

Métodos

setTestContext(String testFilePath, List<String> testLocation)

Registra qual teste está em execução no momento para que as violações de acessibilidade geradas possam ser atribuídas a ele no Axe Developer Hub. Chame isso antes que o teste acione qualquer análise, tipicamente em um gancho @BeforeEach.

Passe null, null para limpar um contexto previamente definido.

Parâmetros:

  • testFilePath - Caminho para o arquivo de origem do teste, ou null se desconhecido. Caminhos absolutos são transformados em relativos ao diretório inicial do usuário.
  • testLocation - A localização do teste dentro do arquivo (por exemplo, o nome da classe e do método, ou um título describe/it), ou null.

Retorna:

  • AxeWatcherController - A instância atual para encadeamento de métodos

Exemplo:

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

Veja Atribuindo Violações aos Testes para mais informações.

stop()

Interrompe a análise automática de páginas pelo Axe Watcher. Após chamar este método, o Axe Watcher não analisará páginas automaticamente até que você chame start().

Retorna:

  • AxeWatcherController - A instância atual para encadeamento de métodos

Exemplo:

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()

Retoma a análise automática de páginas pelo Axe Watcher após ter sido interrompida. Isso reativará a análise automática de páginas à medida que seu teste interage com a aplicação.

Retorna:

  • AxeWatcherController - A instância atual para encadeamento de métodos

Exemplo:

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()

Aciona uma análise de acessibilidade manual da página atual. Este método pode ser chamado explicitamente para forçar uma varredura de acessibilidade no estado atual da página, independentemente de a análise automática estar ou não habilitada.

Retorna:

  • AxeWatcherController - A instância atual para encadeamento de métodos

Exemplo:

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()

Descarrega os resultados da análise de acessibilidade para o Axe Developer Hub. Este método deve ser chamado ao final de cada teste (tipicamente em um método @AfterEach ou equivalente) para garantir que todos os resultados sejam enviados para o Axe Developer Hub.

Retorna:

  • AxeWatcherController - A instância atual para encadeamento de métodos

Exemplo:

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

Encadeamento de Métodos

Todos os métodos em AxeWatcherController suportam encadeamento de métodos, permitindo que você combine múltiplas operações:

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

Notas Importantes

  1. iFrames: Métodos do controlador como analyze(), start() e stop() não funcionarão quando chamados de dentro de um iframe. Sempre assegure-se de estar no quadro de nível superior ao usar esses métodos.

  2. Protocolos de Página: Métodos do controlador não funcionarão em páginas com protocolos diferentes de http:, https: ou file:.

  3. Resultados de Descarregamento: Sempre chame flush() ao final de seus testes para garantir que todos os resultados de acessibilidade sejam enviados para o Axe Developer Hub.

  4. Consciência de Estado: O controlador mantém o controle de seu estado, então chamar stop() quando já estiver parado ou start() quando já estiver iniciado não terá efeito.

Veja Também