WAI-ARIA (Accessible Rich Internet Applications) este setul de atribute care comunică tehnologiilor asistive rolul, starea și proprietățile componentelor de interfață. Sună ca soluția la toate problemele, și exact așa ajunge să fie folosită greșit. Studiile periodice pe milioane de homepage-uri arată constant aceeași concluzie incomodă: paginile cu mai multă ARIA au în medie mai multe erori de accesibilitate, nu mai puține.
Prima regulă: HTML nativ înainte de orice
Un <button> nativ are gratuit: rol de buton, focus de la tastatură, activare cu Enter și Space, stări corecte. Echivalentul din div cere: role="button", tabindex="0", handler de tastatură scris manual și disciplină la fiecare modificare ulterioară. La fel pentru linkuri, checkbox-uri, selecturi, tabele. ARIA nu adaugă comportament, doar promite cititorului de ecran un comportament pe care tu trebuie să-l implementezi. O promisiune neonorată („role=button" pe care Enter nu-l activează) e mai derutantă decât lipsa ei.
Unde ARIA e cu adevărat necesară
Acolo unde HTML-ul nu are element nativ: aria-expanded pe butoanele de acordeon și meniu; aria-current="page" pe elementul activ din navigație; aria-live pentru anunțuri dinamice (rezultate de căutare actualizate, mesaje de confirmare); aria-describedby pentru a lega mesajele de eroare de câmpuri; aria-label pentru butoane exclusiv iconografice. Pattern-urile complete sunt documentate în ARIA Authoring Practices: implementări de referință pentru tab-uri, dialoguri, combobox-uri.
Greșelile care apar în fiecare scanare
Roluri inventate sau greșite; aria-hidden="true" pe conținut interactiv (invizibil pentru cititor, dar focusabil: utilizatorul aterizează pe „nimic"); referințe aria-labelledby către ID-uri inexistente; și stratificarea redundantă (role="button" pe un <button>). Criteriul 4.1.2 acoperă cele mai multe dintre acestea, iar scannerul le raportează cu selectorul exact și recomandarea de corectare.