mobileOK Basic tests

If an HTTP request does not result in a valid HTTP response (because of network-level error, DNS resolution error, or non-HTTP response), FAILNo associated message [http_response-1]

If the response is an HTTPS response:

If the certificate is invalid, FAILNo associated message [http_response-2]

If the certificate has expired, warnNo 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, FAILNo 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, warnNo associated message [http_response-5]

If the resulting URI is not a URI with the scheme http or https, FAILNo 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), FAILNo 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), warnNo 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 warnNo 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 warnNo associated message [http_response-9]

Otherwise (i.e. for included resources), FAILNo associated message [http_response-10]

If the HTTP status represents failure (4xx), other than 404 or a request for authentication (e.g. 401), FAILNo associated message [http_response-11]

For each meta element with an http-equiv attribute:

If a matching HTTP response header does not exist, warnNo associated message [meta_http_equiv-1]

If a matching HTTP response header exists but its value differs from the content attribute value, warnNo 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", FAILNo 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, FAILNo 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, FAILNo 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]