Accessibility audit
Sample — https://www.w3.org/WAI/demos/bad/before/home.html · WCAG 2.2 Level AA
Summary
We tested 10 pages against WCAG 2.2 AA and found 7 distinct problems, appearing 276 times in total. 3 are critical and 4 are serious - these are the ones that stop someone completing a task rather than merely annoying them.
Findings, worst first
Ranked by severity first, then by how much of the site is affected.
Images must have alternative text
#1<!-- meaningful --> <img src="team.jpg" alt="The support team at the Leeds office"> <!-- decorative: empty alt, NOT missing alt --> <img src="divider.svg" alt="">
img[src$="border_left_top.gif"] — on 6 pages- https://www.w3.org/WAI/demos/bad/before/annotated/home.html
- https://www.w3.org/WAI/demos/bad/before/home.html
img[src$="border_top.gif"] — on 6 pages- https://www.w3.org/WAI/demos/bad/before/annotated/home.html
- https://www.w3.org/WAI/demos/bad/before/home.html
img[src$="border_left.gif"] — on 6 pages- https://www.w3.org/WAI/demos/bad/before/annotated/home.html
- https://www.w3.org/WAI/demos/bad/before/home.html
Select element must have an accessible name
#2<label for="country">Country</label> <select id="country" name="country">...</select>
select — on 6 pages- https://www.w3.org/WAI/demos/bad/before/annotated/home.html
- https://www.w3.org/WAI/demos/bad/before/home.html
select[name="cc"] — on 1 pageAll touch targets must be 24px large, or leave sufficient space
#3.icon-btn { min-width: 24px; min-height: 24px; padding: 8px; }
.inaccessible > .report[href$="home.html"] — on 6 pages- https://www.w3.org/WAI/demos/bad/before/annotated/home.html
- https://www.w3.org/WAI/demos/bad/before/home.html
.inaccessible > .page[href$="home.html"] — on 4 pages- https://www.w3.org/WAI/demos/bad/before/reports/home.html
- https://www.w3.org/WAI/demos/bad/before/reports/news.html
a[href$="#annot_06"] — on 1 pageLinks must have discernible text
#4<!-- broken: icon only --> <a href="/cart"><svg .../></a> <!-- fixed --> <a href="/cart" aria-label="View your basket"><svg aria-hidden="true" .../></a>
#home > a[onfocus="blur();"] — on 6 pages- https://www.w3.org/WAI/demos/bad/before/annotated/home.html
- https://www.w3.org/WAI/demos/bad/before/home.html
#news > a[onfocus="blur();"] — on 6 pages- https://www.w3.org/WAI/demos/bad/before/annotated/home.html
- https://www.w3.org/WAI/demos/bad/before/home.html
#tickets > a[onfocus="blur();"] — on 6 pages- https://www.w3.org/WAI/demos/bad/before/annotated/home.html
- https://www.w3.org/WAI/demos/bad/before/home.html
Elements must meet minimum color contrast ratio thresholds
#5/* 2.3:1 - fails */
.muted { color: #9aa0a6; background: #ffffff; }
/* 4.6:1 - passes */
.muted { color: #6b7177; background: #ffffff; }
tr[height="25px"]:nth-child(2) > td[bgcolor="#A9B8BF"][width="150px"] > font[color="#41545D"][size="2"] > b — on 3 pages- https://www.w3.org/WAI/demos/bad/before/annotated/home.html
- https://www.w3.org/WAI/demos/bad/before/home.html
table[width="250px"] > tbody > tr[bgcolor="#A9B8BF"] > td:nth-child(1) > b > font[color="41545D"] — on 1 page<html> element must have a lang attribute
#6<html lang="en-GB">
Form elements must have labels
#7<!-- broken --> <input type="email" placeholder="Email"> <!-- fixed --> <label for="email">Email address</label> <input type="email" id="email" name="email" autocomplete="email">
input[value="1"] — on 1 pageinput[value="2"] — on 1 pageinput[value="3"] — on 1 pagePages tested
Method and limits
Every page listed above was loaded in a real Chromium browser at 1280×900, given time for client-side rendering to settle, and tested with axe-core 4.10.2 against the WCAG 2.0, 2.1 and 2.2 Level A and AA rule sets. Best-practice rules that are not part of the standard were excluded deliberately, so nothing here is padding.
Identical defects repeated across pages were collapsed into one finding, so the counts reflect how much work there is to do rather than how many pages you have.
Questions about anything in this report: [email protected]