Inaccessible Content

This document lists the Web Content Accessibility Guidelines (WCAG) 1.0 priority 1 and priority 2 checkpoints, and deliberately breaks the rules. The purpose of the document is to test whether commonly used accessibility validators successfully report all of the errors, and if not, how many they do successfully report. Some checkpoints are difficult to test, and validators may not attempt to test the content against the checkpoint. Others may be partially tested, such as ensuring that something is in place, with no regard to the relevance of what's in place.

Priority 1 Checkpoints

There are 17 priority 1 checkpoints. There are no test cases for 6 of them.

Checkpoint 1.1: Provide a text equivalent for every non-text element

Provide a text equivalent for every non-text element (e.g., via "alt", "longdesc", or in element content). This includes: images, graphical representations of text (including symbols), image map regions, animations (e.g., animated GIFs), applets and programmatic objects, ascii art, frames, scripts, images used as list bullets, spacers, graphical buttons, sounds (played with or without user interaction), stand-alone audio files, audio tracks of video, and video.

This test is for the fairly common scenario where images are replaced, but the markup remains the same. The following image contains the text "Lemon", with a foreground colour very similar to the background colour. The alternative text provided is, "Apple".

Apple

[Back to Priority 1 Checkpoints]

Checkpoint 2.1: Information conveyed with color

Ensure that all information conveyed with color is also available without color, for example from context or markup

Items coloured red are incorrect.

[Back to Priority 1 Checkpoints]

Checkpoint 4.1: Identify changes in natural language

Clearly identify changes in the natural language of a document's text and any text equivalents (e.g., captions).

I don't speak French, but I know that mon ami means my friend.

[Back to Priority 1 Checkpoints]

Checkpoint 5.1: Identify column and row headers

For data tables, identify row and column headers.

The following is a data table where the column headers have been marked up with th, but the row headers are marked up with td.

Multiplication Table
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100

[Back to Priority 1 Checkpoints]

Checkpoint 5.2: Associate data cells and header cells

For data tables that have two or more logical levels of row or column headers, use markup to associate data cells and header cells.

The following table does not structure the headings correctly for the data.

TV Viewing Preferences (millions)
Gender Total
Male Female
BBC 8.2 9.1 17.3
ITV 16.3 2.2 18.5

[Back to Priority 1 Checkpoints]

Checkpoint 6.1: Organise documents so they maybe read without style sheets

Organize documents so they may be read without style sheets. For example, when an HTML document is rendered without associated style sheets, it must still be possible to read the document

The examples of relying on color alone should be picked up for this checkpoint. Another common example is to find background images with important information that is nowhere to be found in the content.

The interest rate is

[Back to Priority 1 Checkpoints]

Checkpoint 6.3: Programmatic objects

Ensure that pages are usable when scripts, applets, or other programmatic objects are turned off or not supported. If this is not possible, provide equivalent information on an alternative accessible page.

Checkpoint 7.1 required authors to avoid content that flickers. As part of the tests, I've included a flashing image that can be stopped if scripting is available. If scripting isn't available, the animation cannot be turned off, with no alternative to stop the flashing image.

Checkpoint 7.1: Avoid Flicker

Until user agents allow users to control flickering, avoid causing the screen to flicker

Note: People with photosensitive epilepsy can have seizures triggered by flickering or flashing in the 4 to 59 flashes per second (Hertz) range with a peak sensitivity at 20 flashes per second as well as quick changes from dark to light (like strobe lights).

Obviously, I wouldn't want to cause anyone to have a seizure, so I've made the area of the image small, as the surface area needs to be large to cause photosensitive epilepsy. If you suffer, or suspect you suffer with photosensitive epilepsy, please don't go any further down this page without disabling images.

Are you sure you want to continue? If not, skip past the image to the test for clear language.

Last chance ...

Warning: Flashing image

Flashing image

[Back to Priority 1 Checkpoints]

Checkpoint 8.1: Compatible with assistive technology

Make programmatic elements such as scripts and applets directly accessible or compatible with assistive technologies [Priority 1 if functionality is important and not presented elsewhere, otherwise Priority 2.]

Unfortunately, whilst some assistive technologies have basic scripting support, most appear to have extremely poor support for changes to the DOM. The following paragraph has been inserted into the DOM with ECMAScript, with no alternative anywhere else on the page.

Update: Thank you to Jim Thatcher for pointing out that the script here is compatible with assistive technologies. When I have time, I'll replace this example for a scripting technique that isn't compatible with assistive technologies.

[Back to Priority 1 Checkpoints]

Checkpoint 11.4: Accessible alternative

If, after best efforts, you cannot create an accessible page, provide a link to an alternative page that uses W3C technologies, is accessible, has equivalent information (or functionality), and is updated as often as the inaccessible (original) page.

This page does not adhere to WCAG 1.0, and no alternative has been provided.

Update: Thank you to Jim Thatcher for pointing out that the important part of this checkpoint is if you cannot create an accessible page, then provide a link to an alternative page. Jim is concerned that my interpretation is a common misinterpretation, but wrong, and he doesn't like to see the misinterpretation reinforced. I haven't interpreted the checkpoint the way Jim suggests, but as I agree with his point that this checkpoint is often misinterpreted, I've voiced his concerns so that I don't propagate the misinterpretation. I cannot make the page accessible for obvious reasons.

[Back to Priority 1 Checkpoints]

Checkpoint 14.1: Clear language

Use the clearest and simplest language appropriate for a site's content.

There was little evidence of myelencephala from this obnoxious quadragenarious with acute rhinotillexomania. Translation - an irritating 40 year old coward with a passion for picking their nose.

[Back to Priority 1 Checkpoints]

Priority 1 Checkpoints Without a Test Case

No test cases have been provided for the following priority 1 checkpoints:

[Back to Priority 1 Checkpoints | Back to the top of the page]

Priority 2 Checkpoints

There are 29 priority 2 checkpoints. There are no test cases for 7 of them.

Checkpoint 2.2: Colour contrast

Ensure that foreground and background color combinations provide sufficient contrast when viewed by someone having color deficits or when viewed on a black and white screen. [Priority 2 for images, Priority 3 for text]

The following image has a background colour of #a70, with foreground text containing the phrase, "lemon", with a colour of #960.

Lemon

The colour contrast analyser provides the following results for that colour combination:

The difference in brightness between the two colours is not sufficient. The threshold is 125, and the result of the foreground and background colours is 15.

The difference in colour between the two colours is not sufficient. The threshold is 500, and the result of the foreground and background colours is 34.

[Back to Priority 2 Checkpoints]

Checkpoint 3.1: Use markup

When an appropriate markup language exists, use markup rather than images to convey information

The following is the formula for calculating quadratic equations, which should be expressed in MathML.

Quadratic Equation Forumla

[Back to Priority 2 Checkpoints]

Checkpoint 3.2: Validate to formal grammars

Create documents that validate to published formal grammars.

This document declares a DOCTYPE of HTML 4.01 Strict, which does not support the target attribute on links. The following link has a target attribute that has been added through DOM injection: Juicy Studio Home Page (opens in a new window).

[Back to Priority 2 Checkpoints]

Checkpoint 3.3: Style sheets for presentation

Use style sheets to control layout and presentation.

This paragraph has an invalid align attribute with a value of right that has been added through DOM injection.

[Back to Priority 2 Checkpoints]

Checkpoint 3.4: Relative units

Use relative rather than absolute units in markup language attribute values and style sheet property values.

This text has a fixed font-size of 14pt.

[Back to Priority 2 Checkpoints]

Checkpoint 3.5: Header elements

Use header elements to convey document structure and use them according to specification.

This text isn't a heading, but has been marked up as h3

[Back to Priority 2 Checkpoints]

Checkpoint 3.6: Lists

Mark up lists and list items properly.

The following lists three guidelines recommended by the W3C's Web Accessibility Initiative, and is marked up incorrectly.

[Back to Priority 2 Checkpoints]

Checkpoint 3.7: Quotations

Mark up quotations. Do not use quotation markup for formatting effects such as indentation

The following text is not a quote.

This text isn't a quote. It's been marked up with blockquote purely to indent the text.

[Back to Priority 2 Checkpoints]

Checkpoint 5.3: Tables for layout

Do not use tables for layout unless the table makes sense when linearized. Otherwise, if the table does not make sense, provide an alternative equivalent (which may be a linearized version)

The following table is used for layout, does not make sense when linearised, and no alternative is provided.

This table is used purely for laying out the content. The table doesn't contain any structural markup such as caption, thead, tbody, tfoot, and th, but wouldn't make sense when the content is linearised, as one sentence would run in to the other. Before deciding whether or not tables should make sense when linearised, it's worth reading the chapter on tables and frames from Joe Clark's book, Building Accessible Websites.

[Back to Priority 2 Checkpoints]

Checkpoint 5.4: Structural markup for presentation

If a table is used for layout, do not use any structural markup for the purpose of visual formatting.

The following table is used for layout, and uses structural markup.

Layout Table with Structural Elements and attributes
Structural Markup Accessible Tables
End of table test
This table is used purely for laying out the content. The table contains structural markup such as caption, thead, tbody, tfoot, and th, and also uses the summary and scope attributes. Before deciding whether or not tables should make sense when linearised, it's worth reading the chapter on tables and frames from Joe Clark's book, Building Accessible Websites.

[Back to Priority 2 Checkpoints]

Checkpoint 6.4: Device-independent event-handlers

For scripts and applets, ensure that event handlers are input device-independent.

The link in the next paragraph has an event-handler for onclick inserted if scripting is supported and available. An equivalent event-handler has not been provided for onkeypress. Checkpoint 1.2 of the User Agent Accessibility Guidelines requires that event handlers are input device-independent (priority 2), so most modern user-agents will activate the event even though an explicit onkeypress event has not been provided.

Will produce a popup if scripting is enabled

[Back to Priority 2 Checkpoints]

Checkpoint 6.5: Dynamic content

Ensure that dynamic content is accessible or provide an alternative presentation or page.

The following dynamic content is not accessible, and there is no alternative for the content.

[Back to Priority 2 Checkpoints]

Until user agents allow users to control blinking, avoid causing content to blink (i.e., change presentation at a regular rate, such as turning on and off).

The test for dynamic content causes a blink effect by changing the presentation at a regular rate.

[Back to Priority 2 Checkpoints]

Checkpoint 7.3: Moving content

Until user agents allow users to freeze moving content, avoid movement in pages.

This content moves if scripting is available.

[Back to Priority 2 Checkpoints]

Checkpoint 9.3: Logical event-handlers

For scripts, specify logical event handlers rather than device-dependent event handlers.

This test is covered by the test for device-dependent event handlers, where the device-dependent event onclick has been specified.

[Back to Priority 2 Checkpoints]

Until user agents allow users to turn off spawned windows, do not cause pop-ups or other windows to appear and do not change the current window without informing the user.

The following link has an invalid target attribute that has been added through DOM injection, with no warning that it will open in a new window (discarding this preamble): Juicy Studio Home Page.

[Back to Priority 2 Checkpoints]

Checkpoint 10.2: Properly positioned labels

Until user agents support explicit associations between labels and form controls, for all form controls with implicitly associated labels, ensure that the label is properly positioned.

The following checkbox has an implicit label that is positioned incorrectly.

[Back to Priority 2 Checkpoints]

Checkpoint 11.1: Use W3C Technologies

Use W3C technologies when they are available and appropriate for a task and use the latest versions when supported.

This test is covered by the test to check for markup for checkpoint 3.1.

[Back to Priority 2 Checkpoints]

Checkpoint 11.2: Avoid deprecated features

Avoid deprecated features of W3C technologies.

This test is covered by the test for popup windows that inserts the deprecated target attribute.

[Back to Priority 2 Checkpoints]

Checkpoint 12.3: Divide large blocks

Divide large blocks of information into more manageable groups where natural and appropriate.

The following has two select elements; one provides appropriate grouping, the other doesn't.

Towns

[Back to Priority 2 Checkpoints]

Checkpoint 13.2: Metadata

Provide metadata to add semantic information to pages and sites.

No metadata has been specified on this page.

[Back to Priority 2 Checkpoints]

Checkpoint 13.3: General layout

Provide information about the general layout of a site (e.g., a site map or table of contents)

No sitemap or table of contents for the site has been provided on this page.

[Back to Priority 2 Checkpoints]

Priority 2 Checkpoints Without a Test Case

No test cases have been provided for the following priority 2 checkpoints:

[Back to Priority 2 Checkpoints | Back to the top of the page]