Automated findings only. Not a full accessibility audit, certification or legal risk assessment.
Demonstration using a deliberately constructed test website.
2 pages tested; 1 untested; 7 distinct failing rules; 7 occurrences.
Scope
Initial desktop page snapshots only. Keyboard journeys, screen readers, mobile views, authenticated pages, checkout completion and third-party services were not evaluated. Best-practice and AAA-only rules are excluded. Pages with no detected violations are not certified accessible.
Detected violations
Buttons must have discernible text
Critical engine impact. WCAG 4.1.2.
A screen reader may announce a button without its purpose.
Give each button an accessible name that describes its action. Prefer visible text; for icon-only controls use a meaningful aria-label.
http://127.0.0.1:40067/broken
Selector: ['#icon'] <button id="icon"></button> Fix any of the following: Element does not have inner text that is visible to screen readers aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute Element does not have an implicit (wrapped) <label> Element does not have an explicit <label> Element's default semantics were not overridden with role="none" or role="presentation"
Images must have alternative text
Critical engine impact. WCAG 1.1.1.
Screen reader users may not receive the purpose of an image.
Give meaningful images a concise, context-specific alternative. Use an empty alt attribute for purely decorative images; do not label all images identically.
http://127.0.0.1:40067/broken
Selector: ['img'] <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80'%3E%3Crect width='80' height='80' fill='navy'/%3E%3C/svg%3E"> Fix any of the following: Element does not have an alt attribute aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute Element's default semantics were not overridden with role="none" or role="presentation"
Form elements must have labels
Critical engine impact. WCAG 4.1.2.
People using assistive technology may not know what a field expects.
Associate a visible label with its input using matching for and id attributes. A placeholder alone is not a persistent label.
http://127.0.0.1:40067/broken
Selector: ['#email'] <input id="email"> Fix any of the following: Element does not have an implicit (wrapped) <label> Element does not have an explicit <label> aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute Element has no placeholder attribute Element's default semantics were not overridden with role="none" or role="presentation"
Elements must meet minimum color contrast ratio thresholds
Serious engine impact. WCAG 1.4.3.
Some users may struggle to distinguish text from its background.
Review each reported foreground/background pair in its actual state. Normal text generally needs 4.5:1; qualifying large text needs 3:1. Verify the specific element and applicable exceptions.
http://127.0.0.1:40067/broken
Selector: ['.low'] <p class="low">Today's menu</p> Fix any of the following: Element has insufficient color contrast of 2.32 (foreground color: #aaaaaa, background color: #ffffff, font size: 15.0pt (20px), font weight: normal). Expected contrast ratio of 4.5:1
<html> element must have a lang attribute
Serious engine impact. WCAG 3.1.1.
A screen reader may pronounce the page using the wrong language.
Set a valid language on the html element, matching the primary language of this page.
http://127.0.0.1:40067/broken
Selector: ['html'] <html> Fix any of the following: The <html> element does not have a lang attribute
Links must have discernible text
Serious engine impact. WCAG 2.4.4, 4.1.2.
A link may be announced without a useful destination or purpose.
Use meaningful link text or an accessible name. For an image-only link, name the link through appropriate alternative text.
http://127.0.0.1:40067/broken
Selector: ['a'] <a href="/fixed"><span aria-hidden="true">→</span></a> Fix all of the following: Element is in tab order and does not have accessible text Fix any of the following: Element does not have text that is visible to screen readers aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute
All touch targets must be 24px large, or leave sufficient space
Serious engine impact. WCAG 2.5.8.
This rule identified a potential barrier in the rendered page.
Inspect the supplied selector and element against the linked rule guidance. Apply a source-code fix and re-test the affected component and related pages.
http://127.0.0.1:40067/broken
Selector: ['a'] <a href="/fixed"><span aria-hidden="true">→</span></a> Fix any of the following: Target has insufficient size (17px by 24px, should be at least 24px by 24px) Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 17px instead of at least 24px.
Requires manual review
Elements must meet minimum color contrast ratio thresholds
Serious engine impact. WCAG 1.4.3.
Some users may struggle to distinguish text from its background.
Review each reported foreground/background pair in its actual state. Normal text generally needs 4.5:1; qualifying large text needs 3:1. Verify the specific element and applicable exceptions.
http://127.0.0.1:40067/broken
Selector: ['span'] <span aria-hidden="true">→</span> Fix any of the following: Element content contains only non-text characters
Page coverage
- http://127.0.0.1:40067/broken - tested
- http://127.0.0.1:40067/fixed - tested
- http://127.0.0.1:40067/missing - failed: Not testable HTML: HTTP 503
Manual checks still required
Keyboard operation, meaningful alternatives, screen reader journeys, reflow, dynamic states and third-party transactions require separate evaluation.
Report review status: fixture assertions passed; sample evidence reviewed.