diff --git a/docs/index.html b/docs/index.html index ff69925..6fb3696 100644 --- a/docs/index.html +++ b/docs/index.html @@ -56,13 +56,14 @@
-- Axe core library found 3 violations on - http://example.com/ page -
+axe-core found 85 violations
+
1 | +Buttons must have discernible text | +button-name | +WCAG 2.0 Level A | +critical | +1 | +|
---|---|---|---|---|---|---|
2 | +Elements must have sufficient color contrast | +color-contrast | +WCAG 2.0 Level AA | +serious | +11 | +|
3 | +IDs of active elements must be unique | +duplicate-id-active | +WCAG 2.0 Level A | +serious | +1 | +|
4 | +id attribute value must be unique | +duplicate-id | +WCAG 2.0 Level A | +minor | +10 | +|
5 | +Frames must have title attribute | +frame-title | +WCAG 2.0 Level A | +serious | +2 | +|
6 | <html> element must have a lang attribute | html-has-lang | WCAG 2.0 Level A | @@ -85,46 +126,93 @@1 | ||
2 | +7 | +Images must have alternate text | +image-alt | +WCAG 2.0 Level A | +critical | +4 | +
8 | +Form elements must have labels | +label | +WCAG 2.0 Level A | +critical | +1 | +|
9 | Document must have one main landmark | landmark-one-main | Best practice | moderate | +4 | +|
10 | +Ensures landmarks are unique | +landmark-unique | +Best practice | +moderate | 1 | |
3 | +11 | +Links must be distinguished from surrounding text in a way that does not rely on color | +link-in-text-block | +WCAG 2.0 Level A | +serious | +1 | +
12 | +Links must have discernible text | +link-name | +WCAG 2.0 Level A | +serious | +8 | +|
13 | All page content must be contained by landmarks | region | Best practice | moderate | -1 | +37 | +
14 | +Elements should not have tabindex greater than zero | +tabindex | +Best practice | +serious | +3 |
Ensures every HTML document has a lang attribute
+Ensures buttons have discernible text
Ensures the document has a main landmark
+Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds
Ensures all page content is contained by landmarks
+Ensures every id attribute value of active elements is unique
# | -Description | -Axe rule ID | -WCAG | -Nodes passed check | -
---|---|---|---|---|
1 | -aria-hidden='true' must not be present on the document body | -aria-hidden-body | -WCAG 2.0 Level A | -1 | -
2 | -Page must have means to bypass repeated blocks | -bypass | -WCAG 2.0 Level A | -1 | -
3 | -Elements must have sufficient color contrast | -color-contrast | -WCAG 2.0 Level AA | -3 | -
4 | -Documents must have <title> element to aid in navigation | -document-title | -WCAG 2.0 Level A | -1 | -
5 | -Headings must not be empty | -empty-heading | -Best practice | -1 | -
6 | -Heading levels should only increase by one | -heading-order | -Best practice | -1 | -
7 | -Hidden content on the page cannot be analyzed | -hidden-content | -Best practice | -14 | -
8 | -Links must have discernible text | -link-name | -WCAG 2.0 Level A | -1 | -
9 | -Users should be able to zoom and scale the text up to 500% | -meta-viewport-large | -Best practice | -1 | -
10 | -Zooming and scaling must not be disabled | -meta-viewport | -Best practice | -1 | -
11 | -Page must contain a level-one heading | -page-has-heading-one | -Best practice | -1 | -
12 | -All page content must be contained by landmarks | -region | -Best practice | -4 | -
Ensures every id attribute value is unique
+# | +Source Code | +Selector | +
---|---|---|
1 | +<div id="control-panel" class="container-fluid-full"> | +".loginnow > .container-fluid-full" | +
2 | +<nav id="left-control-nav" class="pull-left"> | +".loginnow > .container-fluid-full > .container > .span5.pull-left.left-first > .pull-left:nth-child(1)" | +
3 | +<div id="search-bar" class="pull-left"> +<form id="search" action="/demo/mars/mars2" method="get"> +<input type="hidden" name="fn" value="Search"> +<input type="text" class="search" name="query" placeholder="search"> +<input type="submit" class="control-search"> +</form> +</div> | +".loginnow > .container-fluid-full > .container > .span5.pull-left.left-first > .pull-left:nth-child(2)" | +
4 | +<form id="search" action="/demo/mars/mars2" method="get"> +<input type="hidden" name="fn" value="Search"> +<input type="text" class="search" name="query" placeholder="search"> +<input type="submit" class="control-search"> +</form> | +":root > form[method="get"][action="\/demo\/mars\/mars2"]" | +
5 | +<nav id="right-control-nav" class="pull-right" style="display: inline;"> | +".loginnow > .container-fluid-full > .container > .span7.pull-right > .pull-right" | +
6 | +<div id="vap-section"> +<h1 style="color:#eee;">Destination Mars </h1> +<h2 style="color:#acbad0;">A trip to Mars starts in your imagination. Are you bold enough, brave enough, <strong>foolish enough?</strong> We are. You belong on Mars with fools like us. Most of us don't bite. Much.</h2></div> | +"#left-column > div:nth-child(1)" | +
7 | +<input type="hidden" id="nCountries" name="nCountries"> | +"#select-country > input[name="nCountries"][type="hidden"]" | +
8 | +<div id="passenger-select" class="widget-container middle"> | +".middle.widget-container:nth-child(13)" | +
9 | +<div id="passengers"> | +".middle.widget-container:nth-child(13) > .interior-container > div:nth-child(3)" | +
10 | +<div id="ui-datepicker-div" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div> | +".ui-datepicker.ui-helper-clearfix.ui-corner-all:nth-child(33)" | +
Ensures <iframe> and <frame> elements contain a non-empty title attribute
+# | +Source Code | +Selector | +
---|---|---|
1 | +<iframe width="365" height="205" name="player" id="player" src="https://www.youtube.com/embed/OagLGti_hTE?controls=1&showinfo=1&modestbranding=0&wmode=opaque&enablejsapi=1" frameborder="0" allowfullscreen=""></iframe> | +"#player" | +
2 | +<iframe id="fafbba78" name="f2bc5e72d" scrolling="no" style="border: none; overflow: hidden; height: 62px; width: 292px;" class="fb_ltr" src="/assets/demo-sites/mars/js/likebox.html"></iframe> | +"#fafbba78" | +
Ensures every HTML document has a lang attribute
+# | +Source Code | +Selector | +
---|---|---|
1 | +<html class=" js no-flexbox flexbox-legacy canvas canvastext webgl no-touch geolocation postmessage websqldatabase indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessionstorage webworkers applicationcache svg inlinesvg smil svgclippaths js no-flexbox flexbox-legacy canvas canvastext webgl no-touch geolocation postmessage websqldatabase indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessionstorage webworkers no-applicationcache svg inlinesvg smil svgclippaths"> | +"html" | +
Ensures <img> elements have alternate text or a role of none or presentation
+# | +Source Code | +Selector | +
---|---|---|
1 | +<img src="/assets/demo-sites/mars/js/seg" width="1" height="1"> | +"img[src$="seg"]" | +
2 | +<img src="/assets/demo-sites/mars/images/mars-spaceman.jpg" class="" width="210" height="120"> | +":root > img[width="\32 10"][height="\31 20"]" | +
3 | +<img src="/assets/demo-sites/mars/images/mars-spaceman.jpg" class="" width="210" height="120"> | +":root > img[width="\32 10"][height="\31 20"]" | +
4 | +<img src="/assets/demo-sites/mars/images/mars-spaceman.jpg" class="" width="210" height="120"> | +":root > img[width="\32 10"][height="\31 20"]" | +
Ensures every form element has a label
+# | +Source Code | +Selector | +
---|---|---|
1 | +<input type="text" class="search" name="query" placeholder="search"> | +":root > .search[name="query"][placeholder="search"]" | +
Ensures the document has a main landmark
+# | +Source Code | +Selector | +
---|---|---|
1 | +<html class=" js no-flexbox flexbox-legacy canvas canvastext webgl no-touch geolocation postmessage websqldatabase indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessionstorage webworkers applicationcache svg inlinesvg smil svgclippaths js no-flexbox flexbox-legacy canvas canvastext webgl no-touch geolocation postmessage websqldatabase indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessionstorage webworkers no-applicationcache svg inlinesvg smil svgclippaths"> | +"html" | +
2 | +<html lang="en" dir="ltr" data-cast-api-enabled="true"> | +"#player", "html" | +
3 | +<html lang="en" id="facebook" class=""> | +"#fafbba78", "#facebook" | +
4 | +<html lang="en" class=" xl en"> | +".twitter-follow-button", "html" | +
Landmarks must have a unique role or role/label/title (i.e. accessible name) combination
+# | +Source Code | +Selector | +
---|---|---|
1 | +<nav id="left-control-nav" class="pull-left"> | +".loginnow > .container-fluid-full > .container > .span5.pull-left.left-first > .pull-left:nth-child(1)" | +
Links can be distinguished without relying on color
+# | +Source Code | +Selector | +
---|---|---|
1 | +<a href="mars2.html?a=last_will">prepare your last will and testament</a> | +"a[href="mars2\.html\?a\=last_will"]" | +
Ensures links have discernible text
+# | +Source Code | +Selector | +
---|---|---|
1 | +<a class="link" href="demo/mars/#"><i class="icon-menu-home"></i> </a> | +".link[href$="mars\/\#"]" | +
2 | +<a href="mars2.html?a=crater_adventure"> +<img src="/assets/demo-sites/mars/images/mars-spaceman.jpg" class="" width="210" height="120"></a> | +":root > a[href="mars2\.html\?a\=crater_adventure"]" | +
3 | +<a href="mars2.html?a=crater_adventure"> +<img src="/assets/demo-sites/mars/images/mars-spaceman.jpg" class="" width="210" height="120"></a> | +":root > a[href="mars2\.html\?a\=crater_adventure"]" | +
4 | +<a href="mars2.html?a=crater_adventure"> +<img src="/assets/demo-sites/mars/images/mars-spaceman.jpg" class="" width="210" height="120"></a> | +":root > a[href="mars2\.html\?a\=crater_adventure"]" | +
5 | +<a href="mars2.html?a="></a> | +":root > a[href="mars2\.html\?a\="]" | +
6 | +<a target="player" data-text="Life was possible on Mars" class="fader first active" href="http://www.youtube.com/embed/OagLGti_hTE?controls=1&showinfo=1&modestbranding=0&wmode=opaque&enablejsapi=1" id="default"></a> | +".active" | +
7 | +<a target="player" data-text="Why Mars died" class="fader first" href="http://www.youtube.com/embed/oC31pqk9sak?controls=1&showinfo=1&modestbranding=0&wmode=opaque&enablejsapi=1" id="default"></a> | +"a[data-text="Why\ Mars\ died"]" | +
8 | +<a target="player" data-text="The world that never was" class="fader first" href="http://www.youtube.com/embed/JgMXPXdqJn8?controls=1&showinfo=1&modestbranding=0&wmode=opaque&enablejsapi=1" id="default"></a> | +"a[data-text="The\ world\ that\ never\ was"]" | +
Ensures all page content is contained by landmarks
+# | +Source Code | +Selector | +
---|---|---|
1 | +<div style="width: 1px; height: 1px; display: inline;"> | +"body > div:nth-child(1)" | +
2 | +<div id="purposeDisclaimer">This web page is for demonstration purposes, to show common accessibility errors.</div> | +"#purposeDisclaimer" | +
3 | +<input type="text" class="search" name="query" placeholder="search"> | +":root > .search[name="query"][placeholder="search"]" | +
4 | +<input type="submit" class="control-search"> | +":root > .control-search[type="submit"]" | +
5 | +<div class="span7 left-first pull-left" id="left-column"> | +"#left-column" | +
6 | +<div id="widget-controls" class="widget-container head"> | +"#widget-controls" | +
7 | +<h3>Book your Trip</h3> | +"#route-select > .interior-container > h3" | +
8 | +<div id="route-type-radio-group" class=""> | +"#route-type-radio-group" | +
9 | +<div id="route-type"> | +"#route-type" | +
10 | +<div id="pass-question-radio-group" class=""> | +"#pass-question-radio-group" | +
11 | +<h3>Who Is Traveling?</h3> | +".middle.widget-container:nth-child(13) > .interior-container > h3" | +
12 | +<span class="wrapper"> +<span class="traveler-label">Traveler</span> +</span> | +"#passenger0 > .wrapper:nth-child(1)" | +
13 | +<span class="wrapper age-range"> +<select id="traveler0" class="traveler-type"> +<option value="0">Adult (26+)</option> +<option value="1">Youth (12-25)</option> +<option value="2">Child (4-11)</option> +<option value="3">Senior (60+)</option> +</select> +</span> | +"#passenger0 > .age-range.wrapper" | +
14 | +<div class="add-buttons" id="add-traveler"> | +"#add-traveler" | +
15 | +<div id="booking-box-submit" class="widget-container footer"> | +"#booking-box-submit" | +
16 | +<div class="interior-container"> | +"#video-box > .interior-container" | +
17 | +<div id="social-bar" class="container-fluid-full"> | +"#social-bar" | +
18 | +<h4>Book Your Trip</h4> | +"#footer-book > h4" | +
19 | +<ul> | +"#footer-book > ul" | +
20 | +<h4>Mars Shuttles</h4> | +"#footer-trains > h4" | +
21 | +<ul> | +"#footer-trains > ul" | +
22 | +<h4>Mars Tourist Passes</h4> | +"#footer-passes > h4" | +
23 | +<ul> | +"#footer-passes > ul" | +
24 | +<h4>Mars Adventures</h4> | +"#footer-plan > h4" | +
25 | +<ul> | +"#footer-plan > ul" | +
26 | +<h4>FAQs</h4> | +"#footer-faq > h4" | +
27 | +<ul> | +"#footer-faq > ul" | +
28 | +<h4>Connect With Us</h4> | +"#footer-connect > h4" | +
29 | +<ul> | +"#footer-connect > ul" | +
30 | +<div id="copyright" class="container"> | +"#copyright" | +
31 | +<div id="player" style="width: 100%; height: 100%;"> | +"#player", "#player" | +
32 | +<tr><td><span class="fsl fwb"><a href="../mars2.html" target="_blank">Mars Commuter Express</a></span></td></tr> | +"#fafbba78", "._8m > table > tbody > tr:nth-child(1)" | +
33 | +<div class="pluginButton pluginConnectButtonDisconnected" title=""><div><button type="submit"><i class="pluginButtonIcon img sp_like sx_like_thumb"></i>Like</button></div></div> | +"#fafbba78", ".pluginConnectButtonDisconnected" | +
34 | +<span id="u_0_2">378,121</span> | +"#fafbba78", "#u_0_2" | +
35 | +<div class="btn-o" contextmenu="menu"><a id="follow-button" target="_blank" class="btn" title="Follow MarsCommuter on Twitter" href="mars2.html"><i></i><span class="label" id="l">Follow @MarsTrip1</span></a></div> | +".twitter-follow-button", ".btn-o" | +
36 | +<img src="../images/f.gif" alt="" style="position: absolute; height: 1px; width: 1px; top: -9999px; left: -9999px;"> | +".twitter-follow-button", "img[src="\.\.\/images\/f\.gif"]" | +
37 | +<img src="jot" alt="" style="position: absolute; height: 1px; width: 1px; top: -9999px; left: -9999px;"> | +".twitter-follow-button", "img[src$="jot"]" | +
Ensures tabindex attribute values are not greater than 0
+# | +Source Code | +Selector | +
---|---|---|
1 | +<input type="text" value="" class="city-input ac_input ui-autocomplete-input" autocomplete="off" id="from0" name="from0" tabindex="1" role="textbox" aria-autocomplete="list" aria-haspopup="true"> | +"#from0" | +
2 | +<input type="text" value="" class="city-input ac_input ui-autocomplete-input" autocomplete="off" id="to0" name="to0" tabindex="1" role="textbox" aria-autocomplete="list" aria-haspopup="true"> | +"#to0" | +
3 | +<input size="10" id="deptDate0" name="deptDate0" placeholder="mm/dd/yyyy" value="" tabindex="3" class="hasDatepicker input-dept"> | +"#deptDate0" | +
# | +Description | +Axe rule ID | +WCAG | +Nodes passed check | +
---|---|---|---|---|
1 | +Elements must only use allowed ARIA attributes | +aria-allowed-attr | +WCAG 2.0 Level A | +10 | +
2 | +ARIA role must be appropriate for the element | +aria-allowed-role | +Best practice | +14 | +
3 | +aria-hidden='true' must not be present on the document body | +aria-hidden-body | +WCAG 2.0 Level A | +1 | +
4 | +ARIA hidden element must not contain focusable elements | +aria-hidden-focus | +WCAG 2.0 Level A | +2 | +
5 | +Required ARIA attributes must be provided | +aria-required-attr | +WCAG 2.0 Level A | +13 | +
6 | +Certain ARIA roles must contain particular children | +aria-required-children | +WCAG 2.0 Level A | +13 | +
7 | +Certain ARIA roles must be contained by particular parents | +aria-required-parent | +WCAG 2.0 Level A | +13 | +
8 | +ARIA roles used must conform to valid values | +aria-roles | +WCAG 2.0 Level A | +13 | +
9 | +ARIA attributes must conform to valid values | +aria-valid-attr-value | +WCAG 2.0 Level A | +10 | +
10 | +ARIA attributes must conform to valid names | +aria-valid-attr | +WCAG 2.0 Level A | +10 | +
11 | +autocomplete attribute must be used correctly | +autocomplete-valid | +WCAG 2.1 Level AA | +3 | +
12 | +Inline text spacing must be adjustable with custom stylesheets | +avoid-inline-spacing | +WCAG 2.1 Level AA | +8 | +
13 | +Buttons must have discernible text | +button-name | +WCAG 2.0 Level A | +12 | +
14 | +Page must have means to bypass repeated blocks | +bypass | +WCAG 2.0 Level A | +1 | +
15 | +Documents must have <title> element to aid in navigation | +document-title | +WCAG 2.0 Level A | +1 | +
16 | +IDs used in ARIA and labels must be unique | +duplicate-id-aria | +WCAG 2.0 Level A | +7 | +
17 | +id attribute value must be unique | +duplicate-id | +WCAG 2.0 Level A | +20 | +
18 | +Headings must not be empty | +empty-heading | +Best practice | +6 | +
19 | +Form field should not have multiple label elements | +form-field-multiple-labels | +WCAG 2.0 Level A | +17 | +
20 | +Heading levels should only increase by one | +heading-order | +Best practice | +6 | +
21 | +Hidden content on the page cannot be analyzed | +hidden-content | +Best practice | +434 | +
22 | +<html> element must have a lang attribute | +html-has-lang | +WCAG 2.0 Level A | +1 | +
23 | +<html> element must have a valid value for the lang attribute | +html-lang-valid | +WCAG 2.0 Level A | +1 | +
24 | +Elements must have their visible text as part of their accessible name | +label-content-name-mismatch | +WCAG 2.1 Level A | +1 | +
25 | +Form elements should have a visible label | +label-title-only | +Best practice | +17 | +
26 | +Form elements must have labels | +label | +WCAG 2.0 Level A | +12 | +
27 | +Links must be distinguished from surrounding text in a way that does not rely on color | +link-in-text-block | +WCAG 2.0 Level A | +1 | +
28 | +Links must have discernible text | +link-name | +WCAG 2.0 Level A | +5 | +
29 | +<ul> and <ol> must only directly contain <li>, <script> or <template> elements | +list | +WCAG 2.0 Level A | +1 | +
30 | +<li> elements must be contained in a <ul> or <ol> | +listitem | +WCAG 2.0 Level A | +3 | +
31 | +Users should be able to zoom and scale the text up to 500% | +meta-viewport-large | +Best practice | +1 | +
32 | +Zooming and scaling must not be disabled | +meta-viewport | +Best practice | +1 | +
33 | +Page must contain a level-one heading | +page-has-heading-one | +Best practice | +1 | +
34 | +All page content must be contained by landmarks | +region | +Best practice | +280 | +
35 | +Elements should not have tabindex greater than zero | +tabindex | +Best practice | +5 | +
36 | +The <caption> element should not contain the same text as the summary attribute | +table-duplicate-name | +Best practice | +1 | +
37 | +Data or header cells should not be used to give caption to a data table. | +table-fake-caption | +WCAG 2.0 Level A | +1 | +
38 | +All cells in a table element that use the headers attribute must only refer to other cells of that same table | +td-headers-attr | +WCAG 2.0 Level A | +1 | +
What 'incomplete' axe result means?
+What 'incomplete' axe checks means?
Explanation from axe core documentation: Incomplete results were aborted and require further testing. This can happen either because @@ -410,16 +1558,336 @@
What 'inapplicable' axe checks means?
++ Explanation from axe core documentation: The inapplicable array + lists all the rules for which no matching elements were found on the + page. +
+# | +Description | +Axe rule ID | +WCAG |
---|---|---|---|
1 | +accesskey attribute value must be unique | +accesskeys | +Best practice | +
2 | +Active <area> elements must have alternate text | +area-alt | +WCAG 2.0 Level A | +
3 | +ARIA input fields must have an accessible name | +aria-input-field-name | +WCAG 2.0 Level A | +
4 | +Use aria-roledescription on elements with a semantic role | +aria-roledescription | +WCAG 2.0 Level A | +
5 | +ARIA toggle fields have an accessible name | +aria-toggle-field-name | +WCAG 2.0 Level A | +
6 | +<audio> elements must have a captions track | +audio-caption | +WCAG 2.0 Level A | +
7 | +<blink> elements are deprecated and must not be used | +blink | +WCAG 2.0 Level A | +
8 | +<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements | +definition-list | +WCAG 2.0 Level A | +
9 | +<dt> and <dd> elements must be contained by a <dl> | +dlitem | +WCAG 2.0 Level A | +
10 | +Elements in the focus order need a role appropriate for interactive content | +focus-order-semantics | +Best practice | +
11 | +HTML elements with lang and xml:lang must have the same base language | +html-xml-lang-mismatch | +WCAG 2.0 Level A | +
12 | +Image buttons must have alternate text | +input-image-alt | +WCAG 2.0 Level A | +
13 | +Elements must have their visible text as part of their accessible name | +label-content-name-mismatch | +WCAG 2.1 Level A | +
14 | +Banner landmark must not be contained in another landmark | +landmark-banner-is-top-level | +Best practice | +
15 | +Aside must not be contained in another landmark | +landmark-complementary-is-top-level | +Best practice | +
16 | +Contentinfo landmark must not be contained in another landmark | +landmark-contentinfo-is-top-level | +Best practice | +
17 | +Main landmark must not be contained in another landmark | +landmark-main-is-top-level | +Best practice | +
18 | +Document must not have more than one banner landmark | +landmark-no-duplicate-banner | +Best practice | +
19 | +Document must not have more than one contentinfo landmark | +landmark-no-duplicate-contentinfo | +Best practice | +
20 | +Document must not have more than one main landmark | +landmark-no-duplicate-main | +Best practice | +
21 | +<marquee> elements are deprecated and must not be used | +marquee | +WCAG 2.0 Level A | +
22 | +Timed refresh must not exist | +meta-refresh | +WCAG 2.0 Level A | +
23 | +<object> elements must have alternate text | +object-alt | +WCAG 2.0 Level A | +
24 | +Bold, italic text and font-size are not used to style p elements as a heading | +p-as-heading | +WCAG 2.0 Level A | +
25 | +[role='img'] elements have an alternative text | +role-img-alt | +WCAG 2.0 Level A | +
26 | +scope attribute should be used correctly | +scope-attr-valid | +Best practice | +
27 | +Ensure that scrollable region has keyboard access | +scrollable-region-focusable | +WCAG 2.0 Level A | +
28 | +Server-side image maps must not be used | +server-side-image-map | +WCAG 2.0 Level A | +
29 | +The skip-link target should exist and be focusable | +skip-link | +Best practice | +
30 | +svg elements with an img role have an alternative text | +svg-img-alt | +WCAG 2.0 Level A | +
31 | +Data or header cells should not be used to give caption to a data table. | +table-fake-caption | +WCAG 2.0 Level A | +
32 | +All non-empty td element in table larger than 3 by 3 must have an associated table header | +td-has-header | +WCAG 2.0 Level A | +
33 | +All th elements and elements with role=columnheader/rowheader must have data cells they describe | +th-has-data-cells | +WCAG 2.0 Level A | +
34 | +lang attribute must have a valid value | +valid-lang | +WCAG 2.0 Level AA | +
35 | +<video> or <audio> elements do not autoplay audio | +no-autoplay-audio | +WCAG 2.0 Level A | +