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.