Accessibility conformance report

https://www.w3.org/WAI/demos/bad/before/home.html · assessed 2026-09-08 · WCAG 2.2 Level AA as adopted by EN 301 549

This service is assessed as non-conformant with EN 301 549. 60 defects were recorded across 1 page.

6
Criteria failed
1
Established as passing
22
Need a human
26
Not established

Findings

1.1.1 Non-text Content (Level A, EN 301 549 clause 9.1.1.1)

blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="border_left_top.gif"]
<img src="./img/border_left_top.gif" width="10px" height="10px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="border_top.gif"]
<img src="./img/border_top.gif" height="10px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="border_right_top.gif"]
<img src="./img/border_right_top.gif" width="10px" height="10px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="border_left.gif"]
<img src="./img/border_left.gif" width="10px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="top_logo_next_end.gif"]
<img src="./img/top_logo_next_end.gif" width="24px" height="86px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="top_weather.gif"]
<img src="./img/top_weather.gif" width="128px" height="86px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="top_logo_next_start.gif"]
<img src="./img/top_logo_next_start.gif" width="22px" height="86px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="mark.gif"]
<img src="./img/mark.gif" width="158px" height="7px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

td[colspan="5"][background="./img/marker2_w.gif"][width="780px"] > img[src$="marker2_w.gif"][width="78px"][height="1px"]
<img src=".img/marker2_w.gif" width="78px" height="1px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

td[width="155px"][background="./img/marker2_w.gif"] > img[src$="marker2_w.gif"][width="78px"][height="1px"]
<img src="./img/marker2_w.gif" width="78px" height="1px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[width="1"]
<img src="./img/marker2_t.gif" width="1" height="30px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[name="nav_home"]
<img name="nav_home" src="./img/nav_home.gif" width="88" height="27" hspace="15" border="0px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

tr[height="1px"]:nth-child(3) > td[width="154px"][background="./img/marker2_w.gif"] > img[src$="marker2_w.gif"][width="78px"][height="1px"]
<img src="./img/marker2_w.gif" width="78px" height="1px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="nav_news.gif"]
<img src="./img/nav_news.gif" name="nav_news" width="90" height="21" hspace="12" border="0px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

tr[height="1px"]:nth-child(5) > td[width="154px"][background="./img/marker2_w.gif"] > img[src$="marker2_w.gif"][width="78px"][height="1px"]
<img src="./img/marker2_w.gif" width="78px" height="1px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[name="nav_facts"]
<img name="nav_facts" src="./img/nav_facts.gif" width="105" height="23" hspace="9" border="0px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

tr[height="1px"]:nth-child(7) > td[width="154px"][background="./img/marker2_w.gif"] > img[src$="marker2_w.gif"][width="78px"][height="1px"]
<img src="./img/marker2_w.gif" width="78px" height="1px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="nav_survey.gif"]
<img src="./img/nav_survey.gif" name="nav_survey" width="107" height="32" hspace="8" border="0px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

tr[height="1px"]:nth-child(9) > td[width="154px"][background="./img/marker2_w.gif"] > img[src$="marker2_w.gif"][width="78px"][height="1px"]
<img src="./img/marker2_w.gif" width="78px" height="1px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

td[width="20px"]:nth-child(2) > img[src$="blank_5x5.gif"][height="5px"][width="20px"]
<img src="./img/blank_5x5.gif" width="20px" height="5px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

.newsheadline:nth-child(1) > img[src$="headline_middle.gif"][width="23"][height="24"]
<img src="./img/headline_middle.gif" width="23" height="24" align="absmiddle">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

.newsheadline:nth-child(2) > img[src$="headline_middle.gif"][width="23"][height="24"]
<img src="./img/headline_middle.gif" width="23" height="24" align="absmiddle">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

.newsheadline:nth-child(3) > img[src$="headline_middle.gif"][width="23"][height="24"]
<img src="./img/headline_middle.gif" width="23" height="24" align="absmiddle">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

td[width="20px"]:nth-child(4) > img[src$="blank_5x5.gif"][height="5px"][width="20px"]
<img src="./img/blank_5x5.gif" width="20px" height="5px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="marker2_t.gif"][height="30px"][width="1px"]
<img src="./img/marker2_t.gif" width="1px" height="30px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

td[width="151px"][background="./img/marker2_w.gif"] > img[src$="marker2_w.gif"][width="78px"][height="1px"]
<img src="./img/marker2_w.gif" width="78px" height="1px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="teaser_right1.jpg"]
<img src="./img/teaser_right1.jpg" width="150px" height="106px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

td[background="./img/marker2_w.gif"][width="150px"] > img[src$="marker2_w.gif"][width="78px"][height="1px"]
<img src="./img/marker2_w.gif" width="78px" height="1px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="teaser_right2.jpg"]
<img src="./img/teaser_right2.jpg" width="150px" height="154px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="border_right.gif"]
<img src="./img/border_right.gif" width="10px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="border_bottom_left.gif"]
<img src="./img/border_bottom_left.gif" width="10px" height="10px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="border_bottom.gif"]
<img src="./img/border_bottom.gif" height="10px">
blocker · Rule engine · image-alt · https://www.w3.org/WAI/demos/bad/before/home.html

Images must have alternative text

Ensure <img> elements have alternative text or a role of none or presentation 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"

img[src$="border_bottom_right.gif"]
<img src="./img/border_bottom_right.gif" width="10px" height="10px">

4.1.2 Name, Role, Value (Level A, EN 301 549 clause 9.4.1.2)

blocker · Rule engine · select-name · https://www.w3.org/WAI/demos/bad/before/home.html

Select element must have an accessible name

Ensure select element has an accessible name 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's default semantics were not overridden with role="none" or role="presentation"

select
<select onchange="location.href = this.value;">
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

#home > a[onfocus="blur();"]
<a href="javascript:location.href='home.html';" onfocus="blur();"><img name="nav_home" src="./img/nav_home.gif" width="88" height="27" hspace="15" border="0px"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

#news > a[onfocus="blur();"]
<a href="javascript:location.href='news.html';" onfocus="blur();"><img src="./img/nav_news.gif" name="nav_news" width="90" height="21" hspace="12" border="0px"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

#tickets > a[onfocus="blur();"]
<a href="javascript:location.href='tickets.html';" onfocus="blur();"><img name="nav_facts" src="./img/nav_facts.gif" width="105" height="23" hspace="9" border="0px"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

#survey > a[onfocus="blur();"]
<a href="javascript:location.href='survey.html';" onfocus="blur();"><img src="./img/nav_survey.gif" name="nav_survey" width="107" height="32" hspace="8" border="0px"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

.story:nth-child(1) > span > a[href$="news.html"][onfocus="blur();"]
<a href="news.html" onfocus="blur();"><img src="./img/morearrow.gif" width="48" height="10" alt="" border="0" onmouseover="this.src='./img/morearrow_a.gif'" onmouseout="this.src='./img/morearrow.gif'" style="vertical-align: bottom"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

.story:nth-child(2) > span > a[href$="news.html"][onfocus="blur();"]
<a href="news.html" onfocus="blur();"><img src="./img/morearrow.gif" width="48" height="10" alt="" border="0" onmouseover="this.src='./img/morearrow_a.gif'" onmouseout="this.src='./img/morearrow.gif'" style="vertical-align: bottom"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

.story:nth-child(3) > span > a[href$="news.html"][onfocus="blur();"]
<a href="news.html" onfocus="blur();"><img src="./img/morearrow.gif" width="48" height="10" alt="" border="0" onmouseover="this.src='./img/morearrow_a.gif'" onmouseout="this.src='./img/morearrow.gif'" style="vertical-align: bottom"></a>

1.4.3 Contrast (Minimum) (Level AA, EN 301 549 clause 9.1.4.3)

serious · Rule engine · color-contrast · https://www.w3.org/WAI/demos/bad/before/home.html

Elements must meet minimum color contrast ratio thresholds

Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds Fix any of the following: Element has insufficient color contrast of 3.88 (foreground color: #41545d, background color: #a9b8bf, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1

tr[height="25px"]:nth-child(2) > td[bgcolor="#A9B8BF"][width="150px"] > font[color="#41545D"][size="2"] > b
<b>Free Penguins</b>
serious · Rule engine · color-contrast · https://www.w3.org/WAI/demos/bad/before/home.html

Elements must meet minimum color contrast ratio thresholds

Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds Fix any of the following: Element has insufficient color contrast of 3.88 (foreground color: #41545d, background color: #a9b8bf, font size: 9.8pt (13px), font weight: bold). Expected contrast ratio of 4.5:1

tr[height="25px"]:nth-child(7) > td[bgcolor="#A9B8BF"][width="150px"] > font[color="#41545D"][size="2"] > b
<b>More City Parks</b>

2.4.4 Link Purpose (In Context) (Level A, EN 301 549 clause 9.2.4.4)

serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

#home > a[onfocus="blur();"]
<a href="javascript:location.href='home.html';" onfocus="blur();"><img name="nav_home" src="./img/nav_home.gif" width="88" height="27" hspace="15" border="0px"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

#news > a[onfocus="blur();"]
<a href="javascript:location.href='news.html';" onfocus="blur();"><img src="./img/nav_news.gif" name="nav_news" width="90" height="21" hspace="12" border="0px"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

#tickets > a[onfocus="blur();"]
<a href="javascript:location.href='tickets.html';" onfocus="blur();"><img name="nav_facts" src="./img/nav_facts.gif" width="105" height="23" hspace="9" border="0px"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

#survey > a[onfocus="blur();"]
<a href="javascript:location.href='survey.html';" onfocus="blur();"><img src="./img/nav_survey.gif" name="nav_survey" width="107" height="32" hspace="8" border="0px"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

.story:nth-child(1) > span > a[href$="news.html"][onfocus="blur();"]
<a href="news.html" onfocus="blur();"><img src="./img/morearrow.gif" width="48" height="10" alt="" border="0" onmouseover="this.src='./img/morearrow_a.gif'" onmouseout="this.src='./img/morearrow.gif'" style="vertical-align: bottom"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

.story:nth-child(2) > span > a[href$="news.html"][onfocus="blur();"]
<a href="news.html" onfocus="blur();"><img src="./img/morearrow.gif" width="48" height="10" alt="" border="0" onmouseover="this.src='./img/morearrow_a.gif'" onmouseout="this.src='./img/morearrow.gif'" style="vertical-align: bottom"></a>
serious · Rule engine · link-name · https://www.w3.org/WAI/demos/bad/before/home.html

Links must have discernible text

Ensure links have discernible text 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

.story:nth-child(3) > span > a[href$="news.html"][onfocus="blur();"]
<a href="news.html" onfocus="blur();"><img src="./img/morearrow.gif" width="48" height="10" alt="" border="0" onmouseover="this.src='./img/morearrow_a.gif'" onmouseout="this.src='./img/morearrow.gif'" style="vertical-align: bottom"></a>
moderate · Reviewed judgement · https://www.w3.org/WAI/demos/bad/before/home.html

Link purpose not clear from link text alone

The link text "WAI-AGE" is an acronym that does not convey its destination or purpose without additional context, violating the requirement that link purpose be determinable from its text or surrounding context.

#meta-footer > p:nth-of-type(1) > a:nth-of-type(5)
<a href="https://www.w3.org/WAI/WAI-AGE/"><acronym title="Web Accessibility Initiative: Ageing Education and Harmonisation">WAI-AGE</acronym></a>
Suggested fix
Replace the link text with a more descriptive phrase such as "WAI Ageing Education and Harmonisation" or add an aria-label that explains the link’s purpose.
moderate · Reviewed judgement · https://www.w3.org/WAI/demos/bad/before/home.html

Link purpose not clear from link text

The link text 'liability' does not convey what the link leads to; users cannot determine that it opens a legal disclaimer without additional context.

#meta-footer > div > p > a:nth-of-type(6)
<a href="https://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>
Suggested fix
Replace the link text with a more descriptive phrase such as 'Legal Disclaimer' or add an aria-label that describes the destination.
moderate · Reviewed judgement · https://www.w3.org/WAI/demos/bad/before/home.html

Link purpose not clear from link text

The link text 'trademark' is vague and does not inform users what information will be found after activation.

#meta-footer > div > p > a:nth-of-type(7)
<a href="https://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>
Suggested fix
Use clearer link text like 'W3C Trademark Policy' or provide an appropriate aria-label.
moderate · Reviewed judgement · https://www.w3.org/WAI/demos/bad/before/home.html

Link purpose not clear from link text

'document use' does not describe the specific content or purpose of the linked page, making it difficult for screen‑reader users to decide whether to follow it.

#meta-footer > div > p > a:nth-of-type(8)
<a rel="Copyright" href="https://www.w3.org/Consortium/Legal/copyright-documents">document use</a>
Suggested fix
Change the link text to something like 'Copyright Documents' or add an aria-label that explains the destination.
moderate · Reviewed judgement · https://www.w3.org/WAI/demos/bad/before/home.html

Link purpose not clear from link text

The phrase 'software licensing' alone does not indicate what the user will find; it lacks sufficient context for users relying on link text.

#meta-footer > div > p > a:nth-of-type(9)
<a rel="Copyright" href="https://www.w3.org/Consortium/Legal/copyright-software">software licensing</a>
Suggested fix
Use a more descriptive label such as 'Software Licensing Terms' or provide an aria-label.
moderate · Reviewed judgement · https://www.w3.org/WAI/demos/bad/before/home.html

Link purpose not clear from link text

The link text 'public' is ambiguous and does not convey the nature of the linked privacy statement.

#meta-footer > div > p > a:nth-of-type(10)
<a href="https://www.w3.org/Consortium/Legal/privacy-statement#Public">public</a>
Suggested fix
Replace with 'Public Privacy Statement' or add an appropriate aria-label.
moderate · Reviewed judgement · https://www.w3.org/WAI/demos/bad/before/home.html

Link purpose not clear from link text

The single word 'Member' does not inform users what the link leads to; it could refer to membership information, a member list, etc.

#meta-footer > div > p > a:nth-of-type(11)
<a href="https://www.w3.org/Consortium/Legal/privacy-statement#Members">Member</a>
Suggested fix
Use a more specific link text such as 'Member Privacy Information' or provide an aria-label describing the target.

2.5.8 Target Size (Minimum) (Level AA, EN 301 549 clause 9.2.5.8)

serious · Rule engine · target-size · https://www.w3.org/WAI/demos/bad/before/home.html

All touch targets must be 24px large, or leave sufficient space

Ensure touch targets have sufficient size and space Fix any of the following: Target has insufficient size (94px by 20px, should be at least 24px by 24px) Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 16px instead of at least 24px.

.inaccessible > .report[href$="home.html"]
<a href="./reports/home.html" class="report"><span class="hidden">Inaccessible Home Page </span> Report</a>
serious · Rule engine · target-size · https://www.w3.org/WAI/demos/bad/before/home.html

All touch targets must be 24px large, or leave sufficient space

Ensure touch targets have sufficient size and space Fix any of the following: Target has insufficient size (94px by 20px, should be at least 24px by 24px) Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of 16px instead of at least 24px.

.accessible > .report[href$="home.html"]
<a href="../after/reports/home.html" class="report"><span class="hidden">Accessible Home Page </span> Report</a>

3.1.1 Language of Page (Level A, EN 301 549 clause 9.3.1.1)

serious · Rule engine · html-has-lang · https://www.w3.org/WAI/demos/bad/before/home.html

<html> element must have a lang attribute

Ensure every HTML document has a lang attribute Fix any of the following: The <html> element does not have a lang attribute

html
<html>

Coverage, criterion by criterion

Every Level A and AA success criterion, and what this assessment was able to establish about it.

CriterionLevelStatusBasis
1.1.1 Non-text Content A fail 33 finding(s) recorded.
1.2.1 Audio-only and Video-only (Prerecorded) A needs-human-review No automated or model check can settle this. Is there a transcript for audio-only, and a transcript or audio track for video-only content?
1.2.2 Captions (Prerecorded) A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
1.2.3 Audio Description or Media Alternative (Prerecorded) A needs-human-review No automated or model check can settle this. Is visual information in video available as audio description or a text alternative?
1.2.4 Captions (Live) AA needs-human-review No automated or model check can settle this. Is live audio content captioned in real time?
1.2.5 Audio Description (Prerecorded) AA needs-human-review No automated or model check can settle this. Do prerecorded videos have an audio description track?
1.3.1 Info and Relationships A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
1.3.2 Meaningful Sequence A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
1.3.3 Sensory Characteristics A needs-human-review No automated or model check can settle this. Do instructions avoid relying solely on shape, colour, size or position, such as "click the round button on the right"?
1.3.4 Orientation AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
1.3.5 Identify Input Purpose AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
1.4.1 Use of Color A needs-human-review No automated or model check can settle this. Is colour ever the only way information is conveyed, such as a red field marking an error with no icon or text?
1.4.2 Audio Control A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
1.4.3 Contrast (Minimum) AA fail 2 finding(s) recorded.
1.4.4 Resize Text AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
1.4.5 Images of Text AA needs-human-review No automated or model check can settle this. Is text presented as real text rather than baked into an image?
1.4.10 Reflow AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
1.4.11 Non-text Contrast AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
1.4.12 Text Spacing AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
1.4.13 Content on Hover or Focus AA needs-human-review No automated or model check can settle this. Can additional content triggered by hover or focus be dismissed, hovered over, and does it persist?
2.1.1 Keyboard A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
2.1.2 No Keyboard Trap A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
2.1.4 Character Key Shortcuts A needs-human-review No automated or model check can settle this. Can single-character shortcuts be turned off or remapped?
2.2.1 Timing Adjustable A needs-human-review No automated or model check can settle this. Can time limits be turned off, adjusted or extended?
2.2.2 Pause, Stop, Hide A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
2.3.1 Three Flashes or Below Threshold A needs-human-review No automated or model check can settle this. Does anything flash more than three times per second?
2.4.1 Bypass Blocks A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
2.4.2 Page Titled A pass Fully decidable by the rule engine, which found no violation.
2.4.3 Focus Order A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
2.4.4 Link Purpose (In Context) A fail 14 finding(s) recorded.
2.4.5 Multiple Ways AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
2.4.6 Headings and Labels AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
2.4.7 Focus Visible AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
2.4.11 Focus Not Obscured (Minimum) AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
2.5.1 Pointer Gestures A needs-human-review No automated or model check can settle this. Do multipoint or path-based gestures have a single-pointer alternative?
2.5.2 Pointer Cancellation A needs-human-review No automated or model check can settle this. Can a pointer action be aborted or undone before completion?
2.5.3 Label in Name A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
2.5.4 Motion Actuation A needs-human-review No automated or model check can settle this. Can functions triggered by device motion also be operated by conventional controls?
2.5.7 Dragging Movements AA needs-human-review No automated or model check can settle this. Does anything requiring a drag also work with a single tap or click?
2.5.8 Target Size (Minimum) AA fail 2 finding(s) recorded.
3.1.1 Language of Page A fail 1 finding(s) recorded.
3.1.2 Language of Parts AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
3.2.1 On Focus A needs-human-review No automated or model check can settle this. Does receiving focus ever trigger an unexpected change of context?
3.2.2 On Input A needs-human-review No automated or model check can settle this. Does changing a setting ever submit a form or navigate without warning?
3.2.3 Consistent Navigation AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
3.2.4 Consistent Identification AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
3.2.6 Consistent Help A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
3.3.1 Error Identification A needs-human-review No automated or model check can settle this. Are input errors described to the user in text, not only by colour or position?
3.3.2 Labels or Instructions A not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.
3.3.3 Error Suggestion AA needs-human-review No automated or model check can settle this. When an error is detected and a correction is known, is it suggested?
3.3.4 Error Prevention (Legal, Financial, Data) AA needs-human-review No automated or model check can settle this. Are consequential submissions reversible, checked or confirmable?
3.3.7 Redundant Entry A needs-human-review No automated or model check can settle this. Is information the user already entered auto-populated or selectable rather than re-typed?
3.3.8 Accessible Authentication (Minimum) AA needs-human-review No automated or model check can settle this. Does login avoid requiring a cognitive function test such as transcribing a puzzle, with no alternative?
4.1.2 Name, Role, Value A fail 8 finding(s) recorded.
4.1.3 Status Messages AA not-tested Partly automatable. Nothing was found, but absence of findings is not a pass for this criterion.

Claims rejected during verification

The judgement pass proposed the following, and each was discarded because it could not be substantiated against the captured page. They are listed so the report can be judged on its method rather than on trust. They are not defects.

CriterionElement claimedWhy it was rejected
1.1.1td:nth-of-type(2) > table:nth-of-type(1) > tbody > tr:nth-of-type(1) > td:nth-of-type(2) >The rule engine already reported 1.1.1 on this element; the judgement pass is for defects automation cannot see.
1.1.1td:nth-of-type(2) > table:nth-of-type(1) > tbody > tr:nth-of-type(1) > td:nth-of-type(3) >The rule engine already reported 1.1.1 on this element; the judgement pass is for defects automation cannot see.
1.1.1td:nth-of-type(2) > table:nth-of-type(1) > tbody > tr:nth-of-type(1) > td:nth-of-type(4) >The rule engine already reported 1.1.1 on this element; the judgement pass is for defects automation cannot see.
1.1.1td > table > tbody > tr:nth-of-type(2) > td:nth-of-type(3) > imgThe rule engine already reported 1.1.1 on this element; the judgement pass is for defects automation cannot see.
1.1.1td > table > tbody > tr:nth-of-type(3) > td:nth-of-type(2) > imgThe rule engine already reported 1.1.1 on this element; the judgement pass is for defects automation cannot see.
1.1.1td > table > tbody > tr:nth-of-type(3) > td:nth-of-type(3) > imgThe rule engine already reported 1.1.1 on this element; the judgement pass is for defects automation cannot see.

What a person still needs to test

These criteria cannot be settled by any automated or model-based method. They are not failures and they are not passes: they are the work that remains. Each one below says what to do and what a failure looks like, so a developer who is not an accessibility specialist can carry it out and reach a defensible answer.

CriterionHow to test itA failure looks like
1.2.1
Audio-only and Video-only (Prerecorded)
Level A
Find every audio-only and video-only file. Check for a transcript on the same page or one click away. A podcast episode or silent product video with no text alternative anywhere.
1.2.3
Audio Description or Media Alternative (Prerecorded)
Level A
Play each prerecorded video with the sound off and note anything conveyed only by the picture. Check whether an audio description or a full text alternative covers it. An on-screen price, address or instruction that is never spoken and appears in no transcript.
1.2.4
Captions (Live)
Level AA
During any live stream, check that captions appear in real time. A live event with no captions, or captions added only after the event.
1.2.5
Audio Description (Prerecorded)
Level AA
For each prerecorded video, check for an audio description track or an equivalent described version. Visual-only information with no described alternative.
1.3.3
Sensory Characteristics
Level A
Read every instruction aloud and ask whether it still makes sense to someone who cannot see the layout or colours. "Press the green button on the right" or "fields marked in red are required".
1.4.1
Use of Color
Level A
View the page in greyscale. Check that nothing meaningful is lost: errors, required fields, chart series, availability states, link identification within body text. An invalid form field distinguished only by a red border, or a chart legend distinguished only by colour.
1.4.5
Images of Text
Level AA
Try to select the text in banners, buttons and headings. Zoom to 400% and look for blurring. Promotional text baked into a JPEG that pixelates on zoom and cannot be selected.
1.4.13
Content on Hover or Focus
Level AA
Hover and then keyboard-focus every tooltip, dropdown and popover. Try to dismiss it with Escape without moving the pointer, and try to move the pointer onto the popup itself. A tooltip that vanishes the moment you move towards it, or one Escape will not close.
2.1.4
Character Key Shortcuts
Level A
Press single letter keys while focus is in the page body and watch for actions firing. If any exist, look for a setting to disable or remap them. Pressing "s" opens search with no way to turn it off, so a speech-input user triggers it by talking.
2.2.1
Timing Adjustable
Level A
Find every time limit: session timeout, checkout hold, carousel auto-advance, one-time-code expiry. Check it can be turned off, adjusted, or extended before it expires. A checkout that empties the basket after fifteen minutes with no warning and no extension.
2.3.1
Three Flashes or Below Threshold
Level A
Watch any animation, video or transition for flashing. Anything flashing more than three times a second needs measuring against the general and red flash thresholds. A strobing hero animation or an autoplaying video with rapid cuts.
2.5.1
Pointer Gestures
Level A
Operate every slider, carousel, map, signature pad and swipeable element using a single tap or click only, with no dragging, pinching or tracing. An image gallery that only advances by swiping, or a map that only zooms by pinching.
2.5.2
Pointer Cancellation
Level A
Press the pointer down on a control, move away from it, and release. The action should not fire. A "delete" button that acts on mousedown, so it cannot be aborted.
2.5.4
Motion Actuation
Level A
Identify anything triggered by shaking, tilting or moving the device, and check a conventional control does the same job. Shake to undo, with no undo button.
2.5.7
Dragging Movements
Level AA
For every drag interaction, check a single-pointer alternative exists: reorder buttons, a move-to menu, or a form field. A basket that only lets you reorder items by dragging them.
3.2.1
On Focus
Level A
Tab through the whole page and watch for anything that happens on focus alone. A select that submits the form as soon as it receives focus, or a modal that opens on tab.
3.2.2
On Input
Level A
Change every input, radio, checkbox and select without pressing a submit button, and watch for navigation or content changes. Choosing a country reloads the page and discards what was already typed.
3.3.1
Error Identification
Level A
Submit every form with wrong and missing values. Check the error is described in text, names the field, and is announced to a screen reader. A red outline and nothing else, or a summary that says only "there was a problem".
3.3.3
Error Suggestion
Level AA
Enter values that are wrong in a knowable way: a malformed postcode, a date in the past, a too-short password. Check the message says how to fix it. "Invalid input" where the system plainly knows the expected format.
3.3.4
Error Prevention (Legal, Financial, Data)
Level AA
For anything financial, legal or that deletes data, check the submission is reversible, checked for errors, or confirmed on a review step. A one-click order with no review step and no cancellation window.
3.3.7
Redundant Entry
Level A
Work through a multi-step flow and note anything you are asked to enter twice. Re-typing a delivery address as the billing address with no copy option.
3.3.8
Accessible Authentication (Minimum)
Level AA
Complete sign-in and checkout. Check that no step requires solving a puzzle, transcribing characters or recalling something, without an alternative such as a password manager, email link or passkey. A distorted-text CAPTCHA with no non-visual alternative, or a field that blocks paste and so defeats a password manager.

Method

Three passes. A deterministic rule engine (axe-core) settles what can be decided mechanically and reproducibly. A judgement pass then reads the captured DOM, the browser-computed accessibility tree and the element inventory, and reports what the engine structurally cannot see, such as whether alternative text actually describes anything or whether link text conveys its destination.

Every judgement claim is then verified against the captured evidence before it is allowed into this report. It must cite a success criterion that exists, resolve to exactly one element that was actually captured, quote markup that element genuinely contains, not overturn a fully automatable criterion the engine found clean, and not restate a defect the engine already reported. Claims failing any of these are rejected and listed above.

The assessment did not operate the page. Criteria that depend on keyboard interaction, focus movement, hover behaviour, timing or error handling cannot be settled this way and are reported as requiring human review.

Draft accessibility statement

The European Accessibility Act requires a covered service to publish a statement of how it conforms. The following is a draft. It deliberately does not claim full conformance, and fields requiring a human decision are left blank.

ACCESSIBILITY STATEMENT (DRAFT)

CityLights (W3C demonstration site) is committed to making the CityLights website accessible, in accordance with the
European Accessibility Act (Directive (EU) 2019/882).

COMPLIANCE STATUS

the CityLights website is non-conformant with EN 301 549, which adopts the Web Content
Accessibility Guidelines (WCAG) 2.2 at Level AA. It is non-conformant because defects that block completion of tasks were identified and are not yet resolved.

NON-ACCESSIBLE CONTENT

The following success criteria had defects recorded on 2026-09-08:

  - 1.1.1 Non-text Content (Level A): 33 issue(s) recorded.
  - 1.4.3 Contrast (Minimum) (Level AA): 2 issue(s) recorded.
  - 2.4.4 Link Purpose (In Context) (Level A): 14 issue(s) recorded.
  - 2.5.8 Target Size (Minimum) (Level AA): 2 issue(s) recorded.
  - 3.1.1 Language of Page (Level A): 1 issue(s) recorded.
  - 4.1.2 Name, Role, Value (Level A): 8 issue(s) recorded.

SCOPE AND LIMITS OF THIS ASSESSMENT

This statement is based on an assessment of 1 page(s)
listed at the end of this statement, carried out on 2026-09-08.

The assessment combined an automated rule engine with a reviewed judgement pass.
It is not a substitute for a full manual audit. Of the 55 Level A and AA
success criteria, 48 could not be conclusively established by this
method and require testing by a person, including testing with a screen reader
and by keyboard alone. Those criteria are neither claimed as conforming nor
reported as failing.

FEEDBACK AND CONTACT

If you encounter a barrier using the CityLights website, please contact us at [TO BE COMPLETED].
We aim to respond within [NUMBER] working days.

ENFORCEMENT PROCEDURE

If you are not satisfied with our response, you may contact [TO BE COMPLETED].

PAGES ASSESSED

  - https://www.w3.org/WAI/demos/bad/before/home.html

Statement prepared on 2026-09-08.
Method: automated assessment with verified judgement review.

---
This is a draft. Fields marked [TO BE COMPLETED] must be completed, the outstanding
defects should be remediated or explained, and the statement should be reviewed
by someone qualified before it is published. A published statement is a formal
assertion about your service.