Guide to writing tests for commandsΒΆ
To make writing tests easier, tests can be declaratively written in HTML using data-*
attributes to specify
the command to check a HTML document against, and the expected errors.
The available attributes are:
data-wcag-test-command
(only on the roothtml
element) - the specific zookeeper- validator to use for the HTML file.
data-wcag-arg-\*
(only on the roothtml
element) - attributes starting withdata-wcag-arg-
specify arguments to pass when running the given command. Each attribute constitutes a key/value pair, with the key corresponding to everything captured by the asterisk (*
) above. All values are evaluated in Python and are expected to be valid Python literals - as such numbers are treated as numbers, booleans are booleans, and strings need to be double quoted.
data-wcag-failure-code
anddata-wcag-warning-code
- can be located on any element in the body.- These specify both that a given node should produce a failure or warning when using the above command and arguments, as well as the expected error code.
Below is an example that tests the molerat
command, for WCAG 2.0-AA compliance
and checks using a specific media rule to check a page for use on small screens.
<html
data-wcag-test-command="molerat"
data-wcag-arg-level="'AA'"
data-wcag-arg-skip_these_classes="'sneaky'"
data-wcag-arg-media_rules="['max-width: 600px']">
<head>
<style>
.snarky {
color: white;
background-color: black;
}
@media (max-width: 600px) {
.snarky {
color: black;
}
}
</style>
</head>
<body>
<div class="snarky" data-wcag-failure-code="molerat-1">
I hate mobile phones, but if you are
reading this page on a mobile you'll never know!!
</div>
<div class="snarky sneaky">
And I'll make sure you never see this either!
And the zookeeper will never tell!
</div>
<p>
Welcome to my page!
</p>
</body>
</html>
This is equivilent to running the following at the command line:
zookeeper molerat the_file_above.html \
--level=AA \
--media_rules='max-width: 600px' \
--skip_these_classes=sneaky
or the following python command:
from wcag_zoo.validators.molerat import Molerat
validator = Molerat(
level="AA",
media_rules=['max-width: 600px'],
skip_these_classes=["sneaky"]
).validate_document(the_text_above)