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 definir ACCESSIBILITY_API_KEY e PROJECT_ID no seu ambiente para a sua chave API pessoal (encontrada na sua conta axe, aba **API KEYS**) e para o ID do seu projeto (mostrado na parte superior destas instruções quando você criou o seu projeto ou disponível na página Projetos ao escolher **Configurar projeto** em **Configurações**). Se a sua organização usa uma instância regional, em nuvem privada ou local do Axe Developer Hub, também defina SERVER_URL para 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.