MDAS-M v.0.9.1
Changes from v.0.9
- Addition of E.5.2. Links are Links
- Clarification in E.6.3. Non-native and Toggle Buttons that this test includes anchor elements that behave as links
- Fix typo in E.6.2 failure matrix
Perceivability (P)
Content does not rely on the user having specific sensory perception in order to identify, recognize, understand, and/or use it.
1. Images
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.1.1 | Meaningful images have equivalent text descriptions | The accessible name and accessible description for a meaningful image provides an equivalent description of the image. | Blind |
Step 1: Identify Content
Use the ANDI: graphics/images module to find the images. Start with the first image outlined by ANDI: graphics/images. Use the “Focus on next element” button to find all images on the page. For each image found by ANDI: graphics/images, determine if the image is meaningful or decorative. This test is for meaningful images.
- All images which convey information should be considered meaningful images.
- Images are not pure decoration if they serve to illustrate text content, suggest mood or tone, or create specific sensory experiences, such as a section dividers or bullet icons that use imagery or designs that convey specific moods or tones. If they convey any information, AT users should receive the same benefit of that information.
Note:
- ANDI may identify images that are included as a sub-component of a focusable element. In such cases, test the image using the ANDI: focusable elements module instead.
- WCAG defines “pure decoration” as “serving only an aesthetic purpose, providing no information, and having no functionality.”
- WCAG defines “specific sensory experiences” as “a sensory experience that is not purely decorative and does not primarily convey important information or perform a function.”
Step 2: Test Content
- Review the ANDI Output for the meaningful image.
- The ANDI Output must provide an equivalent description of the image. This can be provided by a brief description of the image in the ANDI Output and instructions about where to obtain the full description.
- If the image is used as a CAPTCHA, ANDI Output describes the purpose of the CAPTCHA.
- If the image is of meaningful text, ANDI Output contains the same text.
- If the image is of a test or exercise that would be invalid if presented in text, ANDI Output describes the purpose of the image (it should not provide the same information needed to pass the test).
- If the image is intended to create a specific sensory experience, ANDI Output contains a descriptive label, and where possible, additional descriptive text.
- If an image is a component or child of a focusable element (e.g., a button or a link), evaluate the accessible name for the entire focusable element, not just the image. Use ANDI: focusable elements (and/or ANDI: links/buttons if applicable) to determine the accessible name for the combined element.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | If the following is TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain meaningful images. |
Failure Matrix
Due to the variability of failure conditions that can occur with this test, this matrix is not exhaustive. Evaluators should use their best judgement on Priority for failures that are not in the matrix.
Failure Condition | MDAS Failure | Priority |
---|---|---|
Text alternative does not completely convey image purpose or meaning or has minor inaccuracies | 1.1.1 Non-text Content | Moderate |
Text alternative has major inaccuracies | 1.1.1 Non-text Content | Serious |
Text alternative is a filename or placeholder text | 1.1.1 Non-text Content | Serious |
Image does not have alt attribute | 1.1.1 Non-text Content | Serious |
Complex images: long description is not provided, does not serve the same purpose as image, or does not present the same information | 1.1.1 Non-text Content | Serious |
Functional images: text alternative misrepresents the function that occurs when image is interacted with; or does not have a text alternative | 1.1.1 Non-text Content | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.1.2 | Decorative images are hidden from AT | There is no accessible name and accessible description for a decorative image. | Blind |
Step 1: Identify Content
Use the ANDI: graphics/images module to find the images. Start with the first image outlined by ANDI: graphics/images. Use the “Focus on next element” button to find all images on the page. For each image found by ANDI: graphics/images, determine if the image is meaningful or decorative.
- Images that are pure decoration, used only for visual formatting, or are not presented to users, should be considered decorative. Examples of this are:
- a swirl in the corner that conveys no information but just fills up a blank space to create an aesthetic effect
- images used as bullet points
- an abstract graphic used to separate sections of a page
- an invisible image that is used to track usage statistics
- part of a link to improve appearance or to increase the clickable area
- Images are not pure decoration if they serve to illustrate text content, suggest mood or tone, or create specific sensory experiences, such as a section dividers or bullet icons that use imagery or designs that convey specific moods or tones. If they convey any information, AT users should receive the same benefit of that information.
Note:
- ANDI may identify images that are included as a sub-component of a focusable element. In such cases, test the image using the ANDI: focusable elements module instead.
- WCAG defines “pure decoration” as “serving only an aesthetic purpose, providing no information, and having no functionality.”
- WCAG defines “specific sensory experiences” as “a sensory experience that is not purely decorative and does not primarily convey important information or perform a function.”
Step 2: Test Content
Review the ANDI Output for the decorative image and verify that it is blank.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain decorative images. |
Failure Matrix
Due to the variability of failure conditions that can occur with this test, this matrix is not exhaustive. Evaluators should use their best judgement on priority for failures that are not in the matrix.
Failure Condition | MDAS Failure | Priority |
---|---|---|
Decorative image has a text alternative that may confuse a user | 1.1.1 Non-text Content | Moderate |
Decorative image has a text alternative that will likely not confuse a user | 1.1.1 Non-text Content | Minor |
Decorative image text alternative is the filename or placeholder | 1.1.1 Non-text Content | Serious |
Decorative image does not have an alt attribute or aria-hidden=true | 1.1.1 Non-text Content | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.1.3 | Meaningful CSS images have text alternatives | The background image is not the only means used to convey important information | Blind |
Step 1: Identify Content
Use the ANDI: graphics/images module to find CSS background images. If the “find background” and “hide background” buttons are available, background images are on the page. Any changes to meaningful background images that occur automatically or as a result of interaction with the page should be included in this test.
Step 2: Test Content
- Select the “find background” button in ANDI: graphics/images to outline all background images (in green).
- Find the outlined background images within the page. (ANDI will not display information for background images.)
- Determine whether important information provided by the background image is available without the background image.
- Select the “hide background” function in ANDI: graphics/images to hide background images and help determine if the image’s information is also available on the page without the background image.
- Review the sequence or positioning of the image to determine whether equivalent information is presented in the same logical order.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | The page does not contain background images. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
CSS background image conveys important information that is not available elsewhere on the page | 1.1.1 Non-text Content | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.1.4 | No unnecessary images of text | The image of text cannot be replaced by text or is customizable. | Low vision |
Step 1: Identify Content
Identify all images of text. EXCLUDE text that is part of a picture that contains significant other visual content such as graphs, screenshots, and diagrams, which visually convey important information more than just text.
Step 2: Test Content
- Determine if text can be used instead of the image of text to present the same effect and information.
- Logotypes (text that is part of a logo or brand name) cannot be replaced by text.
- Type samples, branding, images of specific fonts that are not widely supported are additional examples of images of text that cannot be replaced by text.
- Determine if the image of text can be visually customized: adjust the font, size, color and background with controls provided by the web page.
- Customizing font size for an image of text also implies the ability to adjust the size without pixelation (which is typically evident when simply using the browser resize functionality to resize images).
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | The page does not contain Images of Text |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Image of text could be replaced with real text | 1.4.5 Images of Text | Moderate |
2. Multimedia
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.2.1 | Pre-recorded audiovisual media have captions | The synchronized media provides accurate captions for the audio content. | Deaf, hard-of-hearing, cognitive, learning |
Step 1: Identify Content
Identify any pre-recorded synchronized media content. EXCLUDE media that is clearly identified as a media alternative for text.
Step 2: Test Content
- Enable captions through the synchronized media player functions and play the media.
- A separate media file with captions may be provided to meet this requirement (i.e., captioned media version is a different file). If provided, test that one.
- Listen to the audio of the entire synchronized media. Compare the audio to the captions for accuracy, time-synchronization, and equivalence.
- Captions should include all dialogue and equivalents for non-dialogue audio information needed to understand the program content, including sound effects, music, laughter, speaker identification and location.
- The definition of captions includes synchronization. If they are not synchronized, they are not considered captions.
- Captions must not obscure relevant content on the video.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain pre-recorded synchronized media. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Captions are not provided for all synchronized media content | 1.2.2 Captions (Prerecorded) | Critical |
Captions are not accurate and/or do not include all dialogue and equivalents for non-dialogue audio information needed to understand the program content, including sound effects, e.g., music, laughter, speaker identification and location | 1.2.2 Captions (Prerecorded) | Serious |
All other relevant information in the video is not clearly visible (not obstructed by captions) when captions are enabled | 1.2.2 Captions (Prerecorded) | Moderate |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.2.2 | Pre-recorded videos and animations have transcripts or audio descriptions | The video or animation content is also available through an equivalent text or audio alternatives. | Blind, deafblind |
Step 1: Identify Content
Identify all pre-recorded audiovisual media, video-only, and animated content.
- In a video-only presentation, information is presented in a variety of ways including animation, text or graphics, the setting and background, the actions and expressions of people, animals, etc.
EXCLUDE any media intended as a media alternative for text if it is clearly labeled as such and synchronized media that does not contain visual content.
Step 2: Test Content
- Determine whether a text or audio alternative is provided for all media content that contains video (such as a transcript in text that provides a description of video content and actions or an audio track).
- Note: An image of a transcript does not meet this requirement.
- Play the media content entirely while reviewing the text or audio alternative.
- Determine whether the information in the text or audio alternative includes the same information that the video displays (e.g., if the video includes multiple characters, the alternative must identify which character is associated with each depicted action).
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain pre-recorded audiovisual, video-only, or animated media content. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
A text or audio alternative is not provided for all applicable pre-recorded synchronized audiovisual media content | 1.2.3 Audio Description or Media Alternative (Prerecorded) | Serious |
A text or audio alternative is not provided for all video-only content | 1.2.1 Audio-only and Video-only (Prerecorded) | Critical |
The text or audio alternative is not an accurate and complete representation of the video content in the synchronized audiovisual media | 1.2.3 Audio Description or Media Alternative (Prerecorded) | Moderate |
The text or audio alternative is not an accurate and complete representation of the video-only content | 1.2.1 Audio-only and Video-only (Prerecorded) | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.2.3 | Pre-recorded audios have transcripts | A text-based alternative is provided for audio-only content that provides an accurate and complete representation of the audio-only content. | Deaf, hard-of-hearing, deafblind, cognitive, learning |
Step 1: Identify Content
Identify all pre-recorded audio-only content. EXCLUDE any audio-only content that:
- Is clearly labeled as a media alternative for text, OR
- Consists of short sounds used to notify the user, such as confirmation beeps and error notifications.
Step 2: Test Content
- Determine if, for each audio-only content, a transcript is provided.
- Determine whether each transcript is text, (i.e., an image of a transcript would not be sufficient to pass this test).
- Play the audio-only content entirely while reviewing the transcript.
- Determine whether the information in the transcript is an accurate, correctly sequenced, and complete representation of the audio-only content.
- To be a complete representation of the content, the transcript must also describe relevant sounds in addition to dialogue, such as doors banging, sirens wailing, identification of speakers in dialogue, etc.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain pre-recorded audio-only content. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
A text-based transcript is not provided for all audio-only content | 1.2.1 Audio-only and Video-only (Prerecorded) | Critical |
The transcript is not an accurate and complete representation of the audio-only content | 1.2.1 Audio-only and Video-only (Prerecorded) | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.2.4 | Live audiovisual media have captions | The live synchronized media provides accurate captions for the audio content. | Deaf, hard-of-hearing, cognitive, learning |
Step 1: Identify Content
Identify any live synchronized media content. These requirements are only intended for broadcast of synchronized media. EXCLUDE two-way synchronized media calls between two or more individuals through web apps.
Step 2: Test Content
- Enable captions through synchronized media player functions.
- Listen to the audio of the synchronized media. Compare the audio to the captions for accuracy, time-synchronization, and equivalence.
- Lower accuracy of captions for live broadcasts may be acceptable due to limitations of real-time caption capabilities.
- The definition of captions includes synchronization. If they are not synchronized, they are not considered captions.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain live synchronized media. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Captions are not provided for all live synchronized media | 1.2.4 Captions (Live) | Critical |
All captions are not accurate | 1.2.4 Captions (Live) | Serious |
Discrepancies between the captions and the audio output are not minor in nature and significantly impact understanding | 1.2.4 Captions (Live) | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.2.5 | Media can be identified by text | Time-based media have a descriptive text identification | Blind |
Step 1: Identify Content
Identify all time-based media content; that is: pre-recorded and live synchronized, audio-only, and video-only content.
Step 2: Test Content
- Determine if, for each time-based media content, visible text exists adjacent to the content that describes the time-based media and/or gives its title.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain time-based media. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Time-based media content does not have visible adjacent text that describes the media and/or gives it its title | 1.1.1 Non-text Content | Minor |
3. Contrast
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.3.1 | Text has sufficient contrast | The visual presentation of text and images of text have sufficient contrast. | Low vision, colorblind |
Step 1: Identify Content
Identify ALL text AND images of text. EXCLUDE text that is:
- In logotypes: logo or brand name
- For inactive (disabled) user interface elements
- For purely decoration purposes and not meaningful, i.e., having no functionality
- Contained within a picture that contains significant other visual content (not to be confused with complex graphics that have text that is meant to be read)
Note:
- Some text may not initially be visible on the page, including text that becomes visible on mouseover or when an element receives focus. Nevertheless, the text must still conform to the color contrast requirement, wherever it occurs.
Step 2: Test Content
- Launch ANDI: color contrast.
- Review any “Contrast Alerts” in ANDI’s “Accessibility Alerts” section to identify any text that fails to meet the minimum contrast ratio.
- In ANDI’s “Accessibility Alerts” section, identify any “Manual Contrast Tests Needed.”
- If the text is not selectable or appears on a background image, determine the contrast using the Colour Contrast Analyser.
- Open the Colour Contrast Analyser tool, select the Foreground color-dropper button, and click a pixel in the text font. If the text color is varied in appearance or color, choose a pixel that provides the least contrast.
- Select the Background color-dropper button, then click a pixel in the background close to the text. If the background is varied in appearance or color, choose a pixel that provides the least contrast.
- Identify the Contrast Ratio
- Compare the contrast ratio against the minimum required contrast ratio identified in the ANDI Contrast Ratio output.
- If the page contains an image of text alone, or an image with text and no other significant content, test the image of the text with the CCA to determine the contrast ratio between the foreground (text) and background. Note: This is for instances where it is impossible for the ANDI: color contrast module to detect the presence of the text.
- Select the graphics/images module in ANDI.
- Use the ANDI arrow buttons to identify any images of text or images with text and no other significant content.
- Open the CCA and test the contrast of the text in the image.
- Select the Foreground color-dropper button and click a pixel in the text font. If the text color is varied in appearance or color, choose a pixel that provides the least contrast.
- Select the Background color-dropper button and click a pixel in the background close to the text. If the background is varied in appearance or color, choose a pixel that provides the least contrast.
- Determine whether the resulting contrast ratio is at least 4.5:1.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | The page has no visible text or images of text, is a logo, inactive (disabled) user interface element, decorative, or is contained within a picture that contains significant other visual content |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Large text (18 pt or 14 pt bold) has less than a 3:1 contrast ratio with its background | 1.4.3 Contrast (Minimum) | Serious |
Regular text or image of text has less than a 4.5:1 contrast ratio with its background | 1.4.3 Contrast (Minimum) | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.3.2 | Informational graphics have sufficient contrast | Parts of graphics required to understand the content have a 3:1 contrast ratio against adjacent colors, except when a particular presentation of graphics is essential to the information being conveyed | Low vision, colorblind |
Step 1: Identify Content
- Open ANDI: graphics/images
- Document graphics that a user would need to perceive to understand the content, such as icons or graph lines/bars.
EXCLUDE logos, flags, pictures of real-life scenes such as photos of people or scenery, screenshots, graphics that have corresponding text that communicates the same information, and graphics that cannot be represented in any other way (e.g., diagrams of medical information that use the colors found in biology or color gradients that represent a measurement, such as heat maps). Note: For testers who are new to testing this success criterion, it is highly recommended to review Understanding Non-text Contrast prior to completing this test to better understand what constitutes a graphic that is needed to understand the content and what is considered an adjacent color.
Step 2: Test Content
- Assess what part of each graphic is needed to understand what it represents. In this test, those parts will be called its meaningful aspects.
- Identify the adjacent color(s). This typically is the page background.
- Open the Colour Contrast Analyser (CCA) tool.
- For each meaningful aspect, grab its color for the CCA foreground section. Then grab each adjacent color in the CCA background section.
- If there are multiple colors and/or a gradient, choose the least contrasting area to test.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | The page does not contain graphics, or the graphic is one of the following: a logo, a flag, a picture of real-life scenes such as photos of people or scenery, graphics that have corresponding text that communicates the same information, a screenshot, or a graphic that cannot be represented in any other way |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The graphic is not understandable because its meaningful aspects have less than a 3:1 contrast with their least contrasting adjacent color and the meaningful aspects need that contrast for understanding | 1.4.11 Non-text Contrast | Moderate |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.3.3 | UI states have sufficient contrast | Visual information required to identify user interface elements and their various states, except for inactive elements or where the appearance of the element is determined by the user agent and not modified by the author, have a contrast ratio of at least 3:1 against adjacent color(s). | Low vision, colorblind |
Step 1: Identify Content
- Use ANDI: focusable elements to identify all interactive elements on the page.
- Document each element that ANDI: focusable elements identifies.
- For each element that is used on the page multiple times, verify if they have identical hover, focus, and checked states. If all of the similar looking elements appear to have identical state indicators, only document and test one instance of that element.
- Close ANDI and move to step 2 to test the content.
EXCLUDE inactive/disabled elements and user-agent defined states (the element looks the same as the native browser/operating system style). Note: For testers who are new to testing this success criterion, it is highly recommended to review Understanding Non-text Contrast prior to completing this test to better understand all of the different ways an element is distinguishable as interactable and what is considered an adjacent color.
Step 2: Test Content
- For each element documented from step 1, identify and document if its visual appearance changes for each of the following states:
- Hover
- Focus
- Active (click down and hold to see)
- Checked (applies to checkboxes, radio buttons, switches, and related elements)
- Starting with the default state of the element, and repeating for each of the visually distinct states identified in 1, perform the following test:
- Identify all of the ways in which the control might be distinguished by a user. In this test, they will be called its distinguishing indicator(s). For example:
- Button
- Default state might be distinguishable by its text, background color, and/or border.
- A focused button is typically distinguishable by its border, while a hovered button is typically distinguishable by its background color.
- Checkbox or radio button
- Default state it is typically distinguishable by its border.
- A checked checkbox/radio button is typically distinguishable by its checkbox graphic, while a focused checkbox is typically distinguishable by its border or background color.
- Link
- Default state it is typically distinguishable by its text and/or underline.
- A focused or hovered link is typically distinguishable by its border, underline, or color.
- Form Input
- Default state it is typically distinguishable by its border or its background color.
- A focused input is typically distinguishable by its border or its cursor/caret (the line inside of the input)
- Switch/toggle button
- Default state is typically distinguishable by its background color, border, and/or the background color or border of the knob inside of it.
- A focused switch/toggle button is typically distinguishable by its border.
- Button
- Identify the adjacent color(s). This typically is the page background, but for elements that contain multiple elements (e.g., a switch/toggle button), this may also include colors within the element that contrast one element with another (e.g., the switch knob vs its track).
- Open the Colour Contrast Analyser (CCA) tool.
- For each distinguishing indicator, grab its color for the CCA foreground section. Then grab each adjacent color in the CCA background section.
- Tip: Use a snipping or screenshotting tool that has a timer (such as the Windows “Snipping Tool” application) to capture the element in the state that you are testing.
- Identify all of the ways in which the control might be distinguished by a user. In this test, they will be called its distinguishing indicator(s). For example:
- Document the contrast ratio (if there is more than one distinguishing indicator and/or adjacent color, document the highest contrast ratio).
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain interactive UI elements, the UI element is disabled/inactive, and/or the UI element is using the browser/operating system provided styles |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The distinguishing indicator(s) of an element have less than a 3:1 contrast ratio with all of its adjacent colors for at least one state of an element | 1.4.11 Non-text Contrast | Moderate |
4. Sensory Characteristics
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.4.1 | Meaning is not communicated using color alone | Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element. | Colorblind, low vision |
Step 1: Identify Content
Identify content that relies on color to convey meaning, such as indicate an action, prompt a response, or distinguish a visual element.
Step 2: Test Content
- Determine whether color is the only visual method used to convey information (e.g., review the onscreen text for a full description and/or look for other visual cues).
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | No content relies on color to convey meaning |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Color is used to covey meaning without a secondary visual method to convey the information | 1.4.1 Use of Color | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.4.2 | Instructions do not rely on only sensory characteristics for understanding | Instructions provided for understanding and operating content do not rely solely on sensory characteristics of elements, such as shape, color, size, visual location, orientation, or sound. | Blind, low vision, deaf, hard-of-hearing |
Step 1: Identify Content
Identify instructions for understanding and operating content that rely on sensory information to convey information, e.g., references to shape, color, size, visual location, orientation, or sound.
Step 2: Test Content
- Determine if the instructions using sensory characteristics provide details that allow content to be located, identified, understood, and operated without any knowledge of its shape, color, size, orientation, or relative position.
- Check for any auditory cues that are provided as instructions for understanding and operating content.
- Ensure sound is not muted while testing.
- Determine whether there are visual and/or textual cues that provide the same information.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page’s instructions do not rely on sensory information |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Instructions provided for understanding or operating content relies solely on a sensory characteristic of an element | 1.3.3 Sensory Characteristics | Serious |
5. CAPTCHA
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
P.5.1 | CAPTCHAs have formats for both blind and Deaf users | Alternative forms of CAPTCHA are provided and have text alternatives that identifies them and describes their purpose. | Blind, Deaf |
Step 1: Identify Content
Identify all CAPTCHA inputs.
Step 2: Test Content
- Determine if the CAPTCHA provides a format for users without vision. This could be text or text alternative; or a button that, when activated with a keyboard, announces what the user needs to input to pass the CAPTCHA.
- Determine if the CAPTCHA provides a format for users without hearing. This could be text, graphics, or image of text. Almost all CAPTCHAs meet this requirement.
- If the CAPTCHA is an image, determine whether the CAPTCHA has a text alternative (such as a label) that identifies it as a CAPTCHA and describes its purpose.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain CAPTCHAs. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
CAPTCHA does not have a format for users without vision | 1.1.1 Non-text Content | Critical |
CAPTCHA does not have a format for users without hearing | 1.1.1 Non-text Content | Critical |
CAPTCHA does not have a text alternative that identifies it and describes its purpose | 1.1.1 Non-text Content | Moderate |
Structure (S)
Content is structured so that it is understandable in different forms of presentation.
1. Titles
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.1.1 | Page has title that describes its topic or purpose | A title is defined for the page that describes the topic or purpose of the content | Blind, cognitive disabilities, motor disabilities |
Step 1: Identify Content
All web pages, applications, and documents.
Step 2: Test Content
- Launch ANDI: structures
- Review the alerts in ANDI’s “Accessibility Alerts” section to determine whether ANDI displays any of the following Invalid HTML Alerts:
- “Page has no <title>”
- “Page <title> cannot be empty”
- In ANDI, select “more details”, then “page title.”
- A modal dialog box will appear with the identified page title listed.
- Evaluate the purpose and content of the web page.
- Determine whether the Page Title is a meaningful representation or indication of page content.
- If the web page is part of a set of web pages, determine whether the Page Title is sufficient to distinguish the web page from other pages.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The page does not have a title | 2.4.2 Page Titled | Moderate |
The page title does not accurately describe the topic or purpose of the page content | 2.4.2 Page Titled | Moderate |
The page title does not accurately distinguish the page from other pages in the web site | 2.4.2 Page Titled | Minor |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.1.2 | Frame title describes its contents | Each <frame> has a title attribute that describes its content. | Blind |
Step 1: Identify Content
- Launch ANDI. If a Frame is used, ANDI will provide a notification that frames have been detected.
- If there are no Frames, ANDI will provide no notification.
Note:
- In HTML5 the <frame> element is marked as obsolete. While the <frame> element has been deprecated in HTML5, testers may still encounter web pages and/or web applications with code that, while outdated, can and should still be accessible.
- Frame content must be tested for conformance with all other applicable tests.
- To open each Frame to test: Launch ANDI and select “Cancel”. A list of Frames will show; select the link to test an individual frame.
Step 2: Test Content
- Launch ANDI. If a Frame is used, ANDI will provide a notification that Frames have been detected. Select “Cancel” to test an individual Frame.
- ANDI will list each Frame, and, if available, the associated title attribute.
- If there is no title attribute, ANDI will reveal an “alert”.
- Select each link to access each frame. Review the Frame to understand its content. Navigate back to the page being tested and launch ANDI again.
- In ANDI, review each frame’s corresponding title attribute for a meaningful description of content.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | No Frames are identified |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Frame title does not describe its contents | 4.1.2 Name, Role, Value | Moderate |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.1.3 | Iframe name and description describes its contents | The combination of accessible name and description for each <iframe> describes its content. | Blind |
Step 1: Identify Content
Use ANDI to identify all iframes in the tab order.
- Launch ANDI: iframes to navigate to and highlight iframes on the page. If there is not an option for the iframes module, there are no iframes on the web page.
- Use the “Next Element” button to find all iframes that have the following listed in the Accessibility Component:
- a tabindex value that is not negative (e.g., 0, 1) meaning the iframe is in the tab order OR
- no tabindex shown.
Test only these <iframes>.
Note: A negative tabindex such as -1 means that the iframe is explicitly excluded from the tab order. Do not test iframes explicitly excluded from the tab order. Note: All visible iframe content must be tested for conformance with all other applicable tests. To open each iframe to test: Within ANDI: iframe, select the button to “test in new tab.”
Step 2: Test Content
- Launch ANDI: iframes
- Review the ANDI Output for each iframe that has a non-negative tabindex value or where the tabindex is not defined to determine whether the accessible name and description accurately describe the content of each <iframe>.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | No iframes are identified or if the iframes are explicitly excluded from the tab order (i.e., the tabindex is a negative number) |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The iframe’s accessible name and/or description does not describe its contents | 4.1.2 Name, Role, Value | Moderate |
2. Language
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.2.1 | Page language is marked up properly | The default human language of each web page can be programmatically determined. | Blind, cognitive, learning, language |
Step 1: Identify Content
- Identify all pages with text.
- Review the page content to identify the default human language of the page (the language in which most of the page is presented).
Note:
- “Human language” refers to the language that people use to communicate with one-another as opposed to coding languages used to produce software and web content.
Step 2: Test Content
- Launch ANDI: structures.
- Click the “more details” link, then “page language.”
- ANDI will display a dialog listing the value of the lang attribute assigned to the <html> element of the page.
- If no lang attribute is defined or if the attribute is empty, ANDI will provide a warning in the same dialog.
- Consult the Internet Assigned Numbers Authority’s (IANA) Language subtag registry to determine whether the language is properly defined and matches the default human language for the page.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The default primary language of the page is not defined programmatically | 3.1.1 Language of Page | Serious |
The programmatically defined language of the page is different than the language of the text of the page (e.g., the page is in English, but the page is marked up as Cantonese) | 3.1.1 Language of Page | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.2.2 | Content in a different language than the rest of the page is marked up properly | The human language for any content segment that differs from the default human language of the page can be programmatically determined. | Blind, cognitive, learning, language |
Step 1: Identify Content
- Identify any text content that differs from the default human language of the page including alternative text.
- Identify the human language of the text content that differs from the default human language of the page.
Note:
- Proper names, technical terms, words of indeterminate language, and words or phrases that have become part of the vernacular of the immediately surrounding text do not require a lang attribute different from the default language of the page and are not covered by this test.
Step 2: Test Content
- Launch ANDI: structures; click the “more details” link, then “[#] lang attributes”. If the [#] is zero, no content was marked with a lang attribute.
- Locate the markup added to the web page that identifies the element to which the attribute is applied, and the language defined in the language attribute value (e.g., “en” for English).
- Mouseover or tab to the markup to reveal the beginning and end of the element.
- Determine whether the entire passage is enclosed within the element.
- Consult the Internet Assigned Numbers Authority’s (IANA) Language subtag registry to determine whether the language is properly defined and matches the human language for the content segment.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | All of the content in the page is in the same human language. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
A sentence or more differs from the primary language of the page and is not correctly specified programmatically | 3.1.2 Language of Parts | Serious |
A word or phrase differs from the primary language of the page and is not correctly specified programmatically | 3.1.2 Language of Parts | Moderate |
The programmatically identified language of text that is different than the primary page language does not match the human language of that text (e.g., the text is in Spanish, but is coded as German) | 3.1.2 Language of Parts | Critical |
3. Landmarks
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.3.1 | Content contained within appropriate landmarks | All perceivable content is located within a container with the appropriate landmark role and those containers have accessible names that describe their topic or purpose. | Blind |
Step 1: Identify Content
- Identify the visual structure of the content and identify the areas of content that fall within one of these categories:
- Header – The top section of the page that typically contains the site name, logo, search, and one or more navigation bars
- Nav – Sections that contain collections of navigational elements (typically links) for navigating the page or related pages. Many sites have more than one Nav and at least one typically appears as a child of a Header. In addition, breadcrumbs and pagination are Navs.
- Search – Sections that contain elements that are used for search functionality.
- Main – The primary content of the page. Excludes sidebars.
- Form – Sections that contain form inputs and elements. Forms that are used for search should have a role=search and not a form role.
- Aside – Sidebars and other supporting sections of the page, complementary to the main content at a similar level in the DOM hierarchy, that remain meaningful when separated from the main content.
- Footer – The bottom section of the page that typically contains copyright, physical location, contact information, and accessibility statement.
- Use ANDI to identify all programmatically defined landmarks.
- Launch ANDI: structures.
- Select the “landmarks” button within ANDI: structures.
- ANDI will add dotted outlines around each identified landmark.
EXCLUDE documents and desktop/mobile applications.
Step 2: Test Content
- In ANDI: structures “landmarks”, verify that each visual structural section, defined in step 1, is located within an element with the appropriate landmark role.
- Verify that if multiple instances of the same landmark role exist on the page, that they all have unique accessible names AND that all forms have an accessible name.
- Verify that the page only contains one instance of each of these landmarks: banner, main, contentinfo
- Exclude iframes, frames, and elements with an application role in this analysis
Structural Section | Element or Role | Needs Accessible Name | More than one? |
---|---|---|---|
Header | <header> or role=banner Note: <header> does not have banner role if child of <article>, <aside>, <main>, <nav>, or <section>. Exclude <header>s that are children of these elements. | Yes, if more than one | No Note: Iframes, frames, and elements with application roles do not count and may have one banner landmark themselves |
Nav | <nav> or role=navigation | Yes, if more than one | Yes |
Search | role=search | Yes, if more than one | Yes |
Main | <main> or role=main | Yes, if more than one | No Note: Iframes, frames, and elements with application roles do not count and may have one main landmark themselves |
Form | <form> or role=form | Yes | Yes |
Aside | <aside> or role=complementary | Yes, if more than one | Yes |
Footer | <footer> or role=contentinfo Note: <footer> does not have contentinfo role if child of <article>, <aside>, <main>, <nav>, or <section>. Exclude <footer>s that are children of these elements. | Yes, if more than one | No Note: Iframes, frames, and elements with application roles do not count and may have one contentinfo landmark themselves |
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page structure is too simple for landmarks OR is a document or a desktop or mobile application. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
At least one visually apparent section is not located within the appropriate landmark. | 1.3.1 Info and Relationships | Moderate |
Two or more instances of a landmark exist on a page and at least one does not have an accessible name that describes its purpose | 4.1.2 Name, Role, Value | Moderate |
At least one form element exists on the page without an accessible name that describes its purpose | 4.1.2 Name, Role, Value | Minor |
The page contains multiple instances of: banner, main, or contentinfo (additional instances not located inside of a document or application role) | 4.1.2 Name, Role, Value | Moderate |
4. Headings
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.4.1 | Headings describe topic or purpose | Each heading describes the topic or purpose of its content. | Language, cognitive, learning, blind |
Step 1: Identify Content
- Identify all visually apparent headings, which denote sections of content.
- Headings are often in a larger, bolded font separated from paragraphs by extra spacing (though not always). Note the hierarchy and structure of each heading with respect to other headings on the page.
- Some headings are not visible but serve a broader purpose, i.e., navigational wayfinding for screen reader users.
- Use ANDI to identify all programmatically defined headings: <h1> to <h6> or ARIA role=”heading”.
- Launch ANDI: structures.
- Select the “headings” button within ANDI: structures.
- ANDI will add dotted outlines around each identified heading that is visible on the page.
Step 2: Test Content
- For each visually identified heading, compare the heading text to the content beneath the heading.
- For each programmatically defined heading, compare the accessible name to the content beneath the heading.
- Verify that the heading describes the topic or purpose of the content beneath the heading.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain headings. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The heading does not describe the topic or purpose of its content | 2.4.6 Headings and Labels | Moderate |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.4.2 | Headings are programmatically determinable | Each visual heading is programmatically determinable. | Blind |
Step 1: Identify Content
- Identify all visually apparent headings, which denote sections of content.
- Headings are often in a larger, bolded font separated from paragraphs by extra spacing (though not always). Note the hierarchy and structure of each heading with respect to other headings on the page.
Step 2: Test Content
- Select ANDI: structures and review the ANDI Output for each visually apparent heading. ANDI outlines all headings with a dotted purple line.
- If ANDI does not identify a visually apparent heading, then the heading is not defined programmatically.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain visual headings. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Visual heading is not programmatically defined | 1.3.1 Info and Relationships | Moderate |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.4.3 | Semantic heading structure logically matches visual heading presentation | Programmatic heading levels logically match the visual heading presentation within the heading structure. | Blind |
Step 1: Identify Content
- Identify all visually apparent headings, which denote sections of content.
- Headings are often in a larger, bolded font separated from paragraphs by extra spacing (though not always). Note the hierarchy and structure of each heading with respect to other headings on the page.
- Use ANDI to identify all programmatically defined headings: <h1> to <h6> or ARIA role=”heading”.
- Launch ANDI: structures.
- Select the “headings” button within ANDI: structures.
- ANDI will add dotted outlines around each identified heading that is visible on the page.
Step 2: Test Content
- Launch ANDI: structures and select the “view headings list” button to display the Structure Outline.
- Mouse over or tab through each of the headings in ANDI’s Structure Outline to review the ANDI Output for each heading.
- ANDI will identify heading level conflicts if found. Ex: “Heading element level <h1> conflicts with [aria-level=”2″].”
- Compare the heading levels listed in the Structure Outline to the page content. Determine whether the heading levels logically match the visual heading presentation within the heading structure.
- The most important heading(s) should have the highest priority level. For example, heading level 1 is a higher level than heading level 2, which is higher than heading level 3.
- Headings with an equal or higher level start a new section; headings with a lower level start new subsections that are part of the higher leveled section.
- A heading level 1:
- Cannot be used more than once on a page (unless it is in a modal dialog that is not visible upon page load)
- Is not required to match the page title
- The level of headings may not always be in sequence but may be valid as it relates to the visual structure/importance communicated by visible headings on the page. For example, an <h2> heading may be used for a navigation structure that precedes an <h1> title on a page. It is also acceptable to have <h3> then <h5> without an <h4> in between.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain headings. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Programmatic heading structure does not logically match the visual heading presentation | 1.3.1 Info and Relationships | Serious |
5. Lists
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.4.1 | Lists are of the proper type | All visually apparent lists are programmatically identified according to their type. | Blind |
Step 1: Identify Content
Identify all visually apparent lists on the page. Note:
- Exclude menus or other elements that are part of the page’s navigational framework from this test. Developers might use list elements to create grouped navigational items, such as menus, submenus, lists of navigation links, breadcrumbs, etc. while styling them to remove bullets or numbering and orienting the lists horizontally instead of vertically. If these navigational elements are part of the page’s navigational framework, separate from the main content, they should not be considered visually apparent lists for this test and should be excluded. However, any lists which are part of the main content should be included.
- Not all lists require markup. For instance, a list of items in a sentence, separated by commas, do not have to be included in a bulleted or numbered list.
Step 2: Test Content
- Launch ANDI: structures and select the “lists” button.
- Review the information under “List Elements,” noting the number of lists identified and their types.
- For each list, visually determine the type of list; determine if it appears to be ordered, unordered, or a description list. Exclude menus and navigational framework elements from this test, unless they are part of the main content.
- Ordered – numbered sequentially and, if necessary, hierarchically (e.g., 1, 2, 2.a, 2.a.i, etc.) and are used where sequence or the ability to reference specific items by number/letter are important.
- Unordered – not numbered and are used where a specific sequence or the ability to reference specific items by number/letter are not important.
- Description list (dl) – used to groups terms with their descriptions.
- Review the visual representation of list relationships, including order, hierarchy, and nesting compared to the programmatic list definitions presented via the ANDI output.
- It is possible to provide any number of nested list combinations using ordered, unordered, and definition lists. ANDI identifies each nested list separately. Review each list using the “Inspect Next Element” button to determine if the visual nesting and relationship matches the programmatic nesting and relationships.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain visually apparent lists |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Primary content that has a visual appearance of a list is not defined programmatically as a list | 1.3.1 Info and Relationships | Moderate |
Secondary content that has a visual appearance of a list is not defined programmatically as a list | 1.3.1 Info and Relationships | Minor |
Programmatic list relationship is not consistent with the list relationships presented visually | 1.3.1 Info and Relationships | Moderate |
6. Tables
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.6.1 | Data tables are identified programmatically | Each data table has programmatic markup to identify it as a table. | Blind |
Step 1: Identify Content
Identify all data tables (including images of data tables) where data cell(s) require header(s) for understanding. Note:
- To assist with identification of data tables, use ANDI:
- Launch ANDI: structures, then select the “reading order” link.
- The markup added to the page indicates the order that assistive technology will read the content
- Data tables are those tables where information in a cell requires a row or column header to adequately describe the cell’s contents. The reading order of a data table will not be sensible when read without the row and/or column headers. The content in a data table would be best understood when it is NOT read in the order that ANDI marks on the page.
- EXCLUDE content that does not require a row or column header for understanding:
- Layout tables are used for placement of elements on the page for visual aesthetics without an informational relationship between headers and the information in the data cells. Content is understandable when read in the marked reading order.
- Where content that is visually presented in a table but is understandable when read in the marked reading order, the content does not require a data table structure. This may occur when a CSS technique has been used to visually present information.
Step 2: Test Content
- Launch ANDI: tables.
- Determine whether ANDI detects and identifies the data table(s). ANDI will identify any non-hidden tables coded using <table>, role=”table”, or role=”grid”.
- If the tables module does not display as an option in the modules selection list, then ANDI has not detected any table programmatically on the page (meaning any content presented visually in a table does not have programmatic markup to identify it as a table).
- If the ANDI: tables module is available, use ANDI’s “Analyze Next Table” button to sequentially highlight the detected tables on the page. If the table in question is not outlined by ANDI and/or it is not possible to navigate to the table using ANDI, then ANDI has not detected that table programmatically (meaning the content presented visually in that table does not have programmatic markup to identify it as a table).
- Review any data tables that use role=”presentation”.
- ANDI will display role=”presentation” in the Element information and/or under Accessibility Alerts.
- A data table that includes role=”presentation” will not convey the table semantics to a screen reader and would fail this test.
- ANDI Output will display an alert whenever ARIA role=”table” is not coded correctly.
- Use the Analyze Previous/Next Table buttons in ANDI to navigate to each of the identified tables on the page.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain data tables |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Content that serves as a data table is not marked up as a data table or is marked up incorrectly | 1.3.1 Info and Relationships | Serious |
Data table has a role of presentation or none assigned | 4.1.2 Name, Role, Value | Serious |
ARIA table attributes are used incorrectly on a data table | 4.1.2 Name, Role, Value | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.6.2 | Data table cells are associated with relevant headers | All data cells are programmatically associated with relevant headers. | Blind |
Step 1: Identify Content
Identify all data tables (including images of data tables) where data cell(s) require header(s) for understanding. Any changes to data tables that occur automatically or as a result of interaction with the page should be included in this test. Note:
- To assist with identification of data tables, use ANDI:
- Launch ANDI: structures, then select the “reading order” link.
- The markup added to the page indicates the order that assistive technology will read the content
- Data tables are those tables where information in a cell requires a row or column header to adequately describe the cell’s contents. The reading order of a data table will not be sensible when read without the row and/or column headers. The content in a data table would be best understood when it is NOT read in the order that ANDI marks on the page.
- EXCLUDE content that does not require a row or column header for understanding:
- Layout tables are used for placement of elements on the page for visual aesthetics without an informational relationship between headers and the information in the data cells. Content is understandable when read in the marked reading order.
- Where content that is visually presented in a table but is understandable when read in the marked reading order, the content does not require a data table structure. This may occur when a CSS technique has been used to visually present information.
Step 2: Test Content
- Navigate to each data cell with ANDI: tables.
- The headers of the data cell will be highlighted on the page. Verify that all of the table headers (row and/or column headers) that describe the data cell are highlighted.
- Alternatively, verify in the ANDI Output that all of the table headers (row and/or column headers) that describe the data cell are listed.
- If there are sub headers for either columns or rows, ensure that both the main header and the sub header is highlighted/listed for affected data cells.
- Using ANDI, move each data cell in the table and repeat #2 for each.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain data tables OR the data tables do not require row or column headings for understanding |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Table column headers are not associated with each of the data cells in its column | 1.3.1 Info and Relationships | Serious |
Table row headers are not associated with each of the data cells in its row | 1.3.1 Info and Relationships | Serious |
Table sub headers are not associated with affected data cells | 1.3.1 Info and Relationships | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.6.3 | Layout tables do not have semantic meaning | The layout table DOES NOT designate the layout table using ARIA role=”table” AND DOES NOT include table header structure and relationship elements and/or associated attributes. | Blind |
Step 1: Identify Content
Identify any programmatic tables where the table structure is used purely for layout purposes. EXCLUDE data tables. Note:
- To find programmatic tables on the page, use ANDI: tables (as in the previous test).
- If the ANDI: tables module does not display as an option in the modules selection list, then there is no programmatic table on the page.
- To assist with identifying layout tables:
- Launch ANDI: structures, then select the “reading order” link.
- The markup added to the page indicates the order that assistive technology will read the content
- Content that is within a layout table does not require row or column headers for understanding. This content should be sensible when read in the reading order identified by ANDI.
Step 2: Test Content
- Inspect the “Element” output in ANDI to determine whether the layout uses role=”table”.
- Inspect the ANDI output and any associated alerts to determine whether a <table> includes header structure elements and/or attributes (e.g., <th>, scope=”row”).
- If a table has an ARIA role=”presentation” assigned and the table also denotes header relationships (e.g., using <th>, scope=”row”) ANDI will provide a corresponding alert; ignore this alert on a layout table. A table that includes role=”presentation” will not convey the table semantics to a screen reader. Therefore, the table structure semantics (e.g., <th>, scope=”row”) can be ignored if the table is indeed a layout table.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | The page does not contain layout tables |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Layout table and/or its elements have semantic meaning | 1.3.1 Info and Relationships | Serious |
7. Reading Order
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.7.1 | Content order and meaning preserved without CSS positioning | The reading order of the content (in context) is correct, and the meaning of the content (in context) is preserved without CSS positioning. | Blind, language |
Step 1: Identify Content
Use ANDI to identify all content positioned with CSS and inline styles.
- Launch ANDI, then select the Advanced Settings button; then select “linearize page” to remove CSS positioning from elements on the page.
- If content is positioned with CSS, the information will be displayed with blue highlighting around the elements and those elements will be placed in the page in the same order in which they appear in the page code.
- ANDI: structures, and the “reading order” link can also be used to reveal the reading order prior to linearizing the content. But it will not identify which content has been positioned with CSS.
Step 2: Test Content
- Review all highlighted, linearized content.
- Determine whether the reading order of content is still understandable after linearization. If necessary, toggle the linearization button to view the original position of the content. If content becomes illegible due to overlapping, etc., this is not a failure of this test, which is to verify if the programmatic reading order is understandable.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain content positioned using CSS |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Content sequence and/or meaning is not understandable without CSS positioning | 1.3.2 Meaningful Sequence | Moderate |
8. Parsing
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
S.8.1 | Element IDs are unique | Element IDs are unique | Blind |
Step 1: Identify Content
All page content. Non-web content DOES NOT APPLY (DNA). This includes documents and native applications.
Step 2: Test Content
- Send the serialized DOM of the current page to the W3C HTML validation service using the “Check Serialized DOM of current page” bookmarklet. A new tab will open to the W3C HTML validation service.
- Once on the W3C HTML validation service page, use the “Duplicate IDs” bookmarklet.
- If any duplicate IDs are reported, verify that they are not associated with visible and/or interactive elements.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page is not web content |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Page has duplicate IDs on visible and/or interactive elements | 4.1.1 Parsing | Serious |
User Interface Elements (E)
User Interface Elements are understandable and operate as expected.
1. Form Labels, Instructions, Description, and Purpose
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.1.1 | Form fields have visible labels or instructions that describe their purpose | Visual labels or instructions are provided for form inputs that describe their purpose. | Cognitive disabilities |
Step 1: Identify Content
- Use ANDI: focusable elements to identify any form elements on the page, e.g., text fields, radio buttons, checkboxes, read-only fields, and multi-select lists.
- Find all instructions and cues (textual and graphical) that are related to form elements/controls, e.g., groupings, order of completion, special conditions, qualifiers, format instructions.
EXCLUDE disabled input elements. These do not receive keyboard focus, cannot be selected and cannot be modified.
Step 2: Test Content
- Determine if each form input provides visual labels or instructions.
- One example of instructions is indicating a field as required.
- Note: “visual labels” are not always going to be text. An icon is acceptable to meet this requirement if its meaning is universally understood (such as a magnifying glass icon for a search input) or understandable within the context of the page. However, evaluators should mark this test as a failure if they have reason to believe that the icon will not be understood.
- For this test, it is unnecessary for the labels or instructions to be programmatically associated with the input.
- Verify that the labels or instructions describe the topic or purpose of the form input.
- Move focus into each form input and ensure that the label is still visible.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain form input or all form inputs are disabled. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Visual label or instructions not provided for form input | 3.3.2 Labels or Instructions | Serious |
Visual label or instructions do not describe the form input’s topic or purpose | 2.4.6 Headings and Labels | Serious |
Label does not remain visible when form input has focus | 3.3.2 Labels or Instructions | Moderate |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.1.2 | Form fields are described programmatically | The combination of the accessible name, accessible description, and other programmatic associations (e.g., table column and/or row associations) describes each input field and includes all relevant instructions and cues (textual and graphical). | Blind |
Step 1: Identify Content
- Use ANDI: focusable elements to identify any form elements on the page, e.g., buttons, text fields, radio buttons, checkboxes, read-only fields, and multi-select lists.
- Find all instructions and cues (textual and graphical) that are related to form elements/controls, e.g., groupings, order of completion, special conditions, qualifiers, format instructions.
EXCLUDE disabled input elements. These do not receive keyboard focus, cannot be selected and cannot be modified. Any changes to form elements that occur automatically or as a result of interaction with the page should be included in this test. Form fields are not required to have programmatic associations with form section headings unless there is significant risk of confusion.
Step 2: Test Content
- Launch ANDI: focusable elements (this is the default selection).
- Use the mouse or ANDI’s next/previous element buttons to highlight each focusable form element and review the ANDI output.
- Review the ANDI Output for each focusable form field.
- If the ANDI Output does not adequately define the form element, review other programmatic associations, such as table headings or location in a hierarchical list structure, to determine whether they provide or contribute to the form element’s description, cues, or instructions.
- In cases where the purpose of the button is intentionally vague or ambiguous (e.g., the content to be revealed after selecting a link to “Door 1,” “Door 2,” or “Door 3” is intended to be a surprise), it may be sufficient for the combination of button text, accessible name, accessible description, and/or button context to refer to the button purpose vaguely or ambiguously.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | The page does not contain form elements |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The combination of the accessible name, accessible description, and other programmatic associations does not describe and/or include all relevant instructions or cues for a form field | 1.3.1 Info and Relationships | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.1.3 | Purpose of form fields that collect user information programmed | On web page form field inputs that collect information about the user, the purpose of each input is programmatically determinable | Cognitive disabilities, motor disabilities |
Step 1: Identify Content
- Use ANDI: focusable elements to identify all text and numeric inputs, text areas, and select elements.
- Test each of these fields that collects information about the user of the page.
EXCLUDE all fields that do not collect information about the user of the page (e.g., “Mother’s Last Name” would be excluded while the user’s “Last Name” would be included). This test DOES NOT APPLY for any non-HTML (web) based content, i.e., documents and applications.
Step 2: Test Content
- Run the “Autocomplete Attribute” bookmarklet, which will display the autocomplete attribute on the page for every field that has one.
- Look at each field that collects information about the user of the page and see if it collects one of the types of data identified in the first column of the input purposes table below.
- If it does not, the field does not apply (DNA)
- Verify that the autocomplete attribute of the field is set to the autocomplete value that corresponds to the type of data the field collects (second column of the input purposes table).
Input Purposes Table
Data Type | Autocomplete Value |
---|---|
Full name | name |
Prefix or title (e.g., “Mr.”, “Ms.”, “Dr.”) | honorific-prefix |
First name | given-name |
Middle name | additional-name |
Last Name | family-name |
Suffix (e.g., “Jr.”, “B.Sc.”, “MBASW”, “II”) | honorific-suffix |
Nickname, screen name, handle: a typically short name used instead of the full name | nickname |
Job title | organization-title |
Username | username |
A new password | new-password |
The current password for the account identified by the username field (e.g., when logging in) | current-password |
Company name corresponding to the person, address, or contact information in the other fields associated with this field | organization |
Street address (multiple lines, newlines preserved) | street-address |
Street address (one line per field, line 1) | address-line-1 |
Street address (one line per field, line 2) | address-line-2 |
Street address (one line per field, line 3) | address-line-3 |
The most fine-grained administrative level, in addresses with four administrative levels | address-level4 |
The third administrative level, in addresses with three or more administrative levels | address-level3 |
The second administrative level, in addresses with two or more administrative levels; in the countries with two administrative levels, this would typically be the city, town, village, or other locality within which the relevant street address is found | address-level2 |
The broadest administrative level in the address, i.e., the province within which the locality is found; for example, in the US, this would be the state; in Switzerland it would be the canton; in the UK, the post town | address-level1 |
Country code | country |
Country name | country-name |
Postal code, post code, ZIP code, CEDEX code (if CEDEX, append “CEDEX”, and the dissement, if relevant, to the address-level2 field) | postal-code |
Full name as given on the payment instrument | cc-name |
First name as given on the payment instrument | cc-given-name |
Middle name as given on the payment instrument | cc-additional-name |
Last name as given on the payment instrument | cc-family-name |
Code identifying the payment instrument (e.g., the credit card number) | cc-number |
Expiration date of the payment instrument | cc-exp |
Month component of the expiration date of the payment instrument | cc-exp-month |
Year component of the expiration date of the payment instrument | cc-exp-year |
Security code for the payment instrument (also known as the card security code (CSC), card validation code (CVC), card verification value (CVV), signature panel code (SPC), credit card ID (CCID), etc.) | cc-csc |
Type of payment instrument | cc-type |
The currency that the user would prefer the transaction to use | transaction-currency |
The amount that the user would like for the transaction (e.g., when entering a bid or sale price) | transaction-amount |
Preferred language | language |
Birthday | bday |
Day component of birthday | bday-day |
Month component of birthday | bday-month |
Year component of birthday | bday-year |
Gender identity | sex |
Home page or other web page corresponding to the company, person, address, or contact information in the other fields associated with this field | url |
Photograph, icon, or other image corresponding to the company, person, address, or contact information in the other fields associated with this field | photo |
Full telephone number, including country code | tel |
Country code component of the telephone number | tel-country-code |
Telephone number without the country code component, with a country-internal prefix applied if applicable | tel-national |
Area code component of the telephone number, with a country-internal prefix applied if applicable | tel-area-code |
Telephone number without the country code and area code components | tel-local |
First part of the component of the telephone number that follows the area code, when that component is split into two components | tel-local-prefix |
Second part of the component of the telephone number that follows the area code, when that component is split into two components | tel-local-suffix |
Telephone number internal extension code | tel-extension |
Email address | |
URL representing an instant messaging protocol endpoint (for example, “aim:goim?screenname=example” or “xmpp:fred@example.net”) | impp |
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain form fields that collect information about the user, content is an application, content is a document. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The autocomplete attribute of a form field that collects user information is not defined or is defined as “off” or “on” | 1.3.5 Identify Input Purpose | Moderate |
The autocomplete attribute of a form field that collects user information has an improper value (i.e., the field collects the user’s full birthdate, but the value is ‘bday-day’ or ‘country-name’) | 1.3.5 Identify Input Purpose | Serious |
A form field that does NOT collect user information (i.e., “Mother’s last name”) has an autocomplete attribute that is intended for user information (i.e., ‘last-name’) | 1.3.5 Identify Input Purpose | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.1.4 | Related form elements are semantically grouped and labeled | Form elements that are logically related are grouped semantically and the group is labeled. | Blind |
Step 1: Identify Content
- Use ANDI: focusable elements and identify form inputs, text areas, checkboxes, radio buttons, and select elements.
- Identify fields that are in visual proximity to other fields and/or are visually grouped under a descriptive heading.
- Note the fields that are related to each other. These will include, but are not limited to all radio buttons, groupings of checkboxes, and groupings of text inputs (such as a phone number group that has three inputs, one for area code, second for prefix, and third for line number or a group that contains multiple address lines, city, state, and ZIP code).
EXCLUDE groupings that are not logically related, e.g., a section of a form that is collecting a name, address, and phone number – all of these elements together are not logically related, but the name fields need to be semantically grouped, as do the address fields, as do the phone number fields. INCLUDE PDF documents but EXCLUDE the semantic grouping requirement, as PDFs do not have semantical elements to group elements. Still ensure that grouped fields have a visible label.
Step 2: Test Content
For each logically related grouping of fields:
- Using ANDI, step through each form element of the group.
- Under ANDI’s Accessibility Components list, ensure that one of the following are listed and that its value is identical for each form element in the group:
- legend
- group
- radiogroup if the grouped form elements are radio buttons
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | The page does not contain form fields or the form fields are not logically related. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Logically related form fields are not programmatically grouped and labeled | 1.3.1 Info and Relationships | Serious |
2. Form Errors
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.2.1 | Form errors described in text, associated with field, and provide correction guidance | The item in error is identified in text, sufficiently described to the user in text, is programmatically associated with the field, and guidance for correcting errors is provided when appropriate. | Blind, cognitive, learning, language |
Step 1: Identify Content
Identify all automatic input error detection, error notifications, error suggestions, and related instructions:
- Use ANDI to identify any form elements on the page.
- Find all instructions and cues (textual and graphical) that are related to form elements/controls, e.g., groupings, order of completion, special conditions, qualifiers, format instructions.
- Intentionally enter values and/or make selections that violate format and/or other form instructions to reveal automatic notifications of input errors.
Step 2: Test Content
- Intentionally violate formatting and other form instructions, e.g., leave a required form field empty, use a different date format than is required, and/or create a password that does not meet the password strength requirements.
- Attempt to submit the form and/or move to the next page.
- Determine whether the error is identified and described in text.
- The form field with the error is identified in text, e.g. “Error: Password field.”
- Text describes the error, e.g., in a dialog message that states “the Password you entered is incorrect.”
- Verify if the error message is programmatically associated with the form field
- Open ANDI to the “focusable elements” module (default module)
- Move ANDI focus to the form field
- Verify that within the ANDI Accessibility Components list, an “aria-describedby” attribute exists and its output is the same as the error text from the previous steps
- If the form field is mandatory, requires a specific data format, and/or is required to be one of a limited set of values, determine whether the error text includes suggestions for correction (unless doing so would jeopardize the security or purpose of the content).
- Mandatory field example: “ZIP Code cannot be empty”
- Specific data format example: “Phone number is not in a valid format. It should be like 614-987-6543 (with dashes) or 6149876543 (without dashes)”
- Limited set of values example: “Month should be the full name of the month. Did you mean ‘December’?”
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain forms with validation. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Field error is not identified in text | 3.3.1 Error Identification | Serious |
Error message is not programmatically associated with the form field with the error | 1.3.1 Info and Relationships | Moderate |
Error text does not provide suggestions to resolve error | 3.3.3 Error Suggestion | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.2.2 | Submission of form errors is prevented | The web page allows the user to check, reverse, and/or confirm submission. | Blind, Cognitive, Learning |
Step 1: Identify Content
Identify Content that:
- Submits user form entries that result in or causes legal commitments or financial transactions
- Submits user form entries that modify or deletes user-controllable data in a data storage system
- Submits user test responses
Step 2: Test Content
- Complete the required form fields with intentional errors and submit the content.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | The page does not contain content that submits user form entries that result in or causes legal commitments or financial transactions, modify or deletes user-controllable data in a data storage system, or submits user test responses. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The user cannot reverse the submission, AND The user is not presented with an option to review, confirm, and correct information before finalizing the submission, AND The page does not check data for input errors and allows the user an opportunity to correct any errors. | 3.3.4 Error Prevention (Legal, Financial, Data) | Serious |
3. Form Interaction
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.3.1 | Changing form field value does not change context | Changing field values/selections (e.g., entering data in a text field, changing a radio button selection) does NOT initiate an unexpected change of context. | Blind, low vision, cognitive disabilities, motor disabilities |
Step 1: Identify Content
- Use ANDI: focusable elements to identify any form elements on the page, e.g., buttons, text fields, radio buttons, checkboxes, read-only fields, and multi-select lists.
- Find all instructions and cues (textual and graphical) that are related to form elements/controls, e.g., groupings, order of completion, special conditions, qualifiers, format instructions.
EXCLUDE disabled input elements. These do not receive keyboard focus, cannot be selected and cannot be modified.
Step 2: Test Content
- Use the keyboard to navigate to form elements, e.g., text fields, radio buttons, checkboxes, buttons.
- Complete the form element, e.g., select the radio button or check box, type information into the text box, select an item from the drop down.
- Exit (tab away from) the completed form element and determine whether there are any instances of an unexpected change of context.
- Changes in context include changes of user agent, viewport, focus, content that changes the meaning of the page, e.g., a form is automatically submitted when exiting a field, a new window is launched when a radio button is selected.
- Note: A change is not considered unexpected if:
- The user is notified that a change of context is about to occur (both visually and announced via screen reader).
- The control is clearly intended to initiate a change in context when activated.
- Note: A change is not considered unexpected if:
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain form elements. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Changing the value of a form element initiates an unexpected context change | 3.2.2 On Input | Serious |
4. Custom Input Elements
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.4.1 | Switch Inputs | Switch inputs are keyboard accessible and have appropriate names, roles, and values | Blind, motor disabilities |
Step 1: Identify Content
Switch inputs are custom input elements that allow users to choose either “on” or “off” value. They are named as such due to their similarity to physical switches, like light switches. They are made up of a “thumb” (typically signified as a circle) and a “track” (typically signified as an oval). The location of the thumb inside of the track indicates whether the switch is on or off.
Image © 2023 W3C®
Step 2: Test Content
Switch inputs can be developed using multiple different techniques. This test is agnostic to the technique used, when possible.
- Navigate to the switch input.
- Verify that it toggles between on and off when the Space key is pressed.
- Open ANDI and select the focusable elements module (default).
- Locate the element that serves as the switch toggle. This may be a generic element (div, span, etc.), checkbox input, or button.
- Verify that it has a role=switch.
- If the switch is NOT a checkbox input, verify the following:
- When the switch is in the “off” state, it has an aria-checked=false.
- When the switch is in the “on” state, it has an aria-checked=true.
Note: The tester may need to move the ANDI focus away from the switch and back to the switch between toggling it on and off for the aria-checked value to be reported correctly.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain switches. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The switch cannot be toggled on and off using the Space key | 2.1.1 Keyboard | Critical |
The switch toggle does not have the role of switch | 4.1.2 Name, Role, Value | Serious |
The current state of the switch (on or off) is not reflected programmatically (aria-checked) or is reflected incorrectly (state is off when visually it’s on and vice versa) | 4.1.2 Name, Role, Value | Critical |
5. Links
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.5.1 | Link purpose is determinable in context | The purpose of each link can be determined from any combination of the link text, accessible name, accessible description, and/or programmatically determined link context. | Blind, motor disabilities, cognitive disabilities |
Step 1: Identify Content
Use ANDI: links/buttons to identify all links. EXCLUDE links that function as an anchor or target and are not perceivable or selectable by users.
Step 2: Test Content
- Evaluate the ANDI Output for link purpose.
- Determine whether the ANDI Output, in combination with the programmatically determined link context (text that is in the same sentence, paragraph, list item, or table cell as the link or in a table header cell that is associated with the table cell that contains the link) adequately describes the link’s purpose or function.
- In cases where the purpose of the link is intentionally vague or ambiguous (e.g., the content to be revealed after selecting a link to “Door 1,” “Door 2,” or “Door 3” is intended to be a surprise), it may be sufficient for the combination of link text, accessible name, accessible description, and/or link context to refer to the link purpose vaguely or ambiguously.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain links. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The link’s purpose cannot be determined by any combination of the link text, accessible name, accessible description, and/or programmatically determined link context | 2.4.4 Link Purpose (In Context) | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.5.2 | Links are links | Elements that serve a purpose of hyperlinking to a resource – such as a page, email address, or location within the same page – are <a> (anchor) elements or have an equivalent role and behave in the same way as <a> elements. | Blind, motor disabilities, cognitive disabilities |
Step 1: Identify Content
Identify interactive elements on the page that hyperlink to a new resource when activated.
EXCLUDE links that are not perceivable or selectable by users and <a> (anchor) elements that perform button-like functionality (these are tested separately in E.6.3. Non-native and Toggle Buttons).
Step 2: Test Content
- Evaluate the ANDI “Element” output for the element and verify that it is one of the following:
- <a> element OR
- Any other element with a role=link
- If it is not an <a> element, verify that
- It receives keyboard focus AND
- Its hyperlink function can be activated using the keyboard by pressing the Enter key
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | The page does not contain links or elements that function as links. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Link element is not contained within an <a> (anchor) element nor has a role of link | 4.1.2 Name, Role, Value | Serious |
Non-native link element does not receive keyboard focus and/or does not behave like a link when activated with the Enter key | 2.1.1 Keyboard | Critical |
6. Buttons
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.6.1 | Button label describes topic or purpose | The label of the button (both text and non-text) describes the button’s topic or purpose | Cognitive disabilities |
Step 1: Identify Content
- Use ANDI: links/buttons to identify all buttons.
- Review the page for interactive elements that act as buttons (elements that, when activated, trigger an action or event) that were not found by ANDI.
EXCLUDE buttons that are not perceivable or selectable by users.
Step 2: Test Content
- Evaluate the visual label of the button.
- Determine whether the visual label adequately describes the button’s purpose, function, or associated content.
- Note: “visual labels” are not always going to be text. An icon is acceptable to meet this requirement if its meaning is universally understood (such as a magnifying glass icon for a search input) or understandable within the context of the page. However, evaluators should mark this test as a failure if they have reason to believe that the icon will not be understood.
- Note: The accessible name of the button should NOT be considered in this test. This test is only for the visual label of the button.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain buttons. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The button’s visual label does not describe its topic or purpose | 2.4.6 Headings and Labels | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.6.2 | Button name describes its purpose | The accessible name of the button describes its purpose | Blind |
Step 1: Identify Content
- Use ANDI: links/buttons to identify all buttons.
- Review the page for interactive elements that act as buttons (elements that, when activated, trigger an action or event) that were not found by ANDI.
EXCLUDE buttons that are not perceivable or selectable by users.
Step 2: Test Content
- Expand the buttons list (“show buttons list”)
- Evaluate the Accessible Name & Description of the button.
- Determine whether the accessible name adequately describes the button’s purpose, function, or associated content.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain buttons. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The button’s accessible name does not describe its purpose | 1.1.1 Non-text Content | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.6.3 | Non-native and Toggle Buttons | All buttons can be activated using the Space and Enter keys and maintain the proper roles, states, and programmatic associations. | Blind, motor disabilities |
Step 1: Identify Content
Identify all interactive elements on the page that, when activated, trigger an action or event. These may include <a> (anchor) elements that are incorrectly being implemented for button purposes.
EXCLUDE native <button> elements unless they are toggle (two-state) buttons and links that navigate to a different page or a different part of the page.
Step 2: Test Content
- Activate the button using a mouse and note what action happens.
- Move keyboard focus to the button element.
- Press the Enter key and verify that the noted action occurs.
- Press the Space key and verify that the noted action occurs.
- Open ANDI and select the focusable elements module (default).
- Move ANDI focus to the button and verify that it has role=button.
- If the button is a toggle (two-state, on and off) button, verify that
- When the button is not pressed/off, under ANDI Accessibility Components, aria-pressed is false.
- When the button is pressed/on, under ANDI Accessibility Components, aria-pressed is true.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain custom buttons or toggle buttons. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The button does not receive keyboard focus | 2.1.1 Keyboard | Critical |
The button cannot be activated by the Enter and/or Space key | 2.1.1 Keyboard | Critical |
The button does not have a role of button | 4.1.2 Name, Role, Value | Serious |
The state of the toggle button is not reflected programmatically (aria-pressed) | 4.1.2 Name, Role, Value | Critical |
7. Sectioning Elements
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.7.1 | Accordions | Accordions are keyboard accessible, and its elements (header and panel) have the appropriate roles, states, and programmatic relationships | Blind |
Step 1: Identify Content
Accordions are elements that are used to hide content and reveal the content on interaction, referred to as “collapse” and “expand.” They are made up of two components: the Accordion Heading (which is a button that contains the accordion’s title) and the Accordion Panel (which contains the content that is hidden when the accordion is collapsed).
Example of an accordion element from Buckeye UX (BUX)
Step 2: Test Content
- Use a keyboard to navigate to the Accordion Header and verify that it receives keyboard focus.
- Press the Space key and verify that the accordion expands and the Accordion Panel is visible. Press the Space key again and verify that the accordion collapses and the Accordion Panel is no longer visible.
- If the Space key does not work, try pressing the Enter key.
- Open Google Chrome’s accessibility inspection tool.
- Using the inspection tool, select the Accordion Header. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Accordion Header “Role” has a value of “button.”
- The Accordion Header “Expanded” has a value of “true” when the accordion is expanded and “false” when the accordion is collapsed.
- The Accordion Header “Controls” value is the element that contains the Accordion Panel.
- Using the inspection tool, select the Accordion Panel. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Accordion Panel “Role” has a value of “region.”
- The Accordion Panel “Labeled by” is the Accordion Header element.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain accordions. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The accordion does not receive keyboard focus | 2.1.1 Keyboard | Critical |
The accordion cannot be expanded and/or collapsed with the keyboard | 2.1.1 Keyboard | Critical |
The Accordion Header does not have a role of button | 4.1.2 Name, Role, Value | Moderate |
The Accordion Header does not communicate its collapsed/expanded state using aria-expanded | 4.1.2 Name, Role, Value | Serious |
The Accordion Header is not programmatically associated with the Accordion Panel (aria-controls) | 1.3.1 Info and Relationships | Minor |
The Accordion Panel does not have a role of region | 4.1.2 Name, Role, Value | Minor |
The Accordion Panel is not labeled by the Accordion Header element | 1.3.1 Info and Relationships, 4.1.2 Name, Role, Value | Minor |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.7.2 | Tabs | Tabbed Interfaces are keyboard accessible, operate via keyboard in an expected manner, and they and their components have appropriate names, roles, and programmatic associations | Blind, motor disabilities |
Step 1: Identify Content
Tabs, or Tabbed Interfaces (as they will be called throughout the remainder of this test), are a set of content sections that display one section of content at a time. They often resemble a set of physical file folders with tabs labeling each folder, but sometimes do not visually resemble them. Example of a Tabbed Interface from Buckeye UX (BUX)
Step 2: Test Content
Component Descriptions
Due to the complexity of this test, descriptions of each of the major Tabbed Interface components are defined in this table. The component names are used in the test process. Use this table as a reference.
Component Name | Description |
---|---|
Tabbed Interface | The set of Tab elements and their associated Tab Panels |
Tab List | The grouping of Tabs within a tablist element |
Tab | A button in the Tab List that serves as the label for a Tab Panel and, when activated, displays the panel |
Tab Panel | Element that contains the content associated with the Tab |
Steps
- Press the Tab keyboard key until a Tab in the Tab List receives keyboard focus.
- Verify that the active Tab is the one that receives keyboard focus.
- Press the Tab keyboard key and verify that keyboard focus moves to either the Tab Panel OR an interactive element within the Tab Panel.
- Move keyboard focus back to the active Tab.
- Press the right arrow key and verify that either
- Focus moves to the next Tab (or, if focus is on the last Tab, its moved to the first Tab) AND the associated Tab Panel is activated/displayed, OR
- Focus moves to the next Tab (or, if focus is on the last Tab, its moved to the first Tab) AND pressing the Enter key on the next Tab displays the associated Tab Panel.
- Press the left arrow key and verify that either
- Focus moves to the previous Tab (or, if focus is on the first Tab, its moved to the last Tab) AND the associated Tab Panel is activated/displayed, OR
- Focus moves to the previous Tab (or, if focus is on the first Tab, its moved to the last Tab) AND pressing the Enter key on the previous Tab displays the associated Tab Panel.
- Open Google Chrome’s accessibility inspection tool.
- Using the inspection tool, select the Tab List. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Tab List “Role” has a value of “tablist.”
- The Tab List “Name” has a value that is descriptive of the Tabbed Interface’s purpose
- If the Tabbed Interface has a visible label or header, verify that the “Name” is the same as the visible label
- The Tab List “Orientation” matches the visual presentation of the Tab List (“horizontal” if presented left-to-right, “vertical” if presented top-to-bottom)
- Using the inspection tool, select the active Tab. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Tab “Role” has a value of “tab.”
- The Tab “Name” has a value that is descriptive of the Tab Panel’s purpose
- The Tab “Selected” has a value of “true.”
- The Tab “Controls” is the associated Tab Panel element.
- Using the inspection tool, select the active Tab Panel. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Tab Panel “Role” has a value of “tabpanel.”
- The Tab Panel “Labeled by” is the associated Tab element.
- Repeat 9 and 10 for each Tab element, ensuring that the Tab is activated first.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain tabbed interfaces. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The active Tab does not receive keyboard focus | 2.1.1 Keyboard, Fundamental Keyboard Navigation Conventions for ARIA widgets | Critical |
Pressing the Tab keyboard key moves focus to the next Tab instead of the Tab Panel or an interactive element within the Tab Panel | 2.1.1 Keyboard, Fundamental Keyboard Navigation Conventions for ARIA widgets | Moderate |
Pressing the Tab keyboard key does not move focus to the Tab Panel or an interactive element within the Tab Panel | 2.1.1 Keyboard, Fundamental Keyboard Navigation Conventions for ARIA widgets | Serious |
The Tab List cannot be navigated using the right and left arrow keys | 2.1.1 Keyboard, Fundamental Keyboard Navigation Conventions for ARIA widgets | Serious |
Tab Panels are not displayed when their associated Tab receives focus OR the associated Tab does not activate them when using the Enter key | 2.1.1 Keyboard, Fundamental Keyboard Navigation Conventions for ARIA widgets | Critical |
The Tab List does not have a role of tablist | 4.1.2 Name, Role, Value | Serious |
The Tab List does not have a name that is descriptive of the Tabbed Interface’s purpose | 4.1.2 Name, Role, Value | Moderate |
The Tab List name is different than the visible label or header | 2.5.3 Label in Name | Moderate |
The Tab List aria-orientation value does not match its visual presentation | 4.1.2 Name, Role, Value | Moderate |
One or more Tabs do not have a role of tab | 4.1.2 Name, Role, Value | Serious |
One or more Tabs do not have a name that is descriptive of the Tab Panel’s purpose | 4.1.2 Name, Role, Value | Serious |
The active Tab does not have an aria-selected of true | 4.1.2 Name, Role, Value | Serious |
One or more Tabs do not have an aria-controls that is associated with its Tab Panel element | 1.3.1 Info and Relationships, 4.1.2 Name, Role, Value | Moderate |
One or more of the Tab Panels do not have a role of tabpanel | 4.1.2 Name, Role, Value | Serious |
One or more Tab Panels do not have aria-labelledby of its associated Tab element | 1.3.1 Info and Relationships, 4.1.2 Name, Role, Value | Moderate |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.7.3 | Carousels | All visually apparent carousels are programmatically identified, have an accessible name, and can be accessed and executed using only the keyboard. | Blind, motor disabilities |
Step 1: Identify Content
Identify all visually apparent carousels, a web pattern consisting of a container with multiple items, called “slides”, where:
- each slide is a subsection of the web page, coded with HTML, with meaningful content;
- the slides within a carousel form a group of related items, each with similarly structured content;
- the slides do not represent a series of steps to be completed in a specific order;
- all slides can be accessed without navigating to a new web page;
- only a subset of slides are displayed at one time if the viewing area is too narrow to display them all;
- slides are rotated forwards or backwards by the user, automatically at regular intervals, or both;
- slides rotate on one axis only (usually horizontally); and
- if rotated automatically, each slide stays in view for some amount of time before the next rotation.
Exclusions:
- An embedded video or animated GIF is not a carousel, because each frame is not a meaningful subsection of the web page.
- Continuously scrolling text, like a marquee or ticker, is not a carousel because it does not pause between rotations.
- A paginated list or data table is not a carousel, because the data repeats in two axes (vertically within each page, and horizontally between pages).
- If the slides are a series of steps that must be completed in a specific order, then the structure is not a carousel.
Additional considerations:
- Because the number of visible slides may vary with screen width, it is possible that an element may be a carousel at small screen widths, but not at large screen widths. Here is an example. Be sure to reduce screen size while testing to help ensure all carousels are identified.
- The Carousel Pattern is distinct from the Tabs Pattern.
- If there are Previous and Next Slide Controls (typically icon buttons) to navigate the slides, then treat the element as a carousel.
- If the slides advance automatically at set intervals, then treat the element as a carousel.
- If both of the above are false, (i.e., slides can only be changed by choosing from a slide picker; i.e., a list of buttons or tabs representing all slides) then the element may be treated either as tabs or a carousel, at the tester’s discretion.
- A carousel may be implemented by coding the slides as tab panels, and the slide picker as tabs. If so, or if the carousel visually appears to be tabs, then the element must pass both this test and the Tabs Pattern test.
Step 2: Test Content
Component Descriptions
Due to the complexity of this test, descriptions of each of the major carousel components are defined in this table. The component names are used in the test process. Use this table as a reference.
Component Name | Description |
---|---|
Carousel | The entire element, containing the slides, next and previous slide controls, rotation control button, and slide picker. |
Carousel Container | The outermost DOM element that contains all of the Carousel elements. Important: Be careful to not confuse this with elements further up the DOM tree, for example, a wrapper div one level above the Carousel in the tree that is used for style or layout purposes. |
Rotation Control Button | The button that stops and starts the automatic rotation of the Carousel. |
Slide | A group that contains an image and typically also contains a heading, preview text, and/or call to action (CTA) link. |
Slides Container | The DOM element that contains all of the Slides in the Carousel. |
Next Slide Control | An interactive element, often styled as an arrow, that displays the next slide in the rotation sequence. |
Previous Slide Control | An interactive element, often styled as an arrow, that displays the previous slide in the rotation sequence. |
Slide Picker | A group of elements, often styled as small dots, that enable the user to pick a specific slide in the rotation sequence to display. |
Slide Picker Control | An interactive element, often styled as a small dot, that picks a specific slide in the rotation sequence to display. Slide Pickers are made up of multiple Slide Picker Controls. |
Steps
- Open Google Chrome’s accessibility inspection tool.
- Using the inspection tool, select the Carousel Container. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Carousel Container “Role” has a value of “region.”
- The Carousel Container “Name” has a value that is descriptive of the Carousel’s purpose
- If the Carousel has a visible label, verify that the “Name” is the same as the visible label
- Verify that the “Name” does not include the word “carousel.”
- The Carousel Container “roledescription” has a value of “carousel.”
- If the Carousel rotates automatically, verify the following. If it does not, skip to step 4.
- Ensure that the Carousel is in automatic rotation mode.
- Hovering the mouse pointer over the Carousel content pauses the automatic rotation.
- The Carousel pauses automatic rotation when keyboard focus is moved to each interactive element inside of the Carousel Container. Note: This behavior must exist for every interactive element within the Carousel Container or the content fails.
- The automatic rotation resumes when keyboard focus is moved outside of the Carousel Container. Ensure that the mouse pointer is not hovered over the carousel when performing this part of the test to avoid false test failure.
- A Rotation Control Button exists to start and stop the Carousel.
- The Rotation Control Button is always visible.
- The Rotation Control Button is the first child element in the Carousel Container.
- The Rotation Control Button contains a visible label consisting of a play/pause icon, play/pause text, or a combination of both.
- Using the inspection tool, select the Rotation Control Button. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Rotation Control Button has a Role of “button.”
- The Rotation Control Button has a Name like “Stop Automatic Slide Show.”
- The Rotation Control Button has a Focusable attribute of “true.”
- Using the inspection tool, select the Slides Container. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Slides Container DOES NOT have a Live region attribute/value.
- The Carousel stops rotating when the Rotation Control Button is activated using the keyboard.
- If it does not stop rotating, stop the rotation using another means before completing the next step.
- Using the inspection tool, select the Rotation Control Button. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Rotation Control Button has a Name like “Start Automatic Slide Show”
- The Carousel starts rotating when the Rotation Control Button is activated using the keyboard.
- Stop the Carousel rotation.
- Using the inspection tool, select the Slides Container. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Slides Container has a Live region of “polite.”
- If the Carousel has a Slide Picker, verify the following. Otherwise, skip to step 6.
- The first Slide Picker Control in the Slide Picker receives keyboard focus.
- Pressing the tab key moves focus out of the Slide Picker and NOT to the next Slide Picker Control.
- Move keyboard focus back to the first Slide Picker Control.
- Press the right arrow key. The focus moves to the next Slide Picker Control and the next Slide in the sequence is displayed. Repeat for each Slide Picker Control.
- Press the left arrow key. The focus moves to the previous Slide Picker Control and the previous Slide in the sequence is displayed. Repeat for each Slide Picker Control.
- Activate the first Slide Picker Control if it is not already.
- Using the inspection tool, select the Slide Picker. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Slide Picker has a Name of “Slides.”
- The Slide Picker has a Role of “tablist.”
- Using the inspection tool, select the active Slide Picker Control. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Slide Picker Control has a Name that reflects the position of the Slide this Slide Picker Control will display when activated (i.e., if this is the second dot, the Name needs to be something like “Slide 2.”)
- The Slide Picker Control has a Role of “tab.”
- The Slide Picker Control has a Focusable of “true.”
- The Slide Picker Control has a Selected of “true.”
- Click or activate the button within the Slide Picker Control’s Controls tree. That will select the item that this element Controls within the inspection tool. Verify that the element it selects is the Slide it controls
- Using the inspection tool, select the Slide Picker Control immediately following the one you just tested. If the one you just tested is the last Slide Picker Control in the Slide Picker, continue to Step 6.
- Verify that the Slide Picker Control has a Selected of “false” or does not have a Selected attribute.
- Activate the next Slide Picker Control in the Slide Picker and repeat steps 5.8 and 5.9.
- Using the inspection tool, select the active Slide. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- If the Carousel does NOT have a Slide Picker, the Slide has a Role of “group.”
- If the Carousel has a Slide Picker, the Slide has a Role of “tabpanel.”
- The Slide has a Name that includes the position number of the active slide and the total number of slides (i.e., “3 of 6” where 3 represents that the active slide is the third slide within the set of slides and 6 represents the total number of slides).
- The Slide has a roledescription of “slide.”
- Repeat this step for every Slide in the Carousel.
- Using the inspection tool, select the Next Slide Control.
- Verify that the Next Slide Control contains a visible label consisting of a right-pointing icon, the word “Next,” or a combination of both.
- Verify that the Carousel moves to the next slide AND keyboard focus remains on the Next Slide Control when it is activated using the keyboard.
- In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Next Slide Control has a Role of “button.”
- The Next Slide Control has a Name of “Next Slide.”
- The Next Slide Control has a focusable of “true.”
- Click or activate the button within the Next Slide Control’s Controls tree. That will select the item that this element Controls within the inspection tool. Verify that the element it selects is the Slides Container.
- Using the inspection tool, select the Previous Slide Control.
- Verify that the Previous Slide Control contains a visible label consisting of a left-pointing icon, the word “Previous,” or a combination of both.
- Verify that the Carousel moves to the previous slide AND keyboard focus remains on the Previous Slide Control when it is activated using the keyboard.
- In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Previous Slide Control has a Role of “button.”
- The Previous Slide Control has a Name of “Previous Slide.”
- The Previous Slide Control has a focusable of “true.”
- Click or activate the button within the Previous Slide Control’s Controls tree. That will select the item that this element Controls within the inspection tool. Verify that the element it selects is the Slides Container.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | If ALL of the following are TRUE:
|
FAIL | If ANY PASS condition is FALSE |
DNA | If there are no carousels on the page. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The Carousel Container does not have a role of region | 4.1.2 Name, Role, Value | Minor |
The Carousel Container does not have a name that is descriptive of the Carousel’s purpose | 4.1.2 Name, Role, Value | Moderate |
The Carousel Container’s name is not the same as the visible label | 2.5.3 Label in Name | Minor |
The Carousel Container does not have a roledescription of carousel | 4.1.2 Name, Role, Value | Moderate |
Autorotating Carousels: Hovering mouse pointer over Carousel does not pause auto rotation | 2.2.2 Pause, Stop, Hide | Serious |
Autorotating Carousels: Auto rotation does not pause when interactive elements receive focus | 2.2.2 Pause, Stop, Hide | Serious |
Autorotating Carousels: Auto rotation does not resume when focus is moved out of Carousel | Best Practice | Minor |
Autorotating Carousels: Rotation Control Button does not exist | 2.2.2 Pause, Stop, Hide | Critical |
Autorotating Carousels: Rotation Control Button not first child of Carousel | 1.3.1 Info and Relationships | Minor |
Autorotating Carousels: Rotation Control Button label does not reflect button purpose | 2.4.6 Headings and Labels | Moderate |
Autorotating Carousels: Rotation Control Button does not have role of button | 4.1.2 Name, Role, Value | Serious |
Autorotating Carousels: Rotation Control Button does not have accessible name that describes purpose (like “Stop Automatic Slide Show” when Carousel is rotating and “Stop Automatic Slide Show” when Carousel is not rotating) | 4.1.2 Name, Role, Value | Serious |
Autorotating Carousels: Slides Container is an aria-live region when slides are rotating | 4.1.3 Status Messages | Critical |
Autorotating Carousels: Rotation Control Button does not start and/or stop the rotation using the keyboard | 2.1.1 Keyboard | Critical |
Slides Container is not a polite aria-live region when the Carousel is not rotating automatically | 4.1.3 Status Messages | Minor |
Carousels with Slide Pickers: Slide Picker Controls do not operate with keyboard | 2.1.1 Keyboard | Critical |
Carousels with Slide Pickers: Each Slide Picker Control receives keyboard focus with tab key | ARIA 1.1 2.3 Managing Focus | Minor (Moderate if 6+ Slides) |
Carousels with Slide Pickers: Slide Picker does not have a name of “Slides” | 4.1.2 Name, Role, Value | Minor |
Carousels with Slide Pickers: Slide Picker does not have a role of tablist | 4.1.2 Name, Role, Value | Moderate |
Carousels with Slide Pickers: At least one Slide Picker Control does not have a name that reflects the position of the Slide associated with the control | 4.1.2 Name, Role, Value | Minor |
Carousels with Slide Pickers: Active Slide Picker Control does not have an aria-selected of true | 4.1.2 Name, Role, Value | Minor |
Carousels with Slide Pickers: Inactive Slide Picker has an aria-selected of true | 4.1.2 Name, Role, Value | Serious |
Carousels with Slide Pickers: At least one Slide Picker Control not programmatically associated with its corresponding Slide via aria-controls | 1.3.1 Info and Relationships | Minor |
Carousels with Slide Pickers: At least one Slide does not have a role of tabpanel | 4.1.2 Name, Role, Value | Moderate |
Carousels without Slide Pickers: At least one Slide does not have a role of group | 4.1.2 Name, Role, Value | Moderate |
At least one Slide does not have a name that includes the position number of the slide in the set and the total number of slides | 4.1.2 Name, Role, Value | Moderate |
At least one Slide does not have a roledescription of slide | 4.1.2 Name, Role, Value | Minor |
The Previous and/or Next Slide Control do not contain a visible label describing their purpose | 2.4.6 Headings and Labels | Moderate |
The Previous and/or Next Slide Control do not operate as expected with the keyboard | 2.1.1 Keyboard | Critical |
The Previous and/or Next Slide Control do not have a role of button | 4.1.2 Name, Role, Value | Serious |
The Previous and/or Next Slide Control do not have a name that describes their purpose | 4.1.2 Name, Role, Value | Serious |
The Previous and/or Next Slide Control is not programmatically associated with the Slides Container | 1.3.1 Info and Relationships | Minor |
8. Navigation Elements
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.8.1 | Navigation Menus | Navigation menus properly identify their purpose to screen readers and are completely navigable by keyboard and mobile devices. | Blind, motor disabilities |
Step 1: Identify Content
Navigation menus include any grouping of links that are for the purpose of navigating between different pages on the website or parent website (e.g., the global OSU navigation). These include, but are not limited to, primary navigation menus, secondary navigation menus, page navigation menus, footer navigation menus, menu buttons, breadcrumbs, and pagination.
Step 2: Test Content
- Open Google Chrome’s accessibility inspection tool.
- Using the inspection tool, select the Navigation Menu. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Navigation Menu “Role” has a value of “navigation”
- If there are multiple navigation menus on the page, the Navigation Menu “Name” has a value that is descriptive of its purpose.
- Press the Tab key until the first item in the Navigation Menu receives keyboard focus.
- Verify that at least ONE of the following are true in regard to navigating between top menu items
- If a submenu is opened when the menu item receives focus, that pressing the Tab key or Down Arrow key moves focus into the submenu AND pressing the Escape key closes the submenu and moves focus back to the menu item AND either b or c are true, OR
- Pressing the Tab key moves focus to the subsequent top level menu items, OR
- Pressing the arrow keys moves focus between top menu items AND there are visual instructions that describe this interaction pattern AND the instructions are announced to screen reader users when the first menu item receives focus.
- If a submenu exists and is not opened when the menu item receives focus, either
- It opens with both the Enter key and Space key AND the menu item is NOT a link that navigates to a new page when clicked on, OR
- A button exists immediately following the menu item that opens the submenu when it is activated with the keyboard
- Open Google Chrome’s accessibility inspection tool.
- Using the inspection tool, select the button. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The button “Role” has a value of “button”
- The button “Name” has a value that is descriptive of its purpose, i.e., “Additional items for [menu item]”
- Open the submenu, press the escape key and verify that the submenu closes and focus moves back to the menu item.
- Open the submenu and verify that the items receive keyboard focus with the Tab key.
- Open a desktop screen reader.
- Verify that when submenus are opened, the screen reader announces that they are “expanded” AND when submenus are closed, the screen reader announces that they are “collapsed.”
- If the active page is called out visually, verify that the screen reader announces the active page when it receives screen reader focus.
- Open the page on a mobile device and open its screen reader.
- Verify that all of the navigation menu functionality works with the screen reader swipe interface.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain navigation menus. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Navigation menu does not have a role of navigation | 4.1.2 Name, Role, Value | Serious |
Navigation menu is one of multiple navigation menus on page and it does not have an accessible name that describes its purpose | 4.1.2 Name, Role, Value | Moderate |
Navigation menu does not follow an expected keyboard pattern | 2.1.1 Keyboard, Fundamental Keyboard Navigation Conventions for ARIA widgets | Critical |
Submenus are not opened by a keyboard accessible mechanism | 2.1.1 Keyboard | Critical |
Menu item opens a submenu using the Enter and Space keys but is also a link | 2.1.1 Keyboard; 4.1.2 Name, Role, Value | Critical |
Submenu trigger button does not have an accessible name that describes its purpose | 4.1.2 Name, Role, Value | Serious |
Submenu does not close and move focus back to the menu item when the Escape key is pressed | 2.4.3 Focus Order | Serious |
Screen reader does not announce when the submenu is opened and closed | 4.1.2 Name, Role, Value | Serious |
Screen reader does not announce the visually apparent active page | 4.1.2 Name, Role, Value | Moderate |
Navigation is not full operable using a mobile screen reader swipe interface | Functional consideration for blind individuals | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.8.2 | Skip Links/Bypass Mechanisms | A keyboard-accessible method is provided to bypass repetitive content. | Blind, motor disabilities, low vision, cognitive disabilities |
Step 1: Identify Content
Identify block(s) of content that are repeated on other pages within the site.
- Blocks of content that are repeated on other pages may include navigation links, page headers, tabs, and banners.
- Blocks of content do not have to be exactly the same to be considered repetitive; blocks of content could be considered to repeat if they contain the same type of information and/or serve the same purpose.
EXCLUDE small sections, such as repeated individual words, phrases, or single links. They are not considered repetitive blocks of content. Note:
- Most web browsers provide keyboard shortcuts to move the user focus to the top of the page or browser; providing a method to bypass a set of navigation links located at the bottom of a web page may be unnecessary.
Step 2: Test Content
- Starting at the top of the page, use keyboard commands to navigate forward to repetitive blocks of content. Note: Some bypass functions may not be visible until they receive focus.
- Determine whether a keyboard-accessible method was provided to bypass repetitive content (e.g., skip links, hotkeys, scripted elements, etc. Frames may work as a bypass method in some browsers but not others).
- Launch ANDI: focusable elements to check for skip links, hide options, collapse menu and other elements with similar bypass functionality.
- Note: ANDI’s “tab order” feature under the focusable elements module may help evaluate the order in which bypass methods occur relative to other content.
- Alternatively, launch ANDI: links/buttons and select the “view links list” button.
- Turn on screen reader and use keyboard commands to activate the bypass function.
- Multiple blocks of repeated content may require multiple methods to bypass the blocks; it may not be possible to bypass all blocks of repeated content with a single method.
- If the new content is not announced immediately, navigate to the next item with the screen reader to verify that the focus moved past the repetitive content.
- Launch ANDI: focusable elements to check for skip links, hide options, collapse menu and other elements with similar bypass functionality.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain blocks of content that are repeated on other web pages. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
No bypass mechanism exists | 2.4.1 Bypass Blocks | Serious |
The bypass mechanism is not keyboard accessible | 2.1.1 Keyboard | Critical |
The bypass mechanism does not move focus past the repetitive content but moves focus near it | 2.4.1 Bypass Blocks | Moderate |
The bypass mechanism does not move focus at all | 2.4.1 Bypass Blocks | Serious |
9. Information Elements
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.9.1 | Modal Dialogs | Modal dialogs follow expected keyboard interaction patterns, and its components have the proper roles, states, and names | Blind, motor disabilities |
Step 1: Identify Content
EXCLUDE modal dialogs used for the purpose of diverting users’ attention to an important message. Those elements are tested in test E.9.4 Alert Dialogs. The following DO NOT APPLY and should not be tested:
- Documents.
Step 2: Test Content
Component Descriptions
Due to the complexity of this test, descriptions of each of the major Modal Dialog components are defined in this table. The component names are used in the test process. Use this table as a reference.
Component Name | Description |
---|---|
Modal Dialog | An overlayed window that is displayed when the Triggering Element is activated, prevents users from interacting with elements outside of it while it is opened, retains focus while it is open, and, when closed, moves focus back to the Triggering Element if it still exists. |
Triggering Element | The element that opens the Modal Dialog when activated and receives focus when the Modal Dialog is closed if it still exists. |
Close Button | A button that closes the Modal Dialog. Typically has an “X” icon as the label or the text “Cancel” or “Close.” Not included in all implementations, but required when the Modal Dialog cannot be closed using the Escape key. |
Steps
- Move keyboard focus to the Triggering Element and activate it.
- Verify that the Modal Dialog appears and focus is moved to an element within it.
- Press the Tab key multiple times and verify that focus does not go behind the dialog. Repeat by pressing the Shift and Tab keys simultaneously multiple times.
- Note: Focus moving into the browser controls is expected behavior and does not constitute a failure for this step.
- Open Google Chrome’s accessibility inspection tool.
- Using the inspection tool, select the Modal Dialog. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Modal Dialog “Role” has a value of “dialog.”
- The Modal Dialog “Name” has a value that is descriptive of its purpose
- If the Modal Dialog has a visible Title, verify that the “Name” is the same as the Title.
- The Modal Dialog has a “modal” attribute with the value of “true.”
- Press the escape key and verify that the dialog closes, and focus moves back to the Triggering Element OR the most logical location if the element no longer exists. If the escape key does not close the dialog, verify that a keyboard accessible Close Button exists that closes the dialog.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | This is a document, web or mobile application, or the page does not contain modal dialogs. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Focus does not move into the modal dialog upon activation | 2.4.3 Focus Order | Serious |
Focus is not retained inside of the modal dialog | 2.4.3 Focus Order; 2.4.7 Focus Visible | Moderate |
Pressing the escape key or another keyboard accessible mechanism does not close the modal dialog | 2.1.1 Keyboard | Critical |
Closing the dialog does not move focus to the most logical element | 2.4.3 Focus Order | Serious |
The Modal Dialog does not have a role of dialog | 4.1.2 Name, Role, Value | Moderate |
The Modal Dialog does not have a name that is descriptive of its purpose | 2.4.6 Headings and Labels | Moderate |
The Modal Dialog has a name that does not include its visible title | 2.5.3 Label in Name | Moderate |
The Modal Dialog does not have aria-modal set to true | 4.1.2 Name, Role, Value | Moderate |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.9.2 | Hover/focus tooltips | The tooltip appears on both hover and focus, does not contain interactive elements, the message is announced to screen reader users, remains visible until it is closed, can be hovered into, and, if it obscures content, it can be closed using a keyboard mechanism. | Blind, motor disabilities |
Step 1: Identify Content
A hover/focus tooltip is an element that contains a message that is displayed when a triggering element receives mouse hover and/or keyboard focus. Note: Tooltips that are only displayed when the element receives either hover or focus are within the scope of this test. A test for these types of tooltips – Toggle Tooltips – will appear in a future version of the MDAS-M. EXCLUDE tooltips that are native to the browser or operating system, that is, tooltips that appear because the “title” attribute is set on the element. The following DO NOT APPLY and should not be tested:
- Documents.
Step 2: Test Content
- Verify that the tooltip is displayed when the triggering element receives mouse hover.
- Verify that the tooltip is displayed when the triggering element receives keyboard focus.
- Verify that the tooltip does not contain interactive elements.
- Verify that the tooltip remains visible until it is closed.
- Remaining careful to not move the mouse pointer outside of the triggering element or tooltip, move the mouse pointer to the tooltip and ensure that the tooltip remains visible.
- Open screen reader.
- Move focus to the triggering element.
- Verify that the tooltip content is announced by the screen reader.
- Close screen reader.
- If the tooltip obscures content on the page, press the escape key to close the tooltip. If the escape key does not close the tooltip, look for instructions for other keyboard mechanisms to close it.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain tooltips that appear on hover and/or focus OR the tooltips are native to the browser or operating system. |
Failure Matrix
Failure Condition | Priority | MDAS Failure |
---|---|---|
Tooltip does not open on keyboard focus | 2.1.1 Keyboard | Critical |
Tooltip does not open on mouse hover | Functional consideration for motor and cognitive disabilities | Serious |
Tooltip contains interactive elements | 4.1.2 Name, Role, Value | Moderate |
Tooltip closes without user interaction | 1.4.13 Content on Hover or Focus | Moderate |
Tooltip message cannot be hovered over without the tooltip closing | 1.4.13 Content on Hover or Focus | Moderate |
Tooltip that obscures content cannot be closed via a keyboard mechanism | 1.4.13 Content on Hover or Focus | Serious |
Tooltip message is not announced by screen reader | 4.1.2 Name, Role, Value | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.9.3 | ARIA Live messages | Messages are announced to screen reader users at the appropriate time based on the severity, importance, and/or context of the message | Blind |
Step 1: Identify Content
- Open screen reader
- Navigate the page using the keyboard. Interact with each interactive element.
- Listen for announcements that are not the typical screen reader output. Note which actions you took that activated that announcement. EXCLUDE any actions that resulted in focus moving to a new element or the appearance of a dialog window.
- Look for important changes of the page content that were not announced. Note which actions you took that activated those changes. EXCLUDE changes that are NOT one of the following:
- Success or results of an action
- Waiting state of an application
- Progress of a process
- Existence of errors
This DOES NOT APPLY (DNA) for non-web content (documents and applications).
Step 2: Test Content
- Refresh page
- Open ANDI and go to the structures module (sANDI)
- For each action noted in the “Identify Content” step, perform the action and follow these steps
- In sANDI, if live regions exist on the page, they will be listed at the “# live regions” link. Activate the link and locate the live region that contains the announcement. If it exists, ensure that it is highlighted in ANDI.
- Determine what type of live region it should be based on the context in which it appears
- Alert: The message is important and time sensitive. The user must hear it immediately even if it interrupts other messages. It requires the user’s immediate attention. Alerts should be rare.
- Status: The message is advisory. The user can hear it after other messages are announced and still understand the context in which it applies.
- Log: The message is part of a larger group of messages located within a meaningful sequence. Examples include chat logs, messaging history, game logs, and error logs. Logs are uncommon and have a specific use case.
- Marquee: The message is non-essential and changes frequently. Examples include stock tickers. Marquees are uncommon.
- Timer: The message is a numerical counter which indicates an amount of elapsed time from a start point or the time remaining until an end point. Timers are uncommon and have a specific use case.
- Using the “Live Region ARIA Attributes” table below, verify that the ANDI Accessibility Components includes the appropriate attributes for the type of live region the message should be.
- If no message exists or the message is not located within a live region, it FAILS.
Live Region ARIA Attributes
Live Region Type | Appropriate Attributes | Inappropriate Attributes |
---|---|---|
Alert | role=alert OR aria-live=assertive | role=status, log, marquee, or timer aria-live=polite or off |
Status | role=status OR aria-live=polite | role=alert, log, marquee, or timer aria-live=assertive or off |
Log | role=log OR aria-live=polite AND aria-atomic=false | role=alert, status, marquee, or timer aria-live=assertive or off aria-atomic=true |
Marquee | role=marquee | role=alert, status, log, or timer aria-live=assertive or polite |
Timer | role=timer | role=alert, status, log, or marquee aria-live=assertive or polite |
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | This is a document, web or mobile application, or the page does not contain messages that do not receive focus and should not be announced to screen reader users. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Important changes in page content that do not receive focus are not located in a live region | 4.1.3 Status Messages | Critical |
The message is not located in the correct type of live region based on the context in which it appears | 4.1.2 Name, Role, Value | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.9.4 | Alert dialogs | Dialogs that interrupt a user’s workflow to communicate an important message are identified as such with the proper roles and ARIA attributes and are keyboard accessible | Blind, motor disabilities |
Step 1: Identify Content
Interact with all of the interactive elements on the page and note which actions display a dialog that requires user response (e.g., confirmation and cancel buttons). EXCLUDE dialogs that are native to the operating system or browser. This DOES NOT APPLY (DNA) for non-web content (documents and applications).
Step 2: Test Content
Component Descriptions
Due to the complexity of this test, descriptions of each of the major alert dialog components are defined in this table. The component names are used in the test process. Use this table as a reference.
Component Name | Description |
---|---|
Alert Dialog | The element that contains all elements of the dialog, including the title, alert message, and any other related elements such as dialog buttons |
Title | The element that contains the title of the dialog. This may not exist in all implementations. |
Alert Message | The element that contains the alert |
Dialog Buttons | The buttons that the user interacts with for their response. These may not exist in all implementations. |
Steps
- Perform the action that displays the alert dialog.
- Verify that focus has moved to an interactive element inside of the alert dialog
- If the purpose of the alert dialog is to confirm a destructive action, verify that focus is NOT moved to the element that will perform the destructive action (i.e., Delete, Discard, etc.).
- Press the Tab key multiple times and verify that focus does not go behind the dialog. Repeat by pressing the Shift and Tab keys simultaneously multiple times.
- Note: Focus moving into the browser controls is expected behavior and does not constitute a failure for this step.
- Open Google Chrome’s accessibility inspection tool.
- Using the inspection tool, select the Alert Dialog. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The Alert Dialog “Role” has a value of “alertdialog.”
- The Alert Dialog “Name” has a value that is descriptive of its purpose
- If the Alert Dialog has a visible Title, verify that the “Name” is the same as the Title.
- The Alert Dialog has a “modal” attribute with the value of “true.”
- The Alert Dialog “Described by” value is the element that contains the Alert Message.
- This can be additionally verified by comparing the “Description” attribute to the Alert Message text.
- Press the escape key and verify that the dialog closes, and focus moves back to the element that triggers the dialog OR the most logical location. If the escape key does not close the dialog, verify that a keyboard accessible mechanism exists that closes the dialog.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | This is a document, web or mobile application, or the page does not contain alert dialogs, or the alert dialog is native to the operating system or browser. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Focus does not move into the alert dialog upon activation | 2.4.3 Focus Order | Serious |
The initial focus is moved to the element in the alert dialog that will perform the destructive action | Functional consideration for vision and cognitive disabilities | Moderate |
Focus is not retained inside of the alert dialog | 2.4.3 Focus Order; 2.4.7 Focus Visible | Moderate |
Pressing the escape key or another keyboard accessible mechanism does not close the alert dialog | 2.1.1 Keyboard | Critical |
Closing the dialog does not move focus to the most logical element | 2.4.3 Focus Order | Serious |
The Alert Dialog does not have a role of alertdialog | 4.1.2 Name, Role, Value | Moderate |
The Alert Dialog does not have a name that is descriptive of its purpose | 2.4.6 Headings and Labels | Moderate |
The Alert Dialog has a name that does not include its visible Title | 2.5.3 Label in Name | Moderate |
The Alert Dialog does not have aria-modal set to true | 4.1.2 Name, Role, Value | Moderate |
The Alert Dialog does not have an aria-describedby association with the Alert Message | 4.1.2 Name, Role, Value | Moderate |
10. Single Page Applications
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.10.1 | Single Page Application Page Change | When a new page is loaded in a Single Page Application (SPA), the page title is updated to reflect the topic or purpose of the new page, the new page title is announced, focus is automatically moved to a logical location in the new page, and the page is added to the browser history. | Blind, low vision, motor disabilities |
Step 1: Identify Content
- Activate the “SPA Detection” bookmarklet.
- Read the instructions in the alert and press “OK.”
- On the page, click on a link that will go to another page on the same website.
- If the “Leave Site” alert appears before the new page is loaded, this website/application DOES NOT APPLY (DNA).
- If no “Leave Site” alert appears before the new page is loaded, this is a SPA. Follow the test procedure in step 2.
The following DO NOT APPLY and should not be tested:
- Websites that do not have more than one distinct page, meaning that none of the internal links on the page go to another page or replace the page content with other page content.
- Documents.
- Mobile and Desktop applications.
Step 2: Test Content
- Open the “structures” module in ANDI (sANDI).
- In sANDI, in the “more details” menu button, select “page title.”
- Note the page title.
- Refresh the page (if a confirmation alert appears asking if you want to reload the site, press the “Reload” button).
- Open a screen reader.
- Click on a link that will go to another page on the same website.
- Verify that the new title of the page is announced.
- Verify that focus is moved to a logical location, such as the H1, error message, or first form element in a multipage form.
- Close the screen reader.
- Open the “structures” module in ANDI (sANDI).
- In sANDI, in the “more details” menu button, select “page title.”
- Verify that the page title reflects the new content on the page and is different than the page title noted in #3.
- Activate the browser back button and verify that the initial page/screen loads.
- Activate the browser forward button and verify that the page/screen opened in #6 loads.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | This is a document, desktop or mobile application, the site does not have more than one distinct page, or the site is a multi-page application. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The page title does not change when a new view or page is loaded | 2.4.2 Page Titled | Serious |
The new page title is not announced | 4.1.3 Status Messages | Serious |
Focus does not go to a logical location on the new page/view | 2.4.3 Focus Order | Serious |
Page is not added to the browser history | Functional consideration for vision and cognitive disabilities | Minor |
99. All Other Custom Elements
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
E.99.1 | All Other Custom Elements | All custom elements (i.e., non-native) that do not have MDAS-M test processes meet the WCAG name, role, value, non-text content, and info and relationships requirements, as well as follow established keyboard interface patterns defined in the ARIA Authoring Practices Guide (APG) | Blind, low vision, motor disabilities |
Step 1: Identify Content
Identify user interface elements that have not been evaluated in the “E” series of MDAS-M tests. As of this version, these include, but are not limited to:
- Custom checkboxes
- Comboboxes (input widget that has an associated popup)
- Datepickers and Timepickers
- Grids
- Listboxes
- Non-navigational Menus, Menubars, and Menu Buttons
- Meters
- Progress indicators
- Sliders
- Spinbuttons
- Toolbars
- Tree views
- Tree grids
- Window splitters
This test DOES NOT APPLY to the following types of content:
- Documents.
- Mobile and Desktop applications.
Step 2: Test Content
- Locate the type of interface element in the WAI-ARIA Authoring Practices Guide (APG)
- If the element is not documented here, acceptable alternative references include Inclusive Components, UK Design System, and U.S. Web Design System (USWDS).
- Note: The design systems should be used as code and user experience research references for testers to identify the proper ways that certain elements should be implemented. Testers should NOT provide links to the GOV.UK or USWDS websites as remediation advice without explicitly stating that these are examples and providing as much context as possible. Developers without extensive accessibility experience are likely to misinterpret links to these references as advice to use the design systems in their projects.
- Less experienced evaluators are encouraged to contact the ADA Digital Accessibility Center (accessibility@osu.edu) for guidance on interpreting these resources and synthesizing them into their testing plan.
- If the element is not documented here, acceptable alternative references include Inclusive Components, UK Design System, and U.S. Web Design System (USWDS).
- Open Google Chrome’s accessibility inspection tool.
- Using the inspection tool, select the element you are testing. In the Accessibility tab (bottom panel), under “Computed Properties,” verify that
- The element’s “Role” matches the appropriate role as defined in the WAI-ARIA 1.1 Definition of Roles list.
- The element’s “Name” has a value that is descriptive of its purpose
- If the element has a visible title, verify that the “Name” is the same as the title.
- If the element features any interactivity that is not path-dependent, the keyboard interface follows the guidelines provided in the WAI-ARIA APG “Developing a Keyboard Interface” document.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | This is a document, desktop or mobile application or the page does not include non-native user interface elements. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The name of the element cannot be programmatically determined | 4.1.2 Name, Role, Value | Serious |
The name of the element does not describe its purpose | 1.1.1 Non-text Content | Serious |
The element does not have the proper role that can be programmatically determined | 4.1.2 Name, Role, Value | Serious |
The element does not communicate its changes in state to assistive technologies | 4.1.2 Name, Role, Value | Critical |
The element does not communicate changes in value to assistive technologies | 4.1.2 Name, Role, Value | Critical |
The element’s accessibility properties cannot be programmatically determined | 4.1.2 Name, Role, Value | Serious |
States, properties, and values that can be set by the user cannot be programmatically set using methods that are supported by user agents, including assistive technologies | 4.1.2 Name, Role, Value | Critical |
Related element components are not programmatically associated with each other | 1.3.1 Info and Relationships | Serious |
Element does not follow established keyboard navigation patterns | 2.1.1 Keyboard | Critical |
Usability
The interface is usable with different types of input devices, adjustable to user’s needs, and does not interfere with the user’s ability to use it.
1. Keyboard
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.1.1 | Functionality is keyboard accessible | All non-path dependent functionality can be accessed and executed using only the keyboard and non-standard keyboard interactions are visually and programmatically documented. | Blind, motor disabilities |
Step 1: Identify Content
- Use the mouse or other pointing device to determine available functions provided by interactive elements (including drop-down menus, form fields, revealing/hiding content, tooltips, AND all interactive interface elements).
- Use the mouse to identify instances where interactive elements provide information that is essential to understanding or operating the page content.
- Open ANDI to the “focusable elements” module (default), which will highlight all elements on the page that can receive keyboard focus.
Note: Much of this testing will have already been performed if the tester completed the User Interface Element (E) tests. Testers do not need to repeat this test on elements they have already tested. If any of those tests failed on keyboard access grounds, however, this test should be marked as a failure. EXCLUDE functions that require input that depends on the path of the user’s movements, such as handwriting and free-hand drawing. Functions that do not depend on a specific path, such as vector drawing and drag and drop interfaces, must NOT be excluded and MUST be tested.
Step 2: Test Content
- Use the keyboard to operate identified functionality and/or access the essential information: access (e.g., Tab to) the element and execute (e.g., press Enter or Space with focus on the element, press the Arrow keys to navigate between items within a composite control).
- If an interactive element does not have keyboard access, determine if there is another keyboard accessible method available on the page which provides the same functionality, e.g., one of two print methods provided is keyboard accessible, etc.
- If an interactive element does not provide access to essential information via keyboard interaction, determine whether the information is available elsewhere on the page (e.g., as text).
- If standard keystrokes (Tab, Shift + Tab, Arrow keys, Enter, Space) do not access and operate the controls but custom keystrokes do, OR the standard keyboard strokes are used in a way that the average keyboard user would find confusing, ensure instructions for the keystrokes are
- Visible, e.g., by displaying them when the control has keyboard focus or in an easy-to-find location that can be accessed using standard keystrokes.
- Announced by the screen reader, e.g., when the control receives keyboard focus or in an easy-to-find location that can be accessed using standard keystrokes.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain interactive functionality, or the interactive functionality is path dependent. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Functionality cannot be accessed and executed using the keyboard | 2.1.1 Keyboard | Critical |
Essential information cannot be accessed because the element that provides access is not keyboard accessible | 2.1.1 Keyboard | Critical |
Instructions for custom keystrokes are not visually available | Functional consideration for sighted keyboard users | Serious |
Instructions for custom keystrokes are not announced by screen readers | Functional consideration for blind keyboard users | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.1.2 | Keyboard focus is always visible | A visible indication of focus is provided when focus is on the interface element. | Low vision, motor disabilities |
Step 1: Identify Content
Use the keyboard to navigate to keyboard-accessible interface elements (including drop-down menus, form fields, revealing/hiding content, tooltips, AND all interactive interface elements).
Step 2: Test Content
- Determine whether there is a visible indication of focus on the element that has keyboard focus.
- When the keyboard focus is on a frame, some browsers will display a visible focus and some may not. Where a visible focus is not available on a frame, do NOT consider this a failure of the web content.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain elements that receive keyboard focus. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
All or most interactive elements do not have a visible indicator of focus | 2.4.7 Focus Visible | Serious |
A primary interactive element does not have a visible indicator of focus | 2.4.7 Focus Visible | Moderate |
A secondary interactive element does not have a visible indicator of focus | 2.4.7 Focus Visible | Minor |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.1.3 | Focus order preserves meaning and operability | The focus order preserves the meaning and operability of the web page. | Motor disabilities, low vision, blind |
Step 1: Identify Content
This test is applicable to all pages, applications, and documents that are navigable using a keyboard interface.
Step 2: Test Content
- Use the tab key to move focus through the page.
- Determine if the focus order impacts the page meaning (e.g. form fields for a mailing address are presented in the expected sequence).
- This is most often noticeable when focus order does not follow the logical order of operation (normally top to bottom, left to right).
- It may be necessary to use the keyboard to activate trigger controls that reveal hidden content with focusable elements (e.g., menus, dialogs, modal dialog boxes, expandable tree list) to check the focus order to, from, and within the revealed content.
- It may be helpful to launch ANDI: focusable elements and select tab order.
- Backward focus order does not have to mirror the forward focus order. However, it must preserve the meaning and operability of the page.
- For modal dialog boxes, keyboard focus navigating both forward and backward should remain within the modal dialog box until it is closed.
Note:
- Focus order does not necessarily need to be top to bottom, left to right.
- When the focus order does not affect meaning or operability, this test Does Not Apply. Example: A row of icons linking to social media may not need to be navigated in a particular order.
- ANDI tab order markup may be slightly different from actual keyboard tab order in certain browsers. Always use the results from keyboard tab order.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain elements that receive keyboard focus |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Focus order does not preserve the meaning and/or operability of the page | 2.4.3 Focus Order | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.1.4 | Content that appears on focus can be dismissed and is persistent | Content that appears on focus must be dismissible and persistent. | Motor disabilities, low vision, cognitive disabilities |
Step 1: Identify Content
- Using the keyboard, identify all elements that reveal additional content when receiving keyboard focus. Examples are custom tooltips, sub-menus, and other nonmodal popups.
EXCLUDE where the browser controls the visual presentation of the new content (such as the HTML title attribute as a tooltip).
Step 2: Test Content
- Unless the content communicates an input error or does not obscure or replace other content, verify the new content is dismissible without the need to move keyboard focus. This is usually implemented with the Escape key.
- Verify that after the content is dismissed, focus is located on the element that triggers the new content or the most logical location.
- Verify that UNTIL the keyboard focus is moved elsewhere or the content is dismissed, the new content persists (remains visible).
NOTES:
- Modals are not included as they take focus away from the triggering element as the new content appears and this criterion assumes focus stays on the trigger.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain new content revealed with focus. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Content that appears on focus cannot be dismissed without the need to remove the keyboard focus | 1.4.13 Content on Hover or Focus | Moderate |
Dismissing the content moves focus to an illogical location | 2.4.3 Focus Order | Moderate |
Content that appears on focus does not remain visible until focus is moved elsewhere | 1.4.13 Content on Hover or Focus | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.1.5 | Focus does not initiate change in context | When an interface element receives focus, it does not initiate an unexpected change of context. | Blind, low vision, cognitive disabilities, motor disabilities |
Step 1: Identify Content
Use the keyboard to navigate to keyboard-accessible interface elements (including drop-down menus, form fields, revealing/hiding content, tooltips, AND all interactive interface elements).
Step 2: Test Content
- When the interface element receives focus, evaluate whether an unexpected change of context occurs, e.g., a new window is launched, or focus is moved to another interface element.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain elements that receive keyboard focus. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
An unexpected change of context is initiated when a user interface element receives focus | 3.2.1 On Focus | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.1.6 | No keyboard trap | There is no keyboard trap. | Blind, motor disabilities |
Step 1: Identify Content
- Use the mouse or other pointing device to determine available functions provided by interactive elements (including drop-down menus, form fields, revealing/hiding content, tooltips, AND all interactive interface elements).
- Use the mouse to identify instances where interactive elements provide information that is essential to understanding or operating the page content.
Step 2: Test Content
- Use standard navigation keys (e.g., TAB, SHIFT + TAB, arrow keys, CTRL + TAB, etc.) to navigate through all keyboard focusable elements on the page.
- Determine whether there are any instances where keyboard navigation becomes trapped:
- Keyboard users are unable to move away from an element, e.g., using the Tab or arrow key
- Keyboard access is restricted to a small section of the page with no way to navigate out of the “loop” to the rest of the page.
- Keyboard users cannot navigate back out of continuous scrolling content (content that loads automatically when the user reaches the end), such as social media feeds.
- If a keyboard trap is found:
- Attempt to exit the trap by pressing the ESC key.
- If that does not work, inspect any help (contextual help, or application help) and documentation for notification of available alternate keyboard commands (e.g., non-standard keyboard controls, access keys, hotkeys) to escape/avoid the keyboard trap.
- Determine whether the alternate command(s) work.
Note:
- In case of a keyboard trap, continue to test interactive elements after the trap by using the mouse to bypass the trap or refreshing the page and using the keyboard to navigate backwards through the page.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain elements that receive keyboard focus. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
A keyboard trap exists on the page | 2.1.2 No Keyboard Trap | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.1.7 | No keystroke timing | Individual keystrokes do not require specific timings for activation of functionality. | Motor disabilities, cognitive disabilities |
Step 1: Identify Content
- Use the mouse or other pointing device to determine available functions provided by interactive elements (including drop-down menus, form fields, revealing/hiding content, tooltips, AND all interactive interface elements).
- Use the mouse to identify instances where interactive elements provide information that is essential to understanding or operating the page content.
Step 2: Test Content
- Determine whether there are any instances where the timing of the keystrokes is required to activate the element, e.g., the speed at which a password keystrokes are typed is part of the password authentication.
- If there is a timing dependent functionality, determine if there is another keyboard accessible method available on the page, which does not require specific timing.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain interactive functionality. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Keyboard functionality requires users to perform specific timings for activation | 2.1.1 Keyboard | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.1.8 | Character key shortcuts can be disabled or remapped | If a keyboard shortcut uses only printable character keys, users can disable OR remap the shortcut OR the shortcut is active only when the element has focus. | Motor disabilities cognitive disabilities, blind |
Step 1: Identify Content
All page content.
Step 2: Test Content
- Open screen reader
- Move focus to web page window and press the CTRL key to silence the screen reader
- Run the “Remove Page Focus” bookmarklet to ensure that the focus is not on an interactive element
- Run the “Trigger Character Key Shortcuts” bookmarklet
- Watch the page and listen to the screen reader output to see if any functionality is triggered. An alert will pop up to notify you when the test is complete
- Verify for each such shortcut found:
- An option for disabling the shortcut is available (and the shortcut action can be achieved through another means) OR
- An option for remapping the shortcut that includes non-printing characters (e.g., Ctrl, Alt).
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE:
|
FAIL | ALL of the PASS conditions are FALSE. |
DNA | The page does not contain keyboard shortcuts that use only printable character keys OR the shortcut only works on current focused element OR menus opened by any other means where single keys are then used to select items in the menu. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Character key shortcut cannot be disabled, the action is not available through other means, or the shortcut cannot be remapped to use nonprintable keys. | 2.1.4 Character Key Shortcuts | Moderate |
2. Mouse and Touch
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.2.1 | Pointer gestures are also available with a single pointer | Multipoint and path-based gestures not essential to functionality must also function with a single pointer. This holds true whether or not a screen reader is in use. | Motor disabilities, cognitive disabilities |
Step 1: Identify Content
For each page or view, identify all functionality activated with multipoint (two or more fingers or gestures required together) or path-based (where the path requires the user to make contact with at least one intermediate point before ending the gesture) gestures. EXCLUDE where such gestures are essential to functionality, such as drawing a signature on a mobile device. Notes:
- Dragging is not a pointer gesture because it is not path-based.
- This test does not apply to user agent (device, operating system, browser) or assistive technology gesture actions.
Step 2: Test Content
- Identify any functionality that requires multipoint or path-based gestures to activate.
- Examples include Taps and swipes with two or more fingers, split taps, two finger pinch/zoom.
- Verify for each such required gesture found, the same functionality can also be achieved using only a provided single pointer option (such as taps, double taps, single-click, double-click, click-and-hold, long presses or non-path based dragging actions).
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain multipoint gestures OR path-based gestures OR if such gestures are essential to functionality, such as drawing a signature on a mobile device. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Multipoint gesture functionality does not have a single pointer alternative | 2.5.1 Pointer Gestures | Critical |
Path-based gesture functionality does not have a single pointer alternative | 2.5.1 Pointer Gestures | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.2.2 | Pointer actions can be cancelled or undone | No non-essential down-event activation is used for single point activation of controls. Activation occurs on the up-event and a mechanism to abort the function upon completion or to undo the function after completion is provided. If a down-event does exist, the up-event reverses any outcome. | Low vision, cognitive disabilities, motor disabilities |
Step 1: Identify Content
- For each page or view, identify all functionality activated using a single pointer (one point of contact on the screen). This includes but is not limited to links, buttons, check boxes, radio buttons.
EXCLUDE where completing the function on the down-event is essential, such as a digital piano or where functions emulate a keyboard or with numeric keypads. Notes:
- Single pointer includes single and double taps and clicks, long presses, and path-based gestures including mouse clicks.
- This test does not apply to user agent or assistive technology pointer actions.
Step 2: Test Content
- Activate the element and note what functionality happens.
- Left click down on the element and hold the left click button.
- While holding the left click button down, drag the mouse pointer away from the element and then release the button. If this is a drag and drop element, ensure that the button is NOT released in the drop target area.
- For elements that have a single tap or long press as input, verify that the function did not happen. If it does, go to step 6.
- For drag and drop elements, verify that the action is reverted (i.e., the element that was being dragged moves back to its original position).
- If the function happens, verify that one of the following are true:
- There is a mechanism to abort the function before completion.
- There is a mechanism to undo the function after completion.
- Releasing the button (the “up event”) reverses what happened when the mouse button was clicked (the “down event”).
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE:
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | The page does not contain functionality that is activated using a single pointer OR it is essential that the functionality be performed on the down-event. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Single pointer functionality occurs on the down event that cannot be aborted, undone, or reversed by the user | 2.5.2 Pointer Cancellation | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.2.3 | Content that appears on hover can be dismissed, is persistent, and remains hoverable | Content that appears on hover must be dismissible, persistent, and hoverable | Motor disabilities, low vision, cognitive disabilities |
Step 1: Identify Content
- Using a mouse, identify all elements that reveal additional content when hovered over. Examples are custom tooltips, sub-menus, and other nonmodal popups.
EXCLUDE where the browser controls the visual presentation of the new content (such as the HTML title attribute as a tooltip).
Step 2: Test Content
- Unless it communicates an input error or does not obscure or replace other content, verify the new content is dismissible without the need to move the pointer hover. This is usually implemented with the Escape key.
- Verify that UNTIL hover is moved elsewhere, the new content persists (remains visible).
- Verify that the mouse pointer can be moved over that same new content without the new content closing.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain new content revealed with hover. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Content that appears on hover cannot be dismissed without the need to remove pointer hover | 1.4.13 Content on Hover or Focus | Moderate |
Content that appears on hover does not remain visible until hover is moved elsewhere | 1.4.13 Content on Hover or Focus | Serious |
Pointer cannot hover inside of content that appears on hover without it disappearing | 1.4.13 Content on Hover or Focus | Serious |
3. Motion Input
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.3.1 | Motion controls are also keyboard accessible and can be disabled | If device or user motion triggers a function, the function can also be activated through standard user interface controls. The activation through motion can be disabled. | Blind, motor disabilities |
Step 1: Identify Content
On devices with motion sensors, identify any controls that are activated by device motion or user motion. Ask the developers if any motion actuation is included in the app. EXCLUDE: Where motion is essential, such as with a step counter and assistive technology based on head or eye movement tracking.
Step 2: Test Content
- Verify for each such instance found:
- Standard keyboard accessible interface elements are provided as an alternate activation method. AND
- A mechanism exists to disable the motion actuation.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The device does not use motion sensors, the page/app does not contain elements triggered by device or user motion, the motion is used to operate functionality through an accessibility supported interface, or the motion is essential for the function |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
A standard keyboard accessible mechanism is not provided as an alternative method to perform the motion functionality | 2.1.1 Keyboard; 2.5.4 Motion Actuation | Serious |
No mechanism exists to disable the motion actuation | 2.5.4 Motion Actuation | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.3.2 | Device orientation not restricted | Content does not restrict its view and operation to a single display orientation, such as portrait or landscape, unless a specific display orientation is essential. | Motor disabilities |
Step 1: Identify Content
- Conduct this test for all pages or views.
EXCLUDE pages or views or elements where the display orientation is essential to the functionality of a feature such as an application for scanning bank checks, piano keyboard simulator, slides for a projector or television, or virtual reality content where content is not necessarily restricted to landscape or portrait display orientation. EXCLUDE documents and applications on devices that do not support changing the device orientation.
Step 2: Test Content
- Ensure the selected page is at 100% zoom.
- Resize the viewport to 1240px by 767px. 1240 represents landscape and 767 represents portrait orientation:
- Open Chrome DevTools (right click in the page and select “Inspect”)
- In the upper left corner of the DevTools screen select the “Toggle device toolbar” icon representing a landscape screen with a mobile device in front of it.
- In the toolbar that opens on the webpage, in the “Dimensions” dropdown, choose “Responsive” and enter 1240 and 767 into the size inputs to the right.
- To toggle between landscape orientation (1240px) and portrait orientation (767px), click the toggle icon to the right of the size input boxes. The two width values will trade positions in the input boxes. The first number is the current viewport width.
- Observe the content present at the 1240px width. (Toggle the widths until 1240 shows in the left-most width input box.)
- Toggle the orientation to the 767px width.
- Ensure that all content and functionality present in landscape orientation is also available in portrait mode with no content disappearing, being cut off, or overlapping.
- Here “available” means either directly on the screen, or revealed by accessible controls, or accessible with direct links. An example of an accessible control is the hamburger icon replacing the main menu. This passes the test if the icon is an accessible control.
NOTES:
- The zoom level will change as the viewport width is toggled but has no impact on this test.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | This test applies to all content except where the display orientation is essential to the functionality of a feature such as an application for scanning bank checks or a piano keyboard simulator, slides for a projector or television, or virtual reality content where content is not necessarily restricted to landscape or portrait display orientation, or is a document, or is an application on a device that does not support changing orientation. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Content and/or functionality is limited to a single orientation | 1.3.4 Orientation | Serious |
4. Voice Input
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.4.1 | Visible label text is in the element’s accessible name | The text contained in an interactive control’s associated visible label also comprises the control’s entire accessible name or is the first part of the control’s accessible name. | Motor disabilities, cognitive disabilities |
Step 1: Identify Content
- Launch ANDI: focusable elements (this is the default selection). This will highlight each focusable element (controls) on the page. Find all elements with text or text image labels.
Notes:
- The ANDI Output appears within the ANDI information banner when focus is on an interactive element.
- The ANDI Output shows the accessible name for the control.
- Controls include links, buttons, form inputs, menus.
Step 2: Test Content
- For each focusable element with a text or text image label:
- Put focus onto a highlighted element. Is there ANDI Output?
- If NO, this control FAILS. Make note of the specific element. Continue testing with next highlighted element.
- If Yes, continue:
- Does the ANDI Output exactly match the visible text comprising the visible label, with no part of the label missing, the words in the same order, and with no additional text added in? For example, the visible text label says, “Preferred Nick Name” and the ANDI Output says, “Preferred Nick Name” and nothing else.
- If Yes, the control PASSES the test. Continue testing with next highlighted element.
- If NO, continue:
- If the ANDI Output contains any additional words other than what is visible in the label, are those words at the end of the visible label and NOT at the beginning or interspersed between?
- If YES, this element PASSES. For example, the visible text label says, “Preferred Nick Name” and the ANDI Output says, “Preferred Nick Name Here”
- If NO, this element FAILS. The added words do not come at the end. For example, the visible text label says, “Preferred Nick Name” and the ANDI Output says, “Your Preferred Name Nick” or “Preferred Awesome Nick Name”
Notes:
- Icons in a text editor such as “B” for bold and “ABC” for spell checking should not use such visible text as the accessible name. The accessible name should state the function the icon triggers, such as “Bold” or “Spell check”. Likewise, a greater-than symbol or less-than symbol (> <) used as arrows should have an accessible name that describes the functionality of the arrow, such as “Play” or “Next” or “Previous”.
- Where punctuation is included at the end of a label’s text, such as a “:” or “…” it is not an error to not include the punctuation in the accessible name but in best practice, the name should match the label exactly, including punctuation.
- Letter case can be disregarded.
- Placeholder text is considered a text label if no other label is present.
- All focusable elements should be tested against this criteria, do not stop testing when the first “FAIL” is logged. Track which elements pass and which fail for the report.
If the visible label reads, “Preferred Nick Name”
Passes | Fails |
---|---|
“Preferred Nick Name” “Preferred Nick Name Here” “Preferred Nick Name So You Feel Seen” | “Preferred Nick” “Preferred Name” “Nick Name Preferred” “Your Preferred Nick Name” “Preferred Awesome Nick Name” “Have a nice day” |
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain any visible text labels for focusable elements. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
The visible label is not included in the accessible name of the element | 2.5.3 Label in Name | Moderate |
The visible label is not the first part of the accessible name of the element | 2.5.3 Label in Name | Moderate |
5. Content Adjustable
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.5.1 | Text can be resized without loss of content or functionality | There is a mechanism to resize, scale, or zoom in on the text to at least 200% of its original size without loss of content or functionality. | Low vision |
Step 1: Identify Content
All text on a page. EXCLUDE captions for synchronized media and images of text.
Step 2: Test Content
- Use built-in browser zoom functions to resize the text to at least 200%.
- If any of the content did not zoom using the built-in browser functions, determine whether there is a non-AT mechanism to resize page content to 200% of its original size, e.g., Operating System, platform, or other mechanism provided directly by the web page/application.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain text |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Text cannot be resized to at least 200% of its original size using a non-AT-reliant mechanism | 1.4.4 Resize Text | Serious |
Primary text is clipped, truncated, or obscured when text is resized to 200% | 1.4.4 Resize Text | Critical |
Secondary text is clipped, truncated, or obscured when text is resized to 200% | 1.4.4 Resize Text | Serious |
Primary content or functionality is no longer available when text is resized to 200% | 1.4.4 Resize Text | Critical |
Secondary content or functionality is no longer available when text is resized to 200% | 1.4.4 Resize Text | Serious |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.5.2 | Content can reflow without two-dimensional scrolling | Except for parts of the content which require two-dimensional layout for usage or meaning, content can be presented without loss of information or functionality, and without requiring scrolling in two dimensions for vertical scrolling content at a width equivalent to 320 CSS pixels and horizontal scrolling content at a height equivalent to 256 CSS pixels. | Low vision |
Step 1: Identify Content
- Conduct this test for all pages or views.
EXCLUDE pages or views where the only content present requires two-dimensional layout for usage or meaning and there is nothing else on the page, such as menus, headers, or footers. EXCLUDE parts of content that require two-dimensional layout for usage or meaning and would suffer from being limited to 320px width such as some tables, maps, presentations, games, diagrams, graphics, or toolbars needed to edit content. NOTE: Although tables are exempt from the rule, the individual data cells are not unless they too contain content that requires two-dimensions for usage or meaning. EXCLUDE PDFs that contain form fields, as Acrobat does not support reflowing for files that contain them.
Step 2: Test Content
- Ensure the selected page is at 100% zoom.
- Resize the viewport to 1280px x 1024px using the Zoom Test bookmarklet, which will open the current page in a window of that size.
- Set the page view to 400% zoom.
- Verify that all content and functionality is still available and does not overlap or obscure other content, regardless of whether the user needs to scroll in both directions to access it all.
- Here “available” means either directly on the screen, or revealed by accessible controls, or accessible with direct links. An example of an accessible control is the hamburger icon replacing the main menu. This passes the test if the icon is an accessible control.
- Verify that all content and functionality is reachable without having to scroll both vertically and horizontally.
- Scrolling down the page like users typically do at any zoom level counts as scrolling vertically, so this step is to verify users do not also have to use horizontal scrolling to access content.
NOTES:
- Zoom is controlled with CTRL + or – for Windows, Command – or + for Mac.
- To use the Zoom Test bookmarklet, drag the link you find on the DAC website to your bookmark bar. Click the new bookmark from the test page.
- A viewport 1280px x 1024px zoomed to 400% is equivalent to a viewport 320px wide zoomed to 100% or a 640px wide viewport zoomed to 200%. If preferred, either of these two alternate widths used with their associated zoom levels may also be used to test.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | This test applies to all pages except where the only content on the page is one of the excluded elements AND meaning would be lost if this element was resized to 320px wide. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Primary content or functionality is obscured or no longer exists when content is adjusted to reflow | 1.4.10 Reflow | Critical |
Secondary content or functionality is obscured or no longer exists when content is adjusted to reflow | 1.4.10 Reflow | Serious |
Content or functionality overlaps other content when content is adjusted to reflow | 1.4.10 Reflow | Moderate |
Content or functionality requires both horizontal and vertical scrolling for understanding or use when content is adjusted to reflow | 1.4.10 Reflow | Moderate |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.5.3 | Text spacing can be adjusted without loss of content or functionality | On web pages, no loss of content or functionality occurs by setting all of the following (if supported by the page’s human languages and scripts) and by changing no other style property: line spacing 1.5 times font size; spacing following paragraphs 2 times font size; tracking 0.12 times font size; word spacing 0.16 times font size. | Low vision, other visual disabilities, cognitive, language |
Step 1: Identify Content
All web page text content, except video captions embedded/burned directly into the video frames (open captions) and images of text (for this test, canvas implementations of text are considered to be images of text). EXCLUDE all non-web content (documents and applications).
Step 2: Test Content
- Open the page in another browser window, so that you have a page for comparison.
- On the testing page, start and enable captions for media that contain them, then pause the media.
- Activate the “Text Spacing Test” bookmarklet.
- Verify the following between the testing page and the comparison page:
- All text content, except for open captions and images of text, adapts to the new text spacing minimums.
- As the result of this test, no content is clipped, cut off, obscured, or overlapped.
- Any content that is truncated as the result of this test (including by, but not limited to, the use of ellipses) can be revealed by a keyboard accessible mechanism.
- All page functionality that worked prior to the test continues to work.
Step 3: Evaluate and Record Results
Result | Condition(s) |
PASS | ALL of the following are TRUE When text spacing is adjusted on the page to line spacing 1.5 times font size; spacing following paragraphs 2 times font size; tracking 0.12 times font size; word spacing 0.16 times font size (where these are supported), all of the following happen:
|
---|---|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain text content or is a document or is a mobile or desktop application. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Text does not adapt to text spacing adjustments | 1.4.12 Text Spacing | Moderate |
Text is overlapped as a result of adjusting text spacing | 1.4.12 Text Spacing | Moderate |
Primary content is clipped, cut off, or obscured as a result of adjusting text spacing | 1.4.12 Text Spacing | Critical |
Secondary content is clipped, cut off, or obscured as a result of adjusting text spacing | 1.4.12 Text Spacing | Serious |
Primary content that is truncated as a result of adjusting text spacing does not have a keyboard accessible mechanism to reveal the content | 1.4.12 Text Spacing | Critical |
Secondary content that is truncated as a result of adjusting text spacing does not have a keyboard accessible mechanism to reveal the content | 1.4.12 Text Spacing | Serious |
Primary functionality is no longer available as a result of adjusting text spacing | 1.4.12 Text Spacing | Critical |
Secondary functionality is no longer available as a result of adjusting text spacing | 1.4.12 Text Spacing | Serious |
6. Content Consistent
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.6.1 | Element name and description consistent across website/application | The accessible name and description is consistent for elements that perform the same function. | Blind, cognitive, learning, language |
Step 1: Identify Content
Identify elements that have the same functionality within a set of web pages or application screens.
Step 2: Test Content
- Launch ANDI: focusable elements.
- Examine the ANDI Output for each identified element.
- Consistent text alternatives for interface elements that perform the same function are not always truly “identical.” This is acceptable if they follow a consistent format. For instance, in the use of a graphical arrow at the bottom of a web page that links to the next web page, the text alternative may be: “Go to page 4.” However, the same arrow image on the next page should then state “Go to page 5.”
- A single non-text-content-item may be used to serve different functions. In such cases, different text alternatives are necessary and should be used. Examples can be commonly found with the use of icons such as check marks, cross marks, and traffic signs. Their functions can be different depending on the context of the web page. A check mark icon button may function as “approve”, “mark completed”, or “include”, to name a few, depending on the situation. Using “check mark” as the text alternative across all web pages does not help users understand the function of the button. Different text alternatives can be used when the same non-text content serves multiple functions
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain components that have the same functionality within a set of web pages. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Element is not identified consistently on different pages on the website/different screens of the application | 3.2.4 Consistent Identification | Moderate |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.6.2 | Navigational elements are in the same relative order across website/application | Each navigational element occurs in the same relative order with regard to other repeated components on each web page where it appears. | Blind, low vision, cognitive disabilities |
Step 1: Identify Content
Identify all navigational elements that are repeated on multiple pages within the website.
- Note: Navigational elements are any components that provide a user the ability to locate specific information or functionality across the website. These can be static or interactive elements, and groupings of components can also meet this definition.
- This includes, but is not limited to, global navigation menu, sidebar navigation menu, global search fields, skip navigation, and breadcrumbs.
Step 2: Test Content
- Review multiple web pages of the web site to identify navigational components that are repeated on multiple pages. Do not initiate changes to the content.
- Review the order of the navigational elements and compare it to the order on the other pages where they appear
- Note: ANDI’s “tab order” feature under the focusable elements module may help evaluate the focus order of interactive interface elements. ANDI’s “reading order” feature under the structure module may also help evaluate the content order of both focusable and non-focusable elements.
Note:
- Same relative order is defined as same position relative to other items. Items are considered to be in the same relative order even if other items are inserted or removed from the original order. For example, expanding navigation menus may insert an additional level of detail or a secondary navigation section may be inserted into the reading order.
- This test applies to both the relative order of the element groups (i.e., a primary navigation menu in comparison to the site header) as well as the items within those groups (i.e., the links in a navigation menu).
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain components that are repeated on other web pages. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Primary method of navigation (global navigation, search, primary skip nav link, etc.) does not occur in the same relative order on each web page or application screen where it appears | 3.2.3 Consistent Navigation | Serious |
Secondary method of navigation does not occur in the same relative order on each web page or application screen where it appears | 3.2.3 Consistent Navigation | Moderate |
Items within a method of navigation do not occur in the same relative order on each web page or application screen where the method of navigation appears | 3.2.3 Consistent Navigation | Serious |
7. Content does not Distract or Interfere
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.7.1 | Moving, blinking, and scrolling content can be controlled | The user can pause, stop, or hide moving, blinking, or scrolling content. | Cognitive, learning, attention deficit |
Step 1: Identify Content
Identify visual content that:
- Starts moving, blinking, or scrolling without user activation (including videos, synchronized media, and scrolling text), AND
- Moves, blinks, or scrolls continuously for more than 5 seconds, AND
- Is not the only content on the page.
EXCLUDE content where the movement, blinking, or scrolling of the content, if removed, would fundamentally change the information or functionality of the content, and information and functionality cannot be achieved in another way that would conform.
Step 2: Test Content
- Determine if there is an evident mechanism for the user to pause, stop, or hide the content.
- Activate the mechanism.
- Verify that the mechanism performs its identified function.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain moving, blinking, or scrolling content that plays automatically for more than 5 seconds OR if the moving, blinking, or scrolling content is the ONLY content on the web page |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Moving, blinking, or scrolling content plays automatically for more than 5 seconds without a mechanism to pause, stop, or hide it | 2.2.2 Pause, Stop, Hide | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.7.2 | Auto-playing audio can be controlled | The user can pause, stop, or control the volume of audio content that plays automatically for more than 3 seconds. | Blind, cognitive, language |
Step 1: Identify Content
Identify audio content that automatically plays (without user activation) for more than 3 seconds.
- Content of this type includes alerts, sounds, and music.
Step 2: Test Content
- Determine if there is a mechanism for the user to pause or stop the audio or to control the volume of only the auto-playing audio.
- Activate the mechanism with both the keyboard and mouse.
- Verify that the mechanism works.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain audio content that plays automatically for more than 3 seconds. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Auto-playing audio does not have a mechanism to pause/stop or control (independent of the OS/browser) its volume | 1.4.2 Audio Control | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.7.3 | Auto updating content can be controlled | The user can pause, stop, hide, or control the frequency of automatically updating content. | Cognitive, learning, attention deficit |
Step 1: Identify Content
Identify content that:
- Automatically updates (the content changes without user activation) AND
- Is not the only content on the page
Content of this type includes timers, stock tickers, news carousels, and counters. EXCLUDE content, that if removed, would fundamentally change the information or functionality of the content, and information and functionality cannot be achieved in another way that would conform.
Step 2: Test Content
- Determine if there is an evident mechanism for the user to pause, stop, or hide the content or to control the frequency of the update.
- Activate the mechanism.
- Verify that the mechanism performs its identified function.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain auto-updating content or the auto-updating content is the only content on the page. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
No mechanism exists that will pause, stop, hide, or control the update frequency of auto updating content | 2.2.2 Pause, Stop, Hide | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.7.4 | Time limits adjustable by user | The user can turn off, adjust, or extend the time limit. | Cognitive disabilities, blind, low vision, motor disabilities, deaf |
Step 1: Identify Content
Identify any instances of content time limits. Time limits could be identified by:
- Inspecting system or site documentation
- Text description somewhere on the page where the time limit occurs
- Pop-ups or other messages or warning indicators on the page
- Allowing the page to be idle for an extended period of time to prompt a time-out notification or other indication that a time limit has occurred.
EXCLUDE:
- Real-time Exception: The time limit is a required part of a real-time event (for example, an auction), and no alternative to the time limit is possible; or
- Essential Exception: The time limit is essential and extending it would invalidate the activity; or
- 20 Hour Exception: The time limit is longer than 20 hours.
Step 2: Test Content
- Determine whether the web page provides a mechanism to turn off, adjust, or extend the time limit.
- Turn off: the user can turn off the time limit before time expires
- Adjust: the user can adjust the time limit to at least ten times the length of the default setting before time expires
- Extend: the page provides a warning before time expires; for a period of at least 20 seconds, the user can extend the time limit with a simple action; the user can extend the time limit at least ten times.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ANY of the following are TRUE
|
FAIL | ALL of the PASS conditions are FALSE |
DNA | There is no time limit for content or if the time limit meets one of the exceptions listed in the Identify Content section above. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Time limits cannot be turned off before expiration, the user cannot adjust the time limit to at least 10 times the length of the default setting, and the user is not warned before time expires and given at least 20 seconds to extend the time limit with a simple action and the user is not allowed to extend the time limit at least 10 times. | 2.2.1 Timing Adjustable | Critical |
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.7.5 | No content flashes more than three times per second | Pages must not have content that flashes more than three times per second. | Photosensitivity, Vestibular |
Step 1: Identify Content
- Visibly identify any page or video content that flashes or blinks rapidly. This includes all content may include words, graphics, animations, videos, or images.
EXCLUDE where the content obviously does not flash more than three times per second.
Step 2: Test Content
- For each occurrence of flashing content
- Determine if it flashes more than three time per second using one or more of these methods:
- Compare the rate of flashing to the rate of flashing in this three flashes example.
- If the content appears to flash more than the example, this content FAILS.
- If the content appears to flash more slowly than the example, this content PASSES.
- Count the number of times the content flashes in one second.
- Count the flashes for 10 seconds and then divide that number by 10
- Compare the rate of flashing to the rate of flashing in this three flashes example.
- Determine if it flashes more than three time per second using one or more of these methods:
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE:
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page does not contain flashing content. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Content flashes more than three times per second | 2.3.1 Three Flashes or Below Threshold | Critical |
Important note: Success criterion 2.3.1 permits content to flash more than three times per second if the flash is below the general flash and red flash thresholds. However, the software that can measure these thresholds does not work on modern operating systems/browsers. Additionally, while the informative documentation states that it is also acceptable if the area that is flashing is smaller than 25% of 10 degrees of a visual field, this is difficult for most evaluators to determine what that constitutes without extensive training. Because these thresholds cannot be accurately measured and the “small safe area” technique is difficult to test, they will not be considered when determining conformance. Any content that flashes more than three times per second does not conform.
8. Content is Findable
ID | Test Name | Test Condition | Impacts |
---|---|---|---|
U.8.1 | Multiple ways exist to locate pages | There are two or more ways to locate a web page within a set of web pages. | Blind, low vision, cognitive disabilities |
Step 1: Identify Content
All web pages within a set of related web pages. EXCLUDE web pages that are the result of, or a step in, a process, such as an order confirmation form.
Step 2: Test Content
- Determine whether there are two or more ways to locate the specific web page within a set of web pages; these may include (but are not limited to) techniques such as:
- site maps
- site search
- tables of contents
- navigation menus or dropdowns
- navigation trees
- links between pages
Note: Additional techniques for locating a web page may be available beyond those listed in the test instructions.
- Verify that the identified techniques correctly function and lead to the web page within the site, for example:
- Links/menus lead to the corresponding pages of the site.
- The search form leads to the page(s) which contains the search term.
Step 3: Evaluate and Record Results
Result | Condition(s) |
---|---|
PASS | ALL of the following are TRUE
|
FAIL | ANY of the PASS conditions are FALSE |
DNA | The page is not within a set of related web pages OR the web page is a result of, or a step in, a process. |
Failure Matrix
Failure Condition | MDAS Failure | Priority |
---|---|---|
Fewer than two working techniques exist to locate web pages within a set of web pages. | 2.4.5 Multiple Ways | Moderate |