Axe DevTools RSpec
Configuração e uso da gema axe-devtools-rspec para testes de acessibilidade baseados em RSpec
A gema axe-devtools-rspec fornece correspondências personalizadas para avaliar se uma determinada página está axe limpa.
Esta gema se estende sobre passos fornecidos pela gema axe-core-rspec.
Configuração e Uso
Certifique-se de ter acesso ao Deque's registry. Caso contrário, consulte o setup documentation.
Para configurar a gema RSpec, siga estes passos:
- Adicione
axe-devtools-rspecao seu arquivo Gemfile ou gemspec e executebundle install.
gem "axe-devtools-rspec"spec.add_dependency "axe-devtools-rspec"- Requerer
axe-rspec, que estendeRSpeccom correspondências personalizadas. Idealmente, isso seria especificado no arquivospec/spec_helper.rb.
require 'axe-rspec'- Use a gema com o WebDriver de sua escolha.
API
Matcher - Ser axe Limpo (be_axe_clean)
Para construir uma verificação de acessibilidade RSpec com axe, comece com expect(page).to be_axe_clean e adicione quaisquer cláusulas necessárias. (O objeto page vem do WebDriver de sua escolha.)
Matcher - Ser Auditado para Acessibilidade (be_audited_for_accessibility)
Para construir uma verificação de acessibilidade RSpec com axe, comece com expect(page).to be_audited_for_accessibility e adicione quaisquer cláusulas encadeáveis necessárias.
expect(page).to be_audited_for_accessibilityCláusulas
As cláusulas são métodos encadeáveis para o matcher personalizado be_axe_clean. Cláusulas configuráveis permitem maior granularidade nos testes e expectativas.
within- Cláusula de Inclusão
A cláusula dentro especifica quais elementos da página devem ser verificados. Um CSS selector válido deve ser fornecido. A cláusula dentro aceita um único seletor, uma matriz de seletores ou um hash descrevendo iframes com seletores.
Para mais informações, consulte o context parameter documentation.
Exemplos:
# Simple selector
expect(page).to be_axe_clean.within '#selector1'
# Compound selector
# Include all elements with the class 'selector2' inside the element with id 'selector1'
expect(page).to be_audited_for_accessibility.within '#selector1 .selector2'
# Multiple selectors
# Include the element with id 'selector1' *and* all elements with class 'selector2'
expect(page).to be_audited_for_accessibility.within '#selector1', '.selector2'
# IFrame selector
# Include the element with id 'selector1' inside the IFrame with id 'frame1'
expect(page).to be_axe_clean.within iframe: '#frame1', selector: '#selector1'
# Multiple IFrame selectors
# Include the element with id 'selector1' inside the IFrame with id 'frame1'
# Include the element with id 'selector2' inside the IFrame with id 'frame2'
expect(page).to be_audited_for_accessibility.within(
{iframe: '#frame1', selector: '#selector1'},
{iframe: '#frame2', selector: '#selector2'}
)
# Simple selectors *and* IFrame selector
# Include the element with id 'selector1' *and* all elements with class 'selector2'
# Include the element with id 'selector3' inside the IFrame with id 'frame'
expect(page).to be_audited_for_accessibility.within '#selector1', '.selector2', iframe: '#frame', selector: '#selector3'
# Nested IFrame selectors
# Include the element selector1 inside the IFrame with id 'frame2',
# inside the IFrame with id 'frame1'
expect(page).to be_axe_clean.within(iframe: '#frame1', selector:
{iframe: '#frame2', selector: '#selector1'}
)excluding- Cláusula de Exclusão
A cláusula excluindo especifica quais elementos do documento devem ser ignorados. Um CSS selector válido deve ser fornecido. A cláusula excluindo aceita um único seletor, uma matriz de seletores ou um hash descrevendo iframes com seletores.
Para mais informações, consulte o context parameter documentation.
Exemplos:
# Simple selector
expect(page).to be_audited_for_accessibility.excluding '#selector1'
# Compound selector
# Exclude all elements with the class 'selector2' inside the element with id 'selector1'
expect(page).to be_axe_clean.excluding '#selector1 .selector2'
# Multiple selectors
# Exclude the element with id 'selector1' *and* all elements with class 'selector2'
expect(page).to be_audited_for_accessibility.excluding '#selector1', '.selector2'
# IFrame selector
# Exclude the element with id 'selector1' inside the IFrame with id 'frame1'
expect(page).to be_axe_clean.excluding iframe: '#frame1', selector: '#selector1'
# Multiple IFrame selectors
# Exclude the element with id 'selector1' inside the IFrame with id 'frame1'
# Exclude the element with id 'selector2' inside the IFrame with id 'frame2'
expect(page).to be_axe_clean.excluding(
{iframe: '#frame1', selector: '#selector1'},
{iframe: '#frame2', selector: '#selector2'}
)
# Simple selectors with IFrame selector
# Exclude the element with id 'selector1' *and* all elements with class 'selector2'
# Exclude the element with id 'selector3' inside the IFrame with id 'frame'
expect(page).to be_audited_for_accessibility.excluding '#selector1', '.selector2', iframe: '#frame', selector: '#selector3'
# Nested IFrame selectors
# Exclude the element selector1 inside the IFrame with id 'frame2',
# inside the IFrame with id 'frame1'
expect(page).to be_axe_clean.excluding(iframe: '#frame1', selector:
{iframe: '#frame2', selector: '#selector1'}
)according_to- Cláusula de Padrão de Acessibilidade (Tag)
A cláusula de acordo com especifica qual padrão de acessibilidade (ou padrões) deve ser usado para verificar a página. Os padrões de acessibilidade são especificados por nome. A cláusula de acordo com aceita uma única tag ou uma matriz de tags.
Os tag names are documented aceitáveis bem como um complete listing of rules que correspondem a cada tag.
# Single standard
expect(page).to be_audited_for_accessibility.according_to :wcag2a
# Multiple standards
expect(page).to be_axe_clean.according_to :wcag2a, :section508checking- Cláusula de Regras de Verificação
A cláusula verificação especifica quais regras adicional verificar além das tags especificadas (se houver) ou do conjunto de regras padrão. A cláusula verificação aceita uma única regra ou uma matriz de regras.
Para mais informações, consulte o rules documentation para uma lista de IDs de regras válidos.
# Checking a single rule
expect(page).to be_axe_clean.checking :label
# Checking multiple rules
expect(page).to be_axe_clean.checking :label, :tabindex
# Example specifying an additional best practice rule in addition to all rules in the WCAG2A standard
expect(page).to be_audited_for_accessibility.according_to(:wcag2a).checking(:tabindex)checking_only- Cláusula de Regras Exclusivas
A cláusula verificando apenas especifica quais regras verificar exclusivamente. Usar este matcher exclui todas regras fora da lista.
# Checking a single rule
expect(page).to be_axe_clean.checking_only :label
# Checking multiple rules
expect(page).to be_audited_for_accessibility.checking_only :label, :tabindexskipping- Cláusula de Regras Ignoradas
A cláusula ignorando especifica quais regras ignorar. Isso permite que um padrão de acessibilidade seja fornecido (via cláusula de tag) enquanto ignora uma regra particular. As regras são especificadas por IDs de regras separados por vírgulas.
Para mais informações, consulte o rules documentation para uma lista de IDs de regras válidos.
# Skipping a single rule
expect(page).to be_axe_clean.skipping :label
# Skipping multiple rules
expect(page).to be_audited_for_accessibility.skipping :label, :tabindex
# Example specifying an additional best practice rule in addition to all rules in the WCAG2A standard
expect(page).to be_axe_clean.according_to(:wcag2a).skipping(:label)Cláusulas disponíveis apenas para o matcher - Ser Auditado para acessibilidade
O combinador ser_auditado_para_acessibilidade oferece suporte para duas cláusulas adicionais.
according_to_ruleset- Cláusula de conjunto de regras
A cláusula de conjunto de regras de_acordo_com_conjunto_de_regras ajuda a especificar um único conjunto de regras (por exemplo, 508, wcag2, wcag2.1) a ser usado para verificar a página.
expect(page)
.to be_audited_for_accessibility
.according_to_ruleset('wcag2.1')logging_results- Cláusula de registro de resultados
Para registrar resultados do combinador base e cláusulas, invoque o método encadeável registro_de_resultados conforme mostrado abaixo.
expect(page)
.to be_audited_for_accessibility
.logging_results({
output_directory: 'attest-results',
test_machine: 'Jenkins CI Server',
test_suite_name: 'Landing Page',
ui_state: 'Page Load',
user_agent: 'Headless Chrome'
})Interoperabilidade entre cláusulas
Todas as cláusulas descritas podem ser combinadas e encadeadas com métodos. Abaixo estão alguns exemplos.
expect(page).to be_axe_clean.within('.main', '.header').excluding('.footer')
expect(page).to be_audited_for_accessibility.excluding('#sidebar').according_to(:wcag2a, :wcag2aa).skipping(:color-contrast)
expect(page).to be_axe_clean.within('.main').checking_only :document-title, :label
expect(page).to be_audited_for_accessibility.according_to(:best-practice).checking(:aria-roles, :definition-list)Uso avançado da API
Consulte advanced usage para ver como configurar a API para:
- Regras personalizadas
- Caminho personalizado para a fonte axe
- Gravação de uso
- Relatórios
