A small set of test files
When I started out looking for test files to use to compare accessibility testing tools, I was (of course) attracted to the ATR tests, developed by Chris Redpath at the Technology Resource Center at the University Of Toronto (ATRC, http://atrc.utoronto.ca/ ). Those tests consist of about 220 files ( http://checker.atrc.utoronto.ca/ ) including at least one file and often several files for each of the WCAG Checkpoints, Version 1.0. Although still in working draft form, there are also tests for Version 2.0 of the Web Content Accessibility Guidelines.
My main concerns with the ATR tests were that there were so many files and that many of the test files are nearly empty.
For example some files relating to <object>
elements had merely <object />
in the
code; I think a checker could—maybe even should—recognize that this is an empty object and raise no warning or error.
So I decided to create a much smaller and more manageable set of files (covering many fewer conditions) in which each file contains more content and generally there are pairs of files to compare the tool response for the error condition and the error condition corrected. Sometimes the ATR files are paired, one file with the error condition, the other without the error condition—not with the error corrected.
The test suite
The test suite is arranged by issues, not by files. So there is the “Alt-text”
issue (#1 below) and there are two files associated with it. One in which the image has no alt-text (step-1-1-1-f.htm
)
and essentially the same file with the alt
attribute added (step-1-1-1-s.htm
) with respectable
alt-text. The file naming system stems from an earlier version of the ATR tests. The file name includes WCAG checkpoint
number, test number for that checkpoint, and an
f for failure or s for success.
A listing of all the files is at https://jimthatcher.com/step/new. All the files referred to in the discussion below are available in that directory too, for example, https://jimthatcher.com/step/new/step-1-1-1-f.htm, which will be referred to just as step-1-1-1-f.htm.
1. Alt-text.
Every image element, img
, must have an alt
attribute. No alt-text (step-1-1-1-f.htm
)
is an error and there should be no error when alt-text is present (step-1-1-1-s.htm
).
Results: All tools passed this test. There is no surprise here.
2. ASCII art for alt-text.
If alt-text is ASCII art, like alt="-->",
a screen reader would speak hyphen
hyphen greater than which is not meaningful. It is an error when alt-text consists of ASCII art (step-1-1-1-f2
).
Results: On my first appraisal of the results of this test I thought that InFocus caught
the error. I was concerned because the error was Alt text required which means that the alt
attribute
is missing. When I tried different ASCII art, namely alt=":-)"
, InFocus did not pick it up as an
error. From the highlighting of the source code in the original case (alt="-->"
) it turned
out that InFocus was prematurely terminating the <img>
tag with the ">"
at
the end of the value of the alt
attribute – and in fact it did not catch this error.
For each of its alt-text errors, LIFT has both, “image should have valid alt” and “image should have equivalent alt.” Lacking valid alt is an error while the equivalent alt message is a human review warning saying it is necessary to compare the image with the alt-text. Since that warning is raised on any significant image, it would seem that LIFT would have to say that the ASCII art for alt-text is not valid. LIFT did not do that. Compare with #5 where LIFT declares alt-text longer than 150 characters to be “not valid”.
WebKing and Ramp were the only tools to pass this test, both changes in the tools from the original tests.
3. Object requires default content.
An object
element should have content which is available if the object/plug-in is not supported (step-1-1-2-s.htm
).
Though this is a requirement of WCAG 1.0, it is not widely supported by assistive technology. A testing tool scores on this
issue if there is no warning or error on the good file (step-1-1-2-s.htm
)
and there is a warning or error on the bad one (step-1-1-2-f.htm
)
which has no default content.
Results: All tools passed this test.
4. Image Button.
Every image button, that is input
element with type="image"
, must have alt-text that
specifies the purpose of the button (step-1-1-4-s
, step-1-1-4-f
).
Results: Technically all six tools caught this error, but WebXM received a failing grade
because of the way it presented the issue. WebXM raised the form labeling error for this test: Explicitly
associate form controls and their labels with the <label>
element. That error is not raised for the file which has alt-text on the image button (step-1-1-4-s
).
In this version, WebXM considers the alt-text on an image button to be a form labeling problem, not an alt-text problem.
Both test files have an input
element with type="text"
which is
correctly labeled. InFocus raises the error Label should be placed next to input whenever
there is an input
element; even when the prompt is perfectly placed and labeled. We know that this stems
from Web Content Accessibility 1.0 Checkpoint 10.2:
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.
But a testing tool should be able to estimate positioning and raise this issue only when it is really necessary, especially because user agents do support explicit associations between labels and form controls.
5. Long alt-text.
Alt-text should be short, succinct, and to the point. The question is “how long is too long?” I have chosen 151 characters
(step-1-1-5-f
) as the break-off point that should raise an error. There is also a file with 102 characters of
alt text (step-1-1-5-f2
) which I think should be an error too.
Results: All of the tools caught this error – alt-text longer than 150 characters. None of the tools raised an error for 102 characters. Several tools provide user specification of the maximum length (InFocus, Ramp, and LIFT) along with other characteristics of acceptable alt-text.
InFocus raises the violation, Valid alt attribute required . As mentioned above, LIFT also raises an error about validity of the alt-text. What is troubling, of course, is that the alt-text at 151 characters is certainly valid, but too long. The detailed explanation of the InFocus violation softens the concern with This image has an invalid or suspicious alt attribute . On the other hand, Bobby warns, Alt text > 150 characters, consider providing a separate description, making the statement of the error/warning perfectly clear.
6. Image map area.
Every area
element of a map
for a client-side image map needs to have alt-text. The sample file
(step-1-1-6-f
) has one <area>
tag that has no alt-text. For comparison, step-1-1-6-s
has
alt-text on all the area
elements.
Results: All tools got this right. WebXM does fine on this test but I noticed that the
test itself, "Provide alternative text for all image map hot-spots," is also listed in the section of the report
called Passed Evaluations. The reason the test appears in the list of evaluations that
passed is that there are several image map area
elements that do have alt-text and for those elements the
evaluation passed. I think that the idea should be that the page passes the “image map hot spot” test if all image map
hot spots have appropriate alt-text and fails if any one does not have alt-text.
7. Server-side image maps.
I believe that a server side map (<img>
with ismap
attribute) should never be used, so
any page with a server-side map should raise an error. There are two test files, one with the server-side map and no text
links (step-1-2-f
) and, just for interest, step-1-2-s
is coded with text links provided for each server side
hot spot. The tools get this right if they raise an error or warning for the server-side map (on either or both files).
Results: All tools got this right but usually by raising a warning. Bobby has a warning, Provide text links that duplicate all server-side image map hot-spots. It is a warning because the tool can’t tell whether or not the duplicate links are available. I think that this should be an error or at least a stronger statement about the problem with server-side image maps. Checkpoint 9.1 of WCAG and §1194.22(e) of Section 508 use the same wording concerning the use of server-side maps:
Provide client-side image maps instead of server-side image maps except where the regions cannot be defined with an available geometric shape.
It may be impractical to use client-side image maps but all regions can be defined by available geometric shapes. Ramp’s response is also a warning, but the wording is better: Use client-side image maps instead of server side maps .
8. Frame titles.
Each <frame>
in a <frameset>
needs a title attribute indicating the purpose of the
frame. In the sample file (step-12-1-f
) the <frame>
elements do not have title
attributes.
For comparison, step-12-1-s
has adequate title
attributes. (<iframe>
is treated
separately in test #40.)
Results: All tools got this right.
9. Quality of frame titles.
The title
attributes on the <frame>
elements must be meaningful. Here (step-12-1-f2
)
the sample frames have title="top"
, title="left"
and title="right"
which
are not meaningful—that is they do not specify the purpose of the frame.
Results: On the first round of tests only InFocus go this right. With updates, Ramp
and WebKing raise errors here too. Again, like test #5, some tools allow personalizing the words or phrases that will not be
allowed in the title
attributes of the frame
elements.
10. Input Element needs label.
The first form example (step-12-4-f.htm) is just a text input
field (type="text"
)
with neither a title
attribute nor an associated label
element. This condition should raise an
error. The same form using the label
element (step-12-4-s.htm
) is correct and should not raise the error.
Results: All tools got this right.
11. Use of title attribute for form control.
Another way to explicitly specify prompting text for a text input
field is to use the title
attribute
on the input
control. This is illustrated in step-12-4-s4.htm
. There should be no error or warning for this file.
Results: Only three out of six tools got this right, InFocus, Ramp and WebKing. This
is disappointing. As we argued in Chapter 8 there are situations where the title
attribute is the only reasonable
way to precisely label a form control.
12. Text intervenes between label and control.
The text that is enclosed by the label
element does not have to be right next to the control. Here
the label
element encloses text, but there is intervening text before the control is encountered. This file
(step-12-4-s3.htm
) should not raise an error or warning.
Results: InFocus insists that prompting text must be properly placed. Using the label
element
frees the developer from that requirement by programmatically connecting the prompt with the control at least for people
using assistive technology. For others with cognitive impairments or low vision the positioning can be critical. Unfortunately,
InFocus raises this warning even if the prompt is perfectly placed. Since we are checking to see if the tool accepts a
label coming from a place that is not next to the control, we conclude that InFocus failed this test. The 5 other
tools passed.
13. Prompting text from two places.
Not only does the labeling text not have to be adjacent; it can come from two places. It is perfectly legitimate to have
two label
elements with the same for
attribute which this file (step-12-4-s6
) illustrates.
As we have seen in Chapter 8, AT support for two labels is spotty at best, but this should not be an error.
Results: All tools got this right. I suspect that the tools don’t even notice that there are two labels. Since support by screen readers for this situation is so poor, this probably should be deemed an error.
14. An invisible gif holds the prompting text.
A common phenomenon on http://www.ibm.com is to use an invisible gif with alt-text as
the prompt for the search form text entry field. This technique was introduced by IBM at a time when few tools recognized
the title
attribute (see #11 above). Although this technique is acceptable—it is not an error—the title
attribute
is much better (see Chapter 8). The file, step-12-4-s5
, uses an invisible gif
with alt-text in
the label
container. It should not raise an error.
Results: All tools got this right but there were two minor problems. InFocus continues
to warn that prompting text must be properly placed and WebKing raises the error that a spacer image requires alt=""
.
When it is clear that the “spacer image” is conveying information as is the case here, then that warning should be turned
off.
15. Label that matches no control.
This form example, step-12-4-f2,
has a label
element, but the for
attribute does
not match any id
. This is an error.
Results: All tools got this right.
16. Two input elements with same id
In this case (step-12-4-f3
) there are two input
elements with the same id
. This
is an error. Not only is it an accessibility error; using the same id
on any two elements is invalid HTML.
Results: Surprisingly this was detected only by LIFT on the first pass over the tests. The newer versions of WebKing and Ramp now find this error. Three tools got this right.
17. Textarea needs label or title.
This file, step-12-4-f8, contains a textarea
with no label
element or title
attribute.
This test is just like #10 except for textarea
instead of input
with type="text"
.
Results: All tools got this right.
18. Select menu needs label or title.
This file, step-12-4-f9
, contains a select
menu with no label
element or title
attribute.
Just like #10 except for select
instead of input
with type="text"
.
Results: All tools got this right.
19. Inaccessible select menu.
This file, step-12-4-f10
, contains a select
menu which is open (size="4"
)
and which has an onChange
event handler which opens a new page. This menu is not accessible because it cannot
be operated with the keyboard. As soon as you press the Down Arrow when the menu has focus, it fires and the new page is
opened. This is an error, but the tool scores here only if it does not flag step-12-4-s10
as an error. That
file is the same except the select
menu is not “open” (size="1"
) which can be handled
from the keyboard using Alt +Down Arrow then Up and Down arrows.
Results: Ramp raises an error on both files. Only WebKing got it right.
20. Empty label.
This file (step-12-4-f11
) has a properly coded label
element except that the contents of that label
element
are empty. This is an error.
Results: It is surprising that apparently only two tools (WebKing and WebXM) were looking at all at the “quality” of the label on the first pass through the tests. Version 6.0 of Ramp now looks at that aspect of form labeling so now three tools get it right.
21. Inadequate link text.
Link text is “click here” (step-13-1-1-f
); an error.
Results: Two tools missed this, InFocus and LIFT. Bobby flags an error for the “Click here” link, Create link phrases that make sense when read out of context . The text as a warning (see #22) appears any time links are present.
22. Image link with empty alt-text.
An extreme case of inadequate link text, an anchor containing only one image and that image has empty alt text, alt=""
(step-13-1-1-f2
).
Results: InFocus is the only tool to fail this test (and #23). Ramp lists the Violation as invalid text equivalent for image . It would seem that if the text equivalent were invalid, it would be invalid in #24, which it is not. I think this error should be invalid (empty) link text.
WebXM raises the error Create link phrases that make sense when read out of
context for the situation of an image link in which the alt-text is empty and also for the case (#23) when the
alt-text is just spaces. The error description is directly from the Web Content Accessibility Guidelines, but these situations
seem to me to be worse than the inability to read out of context. There is no link text! On the other hand when there
is no link text JAWS reads the image source file name, which in this case is Resources,
giving good information
about the link. One certainly should not count on that.
Bobby raises the error, Provide alternative text for all images , for this file, and also the warning (not error as in #21), Make sure that all link phrases make sense when read out of context . This warning is raised for all files that have links. And the image has alt text, it is not adequate.
23. Image link with spaces for alt-text.
Very similar to number #22, this anchor element (<a>
) contains just one img
element
and the alt-text on that is alt=" "
(quote four-spaces quote), step-13-1-1-f3
.
Results: InFocus failed this test, but WebKing got it right even though it failed #22 (image link with empty alt-text).
24. Link with empty alt-text but also text.
This file, step-13-1-1-s2,
is OK. In this commonly occurring situation, there is in image in the anchor with alt=""
but
there is also text in the anchor. This file should pass, but a tool gets a score here only if it passes this file and fails
#22. The issue here is distinguishing between empty link text and non-empty link text.
Results: Two tools failed this test, Bobby and InFocus. Bobby raises the same errors for this file as for the one with empty alt text and no text in the anchor, and so fails this test.
25. Link text; “click here” with title attribute.
This file (step-13-1-1-s3
) has an anchor element (<a>
) containing exactly the text click
here which is inadequate (see #21). But there is also a title
attribute on the anchor which specifies
the target of the link. This is not an error. A tool scores here only if this file passes and #21 fails.
Results: Two tools got this right, Ramp and WebKing. Watchfire informed me that WebXM has an option to look for the title attribute on links but that is switched off in the default settings which I used.
26. Same link text, different targets.
If two links have the same link text but different targets (href
) then the links cannot be distinguished
in a list of links. This file, step-13-1-2-f
, has two links with the same text but different href
.
It is an error.
Results: All tools got this right.
27. Page title.
The content of the title
element of a page is what appears in the title bar of the browser and it is spoken
by a screen reader when the page opens. Every page should have a non-empty title
element. This file, step-13-2-f.htm
,
has no title
element which is an error.
Results: InFocus and WebKing were the only tools that did not raise an error in this case.
28. Inadequate page title.
This test is similar to #27, but here the title
is Title, i.e., the code looks like this: <title>Title</title>
. The file, step-13-2-f2,
should
raise an error.
Results: Only Ramp got this right the first go round; WebKing joined the circle of winners with their newer version. Four tools failed this test.
29. Skip link.
The two files both have links at the top of the page followed by text. The file that fails has neither headings nor a skip
link after the “navigation links” (step-15-2-f).
The file that is OK has a skip link (step-15-2-s2)
.
A tool scores on this test if it raises an appropriate error on the file with no skip link, step-15-2-f,
and
does not raise that error on step-15-2-s2
which has the skip link.
Results: Three tools got this right, InFocus, LIFT and Ramp.
30. Heading for skipping to content.
This is exactly like #29 except the successful file (step-15-2-s.htm
)
has headings, especially a level 1 heading at the beginning of the main content.
Results: I was disappointed that, on the first pass through the tests, none of the tools that were looking for skip techniques at all recognized headings as such a technique. Now Ramp Ascend 6.0 sees a heading after a block of links as a technique for skipping those links. This test can be turned on and off in the Accessibility Options of Ramp. I hope more tools will recognize this option because headings markup provides a much better technique for addressing page navigation than skip links (see Chapter 7).
31. Layout table that won’t resize.
When a layout table uses pixel widths it won’t resize with either a larger window or larger text. This file, step-3-4-f,
uses
fixed widths in pixels. The response by the tool needs to be compared with that for a file which uses percentage widths instead
of pixel widths (step-3-4-s
). The tool is successful if it raises an error for the table with fixed widths
and no error on the table with percentage widths.
Results: All tools got this right, though Ramp failed on the first pass through the tests.
32. Data tables.
The issue I wanted to check was whether the tools checked for data tables - distinguishing then from layout tables. The data
table
(step-5-1-s
) is quite obviously such and marked up properly. A tool scores here if there is no data table
error or warning on the good table or on the layout table (step-5-1-s3
) and a table markup warning or error
on the one with no use of TH
(step-5-1-f
).
Results: Four tools got this right; Bobby and WebXM failed. Ramp raises an interactive check for the user to confirm that a table is a data table. But Ramp is successful because it is raising that test when it suspects a table is a data table, and not on all tables. So on our examples it raised the interactive check on the data tables and not on the layout tables.
33. Layout table with a summary
.
It is an error for a layout table (step-5-1-f3
) to have a summary
attribute and/or th
markup.
Results: Only Bobby and Ramp got this right. Bobby raises a warning, If
this table is used for layout only, do not use structural markup to achieve formatting effects, and it does not
raise that warning when a layout table does not have structural markup. Ramp raises two errors, one for the summary attribute
(Tables used for layout should not have summary) and one for the table head (th
)
markup (Tables used for layout should not use headings to create formatting effects).
34. Frame source must be HTML.
Here (step-6-2-f
) is a frame page (<frameset>
) in which the first frame
directly
references an image (.gif
). The src
attributes of frame
must be an HTML page.
Results: All tools except LIFT got this right. The wording of the InFocus error in this case was awkward: use markup file as source . But the tool definitely caught the problem.
35. Blink element.
Here is a file, step-7-2-f,
that uses the blink
element. This is an error because the result is
blinking text; also because the blink
element is deprecated.
Results: All tools got this right.
36. Marquee element.
Here’s a file, step-7-3-f,
that uses the marquee
element. Like #35, this is an error because
text is moving and because the marquee
element is deprecated.
Results: All tools got this right.
37. Auto refresh.
This page (step-7-4-f
) has an auto-refresh every 6 seconds, an error.
Results: All tools except InFocus and WebXM raised an error for the auto-refresh.
38. Keyboard access.
The issue with this file, step-9-3-f,
is keyboard access. It contains a JavaScript function that requires a
double click (onDoubleclick
) and it doesn’t work from the keyboard. A tool scored here if it raises a scripting
error on this file (no keyboard access) but not on step-9-3-s
where onKeyDown
is used for the
same function.
Results: Only Bobby got this right.
39. Structure of headings markup.
WCAG suggests that headings should be used according to specification. There are two files for testing the use of headings.
The correct one, step-3-5-s,
has these headings (in order) h1,
h2,
h2,
h3,
h1
.
The error file, step-3-5-f,
has h4,
h1,
h2,
h5,
h1
.
There are two errors here, the transition h4
(starting) to h1
, and h2
followed by h5
.
The use of headings is so important for page navigation, errors like these are not important in my opinion.
Results: LIFT and WebKing failed this test. Deque pointed out that AERT techniques ( http://www.w3.org/TR/2000/WD-AERT-20000426 ) specify that the requirement on header nesting
to be that "Header levels must not increase by more than 1 level." So there is only one error in the subject file, step-3-5-f.htm,
which
is the transition form h2
to h5,
by this specification.
For pages with no headings markup whatsoever, LIFT warns,
Use header elements according to specification. Yet neither of the pages with headings
markup (step3-5-s
and step3-5-f
) get that warning. It seems totally backwards to me.
40. Title for in-line frame.
This is another frame issue, an iframe
without a title
attribute (step-12-1-f3)
.
Results: All the tools got this right except InFocus.