Controle Seus Scans
O modo manual do Watcher permite que você escolha quando ou quais páginas do seu site são analisadas para problemas de acessibilidade
Por padrão, no que é conhecido como modo automático, o Axe Watcher determina automaticamente quando analisar uma página da web (seja quando ela é visitada pelo seu conjunto de testes ou com base em alterações detectadas no DOM da página). Às vezes, essa análise automática resulta em um comportamento que não é compatível com os objetivos da sua organização: analisar muitas páginas (páginas que não interessam ou páginas que pertencem a outros departamentos da sua organização). Você pode desativar o modo automático, o que permitirá determinar quando (ou se) uma página da web deve ser analisada (conhecido como modo manual).
Cenários
Escaneando Partes de um Site
Você pode usar o modo manual para escanear apenas uma parte de um site. Por exemplo, se sua equipe for responsável pela funcionalidade do carrinho de compras no seu site, mas seu conjunto de testes precisar visitar páginas de catálogo (que não são de responsabilidade da sua equipe) para adicionar produtos ao carrinho, você provavelmente desejará evitar testar a acessibilidade das páginas do catálogo. Assim que você chegar à página do carrinho de compras em seu conjunto de testes, poderá reativar a análise automática. Então, quando os testes do carrinho de compras forem concluídos, você poderá desativar a análise automática novamente.
Próximos Passos
- Desativar Análise Automática na Configuração para evitar testar as páginas do catálogo.
- Ativar Análise Automática para sua página de carrinho de compras.
- Desativar Análise Automática via Chamada ao final dos testes da página do carrinho de compras para evitar que as páginas visitadas após a página do carrinho sejam testadas.
Carregamento de Conteúdo Dinâmico
Você pode usar o modo manual para evitar testar páginas com sequências de carregamento complexas. Se a página que você deseja testar carrega dinamicamente muitos recursos em segundo plano, pode desativar o modo automático até que ela esteja totalmente carregada. Isso limitará os problemas de acessibilidade àqueles que existem apenas quando a página está completamente carregada. Também evitaria verificações de acessibilidade durante animações de carregamento ou outras interfaces de carregamento.
Próximos Passos
- Desativar Análise Automática na Configuração para que as animações e interfaces de carregamento não sejam testadas quanto a erros de acessibilidade.
- Ativar Análise Automática para retomar o teste automático de acessibilidade assim que a página estiver completamente carregada.
Capturando Estados Específicos da Página
Se você quiser garantir que um estado da página específico seja escaneado, pode disparar manualmente uma análise de acessibilidade depois de ter configurado sua página.
Próximos Passos
- Desativar Análise Automática na Configuração para evitar que uma análise de acessibilidade ocorra antes que a página esteja no estado que você deseja.
- Analisar Páginas Manualmente para testar o estado específico da página que você está interessado.
Limitando o Escopo de um Grande Conjunto de Testes
Ao desativar a análise automática, você pode usar um conjunto de testes maior e mais abrangente, mas limitar seus testes de acessibilidade a apenas uma parte dele. Nesse caso, não é necessário dividir seu conjunto de testes maior em conjuntos menores e testar acessibilidade apenas nos conjuntos de testes que interessam.
Próximos Passos
- Desativar Análise Automática na Configuração para evitar que a análise automática de acessibilidade comece no início do seu conjunto de testes.
- Ativar Análise Automática quando você chegar à parte do seu conjunto de testes que deseja testar.
- Desativar Análise Automática via Chamada para desativar o teste de acessibilidade para partes do conjunto de testes que você não deseja testar quanto a erros de acessibilidade.
Como Usar o Modo Manual
Você pode desativar a análise automática na sua configuração (veja Desativar Análise Automática na Configuração abaixo).
A análise da página é controlada por três métodos no objeto Controller ou pelos comandos equivalentes no Cypress.
analyze()(no Cypress:cy.axeWatcherAnalyze()) para realizar uma análise da página atual.start()(no Cypress:cy.axeWatcherStart()) para ativar a análise automática de acessibilidade.stop()(no Cypress:cy.axeWatcherStop()) para desativar a análise automática de acessibilidade.
Obtendo um Objeto Controller
(JavaScript/TypeScript) Para informações sobre como obter um objeto Controller, consulte a etapa quatro da página de instruções do seu framework de teste:
JavaScript:
TypeScript:
(Java) Para Java, veja passo três na página de instruções do framework de teste. Passo quatro mostra como fazer um cast no wrappedDriver para chamar seu método flush():
Cypress
(JavaScript/TypeScript) Para Cypress, você pode usar o objeto global cy com estes comandos equivalentes:
| Método do Controller | Comando do Cypress |
|---|---|
analyse() |
axeWatcherAnalyze() |
flush() |
axeWatcherFlush() |
start() |
axeWatcherStart() |
stop() |
axeWatcherStop() |
Teste Playwright
(JavaScript/TypeScript) Para o Teste Playwright, o objeto Controller (PlaywrightController) pode ser obtido de page, que contém um objeto axeWatcher. Você pode usar o objeto axeWatcher para invocar os métodos Controller (o exemplo abaixo está em TypeScript):
import { test, expect } from './fixtures'
test('example test', async ({ page }) => {
await page.goto('https://example.com')
await page.axeWatcher.analyze()
})Desativar Análise Automática na Configuração
Você pode desativar o teste de acessibilidade automático
- (JavaScript/TypeScript) Definindo a propriedade
autoAnalyzeno objeto de configuração axe parafalse. - (Java) Chamando o método
setAutoAnalyze()comfalse.
(JavaScript/TypeScript) Por exemplo, defina autoAnalyze para false na sua configuração (a linha está destacada no exemplo de JavaScript do Cypress abaixo):
const { defineConfig } = require('cypress');
const { cypressConfig } = require('@axe-core/watcher/cypress/config');
const API_KEY = process.env.API_KEY
const PROJECT_ID = process.env.PROJECT_ID
module.exports = defineConfig(
cypressConfig({
axe: {
apiKey: API_KEY, projectId: PROJECT_ID,
autoAnalyze: false
},
// Your existing Cypress configuration code here
})
);Desativar Análise Automática via Chamada
Com Cypress, você pode usar o comando axeWatcherStop():
cy.axeWatcherStop()(JavaScript/TypeScript) As outras integrações de teste usam o método stop() no seu objeto Controller:
await controller.stop()(Java) Na integração Java Watcher, você usa o método AxeWatcherController.stop().
Veja Obtendo um Objeto Controller para mais informações sobre como obter um objeto controller para o seu framework de teste.
Analisar Páginas Manualmente
Depois de desativar a análise automática, você pode adicionar chamadas para (JavaScript/TypeScript) axeWatcherAnalyze() (para Cypress) ou analyze() (com as outras integrações de teste). (Java) Para Java, você usa o método AxeWatcherController.analyze()](wa-java-watchercontroller#analyze).
Por exemplo, para Cypress:
describe('My Login Application', () => {
it('should login with valid credentials', () => {
cy.visit('https://the-internet.herokuapp.com/login')
// Analyze the page.
.axeWatcherAnalyze() .get('#username')
.type('tomsmith')
.get('#password')
.type('SuperSecretPassword!')
.get('button[type="submit"]')
.click()
.wait(1000)
// Analyze the page.
.axeWatcherAnalyze() // Restart automatic axe analysis.
.axeWatcherStart()
.get('#flash')
.should('exist')
})
})Veja Obtendo um Objeto Controller para mais informações sobre como obter um objeto controller para o seu framework de teste.
Ativar Análise Automática
Com Cypress, você pode usar o comando axeWatcherStart:
cy.axeWatcherStart()As outras integrações de teste usam o método start no seu objeto Controller:
await controller.start()Veja Obtendo um Objeto Controller para mais informações sobre como obter um objeto controller para o seu framework de teste.
Executando Watcher Apenas em Execuções de Teste Específicas
Testes de ponta a ponta podem ser onerosos em termos de tempo ou custos de computação em nuvem. Você pode não querer que o Watcher analise páginas a cada commit ou execução de teste, apenas quando deseja explicitamente uma verificação de acessibilidade. Você pode controlar a análise por meio de uma variável de ambiente, passando o valor da variável para autoAnalyze. Isso lhe dá dois comandos de teste distintos: um sem análise e outro com análise.
(JavaScript/TypeScript) Por exemplo, em uma configuração do Cypress:
const { defineConfig } = require('cypress')
const { cypressConfig } = require('@axe-core/watcher/cypress/config')
const API_KEY = process.env.API_KEY
const PROJECT_ID = process.env.PROJECT_ID
const ACCESSIBILITY_TESTING = process.env.ACCESSIBILITY_TESTING === 'true'
module.exports = defineConfig(
cypressConfig({
axe: {
apiKey: API_KEY,
projectId: PROJECT_ID,
autoAnalyze: ACCESSIBILITY_TESTING
},
// Your existing Cypress configuration code here
})
)Adicione dois scripts ao seu package.json, um com a variável configurada, outro sem:
{
"scripts": {
"test:e2e": "cypress run",
"test:e2e:accessibility": "ACCESSIBILITY_TESTING=true cypress run"
}
}No Windows, use cross-env para configurar variáveis de ambiente de maneira cross-platform. Você pode escolher qualquer nome de variável de ambiente; ACCESSIBILITY_TESTING é apenas um exemplo.
A mesma abordagem se aplica a outros frameworks de teste JavaScript e TypeScript: leia a variável no seu arquivo de configuração e passe seu valor booleano para autoAnalyze. (Java) Usuários de Java podem passar o valor para setAutoAnalyze().
Esta abordagem controla se o Watcher analisa as páginas, não se o Watcher é inicializado. Algumas configurações do Watcher ainda ocorrem no seu ambiente de teste, independentemente do valor da variável de ambiente.
Veja também
- (JavaScript/TypeScript) Para dois exemplos funcionais de testes em modo manual (para Cypress e Playwright), veja os exemplos a seguir no repositório watcher-exemplos no GitHub:
- Para Cypress, veja Cypress modo-manual
- Para Playwright, veja Playwright modo-manual
