axe DevTools RSpec
La axe-devtools-rspec
gemma fornisce dei matcher personalizzati per valutare se una determinata pagina è axe
pulita.
Questa gemma si basa su passaggi forniti dalla gemma axe-core-rspec
.
Configurazione e utilizzo
Assicurati di avere accesso al [registro di Deque][configurazione del registro npm di attest]. In caso contrario, fare riferimento alla documentazione di installazione.
Per impostare la gemma RSpec, seguire questi passaggi:
- Aggiungi [informazione mancante]
axe-devtools-rspec
al tuo file Gemfile o gemspec ed eseguilo [informazione mancante]bundle install
.
gem "axe-devtools-rspec"
spec.add_dependency "axe-devtools-rspec"
- Require [informazione mancante]
axe-rspec
, che si estende [informazione mancante]RSpec
con matcher personalizzati. L'ideale sarebbe specificarlo nel filespec/spec_helper.rb
.
require 'axe-rspec'
- Utilizza la gemma con il [WebDriver][axe DevTools] che preferisci.
API
Matcher - Essere axe Clean (be_axe_clean
)
Per costruire un controllo RSpec di accessibilità axe, iniziare con expect(page).to be_axe_clean
e aggiungere tutte le clausole necessarie. (L'oggetto page
proviene dal WebDriver scelto.)
Matcher - Essere verificato per l'accessibilità (be_audited_for_accessibility
)
Per costruire un controllo RSpec di accessibilità axe, iniziare con expect(page).to be_audited_for_accessibility
e aggiungere tutte le clausole concatenabili necessarie.
expect(page).to be_audited_for_accessibility
Clausole
Le clausole sono metodi concatenabili per il be_axe_clean
matcher personalizzato. Le clausole configurabili consentono una maggiore granularità nei test e nelle aspettative.
within
- Clausola di inclusione
La clausola within specifica quali elementi della pagina devono essere controllati. È necessario fornire un selettore CSS valido. La clausola within accetta un singolo selettore, un array di selettori o un hash che descrive gli iframe con selettori.
Per ulteriori informazioni, vedere la [documentazione del parametro context][context-param].
Esempi:
# 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
- Clausola di esclusione
La clausola escludendo specifica quali elementi del documento devono essere ignorati. È necessario fornire un selettore CSS valido. La clausola che esclude accetta un singolo selettore, un array di selettori o un hash che descrive gli iframe con selettori.
Per ulteriori informazioni, vedere la [documentazione del parametro context][context-param].
Esempi:
# 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
- Clausola dello standard di accessibilità (Tag)
La clausola secondo specifica quale standard (o standard) di accessibilità devono essere utilizzati per controllare la pagina. Gli standard di accessibilità sono specificati per nome. La clausola secondo accetta un singolo tag o un array di tag.
Sono documentati [i nomi dei tag accettabili][options-param] nonché un [elenco completo delle regole][rules] che corrispondono a ciascun tag.
# Single standard
expect(page).to be_audited_for_accessibility.according_to :wcag2a
# Multiple standards
expect(page).to be_axe_clean.according_to :wcag2a, :section508
checking
- Clausola di controllo delle regole
La clausola checking specifica quali _regole aggiuntive _ controllare oltre ai tag specificati (se presenti) o al set di regole predefinito. La clausola checking accetta una singola regola o un array di regole.
Per ulteriori informazioni, consultare la documentazione delle regole per un elenco di ID delle regole validi.
# 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
- Clausola delle regole esclusive
La clausola solo_verifica specifica quali regole controllare in modo esclusivo. Utilizzando questo strumento si escludono tutte le regole esterne all'elenco.
# 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, :tabindex
skipping
- Clausola di esclusione delle regole
La clausola salto specifica quali regole saltare. Ciò consente di fornire uno standard di accessibilità (tramite la clausola tag) ignorando una regola particolare. Le regole sono specificate da ID regola separati da virgole.
Per ulteriori informazioni, consultare la documentazione delle regole per un elenco di ID delle regole validi.
# 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)
Clausole disponibili solo per il matcher - Essere verificato per l'accessibilità
Il matcher essere_verificato_per_accessibilità fornisce supporto per due clausole aggiuntive.
according_to_ruleset
- Clausola del regolamento
La ruleset clause ** according_to_ruleset** consente di specificare un singolo ruleset ( ad esempio, 508, wcag2, wcag2.1 ) da utilizzare per controllare la pagina.
expect(page)
.to be_audited_for_accessibility
.according_to_ruleset('wcag2.1')
logging_results
- Clausola di registrazione dei risultati
Per registrare i risultati del base matcher e delle clauses, richiamare il metodo concatenabile logging_results come mostrato di seguito.
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'
})
Interoperabilità tra le clausole
Tutte le clausole descritte possono essere combinate e abbinate tramite concatenamento dei metodi. Di seguito alcuni esempi.
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)
Utilizzo avanzato dell'API
Fare riferimento a [utilizzo avanzato][] per vedere come configurare l'API per:
- Regole personalizzate
- Percorso personalizzato per la sorgente di axe
- Registrazione dell'utilizzo
- Rapporti