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]