1.3.1; 4.1.2 Prepínače v otázkach s viacerými voľbami netvoria skupinu
Porušenie sa týka celého webového sídla.
Popis problému:
Komponenty RadioGroup a Radio (src/components/radio/) dávajú každému prepínaču iný atribút name — rovnaký ako jeho id, napríklad hasChildren-input-yes, hasChildren-input-income-used a hasChildren-input-no. Prehliadač ich preto nepovažuje za jednu skupinu: každý prepínač je samostatná zastávka tabulátora, šípky medzi nimi neprechádzajú a každý tvorí skupinu s jedinou voľbou. Prepínače sú navyše vo vnorenom elemente <fieldset aria-describedby="contact-hint"> bez legendy, pričom identifikátor contact-hint na stránke neexistuje.
Týka sa to otázok „Chcete si uplatniť daňový bonus na dieťa…“ (krok Deti, aj voľby „Za celý kalendárny rok“ / „V niektorých mesiacoch“ pri každom dieťati), „Platili ste v roku 2025 príspevky na doplnkové dôchodkové poistenie (III. pilier)?“, „Chcete poukázať 2% dane rodičom…“, „Chcete poukázať 2% alebo 3% zaplatenej dane niektorej neziskovej organizácii?“ a „Ste dlžníkom zo zmluvy o úvere na bývanie spolu s inými dlžníkmi?“.
Overené čítačom obrazovky NVDA 2026.2 vo Firefoxe 158 a v Chrome 154 (3. 10. 2026): v kroku Deti NVDA oznámi „Áno, radio button, not checked, 1 of 1“, šípka nadol zameranie nepresunie („Áno, radio button, focused, checked, 1 of 1“) a tabulátor prejde na ďalšiu voľbu, ktorá je opäť „1 of 1“.
Dopad:
Používateľ čítača obrazovky nedostane informáciu, koľko volieb otázka má a že tvoria jednu skupinu — „1 z 1“ naznačuje, že voľba je jediná. Používatelia klávesnice a čítačov obrazovky očakávajú, že sa medzi prepínačmi pohybujú šípkami a že skupina je jedna zastávka tabulátora; tu šípky nefungujú a každá voľba je ďalšia zastávka. Vzťah volieb, ktorý je vidiacim používateľom zrejmý z rozloženia, nie je možné programovo odvodiť. Postihnutí sú nevidiaci a ťažko slabozrakí používatelia čítačov obrazovky, používatelia, ktorí ovládajú stránku iba klávesnicou, a používatelia hlasového ovládania.
Závažnosť: stredná — voľby sa dajú vybrať, ale skupina a počet volieb nie sú programovo určené.
Efektívne riešenie:
Pre splnenie kritéria úspešnosti je potrebné, aby všetky prepínače jednej otázky mali rovnaký atribút name (napríklad name="hasChildren") a odlišné id a value. Vnorený <fieldset> v komponente RadioGroup je potrebné odstrániť (otázku už zoskupuje vonkajší <fieldset> s legendou) alebo mu dať legendu; atribút aria-describedby="contact-hint" odkazuje na neexistujúci element a je potrebné ho odstrániť.
<input className="govuk-radios__input" type="radio" id={id} name={groupName} value={value} … />