Skip to content

Commit 278abe6

Browse files
committed
WIP
1 parent 9e9a933 commit 278abe6

File tree

1 file changed

+91
-67
lines changed

1 file changed

+91
-67
lines changed

docs/richtlijnen/formulieren/testing/README.mdx

Lines changed: 91 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ Bekijk elk formulierveld, en controleer voor elk veld:
4242
- **Heeft de tekst haakjes in woorden?**\
4343
Bijvoorbeeld: "voorna(a)m(en)"? Pas de tekst aan.
4444
- **Kun je voor dit veld autocomplete instellen?**
45-
- Belangrijke uitleg staat in een description of in de labeltekst, niet alleen in een placeholder of tooltip.
45+
- **Belangrijke uitleg is altijd zichtbaar.** \
46+
Essentiële informataat staat in een description of in de labeltekst, niet alleen in een placeholder of tooltip.
4647
- Labelteksten zijn duidelijk en beschrijvend.
4748

4849
{/* - Descriptions bevatten alleen tekst, staan tussen het label en het invoerveld, zijn kort en to-the-point, en het aanklikbare gedeelte is groot genoeg. Bij meerdere descriptions zijn ze allemaal correct gekoppeld aan het invoerveld. */}
@@ -53,27 +54,20 @@ Verder:
5354
- Boven het formulier staat uitleg over hoe verplichte of niet-verplichte velden zijn aangemerkt. Verplichte of niet-verplichte velden zijn consequent aangemerkt in het hele formulier.
5455
- Schrijf duidelijk foutmeldingen.
5556

56-
Lees meer in de richtlijnen:
57+
### Verder lezen
5758

58-
- [fouten beschrijven](/richtlijnen/formulieren/foutmeldingen/beschrijven)
59+
- [autocomplete](/richtlijnen/formulieren/voorkom-fouten/autocomplete).
60+
- [benoem vervolgstappen](/richtlijnen/formulieren/bevestigingspagina/vervolgstappen).
61+
- [description bij fieldsets](/richtlijnen/formulieren/descriptions/plaatsing-bij-fieldset)
62+
- [dubbel werk voorkomen](/richtlijnen/formulieren/vragen/voorkom-dubbel-werk)
5963
- [duidelijke foutmeldingen](/richtlijnen/formulieren/foutmeldingen/duidelijk).
60-
- [label bevat alleen tekst](/richtlijnen/formulieren/labels/alleen-tekst)
6164
- [duidelijke tekst label](/richtlijnen/formulieren/labels/duidelijke-tekst).
65+
- [fouten beschrijven](/richtlijnen/formulieren/foutmeldingen/beschrijven)
66+
- [inhoud description](/richtlijnen/formulieren/descriptions/inhoud)
67+
- [label bevat alleen tekst](/richtlijnen/formulieren/labels/alleen-tekst)
68+
- [leg uit waarom](/richtlijnen/formulieren/vragen/leg-uit-waarom)
6269
- [legends in een fieldset](/richtlijnen/formulieren/fieldsets/legend)
63-
- [description bij fieldsets](/richtlijnen/formulieren/descriptions/plaatsing-bij-fieldset)
64-
65-
Bekijk de bevestigingspagina:
66-
67-
- ...
68-
69-
Lees de richtlijnen voor meer informatie:
70-
7170
- [vragen wat nodig is](/richtlijnen/formulieren/vragen).
72-
- [leg uit waarom](/richtlijnen/formulieren/vragen/leg-uit-waarom)
73-
- [dubbel werk voorkomen](/richtlijnen/formulieren/vragen/voorkom-dubbel-werk)
74-
- [inhoud description](/richtlijnen/formulieren/descriptions/inhoud)
75-
- [autocomplete](/richtlijnen/formulieren/voorkom-fouten/autocomplete).
76-
- [benoem vervolgstappen](/richtlijnen/formulieren/bevestigingspagina/vervolgstappen).
7771

7872
## Checklist voor het design
7973

@@ -84,25 +78,30 @@ Ontwerp van de componenten:
8478
- **Check het kleurcontrast van subtielere tekst.**\
8579
De tekst van de beschrijving en van de placeholder moet voldoende contrast hebben met de achtergrondkleur.
8680
- **Zijn de componenten groot genoeg?**\
87-
44x44px is gebruijksvriendelijk.
88-
- Ontwerp van het formulier:
81+
44x44px is gebruiksvriendelijk.
82+
83+
Ontwerp van het formulier:
8984

90-
- De voortgang wordt getoond boven het formulier in tekst, bijvoorbeeld "Stap 2 van 4".
9185
- **Staan er buttons aan het eind van de regel, zoals "Volgende"?**\
9286
Plaats de buttons aan het begin van de regel, waar iedereen ze kan vinden.
87+
- De voortgang wordt getoond boven het formulier in tekst, bijvoorbeeld "Stap 2 van 4".
9388
- De navigatie (volgende, vorige, annuleren) is consistent in elke stap.
9489
- Het is duidelijk in welke stap het formulier daadwerkelijk wordt verzonden.
95-
- Foutmeldingen staan bij het betreffende veld, niet alleen bovenaan de pagina.
9690
- Elk invoerveld heeft een zichtbaar label dat boven het invoerveld staat. \
9791
Alleen bij de zoekfunctie is de label eventueel vervangen door alleen een placeholder.
98-
- De markering gebruikt 'verplicht' of 'niet verplicht' in tekst — niet alleen een asterisk of kleur.
92+
- Er staat 'verplicht' of 'niet verplicht' in tekst, niet alleen met een sterretje (asterisk\*) of kleur.
93+
94+
Validatie:
95+
96+
- Foutmeldingen staan bij het betreffende veld, niet alleen bovenaan de pagina.
9997
- Elke foutmelding staat in tekst bij het betreffende veld, niet alleen als kleur of icoon.
10098

99+
{/* TODO: Streep naast formulierveld */}
100+
101101
Lees meer in de richtlijnen:
102102

103103
- [plaatsing label](/richtlijnen/formulieren/labels/plaatsing)
104104
- [label altijd zichtbaar](/richtlijnen/formulieren/labels/altijd-zichtbaar)
105-
- [zichtbare naam label](/richtlijnen/formulieren/labels/zichtbare-naam) ⁉️
106105
- [invoerveld goed zichtbaar](/richtlijnen/formulieren/visueel-ontwerp/invoerveld-goed-zichtbaar).
107106
- [tekst goed zichtbaar](/richtlijnen/formulieren/visueel-ontwerp/tekst-goed-zichtbaar)
108107
- [placeholder goed zichtbaar](/richtlijnen/formulieren/visueel-ontwerp/placeholder-goed-zichtbaar)
@@ -118,28 +117,39 @@ Lees meer in de richtlijnen:
118117

119118
Controleer of elk veld duidelijk gelabeld is en of de uitleg goed is geplaatst:
120119

121-
- Er worden geen afbeeldingen gebruikt voor buttons.
122-
- De zichtbare labeltekst komt overeen met de toegankelijke naam in de code. Klik op het label: het bijbehorende invoerveld krijgt focus — zo werkt de `for`-en-`id`-koppeling.
123-
- De beschrijving en foutmelding van invoervelden zijn gekoppeld met `aria-describedby`.
120+
{/* - Er worden geen afbeeldingen gebruikt voor buttons. */}
121+
122+
- Gebruik een `<label for="input-id">` voor het formulierveld, en zorg dat alles een gekoppeld label heeft.
123+
- Andere code voor een label, zoals `aria-label=""` of `title=""` moeten in elk geval de zichtbare labeltekst bevatten, anders werkt het niet met spraakbesturing.
124+
- Extra teksten bij een formulierveld zijn gekoppeld met `aria-describedby` op het formulier-element, zoals `<input>` of `<select>`:
125+
- Beschrijving
126+
- Foutmeldingen
127+
- Feedback zoals: "42 van de 100 tekens" of "Je wachtwoord voldoet aan de eisen"
128+
- Gebruik een `<fieldset>` en `<legend>` voor Checkbox Group en Radio Group.
124129
- De beschrijving en foutmelding van Checkbox Group en Radio Group zijn gekoppeld aan de `<fieldset>` met `aria-describedby`
125-
- De description van een `<fieldset>` staat tussen de `<legend>` en het eerste item in de groep.
130+
- De beschrijving van een `<fieldset>` staat tussen de `<legend>` en de eerste Radio of Checkbox Option
126131

127132
Verder:
128133

129134
- Verplichte velden hebben `aria-required` of `required` in de code.
130-
- **Heb je code die voorkomt dat je kunt plakken?\n**
131-
Verwijder die code.
135+
- Invalide velden hebben `aria-invalid="true"` in de code.
136+
- **Heb je code die voorkomt dat je kunt plakken?**\
137+
Verwijder die code het `paste` event voorkomt.
132138
- De naam van de stap en het formulier staat in de `<title>` van de pagina, zodat deze zichtbaar is in de browsertab en browsergeschiedenis.
133-
- Er wordt geen positieve `tabindex` gebruikt die de volgorde verstoort.
139+
- Er wordt geen positieve `tabindex` gebruikt die de focus-volgorde verstoort.
134140
- Labels bevatten geen afbeeldingen of interactieve elementen.
135141
- Buttons hebben een duidelijke en beschrijvende tekst en wanneer er een toegankelijke naam is gebruikt code, bijvoorbeeld met `aria-label` komt deze overeen met de zichtbare tekst.
142+
- Voorkom met `<bdi translate="no">` dat wat de gebruiker zelf heeft ingevoerd, wordt vertaald. Dit is met name op de controle-pagina en de bevestigingspagina.
136143

137144
Validatie:
138145

139-
- Foutmeldingen verschijnen niet al tijdens het typen — pas na het verlaten van het veld of na verzenden.
140-
- HTML-formuliervalidatie van de browser is uitgeschakeld (`novalidate`).
146+
- Foutmeldingen verschijnen niet al tijdens het typen — pas na het verlaten van het veld of na verzenden. \
147+
Gebruik het `blur` en `submit` event om validatie uit te voeren, niet `input` en `change`.
148+
- HTML-formuliervalidatie van de browser is uitgeschakeld met `<form novalidate>`.
141149

142-
Lees meer in de richtlijnen:
150+
{/* TODO: :user-invalid ipv :invalid */}
151+
152+
### Verder lezen
143153

144154
- [description bij fieldsets](/richtlijnen/formulieren/descriptions/plaatsing-bij-fieldset)
145155
- [descriptions](/richtlijnen/formulieren/descriptions)
@@ -163,17 +173,19 @@ Lees meer in de richtlijnen:
163173

164174
- **Staan de formuliervelden in logische volgorde?**
165175
- **Zijn er meerdere contactmogelijkheden beschikbaar om hulp te krijgen?**
166-
Zorg voor meerdere manieren zodat het voor iedereen mogelijk is contact op te nemen. Bijorobeeld: e-mail, chat en telefoon.
176+
Zorg voor meerdere manieren zodat het voor iedereen mogelijk is contact op te nemen. Bijvoorbeeld: e-mail, chat en telefoon.
167177
- **Wordt hulp op meerdere plekken aangeboden?**
168-
Goede plekken zijn: in de introductietekst, bovenaan een formulier, in de [Page Footer](/page-footer/) op de controlepagina en op de bevestigingspagina.
169-
- De voortgang wordt getoond boven het formulier in tekst, bijvoorbeeld "Stap 2 van 4". De naam van de stap en het formulier staat in de `<title>` van de pagina, zodat deze zichtbaar is in de browsertab en browsergeschiedenis. De voortgang is hoorbaar voor screenreadergebruikers: "Stap 2 van 4" of vergelijkbaar.
178+
Goede plekken zijn: in de introductietekst, bovenaan een formulier, in de [Page Footer](/page-footer/), op de controlepagina en op de bevestigingspagina.
179+
- De voortgang wordt getoond boven het formulier in tekst, bijvoorbeeld "Stap 2 van 4".
170180
- Het formulier wordt niet automatisch verzonden na het wijzigen van een veld.
171-
- Als de gebruiker is ingelogd, dan worden bekende gegevens vooraf ingevuld waar dat wettelijk is toegestaan.
172-
- Knippen en plakken is toegestaan. \
173-
Zodat gebruikers niet gedwongen worden een simpel goed te onthouden wachtwoord te kiezen of hun contactgevens uit een adres boek kunnen overnemen.
181+
- Als de gebruiker is ingelogd, dan worden bekende gegevens vooraf ingevuld.
182+
- Knippen en plakken is overal toegestaan.
183+
- Controleer of de browser autocomplete aanbiedt om velden vooraf in te vullen, waar je dat verwacht.
174184

175185
Voor het verzenden:
176186

187+
{/* TODO: Merge deze 2 */}
188+
177189
- De laatste stap toont een samenvatting van alle ingevoerde gegevens.
178190
- Het formulier biedt de mogelijkheid om een inzending te controleren, te wijzigen of ongedaan te maken.
179191

@@ -186,12 +198,11 @@ Vul het formulier bewust fout in en controleer de foutafhandeling:
186198

187199
- Ingevoerde gegevens worden niet te snel afgekeurd. \
188200
Er worden geen invoerpatronen gebruikt zodat bijvoorbeeld een minder vaak gebruikt e-mail adres (`user+inbox@voorbeeld.nl`) of een postcode met èn zonder spatieook geldig is.
189-
- Geldige waarden voor een invoerveld zijn vooraf aangegeven, zodat gebruikers weten wat er wordt verwacht.
201+
- {/* TODO: Minder abstract */} Der regels voor een invoerveld zijn vooraf duidelijk, bijvoorbeeld: welke tekens, of hoe lang de tekst mag zijn.
190202
- Invoervelden hebben geen onnodig minimum of maximum aantal tekens.
191-
- Na verzenden met fouten verschijnt een samenvatting van alle fouten boven het formulier. \
192-
Elke foutmelding in de samenvatting is een link naar het betreffende veld. Het kopje van de foutensamenvatting krijgt toetsenbordfocus na verzenden.
203+
- Na verzenden met fouten verschijnt een samenvatting van alle fouten boven het formulier.
193204

194-
Lees meer:
205+
### Verder lezen
195206

196207
- [controleren en aanpassen](/richtlijnen/formulieren/voorkom-fouten/controleren-en-aanpassen)
197208
- [samenvatting fouten](/richtlijnen/formulieren/foutmeldingen/samenvatting).
@@ -205,18 +216,18 @@ Lees meer:
205216

206217
## Checklist voor vertaalsoftware
207218

208-
Gebruik vertaalsoftware, zoals Google Translate, en vul je formulier in. Test zowel de happy flow als de unhappy flow.
219+
Vul je formulier in terwijl je vertaalsoftware gebruikt, zoals Google Translate. Test zowel de happy flow als de unhappy flow.
209220

210221
- Je kunt het formulier invullen, alle informatie van het formulier wordt vertaald.
211-
- Als je Google Translate gebruikt op de controlepagina, wordt de ingevoerde informatie niet meevertaald.
222+
- Informatie die je zelf hebt ingevoerd wordt niet meevertaald.
212223

213-
### Na verzenden verschijnt een duidelijke bevestiging
224+
{/* ### Na verzenden verschijnt een duidelijke bevestiging */}
214225

215-
Na verzenden verschijnt een duidelijke bevestiging dat het formulier succesvol is verzonden. De bevestiging vermeldt welke informatie is verstuurd, of verwijst naar een plek waar dat te vinden is. De bevestiging vermeldt wat de vervolgstappen zijn.
226+
{/* Na verzenden verschijnt een duidelijke bevestiging dat het formulier succesvol is verzonden. De bevestiging vermeldt welke informatie is verstuurd, of verwijst naar een plek waar dat te vinden is. De bevestiging vermeldt wat de vervolgstappen zijn. */}
216227

217-
Lees meer over [toegankelijke succesmelding](/richtlijnen/formulieren/bevestigingspagina/toegankelijke-succesmelding), [bevestigingspagina](/richtlijnen/formulieren/bevestigingspagina) en [benoem vervolgstappen](/richtlijnen/formulieren/bevestigingspagina/vervolgstappen).
228+
{/* Lees meer over [toegankelijke succesmelding](/richtlijnen/formulieren/bevestigingspagina/toegankelijke-succesmelding), [bevestigingspagina](/richtlijnen/formulieren/bevestigingspagina) en [benoem vervolgstappen](/richtlijnen/formulieren/bevestigingspagina/vervolgstappen). */}
218229

219-
Lees meer in de richtlijnen:
230+
### Verder lezen
220231

221232
- [logische volgorde](/richtlijnen/formulieren/visueel-ontwerp/logische-volgorde).
222233
- [contactmogelijkheden](/richtlijnen/formulieren/vragen/manieren-voor-contact)
@@ -227,11 +238,18 @@ Lees meer in de richtlijnen:
227238
Doorloop het formulier volledig met alleen het toetsenbord (zonder muis). De volgende dingen moeten goed werken:
228239

229240
- Elk invoerveld, elke button en elke link is bereikbaar met de Tab-toets.
230-
- De tabvolgorde is logisch: van boven naar beneden, van links naar rechts.
241+
- De tabvolgorde is logisch. Meestal is dat: van boven naar beneden, van links naar rechts.
231242
- De focusindicator is goed zichtbaar waardoor het altijd duidelijk is waar focus is tijdens het navigeren met de Tab-toets.
232243
- Radiobuttons zijn bedienbaar met de pijltjestoetsen.
233244

234-
Lees meer in de richtlijnen:
245+
{/* TODO: Extra componenten die verwachtingen hebben, qua Up/Down/Left/Right/Home/End/PgUp/PgDn */}
246+
247+
Validatie:
248+
249+
- Elke foutmelding in de samenvatting is een link naar het betreffende veld.
250+
- Het kopje van de foutensamenvatting krijgt toetsenbordfocus na verzenden.
251+
252+
### Verder lezen
235253

236254
- [focus goed zichtbaar](/richtlijnen/formulieren/visueel-ontwerp/focus-goed-zichtbaar)
237255
- [toetsenbordnavigatie](/richtlijnen/formulieren/toetsenbord/toetsenbordnavigatie)
@@ -240,41 +258,47 @@ Lees meer in de richtlijnen:
240258

241259
Test het formulier met een screenreader. Gebruik bij voorkeur een combinatie van screenreader en browser die veel voorkomt bij je doelgroep, zoals NVDA met Firefox of VoiceOver met Safari.
242260

243-
- Verplichte velden worden als verplicht aangeduid bij het voorlezen. \
244-
Vul alleen de velden in die aangekondigd worden als "verplicht", en controleer dat je geen foutmelding krijgt over ontbrekende informatie.
245-
- Statusberichten (zoals "formulier verzonden") worden voorgelezen zonder dat de gebruiker er naartoe hoeft te navigeren.
246-
- De voortgang is hoorbaar voor screenreadergebruikers: "Stap 2 van 4" of vergelijkbaar.
247261
- Het label van elk veld wordt voorgelezen als het veld focus krijgt.
248-
- De description van een veld wordt voorgelezen als het veld focus krijgt.
262+
- De beschrijving van een veld wordt voorgelezen als het veld focus krijgt.
263+
- Verplichte velden worden als verplicht aangeduid bij het voorlezen.
264+
- Foutmeldingen en feedback onderbreken de gebruiker niet bij het invullen.
265+
- Feedback over invoer (bijvoorbeeld: of "je wachtwoord voldoet aan de eisen") worden automatisch voorgelezen, zonder dat de gebruiker er naartoe hoeft te navigeren.
266+
267+
Controleer het volgende als naar een volgende stap gaat of het formulier verzend:
268+
269+
- De voortgang is hoorbaar voor screenreadergebruikers: "Stap 2 van 4" of vergelijkbaar.
249270
- Na verzenden verschijnt een duidelijke bevestiging dat het formulier succesvol is verzonden.
271+
- Positieve statusberichten na het versturen (zoals "formulier verzonden") worden automatisch voorgelezen.
250272

251273
{/* TODO Statusberichten zijn ook zichtbaar voor ingezoomde gebruikers — ze verdwijnen niet buiten het scherm. Statusberichten verdwijnen niet automatisch — of als ze dat doen, wordt het einde van de status ook via een screenreader gecommuniceerd. */}
252274

275+
Test de validatie:
276+
277+
- Vul alleen de velden in die aangekondigd worden als "verplicht".\
278+
Je zou nu geen foutmelding moeten krijgen over ontbrekende velden.
279+
253280
Test ook de unhappy flow:
254281

255-
- Foutmeldingen worden voorgelezen — controleer ook de foutensamenvatting.
282+
- Foutmeldingen worden voorgelezen.
283+
- Foutmeldingen onderbreken de gebruiker niet bij het invullen.
284+
- Wanneer je meerdere fouten hebt bij het verzenden, dan krijg je 1 bericht met de samenvatting van alle fouten.
285+
- De foutmelding van een veld wordt voorgelezen als het veld focus krijgt.
256286
- Foutmeldingen leggen uit wat er fout is en hoe het opgelost kan worden — niet alleen "Invoer klopt niet!".
257287

258288
{/* Foutmeldingen eindigen met een punt zodat een screenreader een duidelijke pauze maakt. */}
259289

260-
Lees meer in de richtlijnen:
290+
### Verder lezen
261291

262292
- [informeer screenreaders](/richtlijnen/formulieren/status/screenreaders).
263293
- [toegankelijke naam label](/richtlijnen/formulieren/labels/toegankelijke-naam)
264294
- [koppel description](/richtlijnen/formulieren/descriptions/koppelen)
265-
- [informeer ingezoomde gebruikers](/richtlijnen/formulieren/status/zoom) en [geef gebruikers voldoende tijd](/richtlijnen/formulieren/status/enough-time) [optioneel of verplicht](/richtlijnen/formulieren/voorkom-fouten/verplichte-velden).
295+
- [informeer ingezoomde gebruikers](/richtlijnen/formulieren/status/zoom)
296+
- [geef gebruikers voldoende tijd](/richtlijnen/formulieren/status/enough-time)
297+
- [optioneel of verplicht](/richtlijnen/formulieren/voorkom-fouten/verplichte-velden).
266298
- [screenreaderfeedback](/richtlijnen/formulieren/foutmeldingen/screenreaderfeedback).
267299
- [toegankelijke succesmelding](/richtlijnen/formulieren/bevestigingspagina/toegankelijke-succesmelding)
268300
- [voortgang stappen tonen](/richtlijnen/formulieren/meerdere-stappen/voortgang-tonen).
269301

270-
## Checklist voor zelf het formulier invullen
271-
272-
- Controleer of de browser autocomplete aanbiedt om velden vooraf in te vullen.
273-
274-
Test ook de foutmeldingen tijdens de "unhappy flow":
275-
276-
Lees meer in de richtlijnen:
277-
278302
- [screenreaderfeedback](/richtlijnen/formulieren/foutmeldingen/screenreaderfeedback).
279303

280304
<FooterInfo />

0 commit comments

Comments
 (0)