A11y Agency Gratis quickscan

Auditrapport — Molen & Boon

Publicatieversie bij de demonstratie-case. Molen & Boon is een fictieve webshop; het traject in dit rapport is echt uitgevoerd, met dezelfde stappen en controles als bij een betaalde klus. Terug naar de showcase.

Kerngegevens

Kerngegevens van deze audit
WebshopMolen & Boon — demonstratie-webshop (koffiebonen, molens en barista-apparatuur)
PeriodeAudit 22 t/m 24 juli 2026 · fixes en hertest 25 juli 2026 — doorlooptijd vier dagen
Geteste pagina'sHome, productoverzicht, productdetail, winkelwagen, afrekenen en klantenservice — inclusief het volledige bestelproces
TestmethodeHandmatige test (toetsenbord + NVDA-schermlezer, zoom 200%/400%, 320 px-reflow), aangevuld met een automatische scan (axe-core), een visuele WAVE-controle en een onafhankelijke kruiscontrole (vier ogen)
NormWCAG 2.1, niveau AA (EN 301 549, de technische norm bij de Europese toegankelijkheidswet)
Uitgevoerd doorA11y Agency

Samenvatting

Bij de start kon iemand die geen muis gebruikt in deze webshop helemaal niets bestellen: de koopknoppen, de landkeuze en de bestelknop reageerden alleen op muisklikken. De afrekenvelden hadden geen namen, fouten werden nergens gemeld, er was geen zichtbare focus bij het tabben, en op tientallen plekken was het contrast te laag. In totaal zijn 48 punten vastgelegd.

Alle 48 punten zijn opgelost met aanpassingen in de code van de webshop zelf — zonder overlay-widgets — en daarna stuk voor stuk handmatig nagetest. Na de verbeterronde vond de automatische scan nul resterende problemen en is het volledige bestelproces met alleen het toetsenbord én op gehoor met de NVDA-schermlezer doorlopen en goedgekeurd.

Score-overzicht

Bevindingen per prioriteit
PrioriteitAantalOpgelost & nagetestWat betekent dit?
Hoog88Blokkeert klanten écht: iemand kan hierdoor niet bestellen of belangrijke informatie niet bereiken.
Middel2424Maakt de webshop onnodig moeilijk of verwarrend, maar er is (met moeite) een omweg.
Laag1616Kleinere verbeterpunten: hinderlijk, maar niemand loopt erdoor vast.
Totaal4848Geen openstaande punten en geen gedocumenteerde uitzonderingen.

Hoe dit traject verliep

De werkwijze die elke klus doorloopt, hier stap voor stap:

  1. Gratis quickscan

    Een korte steekproef over alle zes pagina's: kort testen zonder muis, met voorleessoftware en ingezoomd, plus een technische scan. Genoeg om te zien waar een webshop staat — nog geen volledige audit.

  2. Onepager met de belangrijkste bevindingen

    Eén pagina in gewone taal: wat er misgaat, wie daardoor niet kan bestellen en wat de wet erover zegt. Zonder jargon, zodat een webbureau hem onder eigen naam kan doorsturen.

  3. Volledige audit

    Automatische scan (axe-core), visuele controle met de WAVE-extensie, een complete toetsenbordronde door het hele bestelproces, dezelfde route nog eens met de NVDA-schermlezer, en tot slot zoom tot 400% en de test op een scherm van 320 pixels breed. Elk gereedschap apart, nooit twee tegelijk — anders meet je het gereedschap mee.

  4. Kruiscontrole met vier ogen

    Een onafhankelijke tweede controle bouwt eerst een eigen lijst op en legt die daarna pas naast de eerste. Elke vondst uit die controle is een vóórstel tot het beoordeeld is — er wordt in deze stap niets aangepast.

  5. Fixen in een testomgeving

    Nooit rechtstreeks op een live shop. Eerst een backup, dan een werkkopie, en pas daarna aanpassingen in de code zelf — geen overlay-widgets, geen opgeplakte scripts.

  6. Handmatige verificatie per fix

    Een fix heet pas opgelost als hij met de hand is nagetest met toetsenbord en schermlezer. Tot dat moment staat hij op “wacht op verificatie” — ook in het rapport.

  7. Brede hertest

    Niet alleen de fixes zelf, maar de hele kerntaak opnieuw: product zoeken, winkelwagen, afrekenen — met muis, met alleen het toetsenbord én met de schermlezer, plus zoom en 320 pixels. Een fix die iets anders breekt is geen fix.

  8. Rapport en toegankelijkheidsverklaring

    Een leesbaar rapport met alle bevindingen, wat eraan gedaan is en hoe het is nagetest, plus een toegankelijkheidsverklaring voor op de site. Wordt een oplossing afgewezen, dan blijft die als gedocumenteerde uitzondering staan — we noemen niets “compliant” wat dat niet is.

De cijfers achter de demonstratie

Omdat deze webshop als demonstratie is gebouwd, lag van tevoren vast wélke fouten erin zaten. Die lijst ging verzegeld opzij en is pas ná afloop naast het resultaat gelegd — daardoor is precies te meten wat elk onderdeel van de werkwijze opleverde.

Resultaat gemeten tegen de verzegelde foutenlijst
Bewust ingebouwde fouten24
Daarvan gevonden en opgelost24
Daarvan gevonden door de automatische scan9
Daarvan die de automatische scan niet vond15
Extra gevonden bovenop de ingebouwde lijst15
Totaal aantal vastgelegde bevindingen48

De aantallen tellen niet op tot 48, en dat klopt: één ingebouwde fout levert vaak meerdere bevindingen op — te weinig contrast stond bijvoorbeeld op vier plekken en werd vier keer apart vastgelegd. De automatische scan leverde in totaal 16 bevindingen op, die samen 9 van de 24 ingebouwde fouten raakten.

De vijftien fouten die de scan niet vond, waren niet de kleinste. Daar zaten juist de zwaarste blokkades bij: de koopknoppen, de landkeuze en de bestelknop die niet met het toetsenbord te bedienen waren, de focus-indicator die sitebreed was uitgezet, de vage linkteksten en de foutafhandeling die alleen een rode rand liet zien. De problemen waardoor niemand zonder muis kon bestellen, kwamen dus niet uit de scanner — die kwamen uit het handwerk. De vier-ogen-controle voegde daar vijf vondsten aan toe die in de verzegelde lijst als “vindt een scanner niet” stonden, en de handmatige hertest ving een fout die tijdens het oplossen zélf was ontstaan.

Eén eerlijke kanttekening: van de 24 ingebouwde fouten zijn er 23 als aparte bevinding vastgelegd. De 24e (“een verplicht veld is alleen aan een kleur te herkennen”) is wél opgelost, maar liftte mee met een andere aanpassing in plaats van dat hij als eigen bevinding was benoemd. Dat is een verbeterpunt in onze checklist, en het staat zo ook in onze interne evaluatie.

Alle 48 bevindingen

Rechtstreeks uit het werkblad van de audit. De kolom “status” toont de eindstand na de hertest van 25 juli 2026.

Alle bevindingen met locatie, criterium, prioriteit en eindstatus
NrWaarWatGevonden viaWCAG-criteriumPrioriteitStatus
1/index.htmlTe weinig kleurcontrast — de link "Winkelwagen", in het menuautomatische scan + WAVE (stap a)1.4.3 Contrast (minimum) (AA)middelopgelost in hertest (scan)
2/index.htmlKoppenvolgorde klopt niet — de kop "Onze favorieten deze maand"automatische scan + WAVE (stap a)geen (best practice)laagopgelost in hertest (scan)
3/index.htmlPagina heeft geen taal ingesteld — de pagina als geheel — dit gaat over een instelling bovenin de code, niet over één zichtbaar elementautomatische scan + WAVE (stap a)3.1.1 Taal van de pagina (A)middelopgelost in hertest (scan)
4/index.htmlAfbeelding zonder alt-tekst — de afbeelding "hero", in de grote banner bovenaan — fix: decoratieve alt="" (bewuste keuze 25-07: het beeld voegt geen informatie toe naast de kop; bewust stil voor schermlezers)automatische scan + WAVE (stap a)1.1.1 Niet-tekstuele content (A)hoogopgelost in hertest (scan)
5/index.htmlAlt-tekst herhaalt de tekst ernaast — de afbeelding "Molen & Boon"automatische scan + WAVE (stap a)geen (best practice)laagopgelost in hertest (scan)
6/index.htmlGeen (of meer dan één) main-landmark — de pagina als geheel — dit gaat over een instelling bovenin de code, niet over één zichtbaar elementautomatische scangeen (best practice)laagopgelost in hertest (scan)
7/index.htmlLink alleen door kleur te herkennen — de link "Klik hier"automatische scan1.4.1 Gebruik van kleur (A)middelopgelost in hertest (scan)
8/index.htmlContent staat buiten de paginadelen (landmarks) — het onderdeel met de tekst "Gratis verzending vanaf € 40 — vandaag beste…"automatische scangeen (best practice)laagopgelost in hertest (scan)
9/producten.htmlGeen hoofdkop (h1) op de pagina — de pagina als geheel — dit gaat over een instelling bovenin de code, niet over één zichtbaar elementautomatische scan + WAVE (stap a)geen (best practice)laagopgelost in hertest (scan)
10/producten.htmlKeuzelijst zonder naam — de keuzelijst die begint met "Aanbevolen"automatische scan + WAVE (stap a)4.1.2 Naam, rol, waarde (A)hoogopgelost in hertest (scan)
11/product.htmlKoppenvolgorde klopt niet — de kop "Molen & Boon"automatische scan + WAVE (stap a)geen (best practice)laagopgelost in hertest (scan)
12/winkelwagen.htmlAlt-tekst herhaalt de tekst ernaast — de afbeelding "Molen & Boon"automatische scan + WAVE (stap a)geen (best practice)laagopgelost in hertest (scan)
13/winkelwagen.htmlLink alleen door kleur te herkennen — de link "Klik hier"automatische scan1.4.1 Gebruik van kleur (A)middelopgelost in hertest (scan)
14/checkout.htmlLink alleen door kleur te herkennen — de link "Klik hier"automatische scan1.4.1 Gebruik van kleur (A)middelopgelost in hertest (scan)
15/contact.htmlKoppenvolgorde klopt niet — de kop "Bel of mail ons"automatische scan + WAVE (stap a)geen (best practice)laagopgelost in hertest (scan)
16/contact.htmlLink alleen door kleur te herkennen — de link "Klik hier"automatische scan1.4.1 Gebruik van kleur (A)middelopgelost in hertest (scan)
17hele siteNergens een zichtbare focusrand: tijdens het tabben is niet te zien waar je bent — bevestigd op alle zes geteste pagina'squickscan (handmatig) + toetsenbordronde (stap b)2.4.7 Focus zichtbaar (AA)hooghandmatig geverifieerd
18home / producten / productEen product is met alleen het toetsenbord niet in de winkelwagen te leggen: de knop "In winkelwagen" is op géén enkele pagina met het toetsenbord te bereiken (ook niet op de homepage)quickscan (handmatig) + WAVE (stap a) + toetsenbordronde (stap b)2.1.1 Toetsenbord (A)hooghandmatig geverifieerd
19/checkout.htmlDe landkeuze is met het toetsenbord niet te bereikenquickscan (handmatig) + WAVE (stap a) + toetsenbordronde (stap b)2.1.1 Toetsenbord (A)hooghandmatig geverifieerd
20/checkout.htmlDe knop "Bestelling plaatsen" is met het toetsenbord niet te bedienenquickscan (handmatig) + WAVE (stap a) + toetsenbordronde (stap b)2.1.1 Toetsenbord (A)hooghandmatig geverifieerd
21/checkout.htmlGeen enkel invoerveld heeft een gekoppeld label met een naam; een schermlezer kan niet vertellen wat er ingevuld moet wordenquickscan (handmatig) + WAVE (stap a)3.3.2 Labels of instructies (A) + 4.1.2 Naam, rol, waarde (A)hooghandmatig geverifieerd
22/checkout.htmlGeen foutcontrole: het formulier wordt ook goedgekeurd bij lege of foute gegevens — er verschijnt geen enkele foutmeldingquickscan (handmatig)3.3.1 Foutidentificatie (A) + 3.3.4 Foutpreventie (AA)hooghandmatig geverifieerd
23hele siteGeen skip-link: bij de eerste Tab verschijnt geen "direct naar inhoud"-link, het hele menu moet elke keer door — de driestapstest faalt op alle zes pagina'squickscan (handmatig) + toetsenbordronde (stap b)2.4.1 Blokken omzeilen (A)middelhandmatig geverifieerd
24hele siteOnduidelijke linkteksten: "Klik hier", 6× "Lees meer" onder elkaar op de homepage alleen al, en één link die "Molen & BoonMolen & Boon" (dubbel) voorleest — in de NVDA-linkslijst is niet te zien waar een link heen gaatquickscan (handmatig) + WAVE (stap a) + NVDA-linkslijst (stap c)2.4.4 Linkdoel (in context) (A)middelhandmatig geverifieerd
25/checkout.htmlAdres- en gegevensvelden missen autocomplete-attributen; browsers en hulpmiddelen kunnen ze niet automatisch invullenquickscan (handmatig)1.3.5 Identificeer het doel van de input (AA)middelhandmatig geverifieerd
26/checkout.htmlDe kop boven de landkeuze slaat een kopniveau overquickscan (handmatig) + WAVE (stap a)1.3.1 Info en relaties (A) — twijfel: mogelijk alleen best practicelaaghandmatig geverifieerd
27hele siteGeen toegankelijkheidsverklaring of -informatie te vinden (footer noch elders). Verklaring opgesteld op 25-07 met status "voldoet volledig" (nul open bevindingen, nul uitzonderingen) — zie de toegankelijkheidsverklaring van deze demonstratie.quickscan (handmatig)n.v.t. — EAA-verplichting, geen WCAG-criteriumlaaghandmatig geverifieerd
28/index.htmlTe weinig contrast in de hero: de h1, de hero-tekst en de knop "Vraag ons advies" (scan-twijfelgeval T1, handmatig handmatig beoordeeld op 2026-07-23: onvoldoende)quickscan (handmatig, na scan-twijfel)1.4.3 Contrast (minimum) (AA)middelhandmatig geverifieerd
29/checkout.htmlTe weinig contrast van het ▾-symbool in de keuzelijst-knop (scan-twijfelgeval T2, handmatig handmatig beoordeeld op 2026-07-23: onvoldoende)quickscan (handmatig, na scan-twijfel)1.4.11 Contrast van niet-tekstuele content (AA)middelhandmatig geverifieerd
30/winkelwagen.htmlDe winkelwagen-tabel heeft lege tabelkoppen (2×, WAVE "Empty table header"); schermlezers kunnen de kolommen niet benoemenWAVE (stap a)1.3.1 Info en relaties (A)middelhandmatig geverifieerd
31/product.htmlTwee links heten allebei "Assortiment" maar gaan naar verschillende pagina's (WAVE meldde ze als redundant; bij de handmatige test bleek dat de bestemmingen juist verschillen) — twijfel: verwarrend, mogelijk geen harde schendingWAVE (stap a) + eigen observatie2.4.4 Linkdoel (in context) (A) — twijfellaaghandmatig geverifieerd
32/product.htmlDe prijs "€ 189,00" oogt als kop maar heeft geen kopsemantiek (WAVE "Possible heading"). Twijfel beslecht in de hertest (bewuste keuze 25-07, na de structuur-overlay-sweep): de prijs dient niet als sectiekop — dit is opmaak, geen schending, geen fix nodig.WAVE (stap a) + structuur-overlay (hertest stap 6)1.3.1 Info en relaties (A) — twijfel beslecht: geen schendinglaaghandmatig geverifieerd
33hele site (footer)De footer-links "Verzenden & retourneren" en "Veelgestelde vragen" worden op elke pagina als redundant gemeld — nog te controleren of ze naast elkaar naar dezelfde bestemming wijzenWAVE (stap a)geen (best practice) — nog te beoordelenlaaghandmatig geverifieerd
34hele siteGeen enkele pagina heeft landmarks: met NVDA levert de landmark-toets `D` niets op en er is geen `main` om naar toe te springen. Een schermlezer-gebruiker moet op élke pagina het complete menu doorlopen voordat de inhoud begint. (Site-brede bevestiging van de scan-regels 6 en 8, die alleen /index.html noemen.)NVDA-ronde (stap c)1.3.1 Info en relaties (A) — twijfel: WCAG eist landmarks nergens letterlijk, dus mogelijk best practice; de hinder is wel reëel en site-breedmiddelhandmatig geverifieerd
35hele siteDe koppenstructuur klopt op geen enkele pagina: sprongen van h1 naar h4, en pagina's die met een h4 beginnen. In de NVDA-koppenlijst (NVDA+F7) is de opbouw van de pagina daardoor niet te volgen. (Site-brede bevestiging van de losse scan-regels 2, 9, 11, 15.)NVDA-koppenlijst (stap c) + WAVE (stap a)1.3.1 Info en relaties (A) — twijfel: de scanner noemt kopvolgorde "best practice"; wij beoordelen kopniveaus die de werkelijke opbouw verkeerd weergeven als onjuiste structuurinformatiemiddelhandmatig geverifieerd
36hele siteOp 320 px breed (WCAG-testconditie, ≈400% zoom) vallen de links "Klantenservice" en "Winkelwagen" buiten beeld; je moet horizontaal schuiven om ze te vinden. Zoom 200% en 400% zelf gaven geen problemen.zoom/reflow (stap d)1.4.10 Reflow (AA)middelhandmatig geverifieerd
37/winkelwagen.htmlOp 320 px breed viel een deel van de producttabel buiten beeld. Twijfel beslecht in de hertest (ons team, 25-07): de tabel scrolt nu binnen zijn eigen kader — dat is de toegestane uitzondering voor datatabellen, dus voldoet aan 1.4.10. Aanbeveling voor het rapport (niet verplicht): op mobiel omklappen naar kaartweergave (product, prijs en aantal onder elkaar), zodat klanten hun winkelwagen zonder zijwaarts schuiven kunnen lezen — op een webshop is de winkelwagen de plek waar je geen twijfel wilt.zoom/reflow (stap d)1.4.10 Reflow (AA) — twijfel beslecht: voldoetmiddelhandmatig geverifieerd
38hele siteAlle zes pagina's hebben dezelfde paginatitel "Molen & Boon" — geen enkele titel beschrijft de pagina zelf (was V1)kruiscontrole (bevestigd bij beoordeling 2026-07-25)2.4.2 Paginatitel (A)middelhandmatig geverifieerd
39hele siteDe aankondigingsbalk wisselt elke 4 seconden automatisch van tekst zonder pauzemogelijkheid (was V2)kruiscontrole (bevestigd bij beoordeling 2026-07-25)2.2.2 Pauzeren, stoppen, verbergen (A)middelhandmatig geverifieerd
40home / producten / productDe melding "… is toegevoegd aan je winkelwagen" verschijnt alleen visueel; een schermlezer krijgt niets te horen (was V3)kruiscontrole (bevestigd bij beoordeling 2026-07-25)4.1.3 Statusberichten (AA)middelhandmatig geverifieerd
41/winkelwagen.htmlNa het aanpassen van een aantal of het verwijderen van een regel valt de toetsenbordfocus terug naar het begin van de pagina — midden in de kerntaak (was V4)kruiscontrole (bevestigd bij beoordeling 2026-07-25)twijfel — focusbeheer, 2.4.3-verwant; geen hard AA-criterium, wel serieuze hindermiddelhandmatig geverifieerd
42/checkout.htmlPlaceholder-tekst had 3,33:1 contrast en was tegelijk het enige veldopschrift (was V5)kruiscontrole (bevestigd bij beoordeling 2026-07-25)1.4.3 Contrast (minimum) (AA)middelhandmatig geverifieerd
43/winkelwagen.htmlDe plus-, min- en verwijderknoppen heetten voor een schermlezer alleen "−", "+" en "×", zonder productnaam — drie identieke setjes onder elkaar (was V6)kruiscontrole (bevestigd bij beoordeling 2026-07-25)4.1.2 Naam, rol, waarde (A)middelhandmatig geverifieerd
44producten / product / winkelwagenProductafbeeldingen hadden de bestandsnaam als alt-tekst ("bonen-huisblend.svg") — de scanner keurt dat goed, de schermlezer leest ruis voor (was V7)kruiscontrole (bevestigd bij beoordeling 2026-07-25)1.1.1 Niet-tekstuele content (A)middelhandmatig geverifieerd
45/checkout.htmlDe drie betaalwijze-radioknoppen hadden geen programmatische groepsnaam (geen fieldset/legend) (was V8)kruiscontrole (bevestigd bij beoordeling 2026-07-25)1.3.1 Info en relaties (A) — twijfel: breed gedragen best practice, hard criterium discutabellaaghandmatig geverifieerd
46home / checkoutDecoratieve inline-svg's (usp-iconen, bevestigingsvinkje) waren niet voor schermlezers verborgen (was V9)kruiscontrole (bevestigd bij beoordeling 2026-07-25)geen (best practice; 1.1.1-twijfel)laaghandmatig geverifieerd
47hele site`scroll-behavior: smooth` gold zonder uitzondering, ook voor wie "minder beweging" heeft ingesteld (was V10)kruiscontrole (bevestigd bij beoordeling 2026-07-25)geen (best practice)laaghandmatig geverifieerd
48home / productenRegressie uit onze eigen fix D1: in de NVDA-linkslijst stond "Lees meerover Huisblend Donker 250 g" — de spatie tussen de zichtbare tekst en de sr-only-aanvulling viel weg (29 links en knoppen). Oorzaak: een sr-only-span staat door `position:absolute` buiten de tekststroom, en de browser knipt bij het berekenen van de toegankelijke naam zowel een voorloopspatie ín de span als een gewone spatie er vlak vóór weg (eerste fix-poging met een gewone spatie vóór de span faalde daardoor — door ons team betrapt in de her-hertest). Definitieve fix: harde spatie (` `) als eerste teken ín de span — die overleeft het samenvouwen altijd.NVDA-linkslijst tijdens de hertest (stap 4), handmatig gevonden — 2×2.4.4 Linkdoel (in context) (A) — de naam moet leesbaar/uitspreekbaar zijn; verwant aan 4.1.2middelhandmatig geverifieerd

Dit is de publicatieversie: fictieve bedrijfsgegevens zijn uit citaten vervangen en persoonsvermeldingen zijn geneutraliseerd. Het interne origineel — met per bevinding ook de technische fix en de testnotities — blijft als meetbewijs bewaard.

Meegenomen verbeteringen (niet verplicht)

Deze punten waren geen wettelijke verplichting, maar konden tijdens het geplande werk in enkele minuten meeliften: beschrijvende paginatitels per pagina, een aanduiding van de huidige pagina in het menu, decoratieve iconen verborgen voor schermlezers, een groepsnaam om de betaalwijze-keuze, beter contrast op de voorraadmelding, een aankondigingsbalk die stilstaat bij de voorkeur “minder beweging”, en doellinks die naar hun eigen bestemming wijzen.

Er zijn momenteel geen optionele meetfuncties actief.

Lees de privacyverklaring en cookieverklaring.