Dostępność cyfrowa e-commerce 2025: ARIA live, dostępne formularze, WCAG i nowe wymogi prawne

Planujesz rozwój swojego e-commerce w nadchodzących latach? Zastanawiasz się, jak zapewnić dostępność swojej strony dla wszystkich użytkowników? Poznaj nowe regulacje i najlepsze praktyki w zakresie ARIA, formularzy i WCAG. Przeczytaj artykuł ekspertów Krakweb i zadbaj o swoją przyszłość online!

Unsplash / Sigmund

2025-04-18 10:04
9 minut czytania

W poniższym artykule omawiamy kluczowe obszary dostępności cyfrowej: od powiadomień o dynamicznych zmianach dla czytników ekranowych, przez dostępne walidacje formularzy, po logiczną strukturę nagłówków i linki. Wyjaśniamy również najważniejsze zapisy Ustawy z 26 kwietnia 2024 r. („o zapewnianiu spełniania wymagań dostępności…”) – terminy, wyjątki dla mikroprzedsiębiorców, okresy przejściowe oraz konsekwencje prawne. Na koniec formułujemy praktyczny plan działania.

Dalszą część artykułu przeczytasz poniżej - pod formularzem.

Umów się na darmową konsultację

Powiadomienia o dynamicznych zmianach (ARIA live regions)

Wszystkie dynamiczne zmiany, które zachodzą „poza kontekstem” (np. automatyczne odświeżanie koszyka czy pojawienie się komunikatu) muszą być dostępnie komunikowane, inaczej osoby korzystające z czytników ekranowych ich nie zauważą i łatwo się zgubią podczas zakupów  . ARIA live regions pozwalają programistycznie oznaczyć fragmenty strony jako obszary, w których zmiany będą automatycznie ogłaszane przez AT (assistive technologies) dzięki atrybutowi aria-live  . Odpowiedni dobór wartości (polite vs. assertive) oraz dodatkowych atrybutów (aria-atomic, aria-relevant) decyduje o priorytecie i zakresie odczytywanej informacji  . Ponadto, aby nie naruszać Success Criterion 2.2.1 (Timing Adjustable), dynamiczne procesy powinny dawać użytkownikowi kontrolę nad czasem wyświetlania komunikatów lub umożliwiać ich wywołanie „na żądanie”

Problem i konieczność powiadomień

Gdy fragmenty strony są aktualizowane automatycznie lub w odpowiedzi na akcję użytkownika, bez przeładowania całości, osoby niewidome nie widzą wizualnych wskazówek i mogą nie wiedzieć, że pojawiła się nowa treść czy błąd  .
Brak odpowiednich powiadomień często kończy się utratą kontekstu – użytkownik nie wie, czy dodano produkt do koszyka, czy formularz zgłoszenia wysłano poprawnie, co prowadzi do porzucenia procesu zakupowego

ARIA live regions

Atrybut aria-live

  • aria-live="polite": komunikaty są odczytywane dopiero po zakończeniu bieżącego ogłoszenia, co minimalizuje przerwania interakcji użytkownika  .

  • aria-live="assertive": bieżące komunikaty są przerywane i natychmiast ogłaszane, zalecane tylko dla krytycznych powiadomień (np. poważne błędy)  .

  • aria-live="off": zmiany są ogłaszane tylko, gdy fokus znajduje się w regionie; domyślne dla ról takich jak marquee czy timer  

Atrybuty dodatkowe

  • aria-atomic="true|false" – decyduje, czy czytnik odczyta cały region po zmianie (true), czy tylko zaktualizowaną część (false). Przydatne np. przy zegarach czy podsumowaniach  .

  • aria-relevant="additions removals text all" – określa, które typy zmian (dodania, usunięcia, zmiany tekstu) powinny być ogłaszane; np. w czatach warto nasłuchiwać zarówno nowych, jak i usuniętych wiadomości  .

Role z wbudowanymi live regions

Niektóre role ARIA pełnią funkcję live region domyślnie:

  • role="status" – służy do aktualizacji stanu, np. paska postępu; zaleca się dodać redundantne aria-live="polite" dla lepszej kompatybilności  .

  • role="alert" – do komunikatów o błędach lub ostrzeżeń; automatycznie prefiksowane tekstem „Alert” i często implementowane jako assertive

Praktyczne wskazówki

Definiowanie live region

  1. Oznacz kontener jako live region przed wystąpieniem zmian (najlepiej w oryginalnym kodzie lub tuż po załadowaniu) – w przeciwnym razie AT mogą nie zarejestrować regionu 

  2. W drugim kroku zmieniaj tylko zawartość regionu – dodaj lub zaktualizuj tekst, zamiast rekonstruować cały element, by zapewnić stabilność focusu i czytelność dla AT  .

Testowanie

  • Automatyczne: sprawdź obecność aria-live, aria-atomic i aria-relevant w kodzie (axe, WAVE, Lighthouse).

  • Manualne:

    • Nawigacja klawiaturą – upewnij się, że elementy docelowe nie tracą focusu po aktualizacji.

    • Czytniki ekranowe (NVDA, VoiceOver) – zweryfikuj, czy zmiany są faktycznie ogłaszane i czy nie dochodzi do dubli lub pominięć

Kontrola użytkownika

Zgodnie z WCAG 2.2 Success Criterion 2.2.1, użytkownik musi mieć kontrolę nad elementami zawierającymi limity czasowe lub automatyczne odświeżanie:

  • możliwość wyłączenia lub wstrzymania odliczania,

  • regulacja czasu wyświetlania komunikatów,

  • wyraźne ostrzeżenie przed wygaśnięciem i opcja przedłużenia  .
    Dynamiczne treści powinny też być wywoływane „na żądanie” (np. kliknięcie „Pokaż nowe wiadomości”) zamiast automatycznie, aby uniknąć niezamierzonych przerwań

Stosowanie ARIA live regions to klucz do dostępnego e-commerce: odpowiednie oznaczenie obszarów, wybór polite vs. assertive, użycie aria-atomic i aria-relevant, oraz zapewnienie użytkownikowi kontroli zgodnie z SC 2.2.1 gwarantują, że wszystkie dynamiczne zmiany będą zauważone i zrozumiane przez osoby z niepełnosprawnościami. Regularne testy automatyczne i manualne pozwolą utrzymać wysoki standard dostępności.

Walidacja formularzy i komunikaty błędów

Przed wyświetleniem komunikatu o błędzie warto już natychmiastowo poinformować użytkownika o wymaganiach dotyczących pola (np. zasady tworzenia hasła) umieszczając krótką instrukcję bezpośrednio pod kontrolką – zgodnie z wytycznymi W3C Form Instructions, które zalecają podawanie formatów i zasad przed przełączeniem się czytnika w tryb „Forms Mode”  . Jeśli natomiast błąd zostanie wykryty, Success Criterion 3.3.1 (Error Identification) wymaga, aby pole zostało oznaczone programowo (aria-invalid="true"), a komunikat błędu opisany w tekście i ogłoszony technologii wspomagającej (np. za pomocą role="alert" lub aria-live="assertive")  . Z kolei SC 3.3.2 (Labels or Instructions) każe dostarczyć każdej kontrolce właściwą etykietę (<label> lub aria-labelledby/aria-describedby), a placeholder nie zastępuje formalnej etykiety, gdyż znika przy wpisywaniu i nie jest traktowany jak label przez czytniki ekranu  . Całość należy poddać zarówno testom automatycznym (axe, WAVE, Lighthouse), jak i manualnym (wypełnianie tabulatorem oraz weryfikacja z NVDA/VoiceOver), aby mieć pewność, że komunikaty błędów są odczytywane natychmiast po walidacji

Natychmiastowa informacja o wymaganiach

  • Podawaj wymagania formatu przy polu (np. „Hasło musi mieć min. 8 znaków i zawierać literę oraz cyfrę”) w formie in-line instructions – bez czekania na pierwsze nieudane wysłanie formularza; dzięki temu użytkownicy znają reguły od razu  .

  • Unikaj polegania wyłącznie na placeholderach, które znikają przy wpisywaniu i nie są odczytywane jako etykiety przez AT

Kryterium sukcesu 3.3.1 Error Identification - Identyfikacja błędów

Oznaczanie pola w błędzie

  • Dodaj aria-invalid="true" do kontrolki, która nie spełnia warunków walidacji (np. wymagane pole puste lub niewłaściwy format)  

Opis tekstowy błędu

  • Wyświetlaj komunikat błędu w postaci czytelnego tekstu obok lub pod polem (nie tylko czerwone obramowanie), np. <span id="emailError">Adres e-mail musi zawierać „@”</span>  

Ogłaszanie błędu czytnikom ekranu

  • Użyj role="alert" lub aria-live="assertive", aby AT przerwały bieżące komunikaty i niezwłocznie odczytały treść błędu; alternatywnie aria-live="polite" odczyta komunikat po zakończeniu bieżącej kolejki

Kryterium sukcesu 3.3.2 Labels or Instructions - Etykiety lub instrukcje

  • Każda kontrolka wymaga powiązanej etykiety – <label for="pole"> lub aria-labelledby/aria-describedby – aby AT mogły zidentyfikować jej przeznaczenie  .

  • Placeholder nie zastępuje etykiety: znika przy rozpoczęciu wpisywania i nie jest odczytywany jako label przez czytniki ekranu .

  • W razie potrzeby dodaj instrukcje dotyczące formatu lub zakresu wartości bezpośrednio w treści etykiety lub w dodatkowym elemencie opisowym (aria-describedby="hintId")

Testy

Testy klawiaturą

  • Wypełnij formularz wyłącznie za pomocą Tab, Space, Enter oraz klawiszy strzałek; sprawdź, czy focus logicznie przechodzi między polami i czy komunikaty błędów są dostępne po wywołaniu walidacji  

Testy czytnikiem ekranu

  • Użyj NVDA (Windows) i VoiceOver (macOS/iOS), aby zweryfikować, że:
    • pole z aria-invalid="true" jest oznaczone jako błędne,
    • komunikaty błędów pojawiają się natychmiast i są odczytywane przez AT dzięki role="alert" lub aria-live

Dzięki tak kompleksowemu podejściu (natychmiastowe instrukcje, oznaczanie błędnych pól, czytelne komunikaty i pełne etykiety) formularze staną się bardziej przyjazne i dla osób z niepełnosprawnościami, i dla wszystkich użytkowników.

Struktura nagłówków i linki

Nagłówki (SC 2.4.6)

Hierarchia i zagnieżdżanie

  • Nagłówki <h1><h6> muszą być zagnieżdżane kolejno bez pomijania poziomów: po <h2> powinna wystąpić dopiero <h3>, nie <h4> czy <h5> W3C.

  • Uporządkowanie zgodne z semantyką dokumentu pomaga użytkownikom AT (Assistive Technology) w szybkim przeglądaniu i rozumieniu struktury strony, podobnie jak spis treści .

Opis i znaczenie

    • Nagłówki powinny krótko i precyzyjnie oddawać temat sekcji; ich pominięcie lub stosowanie dla dekoracji naraża na utratę kontekstu W3C.

    • Etykiety (<label>) w formularzach i inne oznaczenia interfejsu również muszą być opisowe – wspierając zasadę „Headings and Labels” na poziomie AA

Linki (Kryterium sukcesu 2.4.4)

Cel linku w tekście

  • Tekst linku sam w sobie musi przekazywać, dokąd prowadzi (SC 2.4.4): np. „Pobierz regulamin (PDF)”, nie „Kliknij tutaj” W3C.

  • Ułatwia to nawigację listą linków w czytniku ekranu oraz orientację użytkownikom z ograniczeniami kognitywnymi lub motorycznymi.

Wizualne wyróżnienie

    • Nie polegaj wyłącznie na kolorze: dodaj podkreślenie lub obramowanie, by osoby z zaburzeniami percepcji kolorów mogły zidentyfikować link (SC 1.4.1 Use of Color)

Zmiana rozmiaru tekstu (Kryterium sukcesu 1.4.4)

Zmiana rozmiaru tekstu (SC 1.4.4)

Intencja i wymagania
  • Tekst (oprócz obrazów tekstu) musi być powiększalny do co najmniej 200 % bez utraty funkcjonalności ani treści, zapewniając komfort osobom ze słabszym wzrokiem 

Pozwól użytkownikowi zoomować
  • Nie wyłączaj możliwości powiększania w przeglądarce (np. user-scalable=no). Zadbaj, by <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes"> wspierało zoom  

Elastyczne jednostki
  • Używaj relatywnych jednostek (em, rem, %) zamiast pikseli, co pozwala zachować proporcje i czytelność przy zmianie font-size w ustawieniach przeglądarki  

Testowanie
  • Sprawdź, czy interfejs nie „rozsypuje się” przy 200 % zoomie: wszystkie elementy (formy, nawigacja) powinny pozostać czytelne i funkcjonalne.

Prosty język i zrozumiałość treści

Plain language (Kryterium sukcesu 3.1.5)

Definicja i cele

Success Criterion 3.1.5 wymaga, by treść nie przekraczała poziomu czytania niższego średniego wykształcenia, a w przypadku tekstów trudniejszych – udostępniono prostsze podsumowania czy wersje pomocnicze W3C.

Korzyści

Pisanie w prostym języku ułatwia korzystanie z witryny osobom z dysleksją, zaburzeniami uwagi, niską biegłością językową oraz użytkownikom, dla których język strony nie jest ojczysty

Wytyczne WCAG i techniki

Techniki podstawowe
  • G153: Making text easier to read – stosuj krótkie zdania i proste słownictwo W3C.

  • G79: Providing spoken version – rozważ udostępnienie wersji audio dla trudniejszych fragmentów W3C.

  • G86: Providing a text summary – zamieszczaj streszczenia w uproszczonym języku na stronach zawierających skomplikowane informacje W3C.

Techniki dodatkowe

  • Definiowanie terminów w prostym słownictwie oraz stosowanie glosariusza dla terminów specjalistycznych W3C.

  • Unikanie idiomów, metafor i sarkazmu, które mogą być niezrozumiałe dla wielu osób W3C.


Zasady pisania prostym językiem

Krótkie zdania i aktywny tryb

Zaleca się, by zdania nie przekraczały 20 słów oraz by pisane były w czasie czynnym (np. „Wprowadź kod pocztowy”, nie „Kod pocztowy powinien być wprowadzony”) WCAG.

Unikanie żargonu i złożonych klauzul

Zamiast terminów typu „przeprowadzenie weryfikacji” używaj „sprawdź”, a złożone klauzule rozbij na mniejsze zdania Smashing Magazine.

Lista punktowana
  • Listy ułatwiają skanowanie treści wzrokiem i pozwalają na szybkie odnalezienie kluczowych informacji WCAG.

  • Każdy element listy zaczynaj od czasownika lub rzeczownika („Wybierz”, „Sprawdź”, „Podaj”)

Czytelność i UX

Jasne instrukcje

Umieszczaj wskazówki tuż pod polem formularza, np.:

„Hasło musi mieć min. 8 znaków, w tym przynajmniej jedną cyfrę i dużą literę”  

Unikanie podwójnych negacji

Zwroty typu „Nie nieakceptuje” zastąp pozytywnymi: „Musisz zaakceptować” .

Struktura i formatowanie

  • Nagłówki i akapity jasno oddzielone, by użytkownik mógł szybko przejść do interesującej sekcji.
  • Używaj listek wypunktowanych zamiast długich bloków tekstu

Testowanie i monitorowanie

Testy automatyczne

Stosuj narzędzia do oceny czytelności (Flesch–Kincaid, Juicy Studio) oraz skanery dostępności, by wykryć zbyt długie zdania lub trudne słowa  

Testy manualne
  • Użytkownicy rzeczywiści – przeprowadzaj badania z udziałem osób z różnymi potrzebami poznawczymi, by ocenić zrozumiałość  

  • Feedback – zbieraj opinie i iteruj — plain language to proces cykliczny, nie jednorazowa poprawka

Kontekst prawny i terminy

Ustawa z 26 kwietnia 2024 r.

Ustawa o zapewnianiu spełniania wymagań dostępności produktów i usług przez podmioty gospodarcze weszła w życie 26 kwietnia 2024 r. Dziennik Ustaw.

Terminy obowiązywania

  • 26 czerwca 2025 – wymóg dostępności cyfrowej dla nowych i zaktualizowanych serwisów e-commerce Biznes.gov.pl.
  • 28 czerwca 2030 – koniec okresu przejściowego dla istniejących usług, jeżeli były świadczone „w formie niezmienionej” przed 2025  

Wyjątki dla mikroprzedsiębiorców

Firmy zatrudniające ≤ 10 osób i osiągające roczny obrót ≤ 2 mln EUR mogą być zwolnione z niektórych obowiązków dostępności.

Prawa użytkownika i kary

  • Użytkownik może zażądać zapewnienia dostępności; firma ma 7 dni na odpowiedź (max. przedłużenie do 2 miesięcy).
  • Kary: do 10 % rocznego obrotu; do 5 000 PLN za brak deklaracji dostępności Biznes.gov.pl.

Rekomendowany proces wdrożenia

  1. Audyt wstępny

    • Automatyczne skanery (Axe, WAVE) + ręczna weryfikacja klawiaturą i czytnikiem.
  2. Implementacja poprawek

    • ARIA live regions, role="alert", aria-invalid, label for input, alt text.
  3. Testy z użytkownikami

    • Sesje z osobami korzystającymi z czytników i nawigacji klawiaturą.
  4. Szkolenia zespołu

    • Dział marketingu, deweloperzy, webmasterzy – „accessibility by design”.
  5. Utrzymanie

    • Audyt co kwartał; monitorowanie zmian w WCAG i prawie.

Źródła

  1. Ustawa z dnia 26 kwietnia 2024 r. o zapewnianiu spełniania wymagań dostępności… (Dz.U. poz. 731) Dziennik Ustaw
  2. Biznes.gov.pl – zwolnienie mikroprzedsiębiorców i terminy dostosowania Biznes.gov.pl
  3. Netplace – Europejski Akt o Dostępności, wyjątki i okres przejściowy do 2030 r. Netplace
  4. Shoper.pl – wdrożenie dostępności cyfrowej w praktyce e-commerce Shoper
  5. MDL Kancelaria – interpretacja okresu przejściowego do 2030 r. JKLAW
  6. MDN Web Docs – ARIA live regions dla dynamicznych zmian MDN Web Docs
  7. Harvard Accessibility – powiadamianie o dynamicznych zmianach accessibility.huit.harvard.edu
  8. W3C Understanding SC 3.3.1 Error Identification W3C
  9. Smashing Magazine – przewodnik po dostępnej walidacji formularzy Smashing Magazine
  10. TetraLogical – dostępne komunikaty błędów z aria-invalid i role="alert" TetraLogical
  11. W3C Understanding SC 3.3.2 Labels or Instructions W3C
  12. W3C Headings tutorial – logiczna struktura nagłówków W3C
  13. Yale Usability – znaczenie nagłówków dla czytników ekranowych usability.yale.edu
  14. Wikipedia WCAG 2.1 – lista success criteria (m.in. 2.4.4 Link Purpose) Wikipedia
  15. WCAG Plain Language blog – znaczenie prostego języka (SC 3.1.5) WCAG
Wybierz plik
 

Zapisz się na nasz newsletter


Blog Artykuły
Ustawienia dostępności
Wysokość linii
Odległość między literami
Wyłącz animacje
Przewodnik czytania
Czytnik
Wyłącz obrazki
Skup się na zawartości
Większy kursor
Skróty klawiszowe