Technical Accessibility Report

Kastanje Kitchen (demo store) — October 3, 2026

Score: 82.3 / 100 Total findings (all evidence levels): 35 Machine-verified findings: 5 Pages assessed: 125 (29 in-depth · 96 baseline)

Sensitivity scenario: treating the 22 unscored risk signals on scored criteria as confirmed failures would produce 63.9 / 100.

Score model v3 — only machine-verified evidence reduces this score. Not comparable to scores from earlier model versions.

Audit Scope & Limitations

29
Deep Audited
96
Baseline Checked
125
Total Crawled

This audit deep-tested 29 pages with automated tools and AI analysis, from 125 total pages discovered. Baseline pages received structural checks only.

Language versions

Language version evaluated in depth: English.

Other language versions found on the site (Dutch, French, German, Latvian) were sampled: a few pages from each were evaluated in depth to check language-specific issues, and their remaining pages received automated baseline checks. The score and findings cover every page assessed, across all language versions — the evaluated version through its full sample, sampled versions through their spot-checked pages and baseline checks.

Pages evaluated in depth per additional language version: German: 2, French: 2, Latvian: 2, Dutch: 2.

Accessibility requirements apply to every language version offered to users. Evaluating the remaining versions requires a separate assessment.

Machine-verified (scored)

0
Critical
5
Serious
0
Moderate
0
Minor

Automated risk signals (not scored)

0
Critical
11
Serious
15
Moderate
4
Minor

All Issues

Perceivable (4 issues)

Serious WCAG 1.4.1 Machine-verified Systemic

Links must be distinguishable without relying on color

Fix any of the following: The link has insufficient color contrast of 1.06:1 with the surrounding text. (Minimum contrast is 3:1, link text: #7f54b3, surrounding text: #6d6d6d) The link has no styling (such as underline) to distinguish it from the surrounding text

a[href$="en.gravatar.com/"]

Fix Code
/* Child theme style.css, or Appearance > Customize > Additional CSS */
/* Underline links in comment text so they are identifiable without colour
   (link colour #7f54b3 vs surrounding text colour #6d6d6d) */
<replace-with-comment-text-container-selector> a,
a[href="https://en.gravatar.com/"] {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.15em;
}

<replace-with-comment-text-container-selector> a:hover,
<replace-with-comment-text-container-selector> a:focus,
a[href="https://en.gravatar.com/"]:hover,
a[href="https://en.gravatar.com/"]:focus {
  text-decoration-thickness: 2px;
}
How to Fix

1. Open the post in a browser and inspect the 'Gravatar' link (<a href="https://en.gravatar.com/">) in DevTools. It sits inside a comment's text. 2. Find the element that wraps the comment body text (the parent of the paragraph holding the link). Replace <replace-with-comment-text-container-selector> with a selector for that wrapper. Do not use a bare 'a' selector. Scope it so buttons and navigation links are not underlined. 3. Add the CSS to the child theme's style.css or to Appearance > Customize > Additional CSS. Never edit the parent theme's stylesheet, because a theme update overwrites it. 4. The a[href="https://en.gravatar.com/"] rule fixes the reported link even before step 2 is finished. The container rule fixes every other link in comments. 5. For WooCommerce product reviews, inspect a review's text wrapper on a product page and replace <replace-with-product-review-text-selector> with it. 6. Verify: reload the page and confirm the link is underlined in its normal, hover and focus states. Re-run the axe scan.

Pages affected: 5
Serious WCAG 1.4.3 Machine-verified Systemic

Elements must meet minimum color contrast ratio thresholds

Fix any of the following: Element has insufficient color contrast of 2.93 (foreground color: #ffffff, background color: #00a99d, font size: 9.8pt (13px), font weight: normal). Expected contrast ratio of 4.5:1

#cn-accept-cookie

Fix Code
<!-- Option A (preferred): change the colour at its source so the generated markup becomes: -->
<a href="#" id="cn-accept-cookie" data-cookie-set="accept" class="cn-set-cookie cn-button" aria-label="Ok" style="background-color: #007a70">Ok</a>

<!-- Option B: if the inline style cannot be changed at its source, add this CSS to your site stylesheet.
     It is scoped to the single button ID. !important is required only because it must beat the inline style attribute. -->
<style>
  #cn-accept-cookie {
    background-color: #007a70 !important;
    color: #ffffff;
  }
  #cn-accept-cookie:hover,
  #cn-accept-cookie:focus {
    background-color: #00665e !important;
    color: #ffffff;
  }
  #cn-accept-cookie:focus-visible {
    outline: 2px solid #007a70;
    outline-offset: 2px;
  }
</style>
How to Fix

1. Locate where the inline style="background-color: #00a99d" on the cookie banner's "Ok" button (#cn-accept-cookie) is generated. The id and the cn-set-cookie / cn-button classes are typically output by a cookie-consent script or plugin, so look for a "button colour" setting in that tool's configuration rather than editing rendered HTML (hand edits to generated markup are overwritten). 2. Change the button background from teal #00a99d to the darker teal #007a70, keeping the white (#ffffff) text. White on #007a70 meets the WCAG 1.4.3 requirement for normal-size (13px) text, while white on #00a99d does not. 3. If the colour cannot be changed at its source, add the Option B CSS to your own site stylesheet (not to the cookie tool's own files, which updates would replace). The selector targets only #cn-accept-cookie, so no shared class or design token is affected. The !important is needed solely to override the inline style attribute. 4. The hover/focus colour #00665e is darker than #007a70, so white text stays readable in every state. The :focus-visible outline gives keyboard users a visible focus indicator. 5. If #00a99d is also used as a brand token elsewhere (for example, other buttons with white text), do not change that token globally from this fix. Check each of those usages separately, because they likely have the same contrast problem. 6. Verify by re-running the axe scan on https://samplestore.geta11y.com/de/2026 and confirming the color-contrast violation on #cn-accept-cookie is gone. Also tab to the button to check the focus style is visible.

Pages affected: 96
Serious WCAG 1.4.3 Machine-verified Systemic

Elements must meet minimum color contrast ratio thresholds

Fix any of the following: Element has insufficient color contrast of 2.55 (foreground color: #a1a2a5, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1

del > .woocommerce-Price-amount.amount

Fix Code
/* Struck-through (original) sale price.
   Scoped to WooCommerce pages only; no global change to the theme's text colours. */
.woocommerce-page del,
.woocommerce-page del > .woocommerce-Price-amount.amount,
.woocommerce-page del > .woocommerce-Price-amount.amount .woocommerce-Price-currencySymbol {
  color: #6b6c70; /* darker version of the current #a1a2a5 grey, on the #ffffff background */
  opacity: 1;     /* cancels any theme opacity on <del>, which would lighten the colour again */
}
How to Fix

1. Do not edit wp-content/plugins/woocommerce/assets/css/ or the parent theme's stylesheet, because updates overwrite them. 2. Add the CSS in one of these places: the child theme's functions.php using the WooCommerce variant, which attaches the rule to the 'woocommerce-general' stylesheet handle; the child theme's style.css; or Additional CSS in the Customizer or Site Editor. 3. Replace <replace-with-child-theme-folder> with the actual folder name of your child theme. If your theme dequeues 'woocommerce-general', use the handle of the stylesheet the theme loads instead. Find it in page source as the id of the <link> tag minus the '-css' suffix. 4. The rule includes opacity: 1 because some themes fade <del> with opacity. That fade would make the computed colour lighter than the colour you set. 5. The selector applies to every WooCommerce page, not only /cart. Check struck-through prices on the cart page, the shop archive, a single product on sale and the mini-cart. Confirm they read as dark grey on the white background. 6. Re-run the contrast check on 'del > .woocommerce-Price-amount.amount' and confirm it passes. If your brand needs a different grey, pick any colour that passes against #ffffff at 12px normal weight.

Pages affected: 5
Serious WCAG 1.4.3 Machine-verified Systemic

Elements must meet minimum color contrast ratio thresholds

Fix any of the following: Element has insufficient color contrast of 2.02 (foreground color: #b6b6b6, background color: #ffffff, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1

del > .woocommerce-Price-amount.amount > bdi

Fix Code
/* Struck-through regular price shown next to a sale price.
   Scoped to WooCommerce price markup inside <del> only. No shared colour token is changed. */
del .woocommerce-Price-amount,
del .woocommerce-Price-amount bdi,
del .woocommerce-Price-amount .woocommerce-Price-currencySymbol {
  color: #595959;
}

/* Some themes fade the whole <del> with opacity, which blends any colour back toward the white background.
   Reset it only where <del> wraps a WooCommerce price. */
del:has(.woocommerce-Price-amount) {
  opacity: 1;
  color: #595959;
}
How to Fix

1. Open your child theme's style.css at wp-content/themes/<replace-with-child-theme-folder>/style.css. If you have no child theme, use Appearance > Customize > Additional CSS. In a block theme, use Appearance > Editor > Styles > Additional CSS. Do not edit the parent theme or plugins/woocommerce/assets, because updates overwrite those files. 2. Paste the CSS. It targets only <del> elements that wrap a .woocommerce-Price-amount, so other grey text that uses the same colour is unaffected. 3. The detected light grey (#b6b6b6) may come from the theme applying opacity to <del> rather than from a colour value. The opacity: 1 reset covers that case. 4. Clear any caching or CSS-optimisation plugin, then reload a product that is on sale. 5. In DevTools, confirm the struck-through price now computes to dark grey (#595959) on white. Re-run the contrast check in the shop grid, the single product page, the cart and the mini-cart, because <del> prices appear in all four.

Pages affected: 49

Robust (1 issues)

Serious WCAG 4.1.2 Machine-verified Systemic

Interactive controls must not be nested

Fix any of the following: Element has focusable descendants

#tab-title-description

Fix Code
<!-- Resulting markup: the tab role moves from the <li> to the focusable <a> -->
<ul class="tabs wc-tabs" role="tablist">
  <li class="description_tab active" role="presentation">
    <a href="#tab-description" id="tab-title-description" role="tab" aria-controls="tab-description" aria-selected="true" tabindex="0">Beschreibung</a>
  </li>
  <!-- other tabs: same pattern, with aria-selected="false" tabindex="-1" on the <a> -->
</ul>
<!-- The existing panel id="tab-description" role="tabpanel" aria-labelledby="tab-title-description" stays unchanged:
     aria-labelledby now resolves to the <a>, which carries id="tab-title-description". -->
How to Fix

1. Check whether your child theme already has themes/<child-theme>/woocommerce/single-product/tabs/tabs.php. If it does not, copy plugins/woocommerce/templates/single-product/tabs/tabs.php to that path. Never edit the plugin file, because WooCommerce updates overwrite it. 2. In the copy, remove `id`, `role="tab"`, `aria-controls` and any `aria-selected` from the `<li>`, and give the `<li>` `role="presentation"`. 3. Put `id="tab-title-<key>"`, `role="tab"` and `aria-controls="tab-<key>"` on the `<a>` instead (see the woocommerce variant). Keep the `<li>` class (`description_tab` etc.), because WooCommerce's single-product.js and the theme CSS rely on it. 4. Leave the panels unchanged. Their `aria-labelledby="tab-title-<key>"` now points at the `<a>`. 5. Add the functions.php snippet from the wordpress variant to the child theme. It runs after WooCommerce's `wc-single-product` script and does three things: - moves the selected state to the `<a>` elements; - gives inactive tabs `tabindex="-1"`; - adds Left/Right/Home/End arrow-key navigation. 6. Clear any page or asset cache. Then confirm in DevTools that the `<a>` ("Beschreibung") now carries `aria-selected="true"` and that no `<li>` has `role="tab"`. 7. Test the tabs with the keyboard: Tab reaches the active tab, arrow keys switch tabs, and Tab moves into the panel. 8. Re-run axe. 9. After future WooCommerce updates, compare the @version line in your override with WooCommerce › Status › Templates, and merge any upstream changes.

Pages affected: 35

Passing Criteria

1.1.1 1.4.4 1.4.12 2.1.2 2.2.1 2.4.1 2.4.2 2.4.7 * 3.1.1

* Verified on a sample of elements (tool cap). A pass means no issues were found in the examined sample, not that every element on every page was checked.

Inconclusive Items

AI-assessed and inconclusive signals are separated from machine-verified findings and do not affect the machine-evidence score.

WCAG 3.1.2: Inconclusive Language of parts: This untranslated English WordPress widget heading has no lang attribute on a German page. A German screen-reader voice will mispronounce it.

Confidence: 60%

Pages affected: 1
WCAG 3.1.2: AI-assessed Language of parts: The contact form wrapper has an empty lang attribute (lang=""), which declares the language of its contents as unknown.

Confidence: 70%

Pages affected: 1
WCAG 3.1.2: Inconclusive Language of parts: The word 'items' is English inside an lv-LV link and is visible in the header.

Confidence: 60%

Pages affected: 1
WCAG 3.1.2: AI-assessed Language of parts: This untranslated English footer phrase has effective lang fr-FR. 'WooCommerce' is a brand name, but 'Built with' is English text that needs lang="en".

Confidence: 70%

Pages affected: 1
WCAG 1.3.1: Inconclusive Text styled as a heading is not marked up as one

Confidence: 70%

Pages affected: 1
WCAG 1.4.3: Inconclusive Automated check could not decide: color-contrast

Confidence: 50%

Pages affected: 4
WCAG 2.4.4: Inconclusive Link text issue: The header cart link's accessible text is only the amount and item count ('€0.00 0 article').

Confidence: 60%

Pages affected: 1
WCAG 2.4.4: Inconclusive Link text issue: The link text 'WordPress' suggests it leads to WordPress (wordpress.org).

Confidence: 60%

Pages affected: 1
WCAG 2.5.3: Inconclusive Visible label is not part of the accessible name

Confidence: 70%

Pages affected: 1
WCAG 2.5.3: Inconclusive Visible label is not part of the accessible name

Confidence: 70%

Pages affected: 1
WCAG 3.1.2: AI-assessed Language of parts: The accessible name is English ('Add to cart:') inside a Latvian (lv-LV) context and has no lang attribute. A Latvian screen reader will mispronounce it.

Confidence: 85%

Pages affected: 1
WCAG 3.1.2: AI-assessed Language of parts: The hidden screen-reader price text is full English sentences inside an lv-LV link. It will be mispronounced, and Latvian users get untranslated price information.

Confidence: 80%

Pages affected: 6
WCAG 3.3.2: AI-assessed Form label quality: The field is required in the DOM (required: true), but its visible label 'Your name' has no asterisk, '(required)' text or other cue.

Confidence: 75%

Pages affected: 1
WCAG 3.3.2: AI-assessed Form label quality: The field is required in the DOM (required: true), but its visible label 'Your email' gives no required indication.

Confidence: 75%

Pages affected: 1
WCAG 3.3.2: Inconclusive Form label quality: The quantity field next to 'Add to cart' shows only the value '1' and has no visible label.

Confidence: 60%

Pages affected: 1
WCAG 1.4.3: Inconclusive Incomplete check resolved: color-contrast

Confidence: 70%

Pages affected: 1
WCAG 2.1.1: Inconclusive Clickable element cannot be reached with the keyboard

Confidence: 80%

Pages affected: 1
WCAG 3.2.2: Inconclusive Changing a setting changes the context

Confidence: 80%

Pages affected: 2
WCAG 3.3.1: Inconclusive Form errors not announced to screen readers

Confidence: 70%

Pages affected: 1
WCAG 3.3.1: Inconclusive Form errors not announced to screen readers

Confidence: 70%

Pages affected: 1
WCAG 3.3.2: Inconclusive Newsletter email field relies on placeholder as its only visible label

Confidence: 85%

Pages affected: 1
WCAG 4.1.2: Inconclusive Clickable element has no role for assistive technology

Confidence: 80%

Pages affected: 1

WCAG Coverage Transparency

Every WCAG 2.1 AA criterion (50 total) is classified by how it was tested. Fully automated criteria are checked by deterministic tools. AI-assisted criteria combine automated detection with AI analysis of screenshots and page structure. Expand any criterion to see verification steps adapted to the audited site type.

17
Scored (machine-verifiable)
22
Reviewed, not scored
5
Not present on audited pages
5
Manual Verification
1
Needs manual check

Perceivable

Scored 1.1.1 Non-text Content

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: The Kastanje Kitchen standard page at https://samplestore.geta11y.com/, especially the image gallery, its zoom trigger, and any image controls in forms.

Review flagged alt texts - does each one accurately describe the image's PURPOSE in the context of the surrounding content?

Estimated time: ~30 min

Not present 1.2.1 Audio-only and Video-only (Prerecorded)

Not present: no video or audio was found on the audited pages at audit time, so this criterion had nothing to apply to. It is not counted in the score. If a page loads video only after a click (a thumbnail with a play button), test this criterion manually — and re-check it whenever you add media.

Verification steps

Where to test: The Kastanje Kitchen standard page at https://samplestore.geta11y.com/ and any media added to it later.

Verify transcripts include all spoken content and relevant non-speech sounds.

Estimated time: varies

Not present 1.2.2 Captions (Prerecorded)

Not present: no video or audio was found on the audited pages at audit time, so this criterion had nothing to apply to. It is not counted in the score. If a page loads video only after a click (a thumbnail with a play button), test this criterion manually — and re-check it whenever you add media.

Verification steps

Where to test: The Kastanje Kitchen standard page at https://samplestore.geta11y.com/ and any prerecorded videos added later.

Verify that captions accurately represent all spoken content and relevant sounds.

Estimated time: varies

Not present 1.2.3 Audio Description or Media Alternative (Prerecorded)

Not present: no video or audio was found on the audited pages at audit time, so this criterion had nothing to apply to. It is not counted in the score. If a page loads video only after a click (a thumbnail with a play button), test this criterion manually — and re-check it whenever you add media.

Verification steps

Where to test: The Kastanje Kitchen standard page at https://samplestore.geta11y.com/ and any prerecorded videos added later.

For videos with important visual content (actions, scene changes, on-screen text), verify that either: (1) an audio description track is available that describes these visual elements during pauses in dialogue, or (2) a full text alternative is provided that describes all visual and auditory content.

Estimated time: varies

Not present 1.2.4 Captions (Live)

Not present: no video or audio was found on the audited pages at audit time, so this criterion had nothing to apply to. It is not counted in the score. If a page loads video only after a click (a thumbnail with a play button), test this criterion manually — and re-check it whenever you add media.

Verification steps

Where to test: The Kastanje Kitchen standard page at https://samplestore.geta11y.com/ and any live video broadcasts linked or embedded there in the future.

If the site streams live audio or video (webinars, live events, live broadcasts), verify that captions are provided for all live audio content. Check a live session or its configuration: real-time captions (human or automatic with correction) must be available while the content is live.

Estimated time: varies

Not present 1.2.5 Audio Description (Prerecorded)

Not present: no video or audio was found on the audited pages at audit time, so this criterion had nothing to apply to. It is not counted in the score. If a page loads video only after a click (a thumbnail with a play button), test this criterion manually — and re-check it whenever you add media.

Verification steps

Where to test: The Kastanje Kitchen standard page at https://samplestore.geta11y.com/ and any prerecorded videos added later.

Verify that audio descriptions cover important visual content not available from the soundtrack.

Estimated time: varies

Scored 1.3.1 Info and Relationships Risk signal — needs verification

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: The Kastanje Kitchen home page and any standard page containing a form, especially forms with required fields or grouped choices.

Verify headings accurately describe section content and follow a logical hierarchy.

Estimated time: ~15 min

Reviewed, not scored 1.3.2 Meaningful Sequence

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: The home page, form-containing standard pages, and the page containing the image gallery's magnifying-glass zoom control.

Disable CSS (or use a screen reader) and read through each page. Verify that the content order still makes sense — headings come before their sections, captions sit next to their images, and related content is grouped together. Pay special attention to multi-column layouts and content repositioned with CSS grid or flexbox.

Estimated time: ~15 min

Reviewed, not scored 1.3.3 Sensory Characteristics

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Instructions on the home page, form-containing pages, and the image gallery page.

Verify instructions do not rely solely on shape, size, visual location, orientation, or sound.

Estimated time: ~10 min

Reviewed, not scored 1.3.4 Orientation

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: The home page, form-containing pages, and the image gallery on a phone or tablet.

Rotate a phone or tablet (or switch the browser's device emulation between portrait and landscape). Verify the content is not locked to one orientation and that everything remains readable and usable in both — unless a specific orientation is essential (for example a piano app or a bank cheque scan).

Estimated time: ~5 min

Scored 1.3.5 Identify Input Purpose Risk signal — needs verification

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: Any standard page on Kastanje Kitchen with a form collecting the visitor's personal information.

On forms that collect personal information (name, email, address, phone, credit card), inspect each input field. Verify it has the correct autocomplete attribute (e.g., autocomplete="email", autocomplete="street-address"). This allows browsers and assistive technologies to auto-fill fields and display familiar icons.

Estimated time: ~10 min

Scored 1.4.1 Use of Color Issue found

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: Text links on standard pages, all forms and their error states, and any selection or status indicators on Kastanje Kitchen.

Verify that information conveyed by color is also available through other means (text, icons, patterns).

Estimated time: ~15 min

Needs manual check 1.4.2 Audio Control

Needs a manual check: the automated checks found nothing on the audited pages they could examine for this criterion. It is not counted in the score — follow the manual test step.

Verification steps

Where to test: The Kastanje Kitchen homepage and other standard pages available through its navigation.

Load each page with sound on. If any audio starts automatically and plays for more than 3 seconds, verify there is a mechanism to pause or stop it, or to control its volume independently of the system volume — and that this control is easy to find at the start of the page and works with the keyboard.

Estimated time: ~5 min

Scored 1.4.3 Contrast (Minimum) Issue found

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: Homepage text, links and buttons; forms on the standard pages; form errors; any text displayed over images. Automated testing already flagged text contrast for review.

Automated tools measure contrast against solid backgrounds but can miss text placed over photographs, gradients, or patterned backgrounds. Look for text overlaying hero images, banner photos, or colored gradients. Use a contrast checker tool (like the WebAIM contrast checker) to verify the ratio is at least 4.5:1 for normal text or 3:1 for large text (18pt+ or 14pt+ bold).

Estimated time: ~15 min

Scored 1.4.4 Resize Text

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: The homepage, standard pages containing forms, and the gallery opened by the magnifying-glass trigger.

Zoom the browser to 200% (Ctrl/Cmd and +). Verify all text grows, nothing is cut off or overlaps, and every function — menus, forms, buttons, dialogs — remains usable. Content may reflow, but no information or functionality may be lost.

Estimated time: ~10 min

Reviewed, not scored 1.4.5 Images of Text

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Images and banners on the homepage and other standard pages, plus images in the gallery.

Look for images that contain readable text (headings as images, text in banners, text in infographics). For each one, verify the text could NOT reasonably be presented as real styled text. Exception: logos and brand names in their customary typographic treatment are exempt.

Estimated time: ~15 min

Reviewed, not scored 1.4.10 Reflow Risk signal — needs verification

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: The homepage, navigation, standard pages with forms, and the gallery. Automated review already reported horizontal scrolling at a width of 320 pixels.

Set the browser window to 1280 pixels wide and zoom to 400% (equivalent to a 320 CSS-pixel viewport). Verify content can be read without scrolling horizontally and without loss of information or functionality. Content that genuinely needs two dimensions — data tables, maps, diagrams — is exempt.

Estimated time: ~10 min

Reviewed, not scored 1.4.11 Non-text Contrast Risk signal — needs verification

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Forms on the standard pages, buttons and selection controls, keyboard focus indicators, the gallery zoom trigger, and any meaningful graphics.

Check that user interface components (buttons, form inputs, toggles, icons) and meaningful graphics (charts, diagrams, icons conveying information) have at least 3:1 contrast ratio against their adjacent colors. Focus on: button borders against backgrounds, input field borders, icon colors, chart segments, and focus indicators.

Estimated time: ~15 min

Scored 1.4.12 Text Spacing

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: The Kastanje Kitchen homepage, standard pages containing forms, and the page with the gallery 🔍 zoom control.

Apply the WCAG text-spacing values with a text-spacing bookmarklet or browser extension: line height 1.5 × font size, paragraph spacing 2 × font size, letter spacing 0.12 × font size, word spacing 0.16 × font size. Verify no text is cut off, overlaps other content, or disappears, and all controls still work.

Estimated time: ~10 min

Reviewed, not scored 1.4.13 Content on Hover or Focus

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Homepage navigation, the gallery zoom trigger, and any help controls beside forms on Kastanje Kitchen's standard pages.

Find elements that show additional content when you hover with the mouse or focus with the keyboard (tooltips, dropdown menus, popover cards). For each one, verify: (1) Dismissible — you can close it without moving the mouse (e.g., pressing Escape), (2) Hoverable — you can move the mouse over the new content without it disappearing, (3) Persistent — the content stays visible until you dismiss it, move focus, or hover away.

Estimated time: ~10 min

Operable

Reviewed, not scored 2.1.1 Keyboard Risk signal — needs verification

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: The homepage and linked standard pages, especially forms, settings, and the image gallery. An automated check already reported a clickable element that cannot be reached with the keyboard.

Put the mouse aside. Using only Tab, Shift+Tab, Enter, Space, Escape and the arrow keys, verify you can reach and operate every function on each page: navigation and menus, forms, buttons, carousels, dialogs, filters, and custom widgets — without needing specific timings for individual keystrokes.

Estimated time: ~20 min

Scored 2.1.2 No Keyboard Trap

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: The gallery enlarged view, forms, navigation menus, and any other interactive areas on Kastanje Kitchen's standard pages.

Tab and Shift+Tab through each page, including embedded players, maps, chat widgets and dialogs. Verify focus can always move away from every component using the keyboard. If leaving a component needs a key other than Tab, Shift+Tab or the arrow keys, verify users are told how.

Estimated time: ~10 min

Manual 2.1.4 Character Key Shortcuts

Requires knowledge of application-specific keyboard shortcuts. Automated tools cannot detect single-character key bindings.

Verification steps

Where to test: The homepage, the gallery page and enlarged view, forms, and any available shortcut settings or help.

Check if single-character keyboard shortcuts exist (letters, numbers, symbols, punctuation). If so, verify users can either turn them off, remap them to include a modifier key (Ctrl, Alt), or they only activate when the relevant component has focus.

Estimated time: ~10 min

Scored 2.2.1 Timing Adjustable

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: Forms on Kastanje Kitchen's standard pages and any store process that displays a countdown, expiry warning, or session limit.

For each time limit (session timeouts, timed forms, auto-advancing content), verify that at least one of these holds: the user can turn the limit off before it runs out; the user can adjust it to at least ten times the default; or the user is warned before it expires, gets at least 20 seconds to extend it with a simple action (for example pressing a key), and can extend it at least ten times. Exceptions: real-time events such as auctions, limits that are essential to the activity, and limits longer than 20 hours.

Estimated time: ~10 min

Reviewed, not scored 2.2.2 Pause, Stop, Hide

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Kastanje Kitchen home page, the gallery with the 🔍 zoom control, and any linked standard pages with moving or automatically updating content.

Look for any content that moves, blinks or scrolls for more than 5 seconds and starts automatically alongside other content (carousels, news tickers, animated banners). Verify there is a mechanism to pause, stop or hide it, and that the user can go on using the page while it stays paused — pausing only while the pointer or keyboard focus rests on the content does not pass. For content that updates automatically (like a live ticker or refreshing feed), verify it can be paused, stopped, hidden, or its update frequency controlled.

Estimated time: ~10 min

Manual 2.3.1 Three Flashes or Below Threshold

Flash frequency cannot be measured from the page code or screenshots — check video and animated content for more than three flashes per second.

Verification steps

Where to test: Kastanje Kitchen home page, gallery, and any linked standard pages containing animation or video.

Verify no content flashes more than 3 times per second, or flashing is below size/brightness thresholds.

Estimated time: ~5 min

Scored 2.4.1 Bypass Blocks

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: Kastanje Kitchen home page and linked standard pages that repeat its header or navigation.

Load a page and press Tab once. Verify there is a way to skip content repeated on every page (header, navigation) — a working "skip to content" link that moves focus to the main content, or a clear structure of landmarks (header, nav, main) and headings that screen-reader users can jump between.

Estimated time: ~5 min

Scored 2.4.2 Page Titled

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: Kastanje Kitchen home page and linked standard pages, including any form page.

Check the browser tab title on each page. Verify it describes the page's topic or purpose and distinguishes it from other pages. Good: "Shopping Cart — Example Store". Bad: "Page", "Untitled", or the same title on every page. The title should make sense when read in a list of open tabs.

Estimated time: ~5 min

Reviewed, not scored 2.4.3 Focus Order

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Kastanje Kitchen home page, gallery and zoom popup if present, and standard pages containing forms or settings.

Press Tab from the top of each page and follow the focus with your eyes. Verify that focus moves in an order that preserves meaning and operability: it follows the reading order, does not jump unexpectedly across the page, and moves into dialogs and menus when they open and back to the trigger when they close.

Estimated time: ~15 min

Scored 2.4.4 Link Purpose (In Context) Risk signal — needs verification

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: Kastanje Kitchen navigation, links in standard page content and forms, and the gallery's 🔍 zoom trigger.

Verify that link text makes sense out of context. Check links flagged as generic ('click here', 'read more').

Estimated time: ~15 min

Reviewed, not scored 2.4.5 Multiple Ways

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Kastanje Kitchen homepage and ordinary pages linked from it, including the product gallery page if separate.

Verify at least two ways exist to locate pages (e.g., navigation menu + search + sitemap).

Estimated time: ~5 min

Reviewed, not scored 2.4.6 Headings and Labels

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: The homepage, pages containing forms or settings, and the gallery area with the '🔍' zoom trigger.

Verify headings accurately describe section content and follow a logical hierarchy.

Estimated time: ~15 min

Scored 2.4.7 Focus Visible Sampled

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Checked on a sample: 39 of 65 eligible elements were examined before the tool's cap. A clean result means no issues in the sample — not proof for every element.

Verification steps

Where to test: Homepage navigation, all forms and setting controls, the gallery zoom trigger, and any gallery view it opens.

Tab through each page and watch where focus goes. Verify every link, button, form field and custom control shows a clearly visible indicator (outline, underline, colour or background change) whenever it has keyboard focus — including inside cookie banners, menus and dialogs.

Estimated time: ~10 min

Reviewed, not scored 2.5.1 Pointer Gestures

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: The product gallery and its zoom view, plus any touch-operated form or setting controls.

Identify any multipoint gestures (pinch-to-zoom, two-finger rotate) or path-based gestures (swiping, dragging a slider). For each one, verify there is a single-pointer alternative (a tap, click, or button) that achieves the same result.

Estimated time: ~15 min

Reviewed, not scored 2.5.2 Pointer Cancellation

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Homepage links, gallery zoom trigger, form buttons, and setting controls, especially the setting already reported to change the page context.

For clickable elements: press and hold the mouse button (or touch and hold), then move the pointer away before releasing. Verify the action does NOT fire on the down-event alone. The action should either fire on release (up-event) or be cancellable by moving away.

Estimated time: ~10 min

Reviewed, not scored 2.5.3 Label in Name Risk signal — needs verification

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Text-labelled navigation links, detected forms, buttons and setting controls on Kastanje Kitchen; also review the gallery zoom trigger.

For buttons, links, and form fields that have visible text labels, verify the accessible name (what a screen reader announces) includes the visible text. Example problem: a button shows "Submit Order" but has aria-label="send". Voice control users saying "click Submit Order" would fail because the accessible name doesn't match. Check buttons with icons + text, and inputs with visible labels.

Estimated time: ~10 min

Reviewed, not scored 2.5.4 Motion Actuation

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Kastanje Kitchen's main store page, image gallery, and any settings available from that page.

Check if any functionality responds to device motion (tilting, shaking, or moving the device). If so, verify both: (1) a user interface control performs the same function, and (2) the motion response can be disabled to prevent accidental activation. Exceptions: the motion is used through an accessibility-supported interface, or the motion is essential to the function (for example a step counter).

Estimated time: ~5 min

Understandable

Scored 3.1.1 Language of Page

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: The Kastanje Kitchen main page and any other standard pages reached through its navigation.

View the page source and check the lang attribute on the <html> element (e.g., lang="en", lang="de", lang="fr"). Verify it matches the actual primary language of the page content. Screen readers use this to select the correct pronunciation rules. A page in German with lang="en" will be read with English pronunciation.

Estimated time: ~5 min

Scored 3.1.2 Language of Parts Risk signal — needs verification

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: Text on the main store page, detected forms, gallery text, and any linked standard pages.

Look for passages of text in a different language than the rest of the page (e.g., a French quote on an English page, a product name in another language). Verify that these passages have a lang attribute marking the change (e.g., <span lang="fr">). Individual foreign words that have become part of the page's language (like "café" or "sushi") do not need to be marked.

Estimated time: ~10 min

Reviewed, not scored 3.2.1 On Focus

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Navigation, the gallery zoom control, and all form fields on the Kastanje Kitchen store page.

Use the Tab key to move through all interactive elements on each page. Verify that simply receiving keyboard focus does NOT trigger any of the following: page navigation, a popup or modal opening, a form being submitted, or a significant change in page content.

Estimated time: ~15 min

Reviewed, not scored 3.2.2 On Input Risk signal — needs verification

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Detected forms and any settings on Kastanje Kitchen's main store page or linked standard pages.

Interact with form controls (dropdowns, checkboxes, radio buttons, text fields) and verify that changing their value does NOT cause an unexpected result such as: navigating to a new page, submitting a form, or significantly changing other content on the page. If a dropdown immediately navigates on selection (without a "Go" button), that is a failure.

Estimated time: ~10 min

Reviewed, not scored 3.2.3 Consistent Navigation

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Repeated header, footer, and mobile navigation on the main store page and any linked Kastanje Kitchen standard pages.

Verify that navigation mechanisms appear in the same relative order across pages.

Estimated time: ~10 min

Reviewed, not scored 3.2.4 Consistent Identification

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Kastanje Kitchen's home page, standard pages reached through its navigation, repeated form controls, and the gallery zoom control.

Verify that components with the same function are identified consistently across pages.

Estimated time: ~10 min

Reviewed, not scored 3.3.1 Error Identification Risk signal — needs verification

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: All detected forms on Kastanje Kitchen's home page and linked standard pages.

Submit each form with missing and invalid entries. Verify every error is identified in text (not by colour alone), tells the user which field is affected, and describes the problem — and that the message is placed near the field or in a summary users are moved to.

Estimated time: ~10 min

Scored 3.3.2 Labels or Instructions Risk signal — needs verification

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: All detected forms on Kastanje Kitchen's standard pages, including any text fields, dropdowns, checkboxes, and groups of choices.

Review all forms on the site. Verify that every input field has a visible label that clearly describes what to enter. Check that required fields are indicated (not just by color), expected formats are shown (e.g., "DD/MM/YYYY" for dates), and any special requirements are stated before the user encounters the field. Group related fields (like address parts) with a visible group label.

Estimated time: ~15 min

Manual 3.3.3 Error Suggestion

Whether error messages suggest a correction depends on their content — no automated check examines it.

Verification steps

Where to test: Detected forms on Kastanje Kitchen's home page and linked standard pages, especially fields that reject missing or incorrectly formatted entries.

Submit forms with typical mistakes (a malformed email address, a date in the wrong format, a missing required field). When the error is detected and a correction is known, verify the error message tells the user how to fix it (for example "Enter a date as DD/MM/YYYY"), unless that would jeopardize security or the purpose of the content.

Estimated time: ~10 min

Manual 3.3.4 Error Prevention (Legal, Financial, Data)

Requires understanding business logic to identify legal/financial transactions and verify review/confirm/reverse mechanisms.

Verification steps

Where to test: Any purchase, legal-commitment, or saved-personal-data flow available through Kastanje Kitchen's standard pages. These flows have not been confirmed by the supplied profile.

For pages that create legal commitments or financial transactions, change or delete user data, or submit test answers, verify that at least one of these holds: the submission can be reversed; the data entered is checked for input errors and the user can correct them; or the user can review, confirm and correct the information before finalizing it. A separate review step is one way to pass, not the only one.

Estimated time: ~15 min

Robust

Manual 4.1.1 Parsing

W3C's 2023 note on WCAG 2.1 treats 4.1.1 as always satisfied for HTML and XML content; EN 301 549 V3.2.1 still lists it as clause 9.4.1.1. No automated check examines it.

Verification steps

Where to test: The assessment record for Kastanje Kitchen's home page and standard web pages; no on-page manual interaction is required.

W3C's 2023 note on WCAG 2.1 treats success criterion 4.1.1 Parsing as always satisfied for HTML and XML content, because browsers and assistive technologies now parse markup consistently. EN 301 549 V3.2.1 still lists it as clause 9.4.1.1. If you report against EN 301 549, run the page through the W3C HTML Validator (validator.w3.org) and record the result; duplicate id attributes that break label-input associations are covered by other criteria (1.3.1, 4.1.2) either way.

Estimated time: ~10 min

Scored 4.1.2 Name, Role, Value Issue found

Scored: a machine-verifiable check ran on this criterion. Its result counts in the score; human review is still recommended for the aspects a machine cannot judge.

Verification steps

Where to test: Kastanje Kitchen's home page and standard pages containing forms, plus the page containing the gallery's 🔍 zoom control.

With a screen reader (or the browser's accessibility inspector), check every custom control — menus, tabs, accordions, toggles, sliders, icon buttons. Verify each announces a meaningful name, the correct role (button, tab, checkbox, …) and its current state (expanded, selected, checked), and that state changes are announced.

Estimated time: ~20 min

Reviewed, not scored 4.1.3 Status Messages

Reviewed, not scored: examined by advisory checks or AI review only. No machine-verifiable check exists for it, so it does not count in the score — verify the findings manually.

Verification steps

Where to test: Kastanje Kitchen's standard pages containing forms; also any store page where an action produces a visible basket update, confirmation, result count, or progress message, if present.

Trigger actions that show status messages without moving focus — adding items to a cart, form validation errors, search result counts, progress updates, success confirmations. Use a screen reader (or inspect the HTML) to verify these messages are announced automatically. They should use aria-live="polite" or an appropriate ARIA role (role="status", role="alert") so screen readers announce them without the user having to navigate to them.

Estimated time: ~15 min