Työkalut

Pa11y

Avoimen lähdekoodin komentorivityökalu saavutettavuuden automaattitestaukseen. pa11y-ci ajaa testit CI-putkessa satojen URL-osoitteiden yli ja soveltuu erityisesti yöllisiin regressiotesteihin koko sivuston laajuisesti.

Pa11y on avoimen lähdekoodin automatisoitu saavutettavuuden testaamistyökalu. Alun perin Nature Publishing Groupissa kehitetty ja nykyisin itsenäisen yhteisön ylläpitämä Pa11y on ollut viime vuosikymmenen vakiintunut valinta saavutettavuustestien integroimiseen CI-putkeen.

Mitä Pa11y tekee

Pa11y ottaa komentorivillä URL-osoitteen, ajaa saavutettavuustarkistukset renderöityä sivua vasten ja tulostaa lista löydetyistä ongelmista:

$ pa11y https://example.com
Welcome to Pa11y

> Running Pa11y on 1 URLs:
...

Error: This element does not have an attribute "alt".
   • Element: <img src="..." />
   • Code: HTML_CS.Principle1.Guideline1_1.1_1_1.H37
   • Selector: body > section:nth-child(2) > img

Pa11y käyttää päättöntä selainta (Puppeteer tai Playwright konepellin alla), joten se näkee renderöidyn DOM-puun eikä pelkästään lähde-HTML:ää — JavaScript-renderöity sisältö auditoituu samoin kuin oikea käyttäjä sen kohtaisi.

Tuetut säännöstöt

Pa11y on historiallisesti tukenut kahta sääntömoottoria:

  • HTML_CodeSniffer (oletus; alkuperäinen Pa11y-selkäranka).
  • axe-core (komennolla pa11y --runner axe).

Molempia voi ajaa samanaikaisesti ja yhdistää tulokset — käytännössä “kaikki mitä pystytään automaattisesti havaitsemaan” -tila. Useimmat nykyaikaiset Pa11y-käyttöönotot käyttävät yksinomaan axe-core-moottoria, koska sillä on aktiivisin sääntökehitys.

pa11y-ci — monen URL-osoitteen työnkulku

Tärkein käyttötapaus on pa11y-ci, kääre joka ajaa Pa11yn useita URL-osoitteita vasten kerralla ja palauttaa CI:lle sopivan paluukoodin:

$ pa11y-ci --sitemap https://example.com/sitemap.xml

Tämä on juuri se työnkulku, jonka useimmat saavutettavuusohjelmat ottavat käyttöön yöllisiin regressiotesteihin: sivuston sivukartta syötetään pa11y-ci:lle cron-aikataululla, buildi epäonnistuu jos uusia ongelmia ilmaantuu, ja hälytys lähtee kun ongelmien määrä kasvaa.

Konfiguraatio tallennetaan .pa11yci-tiedostoon (tai JSON-tiedostoon), jossa voidaan määrittää per-URL-poikkeukset, vakavuuskynnykset, näkymäkoot, mukautetut toiminnot (kirjautuminen, klikkailut) ja muu automaatio.

Pa11y vs axe-core vs Lighthouse

Selkeä käsitemalli:

  • axe-core on sääntömoottori — taustalla toimiva havaintokirjasto. Sitä käytetään jonkin kääreen kautta.
  • Lighthouse on yksi kääre, optimoitu koko sivuston laadun auditointiin (suorituskyky + saavutettavuus + parhaat käytännöt + SEO).
  • Pa11y on toinen kääre, optimoitu pelkästään saavutettavuuteen keskittyvään CI-portitukseen useiden URL-osoitteiden skaalassa.
  • axe-core CLI on kolmas vaihtoehto — pelkkä axe ilman Pa11y-käärettä, myös CI-yhteensopiva.

Yksittäisten sivujen syviin analyyseihin Lighthouse sopii paremmin. Koko sivuston regressiotestaukseen monilla URL-osoitteilla Pa11y on käytännöllisin oletusvalinta. Yksittäisen URL:n build-blokkaaville PR-tarkistuksille axe-core CLI tai Lighthouse-CI toimivat hyvin.

Rajoitukset

Pa11y perii kaikki automatisoitujen työkalujen rajoitukset:

  • 30–40 % WCAG-ongelmista on automaattisesti havaittavissa; loppuosa vaatii ihmisarviointia.
  • Se ei pysty testaamaan näppäimistönavigointia, kohdistusjärjestystä tai ruudunlukuohjelman toimintaa.
  • Se toimii päättömässä selaimessa, joten se ei voi havaita ongelmia, jotka ilmenevät vain todellisessa käyttäjävuorovaikutuksessa (raivoklikkailu, lomakkeen hylkääminen, odottamaton modaalipino).

Mutta automatisoitujen havaintojen katon puitteissa Pa11y on toiminnallisesti joustavin isoista vaihtoehdoista — erityisesti silloin, kun auditoinnin laajuus on “koko sivusto, joka yö” eikä “tämä yksittäinen PR.”