If an HTTP request does not result in a valid HTTP response (because of network-level error, DNS resolution error, or non-HTTP response), FAIL → No associated message [http_response-1]
If the response is an HTTPS response:
If the certificate is invalid, FAIL → No associated message [http_response-2]
If the certificate has expired, warn → No associated message [http_response-3]
If the HTTP status indicates redirection (status code 3xx):
Do not carry out tests on the response
If the response relates to a request for the resource under test, or any of its included resources (see 2.4.6 Included Resources):
Include the size of the response in the total described under 3.16 PAGE_SIZE_LIMIT
Include this response under the count described under 3.6 EXTERNAL_RESOURCES
If there is no HTTP
Location
header,
FAIL
→
No associated message
[http_response-4]
.
If the URI identified by the HTTP
Location
header is a relative URI, create an absolute URI by combining the value of the
Location
header with the absolute URI of the request to which this is a response,
warn
→
No associated message
[http_response-5]
If the resulting URI is not a URI with the scheme
http
or
https
,
FAIL
→
No associated message
[http_response-6]
.
Re-request the resource using the URI formulated above.
If the HTTP status indicates that authentication is required (e.g. status code 401):
If the response relates to a request for the resource under test, or any of its included resources (see 2.4.6 Included Resources):
If authentication information was supplied in the HTTP request (i.e. authentication failed), FAIL → No associated message [http_response-7]
Carry out tests on the response
Include the size of the response in the total described under 3.16 PAGE_SIZE_LIMIT
Include this response under the count described under 3.6 EXTERNAL_RESOURCES
Re-request the resource using authentication information
If the response relates to a request for a linked resource (see 2.4.7 Linked Resources):
Continue with the test (see 3.10 LINK_TARGET_FORMAT, i.e. do not re-request the resource with authentication information), warn → No associated message [http_response-12]
If the HTTP status code is 404 or 5xx
If the response relates to a request for the resource under test, continue with tests on the response and warn → No associated message [http_response-8]
If the response relates to a request for a linked resource (see 2.4.7 Linked Resources), continue with the test (see 3.10 LINK_TARGET_FORMAT) and warn → No associated message [http_response-9]
Otherwise (i.e. for included resources), FAIL → No associated message [http_response-10]
If the HTTP status represents failure (4xx), other than 404 or a request for authentication (e.g. 401), FAIL → No associated message [http_response-11]
For each
meta
element with an
http-equiv
attribute:
If a matching HTTP response header does not exist, warn → No associated message [meta_http_equiv-1]
If a matching HTTP response header exists but its value differs from the
content
attribute value,
warn
→
No associated message
[meta_http_equiv-2]
If a
meta
element is present with
http-equiv
attribute value of "refresh",
If the URI specified as part of the
content
attribute is not the current resource's URI,
FAIL
→
FAIL: The document uses a markup-based redirection
[AUTO_REFRESH-1]
Else, warn → WARN: The document uses an auto-refresh [AUTO_REFRESH-2]
If a
Refresh
HTTP header is present,
If the URI specified in the header value is not the current resource's URI, FAIL → FAIL: The document uses a Refresh HTTP header to redirect to a different page [AUTO_REFRESH-3]
Else, warn → WARN: The document is served with a Refresh HTTP header [AUTO_REFRESH-4]
If the HTTP response contains neither an
Expires
nor
Cache-Control
header
If no
meta http-equiv
element is present, referring to those headers,
FAIL
→
FAIL: The document is served without caching information ("Expires" or "Cache-Control" header)
[CACHING-1]
Continue the test using the value from the
meta
content
attribute as though it were specified in the appropriate header,
warn
→
WARN: The document's caching information is not provided in the HTTP headers
[CACHING-2]
If a
Cache-Control
HTTP header is present and contains value "no-cache", or contains value "max-age=0",
warn
→
WARN: "Cache-Control" HTTP header is present and contains value "no-cache", or contains value "max-age=0"
[CACHING-3]
If a
Pragma
HTTP header is present and contains value "no-cache",
warn
→
WARN: The "Pragma" header contains the value "no-cache"
[CACHING-4]
If an
Expires
and
Date
HTTP header are present, and the
Expires
header specifies a date which is not later than what the
Date
header specifies,
warn
→
WARN: The "Expires" header contains a date in the past
[CACHING-5]
If any cache related header contains an invalid value, warn → WARN: A cache related header or a meta http-equiv value contains an invalid value (PLACEHOLDER_1) [CACHING-6]
If the HTTP response contains a
Last-Modified
header,
Request the same URI again, adding an
If-Modified-Since
request header whose value matches that of the
Last-Modified
response header
If the HTTP response contains a
Last-Modified
header and its value is again the same, and the HTTP response status is not 304 (Not Modified),
warn
→
WARN: There is an error in the "Last-Modified" header
[CACHING-7]
If the HTTP response contains an
ETag
header,
Request the same URI again, adding an
If-None-Match
request header whose value matches that of the
ETag
response header
If the HTTP response contains an
ETag
header and its value is again the same, and the HTTP response status is not 304 (Not Modified),
warn
→
WARN: There is an error in the "ETag" header
[CACHING-8]
If the HTTP
Content-Type
header specifies a character encoding other than UTF-8,
FAIL
→
FAIL: The HTTP Content-Type header specifies a character encoding other than UTF-8
[CHARACTER_ENCODING_SUPPORT-1]
If the HTTP
Content-Type
header does not specify a character encoding:
If there is no XML declaration, or UTF-8 character encoding is not specified in the XML declaration, FAIL → FAIL: The HTTP Content-Type header does not specify a character encoding and no UTF-8 encoding or a non-UTF-8 is specified in the XML declaration [CHARACTER_ENCODING_SUPPORT-2]
If the HTTP
Content-Type
header specifies an Internet media type starting with "text/":
If there is no
meta
element with
http-equiv
attribute that specifies UTF-8 character encoding,
FAIL
→
FAIL: The HTTP Content-Type header does not specify a character encoding and a no UTF-8 character encoding is specified
[CHARACTER_ENCODING_SUPPORT-3]
If character encoding is specified in more than one way, and not all values are the same, FAIL → FAIL: The character encoding is specified in more than one way, and not all values are the same [CHARACTER_ENCODING_SUPPORT-4]
If the document is not valid UTF-8 (see 2.4.8 Validity), FAIL → FAIL: The document is not valid UTF-8 [CHARACTER_ENCODING_SUPPORT-5]
For each resource specified by 2.4.6 Included Resources:
Request the resource
If the HTTP
Content-Type
header value of the response starts with "text/" but does not specify UTF-8 character encoding,
warn
→
WARN: This resource is served as "PLACEHOLDER_1" but does not specify UTF-8 as character encoding (PLACEHOLDER_2)
[CHARACTER_ENCODING_SUPPORT-6]
If the document's Internet media type, as specified in the HTTP response
Content-Type
header, is not "application/xhtml+xml", "application/vnd.wap.xhtml+xml", or "text/html",
FAIL
→
FAIL: The document is served as "PLACEHOLDER_1", instead of one of "application/xhtml+xml", "application/vnd.wap.xhtml+xml", or "text/html"
[CONTENT_FORMAT_SUPPORT-1]
If the document's Internet media type is "text/html" or "application/vnd.wap.xhtml+xml", warn → WARN: The document is served as "PLACEHOLDER_1" instead of the recommended "application/xhtml+xml" [CONTENT_FORMAT_SUPPORT-2]
If the document does not contain a
DOCTYPE
declaration,
FAIL
→
FAIL: The document does not contain a DOCTYPE declaration
[CONTENT_FORMAT_SUPPORT-3]
If the document is not an
HTML document or it fails to validate according to its given
DOCTYPE
,
FAIL
→
FAIL: The document is an HTML document and it fails to validate according to its given DOCTYPE: PLACEHOLDER_1
[CONTENT_FORMAT_SUPPORT-4]
If the document does not declare the html namespace on its html root element, FAIL → FAIL: The root html element does not declare its namespace [CONTENT_FORMAT_SUPPORT-5]
If ( regardless of its stated DOCTYPE) the document does not validate against the XHTML Basic 1.1 DTD:
If ( regardless of its stated DOCTYPE) it does not validate against the XHTML-MP 1.2 DTD, FAIL → FAIL: The document does not validate against the XHTML Basic 1.1 DTD nor MP 1.2: PLACEHOLDER_1 [CONTENT_FORMAT_SUPPORT-6]
For each included resource (see 2.4.6 Included Resources):
If the response specifies an Internet media type that is not "text/css", "image/jpeg" or "image/gif", FAIL → No associated message [CONTENT_FORMAT_SUPPORT-7]
If an image is required (see also 3.15 OBJECTS_OR_SCRIPT ) and the response specifies an Internet media type that is not "image/jpeg" or "image/gif", FAIL → FAIL: The embedded image or object is not of type image/gif or image/jpeg (PLACEHOLDER_1) [CONTENT_FORMAT_SUPPORT-8]
If the Internet media type is "image/gif" or "image/jpeg", and the resource is not valid (see 2.4.8 Validity), FAIL → FAIL: The image is not valid [CONTENT_FORMAT_SUPPORT-9]
If a style sheet is required and the response specifies an Internet media type that is not "text/css", FAIL → FAIL: The CSS style sheet is served as "PLACEHOLDER_1" instead of "text/css" [CONTENT_FORMAT_SUPPORT-10]
If the Internet media type is "text/css" and the content is not valid CSS (see 2.4.8 Validity), FAIL → FAIL: The PLACEHOLDER_1 CSS stylesheet is not syntactically valid CSS [CONTENT_FORMAT_SUPPORT-11]
For each
input
element with attribute
type
whose value is "text" or "password" or whose
type
attribute is missing:
If the element's
inputmode
attribute is invalid according to
Section 5.2 User Agent Behavior of XHTML Basic 1.1
[XHTMLBasic11],
FAIL
→
FAIL: The inputmode attribute is invalid
[DEFAULT_INPUT_MODE-1]
If the element's
value
attribute is missing or empty, and an
inputmode
attribute is not present,
warn
→
WARN: There is no inputmode attribute on this text entry element
[DEFAULT_INPUT_MODE-2]
For each
textarea
element:
If the element's
inputmode
attribute is invalid according to
Section 5.2 User Agent Behavior of XHTML Basic 1.1
[XHTMLBasic11],
FAIL
→
FAIL: The inputmode attribute is invalid
[DEFAULT_INPUT_MODE-3]
If the element is empty and an
inputmode
attribute is not present,
warn
→
WARN: There is no inputmode attribute on this text entry element
[DEFAULT_INPUT_MODE-4]
Make an inventory of unique included resources, as defined in 2.4.6 Included Resources.
For each such resource:
Request the resource and carry out the procedures discussed under 2.4.3 HTTP Response maintaining a running total of requests made. FAIL → FAIL: There are more than 20 embedded external resources [EXTERNAL_RESOURCES-1] ures that occur in the course of making this assessment contribute to the result of this test.
If the total exceeds 10, warn → WARN: There are more than 10 embedded external resources [EXTERNAL_RESOURCES-2]
If this total exceeds 20, FAIL → No associated message [EXTERNAL_RESOURCES-3]
For each
img
element
and
object
element which when retrieved has an Internet media type that starts with "image/":
If all pixels are transparent,
If image height and width are both less than or equal to 2 pixels, warn → WARN: There is a small fully transparent image [GRAPHICS_FOR_SPACING-1]
If either dimension exceeds 2 pixels, FAIL → FAIL: There is a bigger than 2 pixels transparent image [GRAPHICS_FOR_SPACING-2]
If more than one image with all transparent pixels was encountered, warn → WARN: There are more than one fully transparent images [GRAPHICS_FOR_SPACING-3]
If an
input
element with
type
attribute set to "image" is present,
FAIL
→
FAIL: An input element with type attribute set to "image" is present
[IMAGE_MAPS-1]
For each
img
element
and
object
element:
If a
usemap
attribute is present,
FAIL
→
FAIL: A usemap attribute is present
[IMAGE_MAPS-2]
If an
ismap
attribute is present,
FAIL
→
FAIL: An ismap attribute is present
[IMAGE_MAPS-3]
For each
img
element
and
object
element whose
type
attribute starts with "image/":
If the
height
or
width
attribute are missing,
FAIL
→
FAIL: Either the height or width attribute is missing
[IMAGES_SPECIFY_SIZE-1]
If the
height
or
width
attribute do not specify a size in pixels,
FAIL
→
FAIL: The height or width is not specified in pixels
[IMAGES_SPECIFY_SIZE-2]
If the value specified by either the height or width attribute is greater than the corresponding dimension of the image, warn → WARN: the height or width specified is greater than the corresponding dimension of the image [IMAGES_SPECIFY_SIZE-3]
If the value specified by either the height or width attribute is less than the corresponding dimension of the image, FAIL → FAIL: the height or width specified is less than the correseponding dimension of the image [IMAGES_SPECIFY_SIZE-4]
For each linked resource, as defined in 2.4.7 Linked Resources:
Request the resource
If the
Content-Type
header value of the HTTP response is not one of the Internet Media Types listed in the
Accept
header in
2.4.2 HTTP Request,
warn
→
WARN: The linked resource PLACEHOLDER_2 is in a format (PLACEHOLDER_1) that may not be appropriate for a mobile device
[LINK_TARGET_FORMAT-1]
If the
Content-Type
header value of the HTTP response does not specify a
charset
parameter, or does but it is not consistent with the value of the
Accept-Charset
header in
2.4.2 HTTP Request,
warn
→
WARN: The linked resource PLACEHOLDER_2 is served with a character encoding (PLACEHOLDER_1) that may not be appropriate for a mobile device
[LINK_TARGET_FORMAT-2]
For each document internal reference (links in the document under test that refer to the document itself):
If there is no target for the reference or it is invalid (e.g. '#'), warn → WARN: The internal reference PLACEHOLDER_1 has no matching target [LINK_TARGET_FORMAT-3]
For each CSS Level 1 property in the CSS Style ( 2.4.5 CSS Style) whose value is a numeric measure of length stated together with a unit:
If the value is non-zero and the unit is not "em" or "ex" (and the value is not a percentage), and the property is not a margin, border or padding box property, FAIL → No associated message [MEASURES-1]
Count number of white space characters (see
2.4.9 White Space) in a sequence of more than one white space character (not counting the first), which exist outside of a
pre
,
style
,
script
element, or XML comment
Add to this count the number of characters comprising XML comments. This total is the number of extraneous characters in the document.
Count total number of characters in document
If the number of extraneous characters exceeds 10% of the count of characters in the document, warn → WARN: More than 10% of the page characters are extraneous (whitespaces or comments) [MINIMIZE-1]
If the number of extraneous characters exceeds 25% of the count of characters in the document, FAIL → FAIL: More than 25% of the page characters are extraneous (whitespaces or comments) [MINIMIZE-2]
If the document contains a
frame
,
frameset
or
iframe
element
or it contains an
object
element which when retrieved has an Internet media type that starts with "text/", "application/xhtml+xml" or "application/vnd.wap.xhtml+xml",
FAIL
→
FAIL: The document contains a frame
[NO_FRAMES-1]
For each
img
element:
If an
alt
attribute is not present
or contains only white space,
FAIL
→
FAIL: The alt attribute is missing
[NON_TEXT_ALTERNATIVES-1]
If a
script
element is present,
warn
→
WARN: The document uses scripting
[OBJECTS_OR_SCRIPT-1]
If any element has an "intrinsic event" attribute (currently
onload
,
onunload
,
onclick
,
ondblclick
,
onmousedown
,
onmouseup
,
onmouseover
,
onmousemove
,
onmouseout
,
onfocus
,
onblur
,
onkeypress
,
onkeydown
,
onkeyup
,
onsubmit
,
onreset
,
onselect
,
onchange
),
warn
→
WARN: An element uses an event attribute
[OBJECTS_OR_SCRIPT-2]
For each
a
and
link
element:
If the value of the
href
attribute begins with the "javascript:" scheme,
FAIL
→
FAIL: A "javascript:" link is used
[OBJECTS_OR_SCRIPT-3]
If an
applet
element is present,
FAIL
→
FAIL: The document uses an applet
[OBJECTS_OR_SCRIPT-4]
If an
object
element is present
and has no
object
element ancestor,
If the
innermost nested
object
element is empty,
warn
→
WARN: The innermost nested object element is empty
[OBJECTS_OR_SCRIPT-5]
If the
innermost nested
object
element content consists only of white space (see
2.4.9 White Space),
FAIL
→
FAIL: The innermost nested object element content consists only of white space
[OBJECTS_OR_SCRIPT-6]
If none of the nested
object
elements is an image that has a content type that matches the headers defined in
2.4.2 HTTP Request and the innermost nested
object
element is non-empty and does not consist of text or an
img
element that refers to an image that matches the headers defined in
2.4.2 HTTP Request,
FAIL
→
FAIL: None of the nested object elements are image/gif or image/jpeg and the innermost nested object element is non-empty and does not consist of text an img element that refers to a image/gif or image/jpeg image
[OBJECTS_OR_SCRIPT-7]
If the size of the document exceeds 10 kilobytes, FAIL → FAIL: The size of the document's markup (PLACEHOLDER_1 bytes) exceeds 10 kilobytes [PAGE_SIZE_LIMIT-1]
Add the size to a running total
For each included resource, as defined in 2.4.6 Included Resources:
Request the referenced resource
Add the size of the response body to the running total
(for nested
object
elements count only the first object that matches the headers specified in
2.4.2 HTTP Request, if there is one)
If the total exceeds 20 kilobytes, FAIL → FAIL: The total size of the page (PLACEHOLDER_1 bytes) exceeds 20 kilobytes (PLACEHOLDER_2) [PAGE_SIZE_LIMIT-2]
If a
title
element is not present in the
head
element, or is empty, or contains only white space (see
2.4.9 White Space),
FAIL
→
FAIL: There is no page title
[PAGE_TITLE-1]
For each
a
,
link
,
form
, and
base
element:
If a
target
attribute is present,
If its value is not one of "_self", "_parent", or "_top", FAIL → FAIL: A pop-up was detected [POP_UPS-1]
For each radio button group within a
form
element (
input
elements with
type
"radio" that share the same
name
attribute value):
Check that exactly one
input
element within this group has its
checked
attribute set to "checked", and if this is not the case,
warn
→
WARN: There is more than one input element in this group set to "checked"
[PROVIDE_DEFAULTS-1]
For each
select
element:
If there is no nested
option
element whose
selected
attribute is set to "selected",
warn
→
WARN: There is no default selected option element
[PROVIDE_DEFAULTS-2]
If there is more than one
option
element whose
selected
attribute is set to "selected", and the
multiple
attribute is not set to "multiple",
warn
→
WARN: There is more than one option selected by default
[PROVIDE_DEFAULTS-3]
If the CSS Style (
2.4.5 CSS Style) contains rules referencing the
position
,
display
or
float
properties,
warn
→
WARN: The CSS Style sheet contains rules referencing the position, display or float properties
[STYLE_SHEETS_SUPPORT-1]
If the document contains any
basefont
,
bdo
,
center
,
del
,
dir
,
font
,
ins
,
menu
,
s
,
strike
or
u
elements,
FAIL
→
FAIL: The document contains one of basefont, bdo, center, del, dir, font, ins, menu, s, strike or u elements
[STYLE_SHEETS_USE-1]
If the document contains any
b
,
big
,
i
,
small
,
sub
,
sup
or
tt
elements,
warn
→
WARN: The documents uses one of b, big, i, small, sub, sup or tt elements
[STYLE_SHEETS_USE-2]
If any element has a
style
attribute,
warn
→
WARN: The style attribute is used
[STYLE_SHEETS_USE-3]
If there is CSS Style ( 2.4.5 CSS Style)
If all styles are restricted to media types other than "handheld" or "all" by means of @media at-rules, warn → WARN: All styles are restricted to CSS media types other than "handheld" or "all" [STYLE_SHEETS_USE-4]
If the CSS Style contains at-rules (other than the
@media
at-rule, and the media list of the
@import
at-rule), properties, or values that are not recognized as being specified in CSS Level 1,
warn
→
WARN: The CSS Style sheet contains non CSS Level 1 items: PLACEHOLDER_1
[STYLE_SHEETS_USE-5]
If the CSS Style contains a property with a value that is inappropriate to it, warn → WARN: The CSS Style sheet contains a property with an unexpected value [STYLE_SHEETS_USE-6]
If the CSS Style contains a property with a value that requires a unit or a percentage:
If the unit (or percentage) is not present, warn → WARN: The CSS Style sheet contains a property with a value where a unit or a percentage was expected [STYLE_SHEETS_USE-7]
If the unit (or percentage) is inappropriate to the value, warn → WARN: The CSS Style contains a property with a value with an unexpected unit [STYLE_SHEETS_USE-8]
If a
table
element exists,
warn
→
WARN: A Table element exists
[TABLES_ALTERNATIVES-1]
For each
table
element:
If it contains at most one
tr
element,
FAIL
→
FAIL: Table contains less than two tr elements
[TABLES_LAYOUT-1]
If no
tr
element contains more than one
td
element,
FAIL
→
FAIL: Table contains less than two td elements
[TABLES_LAYOUT-2]
For each nested
td
element:
If the element contains only an image (or equivalent object) whose actual dimensions are 2x2 or less, FAIL → FAIL: A table cell contains only an image whose actual dimensions are 2x2 or less [TABLES_LAYOUT-3]
For each
table
element:
If it contains a
table
element,
FAIL
→
FAIL: There are nested tables
[TABLES_NESTED-1]