Ciocanul judecătorului pe un birou, cu oameni în fundal, în timpul unei ședințe de judecată.

Descrierea imaginii: Ciocanul judecătorului pe un birou, cu oameni în fundal, în timpul unei ședințe de judecată.

Ce face obiectul plângerilor: un ghid practic al modelelor de interfață utilizate în cele 6.666 de plângeri privind accesibilitatea

Catalog de modele · 19 exponate

Ce face obiectul plângerilor: un ghid practic al modelelor de interfață utilizate în cele 6.666 de plângeri privind accesibilitatea

Plângerile federale privind accesibilitatea, depuse în temeiul Legii americanilor cu dizabilități, invocă rareori nereguli noi. Acestea invocă aceleași nouăsprezece aspecte, în mod repetat, folosind aproximativ aceeași formulare. Acesta este un catalog, structurat pe tipuri, al elementelor paginii, al erorilor de cod și al alegerilor de design care apar cel mai des — fiecare fiind susținut de citate textuale extrase din documentele de plângere aferente.

În articolul anterior din această serie am analizat litigiile dintr-o perspectivă generală: 8.788 de cauze federale în SUA, cine le inițiază, cât de concentrată este comunitatea avocaților reclamanți și cât de repede se soluționează aceste cauze. Această perspectivă este utilă pentru echipele juridice și financiare. Ea este însă mai puțin utilă pentru dezvoltator, designer sau managerul de produs care trebuie să lanseze remedierea propriu-zisă luni dimineață.

Acest ghid adoptă o perspectivă opusă. Se pornește de la pagină și se extinde spre exterior. Fiecare intrare de mai jos reprezintă un model specific de interfață utilizator — uneori un singur element, alteori un flux — pe care un utilizator de cititor de ecran, de tastatură sau cu vedere slabă l-a întâlnit, nu l-a putut utiliza și care a devenit parte a unui dosar depus la o instanță federală. Pentru fiecare dintre acestea, prezentăm ce au scris efectiv reclamanții în plângere, cât de des apare acel model în setul de date, de ce declanșează litigii și cum arată soluția.

Indexul probelor · Cat. 2026.04

19 tipuri · clasificate în funcție de frecvență în înregistrările plângerilor extrase

n = 113.120 de numere
ID Model Pagină / suprafață Probleme înregistrate
E·01Câmpul formularului denumit „casetă de editare”Formulare valabile pentru întregul site17,693 ↑
E·02Navigare globală / meniu tip hamburgerAntet, pe fiecare pagină7,934
E·03Indicatorul de focalizare lipsește sau este invizibilLa nivel de site7,294
E·04Logo-uri și imagini decorative fără text alternativAntet, bannere6,337
E·05Fereastra modală/pop-up nu este anunțată sau nu are focalizareaLa nivel de site3,476
E·06Videoclip fără subtitrare sau transcriereHero, pagini de conținut3,355
E·07Fișa produsului / Grila PLP nu funcționeazăPagini cu listări2,900
E·08Dimensiune, cantitate, butoane pentru mostre (PDP)Detalii despre produs2,725
E·09Linkuri fără conținut și „dă clic aici” / „citește mai mult”La nivel de site2,723
E·10Structura paginii: lipsește eticheta H1, reperele sunt defecteLa nivel de site2,485
E·11Erori în procesul de finalizare a comenzii și câmpuri obligatoriiFinalizare comandă1,656
E·12Comenzi exclusiv sub formă de pictograme (coș de cumpărături, chat, rețele sociale)Antet, subsol1,531
E·13Bara de căutare și sugestiile de completare automatăAntet1,252
E·14Fereastra de accesibilitate / widgetul în sineLa nivel de site1,210
E·15Formulare de autentificare, de conectare și de parolăPagini de autentificare1,158
E·16Pagina coșului: cantitate, eliminare, actualizareCoș1,022
E·17Barierele destinate exclusiv dispozitivelor mobileWeb mobil / aplicație mobilă787
E·18„Adaugă în coș” — fără confirmare sonorăPDP, cărucior718
E·19Etichete pentru câmpurile de plată (CVV, număr de card)Finalizare comandă524

Numărul de înregistrări reflectă intrările clasificate pe categorii de probleme, extrase din documentele de plângere din baza de date a instanțelor federale; un singur caz generează, de obicei, zeci de înregistrări. Modelele sunt ordonate în funcție de numărul total de probleme înregistrate, nu în funcție de frecvența la nivel de caz.

De unde provin datele

Catalogul se bazează pe același set de date al instanțelor federale descris în articolul anterior: 8.788 de cauze privind accesibilitatea site-urilor web în temeiul Titlului III din ADA, extrase din PACER (sistemul de acces public la dosarele electronice ale instanțelor din cadrul sistemului judiciar federal), cu 6.666 de descrieri ale problemelor individuale extrase din documentele de plângere și clasificate în 27 de categorii funcționale — navigare globală, anunțuri ale cititorului de ecran, navigare cu tastatura, formulare, ferestre modale, plăți și așa mai departe.

Fiecare citat literal din intrările de mai jos este reprodus din extrase ale dosarului, așa cum apare în plângerea inițială, cu mici modificări de redacție menite doar să corecteze erori evidente de OCR (de exemplu, „A nnounced” → „Announced”) apărute în urma scanării dosarelor judiciare. Numărul de probleme reflectă numărul de intrări clasificate, nu numărul de cazuri unice — un singur caz generează de obicei zeci de intrări de probleme care acoperă mai multe categorii. Acolo unde este util, menționăm dominanța relativă a unui sub-model în cadrul categoriei sale.

Reclamanții nu contestă erori rare și greu de identificat. Ei contestă același proces de finalizare a comenzii, același logo, aceeași fereastră modală, același câmp din formular, pe site după site după site.

Partea I · Parcursul utilizatorului
Modelele care fac obiectul unor acțiuni în justiție, în ordinea în care utilizatorul le întâlnește

Opt etape, de la accesare până la finalizarea comenzii. Elementele paginii care generează cele mai multe cazuri nu se află la marginea site-ului, ci de-a lungul traseului de conversie — antet, căutare, produs, coș de cumpărături, finalizarea comenzii — exact acolo unde se generează veniturile.

E·02

Navigarea globală și meniul „hamburger” fără etichetă

Citat literal din plângeri
Butonul meniului principal nu are nicio etichetă
Linkul „Treci la meniu” nu funcționează corect
Lipsa linkului de salt pe pagină
Pagina nu dispune de un link de salt sau de o zonă de reper care să le permită utilizatorilor care folosesc tastatura să treacă direct la conținutul dorit, obligându-i să parcurgă elementele din antet cu ajutorul tastei Tab
Frecvență
7.934de intrări clasificate în categoria „Navigare globală / Antet”
301 de intrărireferitoare în mod specific la erori legate de meniu, hamburgeri sau linkuri de salt
De ce este dat în judecată

Antetul este prima zonă interactivă de pe fiecare pagină, iar butonul de tip „hamburger” este adesea primul element la care ajunge un utilizator care navighează cu ajutorul tastaturii. Atunci când acest buton este afișat ca un <div> dacă un element are o imagine de fundal CSS, nu are un nume accesibil sau deschide un meniu care blochează focalizarea sau nu indică starea sa de deschidere/închidere, întregul site devine practic inaccesibil de la tastatură înainte ca utilizatorul să fi interacționat cu vreun conținut propriu-zis.

Linkul de salt este defect. Unul funcțional "Skip to main content" Link-ul de salt este o soluție care se rezolvă în cinci pași, dar este și cel mai eficient indicator pentru a stabili dacă o echipă de dezvoltare a inclus deloc accesibilitatea pe lista sa de verificare. Reclamațiile menționează adesea ambele aspecte în același paragraf, deoarece un link de salt lipsă sau defect este un semnal de alarmă — dacă echipa nu a implementat un link de salt, este aproape sigur că nu a implementat nici stările „aria-expanded”.

Soluția

Afișează elementul de meniu ca element real <button> cu o etichetă text vizibilă sau accesibilă doar prin cititorul de ecran și un element gestionat aria-expanded atribut. Introduceți un "Skip to main content" link care devine vizibil la selectare și se afișează în interiorul <main> punct de referință. Asigură-te că focalizarea se mută pe meniu la deschiderea acestuia, revine la elementul declanșator la închiderea acestuia și că Esc închide meniul.

SurfaceHeader, pe fiecare pagină WCAG 2.2 AA2.4.1 Ocolirea blocurilor · 4.1.2 Nume, rol, valoare · 2.1.1 Tastatură
E·13

Bara de căutare și sugestiile de completare automată

Citat literal din plângeri
Utilizatorul nu poate folosi bara de căutare
Sugestiile de căutare care apăreau sub bara de căutare nu puteau fi selectate cu ajutorul tastaturii
Utilizatorul nu a observat sugestiile de căutare după ce a introdus un termen de căutare în bara de căutare
Reclamantul nu a fost informat că rezultatele căutării au apărut pe ecran
Frecvență
1.252 dearticole despre căutare și filtrare
164 de intrărireferitoare în mod specific la completarea automată, sugestii sau interfețe de utilizare predictive
De ce este dat în judecată

Funcția de căutare este implementată ca o componentă personalizată pe majoritatea site-urilor mari — un câmp de introducere a textului cu debounce care trimite o solicitare la fiecare apăsare de tastă și afișează o listă flotantă de sugestii într-un element poziționat absolut <div>. Câmpul de introducere a textului în sine funcționează de obicei bine. Lista de sugestii, însă, aproape niciodată. Aceasta este afișată în afara contextului DOM al câmpului de introducere, nu are role="listbox", nu aria-activedescendantși nu apare nicio notificare în zona activă atunci când se afișează rezultatele. Un utilizator de cititor de ecran tastează, nu aude nimic, apasă Enter și primește o pagină cu rezultate despre care nu știa că îl așteaptă.

Același model arhitectural se regăsește atât în panourile de filtrare ale căutării pe facete, cât și în lista de rezultate propriu-zisă: elemente pe care se poate plasa focalizarea tastaturii, care sunt vizibile, dar nu sunt niciodată anunțate vocal. Plângerile legate de căutare se referă rareori la caseta de căutare; ele vizează tot ceea ce apare după ce utilizatorul tastează.

Soluția

Folosiți modelul standard WAI-ARIA pentru casetele combinate: role="combobox" la intrare cu aria-expanded, aria-controlsși aria-activedescendant conectat la un role="listbox" de sugestii. Adăugați o zonă dinamică care să afișeze numărul de rezultate. Asigurați-vă că lista de sugestii poate fi accesată cu tasta săgeată în jos, nu doar cu mouse-ul.

Căutareîn antetul paginii· Pagina cu rezultatele căutării WCAG 2.2 AA4.1.2 Nume, rol, valoare · 4.1.3 Mesaje de stare · 2.1.1 Tastatură
E·07

Fișa produsului și grila PLP

Citat literal din plângeri
Utilizatorul nu poate utiliza acest filtru
Utilizatorul nu poate accesa meniul de filtre
atribute și filtre inaccesibile
Rezultatul împiedică utilizatorul cititorului de ecran să folosească instrumentul „Filtru”
Frecvență
2.900de intrări pe pagina cu lista de produse
30 de cazuricu extragerea detaliată a problemelor PLP
De ce este dat în judecată

Grila PLP concentrează mai multe anti-modele într-un singur ecran. Fiecare casetă este, de obicei, o carte pe care se poate da clic, conținând trei sau patru elemente interactive secundare — link către imagine, link către titlu, mostre de culori, buton de adăugare rapidă — încadrate într-un alt link către pagina produsului. Rezultatul constă în elemente interactive imbricate (o eroare HTML), text de link redundant („Hero Dash Three Graphic Image Link” repetat de patru ori) și mostre de culori create din <div> elemente care au proceduri de gestionare a clicurilor, dar nu au niciun rol și niciun nume.

Bara laterală de filtrare introduce o a doua categorie de erori. Facetele de filtrare sunt de obicei liste de casete de selectare, dar sunt construite folosind elemente div și span personalizate, stilizate astfel încât să arate ca niște casete de selectare, cu elementul propriu-zis <input> ascuns în afara ecranului. Când acel element de introducere ascuns își pierde asocierea — fie printr-o regulă CSS, fie printr-un handler de evenimente JavaScript care ignoră apăsările tastei spațiu, fie din cauza lipsei for atributul de pe eticheta vizibilă — filtrul poate fi acționat doar cu mouse-ul.

Soluția

Folosiți o singură ancoră pe fiecare imagine, însoțită de un text descriptiv, nu trei linkuri pentru fiecare produs. Prezentați mostrele cât mai realist posibil <button> elementele din interiorul unui role="radiogroup". Creați filtre pe baza datelor reale <input type="checkbox"> elemente asociate <label> etichete; stilizează câmpurile de introducere astfel încât să fie vizibile, în loc să le ascunzi. Anunță modificările filtrului printr-o zonă de vizualizare în timp real.

Pagini cu listăride produse, rezultate ale căutării WCAG 2.2 AA1.3.1 Informații și relații · 2.4.4 Scopul linkului · 4.1.2 Nume, rol, valoare
E·08

Detalii produs: butoane pentru dimensiune, cantitate și mostră

Citat literal din plângeri
Butoanele „Dimensiune” și „Cantitate” de pe paginile produselor nu sunt etichetate
Butonul „Cantitate” nu este etichetat și nu este accesibil pe paginile produselor
Butonul „Tabelul mărimilor” nu este etichetat pe paginile produselor
Pe pagina produsului, site-ul web nu afișează informațiile din ghidul de mărimi
Frecvență
2.725de intrări referitoare la această problemă pe pagina cu detalii despre produs
169 de intrărireferitoare în mod specific la dimensiune, cantitate, mostre sau selectoare de culori
De ce este dat în judecată

Pagina cu detalii despre produs este locul în care un utilizator de cititor de ecran trebuie să efectueze mai multe alegeri specifice, în ordinea corectă: să aleagă o culoare, să aleagă o mărime, să stabilească cantitatea, apoi să adauge produsul în coș. Fiecare dintre aceste alegeri este implementată în comerțul electronic modern sub forma unui widget personalizat — de obicei, un rând orizontal de <button>în formă de <div>În ceea ce privește dimensiunile, plăcile colorate sunt construite din elemente div stilizate cu CSS, iar butonul de selectare numerică este format din două butoane cu pictograme care flanchează un câmp de introducere. Butoanele de creștere și de scădere sunt livrate de obicei fără un nume accesibil; reclamațiile le descriu ca fiind anunțat sub numele de „button, button” fără nicio indicație cu privire la activitatea lor.

Ghidurile și tabelele de mărimi reprezintă o problemă separată: acestea se găsesc aproape întotdeauna în spatele unui link intitulat „Tabel de mărimi” care deschide o fereastră modală, iar linkul în sine nu are adesea nicio etichetă, fereastra modală nu are adesea un titlu afișat, iar tabelul din interior nu are adesea anteturi pentru rânduri sau coloane.

Soluția

Folosiți elemente de control reale. Mostrele de culoare și selectorii de dimensiuni ar trebui să fie role="radiogroup" din role="radio" butoane (sau casete de selectare stilizate astfel încât să nu fie vizibile), fiecare având un nume accesibil, de exemplu „Dimensiune: Medie”. Cursorul pentru cantitate trebuie să fie o casetă de introducere a unui număr etichetată, însoțită de butoane de creștere/scădere, ale căror nume accesibile să includă acțiunea și cantitatea curentă. Încadrați întregul bloc selectat într-un element fieldset cu o legendă.

Pagini cu detaliidespre produse WCAG 2.2 AA1.3.1 Informații și relații · 4.1.2 Nume, rol, valoare · 3.3.2 Etichete sau instrucțiuni
E·18

„Adaugă în coș” — butonul care nu confirmă

Citat literal din plângeri
Confirmarea adăugării în coș nu a fost anunțată
Butonul „Adaugă în coș” NU este anunțat și NU este accesibil
Mesajul „Adaugă în coș” nu este anunțat utilizatorilor de cititoare de ecran
Utilizatorul nu poate adăuga produsul în coș
Frecvență
718 deînregistrări legate de acțiunea „Adaugă în coș”
78 de intrăricare utilizează în mod specific expresia „neanunțat” / „fără confirmare”
De ce este dat în judecată

Funcția „Adaugă în coș” este cel mai testat moment din orice proces de cumpărare online și unul dintre cele mai frecvent defecte pentru utilizatorii de tehnologii de asistență. Schema este simplă: un vizitator apasă butonul, apare o fereastră mică de confirmare sau un meniu derulant pentru coș timp de două sau trei secunde, iar pictograma coșului actualizează numărul de articole din antet. Utilizatorii văzători văd toate cele trei semnale. Utilizatorii de cititoare de ecran nu primesc, de obicei, niciunul. Fereastra de confirmare se afișează în afara oricărei regiuni active, fereastra glisantă apare fără gestionarea focalizării, iar modificarea numărului din coș este livrată ca o simplă mutație DOM pe care niciun cititor de ecran nu o va anunța.

Rezultatul este un buton care, din perspectiva utilizatorului, nu face nimic. Apasă pe el, nu se aude nimic, presupun că nu a funcționat și apasă din nou. Unele reclamații menționează că utilizatorii au apăsat butonul de cinci sau șase ori înainte să-și dea seama că în coș s-au adăugat în tăcere cinci sau șase articole.

Soluția

Încadrează zona de stare a coșului între aria-live="polite" și actualizează textul acestuia la fiecare adăugare reușită. Dacă designul utilizează un meniu de confirmare, mută focalizarea pe meniu atunci când acesta se deschide și readuce focalizarea pe butonul inițial atunci când se închide. Actualizează insigna cu numărul de articole din coș cu un anunț destinat exclusiv cititoarelor de ecran, de genul „1 articol adăugat. Total coș: 3 articole.”

Detaliiprodus· coș de cumpărături · pagini cu listă de produse WCAG 2.2 AA4.1.3 Mesaje de stare · 4.1.2 Nume, rol, valoare · 2.4.3 Ordinea de focalizare
E·12

Elemente de control reprezentate doar prin pictograme: coșul de cumpărături, balonul de chat, bara de rețele sociale

Citat literal din plângeri
Pictograma coșului de cumpărături nu este etichetată corect
Pictogramele „Cont” și „Coș de cumpărături” nu sunt etichetate pe platforma digitală a pârâtului
Pictograma de chat nu este accesibilă de la tastatură
Linkurile către rețelele sociale din subsol nu sunt etichetate
Frecvență
1.531 dearticole despre icoane și elemente vizuale
40 de articolededicate în mod specific etichetării pictogramelor coșului de cumpărături
De ce este dat în judecată

Elementele de control care conțin doar pictograme prezintă erori previzibile: conținutul vizibil este un fișier SVG sau un simbol din fontul de pictograme, conținutul accesibil este gol, iar cititorul de ecran redă doar rolul structural al elementului, fără a menționa un nume. Pictograma coșului de cumpărături este anunțată ca „link” sau „colapsat”; balonul de chat ca „buton”; rândul de pictograme sociale din subsol ca „link, link, link, link, link”. Utilizatorul nu are cum să știe ce face fiecare dintre ele.

Pictogramele coșului de cumpărături prezintă erori mai des decât alte pictograme dintr-un motiv de natură arhitecturală: în multe implementări, numărul de articole din coș este afișat în numele accesibil al pictogramei (de exemplu, pictograma afișează „0” în interiorul fișierului SVG), iar cititorul de ecran preia doar cifra. Reclamațiile menționează că pictograma coșului de cumpărături este anunțată ca „3, link” sau „0, link”, fără nicio indicație că „3” se referă la numărul de articole din coșul de cumpărături.

Soluția

Fiecare element de control care conține doar pictograme trebuie să aibă un nume accesibil. Adăugați un aria-label pe buton sau încadrați în acesta o etichetă de text ascunsă vizual: "Shopping cart, 3 items". Evitați să includeți cifre de numărare în numele accesibil al pictogramei fără un context. Pentru pictogramele decorative care apar alături de text vizibil, utilizați aria-hidden="true" pe pictogramă și lăsați textul să servească drept etichetă.

Antet· subsol · widgeturi flotante WCAG 2.2 AA1.1.1 Conținut non-textual · 4.1.2 Nume, rol, valoare · 2.4.4 Scopul linkului
E·11

Finalizarea comenzii: formularul care nu poate fi completat

Citat literal din plângeri
Pe pagina de finalizare a comenzii nu apare niciun mesaj de eroare
Utilizatorul nu poate introduce datele de facturare la finalizarea comenzii
Meniurile derulante din secțiunea „Informații de facturare” nu pot fi selectate folosind tasta Spațiu
Mesajele de eroare de la finalizarea comenzii sunt vagi și nu informează utilizatorii cu privire la ce trebuie corectat
Frecvență
1.656 deintrări referitoare la procesul de finalizare a comenzii
124 de intrărireferitoare la mesaje de eroare, câmpuri obligatorii sau obstacole legate de formularul de facturare
De ce este dat în judecată

Procesul de finalizare a comenzii prezintă un risc de neconformitate mai mare pe pixel pătrat decât orice altă pagină a unui site de comerț electronic, iar tiparele de eroare sunt frecvente. Listele derulante cu adrese afișate ca elemente personalizate <div> componente care ignoră tasta spațiu. Marcajele câmpurilor obligatorii sunt afișate doar sub forma unui asterisc roșu, fără aria-required și fără nicio asociere programatică. Mesajele de eroare afișate în text roșu sub câmp, fără aria-describedby câmpul nu este asociat cu eroarea și nu se afișează nicio notificare în zona activă atunci când validarea eșuează. Utilizatorul completează formularul, apasă pe „Continuă”, este redirecționat în tăcere și nu are cum să afle care câmpuri au generat erori sau de ce.

Aceleași nemulțumiri se regăsesc în sute de cazuri: mesajele de eroare nu sunt anunțate, mesajele de eroare sunt vagi, nu se pot introduce datele de facturare. Acestea nu sunt erori izolate. Ele reprezintă comportamentul implicit al majorității componentelor de finalizare a comenzii din magazinele online, livrate fără a fi fost luate măsuri explicite de accesibilitate.

Soluția

Folosiți date reale <label> elemente asociate intrărilor prin for/id. Marcați câmpurile obligatorii cu aria-required="true" și indicați cerința prin text vizibil, nu doar prin culoare. În cazul unei validări eșuate, afișați mesajul de eroare în interiorul câmpului de introducere aria-describedby țintă, indică câmpul cu erori aria-invalid="true"și mutați focalizarea tastaturii pe primul câmp cu date incorecte. Afișați o zonă de rezumat a erorilor în partea de sus a formularului, cu linkuri către fiecare câmp cu date incorecte.

SurfaceCheckout· formulare de adresă · formulare de contact WCAG 2.2 AA3.3.1 Identificarea erorilor · 3.3.3 Sugestii privind erorile · 1.3.1 Informații și relații · 4.1.3 Mesaje de stare
E·19

Plată: câmpul CVV care nu are etichetă

Citat literal din plângeri
Câmpurile de completare „Card de debit sau de credit” de pe pagina de finalizare a comenzii NU sunt etichetate
Atunci când utilizatorul încearcă să introducă datele cardului de credit, nu există o etichetă corespunzătoare care să identifice câmpul de introducere a codului CVV
Utilizatorul nu poate introduce datele cardului de credit la finalizarea comenzii
Utilizatorul nu poate adăuga o carte de credit la finalizarea comenzii
Frecvență
524 deînregistrări referitoare la plăți
75 de intrărireferitoare în mod specific la etichetarea cardurilor de credit, a codului CVV sau a numărului de card
De ce este dat în judecată

Blocul de plată este neobișnuit, deoarece este adesea afișat printr-un iframe încorporat al unei terțe părți — Stripe Elements, Braintree Hosted Fields sau un modul Adyen. În interiorul iframe-ului, formularul propriu al furnizorului de servicii de plată este de obicei etichetat corespunzător. Dar în momentul în care un site își creează propriul formular de captură a datelor cardului sau încorporează câmpurile într-un layout personalizat care înlocuiește etichetele cu marcaje vizuale, cele patru câmpuri — număr, data expirării, CVV, cod poștal — devin un rând de câmpuri goale pentru un cititor de ecran.

Câmpul CVV este cel mai des etichetat greșit, deoarece dezvoltatorii înlocuiesc de obicei eticheta acestuia cu o pictogramă sub formă de semn de întrebare care deschide o fereastră de informații explicând ce este un CVV. Fereastra de informații nu constituie eticheta; câmpul are în continuare nevoie de un nume programatic. Atunci când nu are unul, cititorul de ecran anunță întregul bloc de plată ca fiind „editare, editare, editare, editare”, iar tranzacția se oprește.

Soluția

Dacă utilizați o integrare cu câmpuri găzduite de terți, urmați instrucțiunile de accesibilitate ale furnizorului — majoritatea oferă o metodă documentată de etichetare a câmpurilor din afara iframe-ului. Dacă creați un formular personalizat de captură a datelor, fiecare câmp de introducere trebuie să aibă un <label> element cu o etichetă text vizibilă, plus autocomplete="cc-number" / cc-exp" / cc-csc" atribute, astfel încât managerii de parole și tehnologiile de asistență să poată identifica câmpurile în funcție de scopul lor.

SurfaceCheckout· etapa de plată WCAG 2.2 AA3.3.2 Etichete sau instrucțiuni · 1.3.5 Identificarea scopului câmpului de introducere · 4.1.2 Nume, rol, valoare
E·16

Pagina coșului de cumpărături: butonul de selectare a cantității și butonul „Eliminare” care lipsește

Citat literal din plângeri
Prin urmare, utilizatorii de cititoare de ecran nu pot elimina articole din coș
Reclamantul nu a reușit să scoată niciun produs din coșul de cumpărături
Reclamantul nu a reușit să modifice cantitatea de articole din coșul de cumpărături
În coșul de cumpărături, opțiunea privind cantitatea nu este etichetată corespunzător
Frecvență
1.022 deintrări pe pagina Coș de cumpărături
174 de intrărireferitoare în mod specific la operațiuni de adăugare, ștergere sau actualizare
De ce este dat în judecată

Pagina coșului de cumpărături repetă problema butonului de selectare a cantității de pe pagina de detalii a produsului (PDP), dar cu mize mai mari: un utilizator care folosește un cititor de ecran și nu poate acționa butonul respectiv nu poate finaliza comanda. Butonul „Eliminare” constituie un anti-model în sine — de obicei este o pictogramă mică sub forma unui × lângă fiecare articol, adesea fără text vizibil, fără aria-labelși nu se afișează nicio notificare atunci când rândul este șters. Utilizatorul apasă pe ceea ce speră să fie butonul de ștergere, rândul dispare, iar cititorul de ecran nu emite niciun sunet. Nu există nicio modalitate de a confirma că acțiunea a avut succes.

Mai multe reclamații semnalează o problemă similară: valoarea totală din coș se actualizează dinamic atunci când cantitățile se modifică sau articolele sunt eliminate, însă noua valoare totală este afișată ca text obișnuit în DOM, în afara oricărei zone interactive, astfel încât utilizatorul nu știe ce sumă va trebui să plătească.

Soluția

Fiecare element ar trebui să afișeze un buton de ștergere etichetat (de exemplu, "Remove Blue T-Shirt, size M, from cart"). Câmpurile de selectare a cantității ar trebui să afișeze valoarea curentă ca parte a denumirii accesibile sau prin actualizări asociate ale regiunii active. Subtotalul coșului ar trebui să se afle în interiorul unui aria-live="polite" regiune, astfel încât modificările să fie anunțate. Confirmați eliminările folosind o opțiune de anulare.

Pagina coșului de cumpărături WCAG 2.2 AA4.1.3 Mesaje de stare · 4.1.2 Nume, rol, valoare · 2.4.4 Scopul linkului
Partea a II-a · Modele la nivel de site
Eroare care apare pe fiecare pagină, indiferent de parcursul utilizatorului

Șapte elemente care nu sunt legate de o etapă specifică a procesului de conversie. Este vorba despre aspecte legate de infrastructură — convenții la nivel de pagină, componente globale, standarde de conținut — iar o singură eroare în acest context se reflectă pe fiecare pagină în care apare componenta respectivă.

E·01

Câmpul formularului denumit „casetă de editare”

Citat literal din plângeri
Reclamantul s-a confruntat cu câmpuri de formular neetichetate, denumite doar „casetă de editare”, și nu a putut aplica promoțiile sau finaliza plata
Pe pagina de autentificare, câmpul de introducere nu are etichetă și nu este anunțat
Lipsa etichetelor vizuale la câmpurile formularului • Problemă: Nu există etichete pentru câmpurile „Nume” și „Adresă de e-mail”
Nici butoanele de mărire și micșorare nu sunt etichetate și nu sunt anunțate utilizatorilor de cititoare de ecran
Frecvență
17.693de intrări clasificate ca „Anunțuri pentru cititoare de ecran”
2.522 dearticole din secțiunea „Formulare”
De ce este dat în judecată

Aceasta este cea mai mare categorie din setul de date, deoarece este problema cu cel mai mic cost de detectare și cu cel mai mare cost de ignorare. Un cititor de ecran parcurge DOM-ul, întâlnește un <input>și citește numele său accesibil — pe care îl calculează pornind, în ordine, de la: aria-labelledby, aria-label, o entitate asociată <label for>, title atributul sau elementul de substituție. Dacă niciunul dintre acestea nu există, cititorul de ecran anunță doar rolul: „casetă de editare” sau „editare, necompletată”. Această frază, aproape cuvânt cu cuvânt, apare în sute de înregistrări ale reclamațiilor.

Motivul pentru care această situație este atât de frecventă este de natură structurală. Sistemele moderne de design afișează adesea textul de substituție în câmpul de introducere ca înlocuitor al etichetei vizibile, iar dezvoltatorii presupun că textul de substituție îndeplinește rolul de etichetă. Nu este așa. Textul de substituție dispare atunci când utilizatorul începe să tasteze, nu lasă în urmă niciun nume programatic și face câmpul inutilizabil pentru oricine ajunge la el mai târziu în fluxul de lucru sau se întoarce la el după o eroare.

Soluția

Fiecare element de control interactiv primește o etichetă vizibilă, asociată prin programare. <label for="email">Email</label><input id="email" type="email"> este modelul standard. Elementele de substituție sunt indicii suplimentare, nu înlocuitori. Pentru elementele de control în cazul cărora o etichetă vizibilă este cu adevărat nedorită (câmpuri de căutare, butoane cu pictograme), utilizați aria-label cu text descriptiv — niciodată cu elementul de substituție duplicat.

Surface: Fiecareformular de pe site WCAG 2.2 AA3.3.2 Etichete sau instrucțiuni · 1.3.1 Informații și relații · 4.1.2 Nume, rol, valoare
E·05

Modalul care nu este nici anunțat, nici accentuat

Citat literal din plângeri
Această fereastră pop-up nu este anunțată și nu primește focusul
Cu toate acestea, focalizarea nu se mută în fereastra pop-up
Caseta de dialog nu a primit automat focalizarea
Fereastra pop-up nu primește focusul și nu este anunțată
Frecvență
3.476 deînregistrări privind ferestrele pop-up, ferestrele modale și suprapunerile
1.165 de intrăricare menționează concentrarea, evadarea sau respingerea
De ce este dat în judecată

Expresia „nu este anunțat sau nu i se acordă focus” apare cuvânt cu cuvânt în peste 400 de înregistrări de reclamații și este una dintre cele mai frecvente fraze din întregul set de date. Aceasta descrie o problemă specifică: pe pagină apare o fereastră modală sau un dialog (adesea automat — înscriere la newsletter, verificare vârstă, confirmare locație), conținutul vizibil se modifică, dar cititorul de ecran nu primește niciun semnal că s-a schimbat ceva. Focusul rămâne pe pagina de bază. Utilizatorul continuă să navigheze cu tasta Tab prin ceea ce se afla sub fereastra modală, fără să-și dea seama că a apărut o fereastră de dialog care blochează accesul.

Acesta este un exemplu clasic de modalitate care eșuează pe toate planurile în același timp: nu role="dialog", nu aria-modal="true", fereastra nu comută automat la modul deschis, nu rămâne blocată în modul deschis, nu se închide la apăsarea tastei Esc și nu afișează titlul. Deoarece toate aceste erori apar simultan, remedierea uneia dintre ele, luată separat, nu rezolvă problema.

Soluția

Folosiți un model de dialog standard (specificația „WAI-ARIA Authoring Practices” constituie referința). La deschidere: mutați focalizarea pe primul element care poate fi focalizat din interiorul ferestrei de dialog, setați aria-modal="true" și role="dialog", denumiți caseta de dialog cu aria-labelledby indicând titlul acestuia. Cât timp este deschis: mențineți focalizarea în interiorul ferestrei de dialog. La închidere: readuceți focalizarea asupra elementului care a declanșat-o. Respectați funcția tastei Esc. Dacă fereastra modală întrerupe un flux (de exemplu, redarea automată la încărcarea paginii), oferiți utilizatorului un singur mecanism pentru a o închide definitiv.

Ferestre pop-uppentru buletine informative· bannere pentru cookie-uri · filtre de vârstă · ferestre glisante pentru confirmarea coșului de cumpărături WCAG 2.2 AA4.1.2 Nume, rol, valoare · 2.4.3 Ordinea de focalizare · 2.1.2 Fără capcane de tastatură · 4.1.3 Mesaje de stare
E·03

Indicatorul de focalizare lipsă

Citat literal din plângeri
Indicatori de focalizare a tastaturii care nu sunt vizibili
În plus, nu dispun de indicatori vizibili de focalizare
indicatorul de focalizare al tastaturii nu era vizibil
Printre alte încălcări se numără capcanele de tastatură
Frecvență
7.294 deintrări referitoare la navigarea cu tastatura și focalizarea
197 de articolededicate în mod specific indicatorilor de focalizare sau focalizării vizibile
De ce este dat în judecată

Indicatorii de focalizare sunt de obicei dezactivați în mod intenționat de către un programator sau un designer care a considerat conturul implicit al browserului ca fiind un element de distragere a atenției și a scris *:focus { outline: none; } într-o foaie de stil globală. Pagina arată acum mai ordonată pentru un utilizator văzător care folosește mouse-ul. Pentru un utilizator văzător care folosește tastatura — inclusiv majoritatea utilizatorilor cu vedere slabă, a celor cu dizabilități motorii și a celor care navighează fără mouse — pagina devine inutilizabilă. Utilizatorul poate apăsa tasta Tab, dar nu poate vedea unde se află.

Acesta este unul dintre puținele tipuri de erori care pot fi observate fără a apela la tehnologii de asistență. Un evaluator de asigurare a calității care parcurge pagina de start o singură dată, fără alte instrumente, o va remarca în mai puțin de un minut. Faptul că echipele de accesibilitate o identifică în mod constant pe site-urile care fac obiectul unor litigii, în timp ce evaluările interne au trecut-o cu vederea, este unul dintre cele mai fiabile indicii din setul de date că site-ul nu a trecut deloc testul de accesibilitate cu tastatura.

Soluția

Nu dezactivați niciodată în mod general :focus contururi fără element de înlocuire. Asigurați un stil de evidențiere vizibil — de obicei un contur de 2-3 px cu un contrast suficient atât față de element, cât și față de fundalul acestuia — folosind :focus-visible astfel încât indicatorul să apară la navigarea cu tastatura, dar nu și la clicurile cu mouse-ul. Verificați acest lucru pentru fiecare componentă interactivă, inclusiv widget-urile personalizate, linkurile din cadrul cardurilor și elementele cu tabindex.

Afișează toateelementele interactive de pe site WCAG 2.2 AA2.4.7 Focalizare vizibilă · 2.1.1 Tastatură · 1.4.11 Contrast non-text
E·04

Logo-uri și imagini decorative fără text alternativ

Citat literal din plângeri
Lipsește textul alternativ pentru imaginea logo-ului
Lipsește textul alternativ pentru imaginea logo-ului
Imaginea logo-ului nu are descriere textuală
O imagine cu atributul alt setat la „null” nu ar trebui să aibă atributele title, aria-label sau aria-labelledby
Frecvență
6.337 deintrări referitoare la imagini și text alternativ
394 de mențiunicare fac referire în mod specific la sigla site-ului
De ce este dat în judecată

Logo-ul este cea mai vizualizată imagine de pe un site web și una dintre cele mai des defecte. De obicei, acesta se află într-un link care redirecționează către pagina principală, dar imaginea este încărcată fără alt, nu aria-label pe link, fără text în jur. Cititorul de ecran anunță doar „link”, fără nicio indicație despre unde duce. Înmulțiți cu fiecare pagină a site-ului.

Categoria mai largă — imaginile fără text alternativ — include bannere grafice, fotografii ale produselor, ilustrații principale, pictograme pentru rețelele sociale și vastul catalog de imagini de marketing pe care îl pune la dispoziție un site tipic de comerț electronic. Reclamațiile din această categorie menționează adesea nume specifice de fișiere imagine, ceea ce indică faptul că expertul reclamantului a efectuat o verificare automată care a identificat fiecare imagine a cărei alt atributul lipsea sau era gol, deși ar fi trebuit să fie descriptiv.

Soluția

Logo-urile ar trebui să conțină un text alternativ care să descrie numele companiei și, în cazul în care logo-ul conține un link, destinația acestuia — alt="Acme Co. — homepage". Imaginile decorative primesc un atribut alt gol (alt=""), care le ascunde în mod intenționat de tehnologiile de asistență. Imaginile informative trebuie să aibă un text alternativ descriptiv. Evitați generarea automată a textului alternativ pe baza numelor de fișiere sau a subtitrării generate de IA fără o verificare umană; în registrele de reclamații se menționează în mod repetat cazuri în care instrumentele de suprapunere au subtitrat logo-ul unei companii ca fiind „un semn albastru și galben”.

Logo-ulSurfaceHeader· bannere · imagini ale produselor · pagini de marketing WCAG 2.2 AA1.1.1 Conținut non-textual · 2.4.4 Scopul linkului
E·09

Linkuri fără conținut și „dă clic aici” / „citește mai mult”

Citat literal din plângeri
Site-ul web conține linkuri goale, fără text
De exemplu, linkuri precum „Citește mai mult” nu oferă suficient context
De exemplu, un link intitulat „Faceți clic aici” nu oferea suficient context
Descrieri vagi ale linkurilor • Problemă: Linkurile de tipul „dă clic aici” nu oferă informații despre scopul lor
Frecvență
2.723 deintrări referitoare la linkuri și butoane
85 de intrăripentru tiparele „empty-link” sau „generic-link-text”
De ce este dat în judecată

Cititoarele de ecran afișează o vizualizare de tip „listă de linkuri”, folosită intens de utilizatorii experimentați pentru a parcurge o pagină în câteva secunde. Această vizualizare afișează doar textul linkului, separat de paragraful din care face parte. O pagină în care fiecare titlu de blog se termină cu „Citește mai mult” se afișează în acea vizualizare sub forma a cincisprezece intrări identice. O pagină cu cinci linkuri goale — <a href="..."></a>, situație frecventă atunci când pictogramele se află în elemente de tip link fără text de rezervă — afișează cinci spații goale.

Soluția este binecunoscută, la fel și problema, motiv pentru care acest tipar apare în mod repetat în reclamații — persistența sa indică un proces de dezvoltare care nu include un instrument automat de verificare a textului linkurilor și nici o verificare manuală pentru cititoarele de ecran.

Soluția

Fiecare link trebuie să aibă un nume accesibil care să descrie destinația sau acțiunea sa. Înlocuiți expresiile generice cu unele descriptive — „Citește mai mult” devine „Află mai multe despre rezultatele financiare din trimestrul al treilea”. Pentru linkurile care conțin doar pictograme, adăugați text ascuns vizual sau un aria-label. Efectuați o verificare automată (Axe, Lighthouse etc.) pentru a depista elementele goale <a> elemente în timpul CI.

La nivel de site· previzualizări ale articolelor de pe blog · subsol · blocuri de conținut conex WCAG 2.2 AAA2.4.4 Scopul linkului · 2.4.9 Scopul linkului (numai link)
E·06

Videoclip fără subtitrare sau transcriere

Citat literal din plângeri
Site-ul web conține numeroase videoclipuri care nu au subtitrare
Lipsa subtitrărilor pe videoclipurile de pe site
Pe site există mult mai multe videoclipuri care nu au subtitrare
Frecvență
3.355 deintrări referitoare la conținut video și audio
86 de intrăricare fac referire în mod specific la subtitrări, redare automată sau descriere audio
De ce este dat în judecată

În reclamații, problemele legate de conținutul video se manifestă în două moduri. Primul este evident: un videoclip de marketing, o demonstrație de produs sau un videoclip explicativ este publicat fără subtitrări, transcriere sau orice altă alternativă text — iar un vizitator surd sau cu deficiențe de auz nu poate accesa conținutul. Al doilea este mai subtil: un videoclip principal care se redă automat la încărcarea paginii, ceea ce interferează cu ieșirea cititorului de ecran și încalcă comenzile de pauză/oprire prevăzute la nivelul WCAG 2.2 AA (conform SC 2.2.2 Pauză, Oprire, Ascundere pentru conținut în mișcare și SC 1.4.2 pentru orice conținut audio).

Unele reclamații din acest set de date susțin că „lipsa subtitrărilor pe videoclipurile de pe site-ul web constituie o încălcare a ADA”, afirmație prezentată ca o concluzie juridică. Validitatea acestei interpretări variază în funcție de jurisdicție și de circumstanțe; ceea ce este mai cert este faptul că aceste videoclipuri nu respectă în mod constant standardul WCAG 2.2 AA, standard pe care majoritatea instanțelor și acordurilor de soluționare îl consideră drept criteriul de referință operațional în materie de conformitate.

Soluția

Asigurați subtitrări sincronizate pentru toate videoclipurile preînregistrate care conțin sunet. Furnizați și o transcriere text; transcrierile sunt utile pentru utilizatorii care au dispozitivele cu sunetul oprit, în medii cu lățime de bandă redusă, precum și pentru indexare. Evitați redarea automată; dacă redarea automată este necesară din motive de design, asigurați un buton de pauză/oprire accesibil imediat de la tastatură. Pentru conținutul exclusiv video (fără sunet), asigurați o descriere audio sau o alternativă text.

VideoclipuriSurfaceHero· demonstrații de produs · pagini de marketing · încorporări YouTube WCAG 2.2 AA1.2.2 Subtitrări (preînregistrate) · 1.2.5 Descriere audio (preînregistrată) · 2.2.2 Pauză, Oprire, Ascundere
E·15

Formulare de autentificare, de conectare și de parolă

Citat literal din plângeri
Utilizatorul nu poate accesa formularul de autentificare
Utilizatorul nu se poate autentifica în cont
Utilizatorul nu se poate autentifica în cont
Utilizatorul nu se poate autentifica la finalizarea comenzii
Frecvență
1.158 dearticole referitoare la contul de utilizator și autentificare
De ce este dat în judecată

Autentificarea este punctul de acces pentru întreaga experiență de autentificare. Când formularul nu funcționează, toate paginile din spatele acestuia devin inaccesibile, iar utilizatorii percep adesea această reacție în lanț ca pe o singură barieră. Modelul este aceeași eroare de etichetare a formularului ca în cazul E·01, adesea combinată cu trei sub-erori specifice: un comutator „Afișează parola” implementat ca un buton doar cu pictogramă, fără nume și fără anunțarea schimbării de stare, un CAPTCHA care împiedică complet utilizarea cititorului de ecran și erori în linie („credențiale nevalide”) care sunt afișate pe ecran, dar nu sunt anunțate.

Caseta de selectare „Reține-mă” reprezintă o altă eroare secundară recurentă: afișată ca un element stilizat <div>, cu valoarea reală <input> ascunsă în afara ecranului, caseta de selectare poate fi activată cu mouse-ul, dar nu și cu tastatura sau cu un cititor de ecran. Utilizatorul nu are nicio posibilitate de a opta pentru o sesiune persistentă.

Soluția

Folosiți date reale <input>, <label>și <button> elemente. Transformați comutatorul de afișare/ascundere a parolei într-un buton propriu-zis, cu un nume accesibil care se actualizează în funcție de starea acestuia ("Show password" / "Hide password") și anunță schimbarea prin aria-pressed. Asigurați o alternativă accesibilă la CAPTCHA-urile bazate pe imagini (CAPTCHA audio sau — de preferință — înlocuiți CAPTCHA cu autentificarea bazată pe risc sau cu variantele accesibile ale hCaptcha).

PaginiSurfaceLogin· Autentificare la finalizarea comenzii · Tablouri de bord ale contului WCAG 2.2 AA3.3.2 Etichete sau instrucțiuni · 4.1.2 Nume, rol, valoare · 1.1.1 Conținut non-textual (CAPTCHA)
Partea a III-a · Infrastructură și modele la nivel de cod
Eșecuri cauzate de deciziile privind marcajul, structura și instrumentele utilizate

Patru exemple care ilustrează mai degrabă eșecurile arhitecturale decât ale unei interfețe de utilizator anume. Este vorba despre decizii luate la un nivel superior celui al paginii — organizarea titlurilor, compatibilitatea cu dispozitivele mobile, dependențele de terți — ale căror consecințe se resimt peste tot.

E·10

Structura paginii: lipsește eticheta H1, reperele sunt defecte, nu este specificată limba

Citat literal din plângeri
Lipsește eticheta de titlu – H1
Structura titlurilor necorespunzătoare și lipsa declarațiilor privind limba documentului
Main landmark not announced by screen reader • Issue: The <main> landmark is not defined within the page
Pagina nu dispune de un link de salt sau de o zonă de reper care să le permită utilizatorilor care folosesc tastatura să treacă direct la conținutul dorit
Frecvență
2.485 deintrări referitoare la structura paginii și semantică
Peste 950 de intrăricare menționează în mod specific titluri, repere sau elemente H1
De ce este dat în judecată

Cititoarele de ecran prezintă pagina prin trei moduri de navigare: după titluri, după repere și după linkuri. O pagină care nu include un <h1>, fără <main>, <nav>și <footer> repere, și fără un lang="en" atributul de pe <html> elementul a eliminat simultan toate cele trei moduri de navigare. Utilizatorii nu au nicio posibilitate de a parcurge conținutul, de a accesa direct conținutul și nici cititorul de ecran nu poate încărca motorul de pronunție corespunzător.

Este vorba despre o eroare neobișnuit de gravă: lipsa unui singur reper determină o serie de probleme în lanț, deoarece toate strategiile de navigare ale cititoarelor de ecran care se bazează pe acesta nu mai funcționează. Reclamațiile din această categorie menționează de obicei patru sau cinci probleme structurale specifice, prezentate ca dovadă a faptului că site-ul nu are o bază semantică.

Soluția

Fiecare pagină primește una și numai una <h1>, cu subtitluri (<h2>, <h3>) grupate logic. Încadrați regiunile în elemente de reper HTML5: <header>, <nav>, <main>, <aside>, <footer>. Set lang la rădăcină <html> element. Verificați cu un instrument de verificare a structurii sau rulați document.querySelectorAll('h1').length === 1 ca test de funcționalitate în CI.

Afișează fiecarepagină WCAG 2.2 AA1.3.1 Informații și relații · 2.4.6 Titluri și etichete · 3.1.1 Limba paginii
E·17

Barierele destinate exclusiv dispozitivelor mobile

Citat literal din plângeri
Erorile nu sunt semnalate către unitățile mobile SRU
Meniul nu este anunțat utilizatorilor de cititoare de ecran (SRU)
De exemplu, denumirea câmpului „Număr de telefon mobil” nu este anunțată
Unitățile mobile SRU nu pot selecta butonul „Apple Pay” ca metodă de plată
Frecvență
787 dearticole despre mobil și design adaptabil
203 de intrăricare compară în mod explicit comportamentul utilizatorilor pe dispozitive mobile cu cel de pe desktop
De ce este dat în judecată

Cea mai mare parte a procesului de asigurare a calității în materie de accesibilitate se desfășoară pe browserele pentru desktop, folosind NVDA sau JAWS. Tehnologiile asistive pentru dispozitive mobile — VoiceOver pe iOS, TalkBack pe Android — prezintă o redare diferită a aceluiași DOM, adesea cu erori distincte. Reclamațiile folosesc în mod repetat abrevierea „mobile SRU” (utilizator de cititor de ecran mobil) pentru a semnala erori specifice vizualizării mobile: un meniu hamburger care funcționează cu NVDA pe desktop, dar nu reacționează sub VoiceOver, un buton Apple Pay accesibil pe un laptop, dar nu și pe echivalentul paginii pentru iPhone, mesaje de eroare afișate pe desktop, dar nu și pe mobil.

Datele sugerează că părțile pârâte, a căror accesibilitate pe desktop este, în general, satisfăcătoare, sunt totuși date în judecată din cauza unor probleme specifice dispozitivelor mobile. Conformitatea cu standardele de accesibilitate pe dispozitive mobile constituie un criteriu de evaluare în sine.

Soluția

Testați cel puțin cu VoiceOver în Safari pe iOS și cu TalkBack în Chrome pe Android, folosind aceleași fluxuri de lucru acoperite de testarea calității pe desktop. Acordați o atenție deosebită interacțiunilor bazate pe gesturi, butoanelor native de plată și anunțurilor privind câmpurile formularelor la focalizare. Dacă există o aplicație nativă, supuneți-o aceluiași proces de verificare — reclamațiile vizează adesea atât versiunea web, cât și aplicația, în cadrul aceluiași caz.

Webmobil· aplicații native iOS / Android WCAG 2.2 AAAll— aplicat la redarea pe dispozitive mobile · 2.5.1 Gesturi ale cursorului · 2.5.2 Anularea cursorului
E·14

Suprapunerea de accesibilitate sau widgetul în sine

Citat literal din plângeri
Widgeturile de suprapunere pentru accesibilitate, precum UserWay, nu pot și nu elimină barierele de accesibilitate existente la nivel de cod
Reclamantul susține că este familiarizat cu widgetul de suprapunere al aplicației accessiBe și că acesta „pur și simplu nu funcționează pentru o persoană complet nevăzătoare”.
Probleme cauzate de pluginul de ajustări de accesibilitate AccessiBe: pluginul AccessiBe creează bariere semnificative în calea accesibilității, în loc să le rezolve
Widgeturile automate de suprapunere pentru accesibilitate nu asigură un acces egal și pot chiar crea bariere suplimentare pentru utilizatorii cu dizabilități
Frecvență
1.210 deînregistrări privind componentele terțe
26 de înregistrăricare menționează în mod explicit un furnizor sau care descriu erori cauzate de suprapuneri
De ce este dat în judecată

Suprapunerea de accesibilitate este singurul exemplu din acest catalog în care problema nu se află deloc în site-ul de bază — ci în stratul de remediere care a fost adăugat tocmai pentru a o rezolva. Plângerile din această categorie descriu două tipuri distincte de probleme. Prima este că suprapunerile nu elimină de fapt barierele existente, astfel încât utilizatorul se confruntă cu aceleași ferestre modale defecte, formulare etichetate greșit și erori neanunțate, indiferent dacă widgetul este prezent sau nu. Al doilea este mai precis: suprapunerile introduc uneori noi defecțiuni prin inserarea de etichete incorecte, aplicarea greșită a rolurilor ARIA sau interferarea cu propria configurație a tehnologiei de asistență a utilizatorului.

Un detaliu demn de remarcat: plângerile din 2024 și 2025 menționează din ce în ce mai des numele furnizorului de soluții de tip overlay. Două pasaje specifice din plângeri identifică în mod clar companiile UserWay și AccessiBe, iar măsurile recente luate de FTC au creat riscul explicit ca adăugarea unei soluții de tip overlay să constituie în sine o dovadă a eșecului în realizarea unor măsuri concrete de remediere — și nu o apărare împotriva unui proces.

Soluția

Tratați suprapunerile ca pe un indicator, nu ca pe o soluție definitivă. Dacă în prezent este implementată o astfel de suprapunere, elaborați un plan de remediere real care să abordeze codul de bază, în loc să-l mascheze. Calea verificată în practică constă într-o combinație dintre: un scaner automat integrat în CI, o verificare manuală conform standardului WCAG 2.2 AA, testarea manuală cu cel puțin un cititor de ecran și navigare exclusiv prin tastatură, precum și asigurarea continuă a calității accesibilității în cadrul procesului de proiectare și dezvoltare.

Widget de suprapunerela nivel de site WCAG 2.2 AA Suprapunerilenu îndeplinesc cerințele de conformitate AA · toate subcriteriile relevante rămân în domeniul de aplicare

Ce au în comun aceste nouăsprezece modele

Catalogul nu este un eșantion aleatoriu. Dacă citiți exemplele în ordine, veți observa că un număr redus de tipare structurale reapar în mod repetat — tipare care explică de ce aceste defecte specifice sunt predominante, mai degrabă decât pe ce suprafață apar.

  1. Componente JavaScript personalizate care înlocuiesc elementele HTML native

    Cele mai des menționate eșecuri au toate legătură cu un <div> îndeplinind atribuțiile unui <button>, un <label>, un <select>, sau un <dialog>. În cazul în care se utilizează elementul nativ, problema apare rar. În cazul în care acesta este înlocuit — de obicei din motive legate de designul vizual — problema apare cu certitudine.

  2. Lipsa legăturilor programatice între conținutul vizibil și semnificația acestuia

    Caracterul de substituție este tratat ca o etichetă. Asteriscul este tratat ca aria-required. Chenarul roșu este tratat ca un mesaj de eroare. Utilizatorii fără deficiențe de vedere pot observa relațiile în mod vizual; utilizatorii de tehnologii asistive pot vedea doar relațiile existente în DOM.

  3. Modificări de stare care nu sunt anunțate

    Confirmările adăugării în coș, numărul de rezultate ale căutării, erorile de validare, deschiderea ferestrelor modale, actualizările totalului coșului — fiecare schimbare dinamică de stare din catalog are cel puțin o plângere care o descrie ca fiind „silențioasă”. Mesajele de stare și regiunile active reprezintă cea mai puțin utilizată componentă a setului de instrumente WAI-ARIA.

  4. Dispozitivele mobile și computerele de birou prezintă diferențe

    Aceeași componentă creată o singură dată folosind HTML semantic funcționează atât cu VoiceOver, cât și cu NVDA. Aceeași componentă creată folosind JavaScript personalizat trece adesea testele de calitate pentru cititoarele de ecran de pe desktop, dar eșuează pe dispozitivele mobile, deoarece redarea de către cititoarele de ecran de pe mobil scoate la iveală erori diferite în același cod.

  5. Reclamațiile sunt standardizate, dar erorile care stau la baza lor nu sunt inventate

    Fraze standard din plângeri apar cuvânt cu cuvânt în sute de cazuri — însă constatările specifice la nivel de element din fiecare plângere pot fi verificate și sunt corecte. Faptul că firma de avocatură a reclamantului folosește un șablon nu înseamnă că problemele de fond sunt inventate; înseamnă că se aplică același scenariu împotriva acelorași probleme recurente.

Ce trebuie să verificați mai întâi dacă nu aveți un program de accesibilitate

Catalogul de mai sus este exhaustiv, dar nu este ierarhizat în vederea trierii. Dacă o echipă pornește de la zero și dorește să afle ce elemente trebuie verificate înainte de următoarea lansare, setul de date sugerează o ordine clară — determinată atât de frecvență, cât și de prezența sau absența acestor tipare în înregistrările reale ale reclamațiilor. Lista de mai jos nu înlocuiește un audit complet conform WCAG 2.2 AA, dar acoperă neregulile care apar în cea mai mare parte a cazurilor.

Nivelul 1 — Frecvență maximă, costuri minime de remediere

  • Navigați pe pagina de start folosind tastatura. Puteți vedea unde se află cursorul la fiecare pas? (E·03)
  • Deschideți sursa paginii și verificați fiecare <input> pe fiecare formular există un <label>. (E·01)
  • Deschideți fiecare fereastră modală cu un cititor de ecran. Este anunțată? Se mută focalizarea în ea? (E·05)
  • Rulați un scaner automat (de exemplu, DevTools, Lighthouse) pe cele mai utilizate cinci șabloane ale dvs. (E·04, E·09, E·10)

Nivelul 2 — Expunere financiară maximă în caz de rupere

  • Efectuați un proces de finalizare a comenzii de la început până la sfârșit folosind un cititor de ecran, incluzând o eroare de validare introdusă intenționat. Sunt anunțate erorile? Sunt anunțate câmpurile obligatorii? (E·11)
  • Adaugă un produs în coș folosind un cititor de ecran. Auzi că s-a actualizat coșul? (E·18)
  • Utilizați caseta de căutare și funcția de completare automată folosind exclusiv tastatura. Puteți accesa și selecta o sugestie? (E·13)
  • Asigurați-vă că fiecare câmp de introducere a datelor din formularul de plată are o etichetă reală, nu un text provizoriu. (E·19)

Nivelul 3 — Ușor de trecut cu vederea în testarea pe desktop

  • Repetați pașii de la Nivelul 1 și Nivelul 2 în Safari pe iOS cu VoiceOver și în Chrome pe Android cu TalkBack. (E·17)
  • Dacă aveți implementată o interfață de accesibilitate, planificați eliminarea acesteia în paralel cu un plan de remediere efectivă. (E·14)
  • Verificați fiecare videoclip pentru a vă asigura că are subtitrări și o transcriere. (E·06)
Concluzia

Lista elementelor care pot face obiectul unei acțiuni în justiție este scurtă, stabilă și vizibilă de pe pagina principală.

Cele 19 tipare de mai sus reprezintă marea majoritate a problemelor semnalate în cele 113.120 de reclamații clasificate, din 8.788 de cazuri federale. Nu sunt ceva nou. Nu sunt greu de identificat. Este vorba despre aceeași pagină de finalizare a comenzii, aceeași fereastră modală, același logo, același câmp de formular care ar apărea în urma unei parcurgeri de treizeci de minute a site-ului cu ajutorul tastaturii și al unui cititor de ecran.

Asimetria este esența problemei. Avocații reclamanților sunt bine organizați, dispun de resurse ample și identifică tiparele din această listă cu o eficiență industrială — jumătate dintre cazuri se soluționează prin tranzacție în mai puțin de 100 de zile. Pârâții, în ansamblu, reproduc aceleași tipare la nesfârșit, adesea adăugând un element de fațadă folosit ca o aparentă apărare.

Efortul de a elimina această asimetrie nu ține de domeniul juridic. Este vorba despre aplicarea principiilor ingineriei și proiectării la o listă cunoscută și limitată. Acest articol reprezintă lista respectivă.

Metodologie și date: Cele 19 anexe sunt derivate din 113.120 de descrieri individuale ale problemelor, clasificate în 27 de categorii funcționale, extrase din documentele de plângere din 8.788 de cazuri federale privind accesibilitatea site-urilor web în temeiul Titlului III din ADA (înregistrări PACER, 2007–aprilie 2026). Numărul de probleme citate pentru fiecare anexă reflectă intrările clasificate în cadrul fișei relevante, nu cazuri unice — un singur caz generează de obicei zeci de intrări. Citatele textuale sunt reproduse așa cum apar în înregistrările de plângeri de bază, cu doar o ușoară corectare a artefactelor OCR.

Referințe WCAG:Criteriile de succes sunt menționate în WCAG 2.2 AA, versiunea considerată în mod constant de instanțele federale din SUA și în acordurile de soluționare ale Departamentului Justiției (DOJ) drept standardul de conformitate aplicabil. WCAG 2.2 introduce criterii de succes suplimentare, dar nu constituie încă standardul de referință implicit în litigiile analizate în prezentul document.

Declarații de exonerare de răspundere: Prezentulghid are caracter informativ și nu constituie consultanță juridică. Faptul că un anumit model de interfață utilizator (UI) poate atrage răspunderea juridică depinde de jurisdicția aplicabilă, de categoria de unitate de servicii publice în care se încadrează pârâtul, de prejudiciul specific suferit de reclamant și de modul în care a fost formulată plângerea. Mai multe pasaje citate din plângeri conțin concluzii juridice (de exemplu, că lipsa subtitrărilor „constituie o încălcare a ADA”) care trebuie interpretate ca simple alegații ale reclamanților, și nu ca norme juridice consacrate.

(sistemul „Accesul public la dosarele electronice ale instanțelor” al sistemului judiciar federal)