This service is assessed as non-conformant with EN 301 549. 60 defects were recorded across 1 page.
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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">
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;">
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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.
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>
Replace the link text with a more descriptive phrase such as 'Legal Disclaimer' or add an aria-label that describes the destination.
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>
Use clearer link text like 'W3C Trademark Policy' or provide an appropriate aria-label.
'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>
Change the link text to something like 'Copyright Documents' or add an aria-label that explains the destination.
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>
Use a more descriptive label such as 'Software Licensing Terms' or provide an aria-label.
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>
Replace with 'Public Privacy Statement' or add an appropriate aria-label.
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>
Use a more specific link text such as 'Member Privacy Information' or provide an aria-label describing the target.
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>
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>
Ensure every HTML document has a lang attribute Fix any of the following: The <html> element does not have a lang attribute
html
<html>
Every Level A and AA success criterion, and what this assessment was able to establish about it.
| Criterion | Level | Status | Basis |
|---|---|---|---|
| 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. |
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.
| Criterion | Element claimed | Why it was rejected |
|---|---|---|
| 1.1.1 | td: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.1 | td: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.1 | td: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.1 | td > table > tbody > tr:nth-of-type(2) > td:nth-of-type(3) > img | The rule engine already reported 1.1.1 on this element; the judgement pass is for defects automation cannot see. |
| 1.1.1 | td > table > tbody > tr:nth-of-type(3) > td:nth-of-type(2) > img | The rule engine already reported 1.1.1 on this element; the judgement pass is for defects automation cannot see. |
| 1.1.1 | td > table > tbody > tr:nth-of-type(3) > td:nth-of-type(3) > img | The rule engine already reported 1.1.1 on this element; the judgement pass is for defects automation cannot see. |
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.
| Criterion | How to test it | A 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. |
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.
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.