1. Adicione uma nova dependência para o pacote Java Watcher à seção de dependências do seu pom.xml (para Maven) (o pacote Java Watcher está disponível no Maven Central):

    <dependencies>
    
    <!-- Add this dependency: -->
      <dependency>
         <groupId>com.deque.axe_core</groupId>
         <artifactId>watcher</artifactId>
         <version>4.4.0</version> <!-- Update this as needed -->
      </dependency>
    
    </dependencies>
  2. Adicione os imports para o Java Watcher ao seu código de testes:

    import com.deque.axe_core.commons.AxeWatcherOptions;
    import com.deque.axe_core.playwright.AxeWatcherPlaywright;
    import com.deque.axe_core.playwright.AxeWatcherPage;
  3. Adicione o código de configuração para o Java Watcher, incluindo sua chave de API pessoal e ID do projeto (ambos armazenados no ambiente para segurança e flexibilidade):

    AxeWatcherOptions options =
        new AxeWatcherOptions()
            .setApiKey(System.getenv("ACCESSIBILITY_API_KEY"))
            .setProjectId(System.getenv("PROJECT_ID"));
    // Optional: uncomment and set SERVER_URL if using a regional, private cloud, or on-premises instance:
    // options.setServerUrl(System.getenv("SERVER_URL"));
    AxeWatcherPlaywright watcher = new AxeWatcherPlaywright(options);
    BrowserType.LaunchPersistentContextOptions launchOptions =
        watcher.configure(new BrowserType.LaunchPersistentContextOptions());
    // Watcher requires a persistent context. You must set headless explicitly on Playwright 1.49+:
    launchOptions.setHeadless(false);
    BrowserContext context = browserType.launchPersistentContext(userDataDir, launchOptions);
    AxeWatcherPage page = watcher.wrapPage(context.newPage());
    important

    O Watcher requer um contexto persistente do Playwright. Ele não é compatível com lançamentos não persistentes Browser. No Playwright Java 1.49 ou posterior, você também deve chamar explicitamente setHeadless(false) (ou setHeadless(true) com setChannel("chrome") ou setChannel("chromium")). O modo padrão chromium-headless-shell não é suportado.

    Este trecho de código cria uma instância AxeWatcherPage que envolve seu Page do Playwright com testes de acessibilidade habilitados.

    Para capturar uma captura de tela sempre que violações forem encontradas, adicione .setTakeScreenshots(true) ao seu AxeWatcherOptions. Para também salvar capturas de tela localmente, encadeie .setScreenshotDir("./axe-screenshots"). Veja Capturar Capturas de Tela de Violações para mais informações.

    Certifique-se de configurar ACCESSIBILITY_API_KEY e PROJECT_ID no seu ambiente com sua chave de API pessoal (encontrada na sua Conta Axe, aba **API KEYS**) e o ID do seu projeto (mostrado no topo destas instruções quando você criou seu projeto ou disponível na página de Projetos escolhendo **Configurar projeto** em **Configurações**). Se sua organização usar uma instância regional, nuvem privada ou local do Axe Developer Hub, também configure SERVER_URL com a URL base dessa instância (por exemplo, https://axe-eu.deque.com); caso contrário, omita SERVER_URL e o padrão https://axe.deque.com será utilizado.

  4. No final da sua sessão de testes, chame flush():

    page.axeWatcher().flush();

    Chamar flush() indica que a execução do teste terminou, e os resultados podem ser processados e apresentados ao usuário.

    Para atribuir violações a testes específicos, chame setTestContext() antes da lógica do seu teste:

    page.axeWatcher().setTestContext(
        "src/test/java/com/acme/LoginTest.java",
        java.util.Arrays.asList("LoginTest", "rejects bad password")
    );

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