arc-templated-issues 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "./template-mappings.schema.json",
3
+ "version": "1.0.0",
4
+ "description": "Maps AxeCore rule IDs to accessibility issue templates",
5
+ "mappings": {
6
+ "control-lacks-a-label-in-the-code.md": {
7
+ "rules": [
8
+ "button-name",
9
+ "input-button-name",
10
+ "link-name",
11
+ "label",
12
+ "select-name",
13
+ "summary-name",
14
+ "aria-command-name",
15
+ "aria-input-field-name",
16
+ "aria-toggle-field-name",
17
+ "aria-meter-name",
18
+ "aria-progressbar-name",
19
+ "aria-tooltip-name",
20
+ "aria-treeitem-name",
21
+ "aria-dialog-name",
22
+ "label-title-only"
23
+ ],
24
+ "description": "Controls and form elements lacking accessible labels or names"
25
+ },
26
+ "heading-levels-incorrectly-nested.md": {
27
+ "rules": [
28
+ "heading-order",
29
+ "empty-heading",
30
+ "page-has-heading-one"
31
+ ],
32
+ "description": "Heading hierarchy and structure issues"
33
+ },
34
+ "images-should-be-marked-as-decorative.md": {
35
+ "rules": [
36
+ "image-alt",
37
+ "role-img-alt",
38
+ "svg-img-alt",
39
+ "input-image-alt",
40
+ "object-alt",
41
+ "area-alt",
42
+ "image-redundant-alt"
43
+ ],
44
+ "description": "Images missing alternative text or improperly marked"
45
+ },
46
+ "interactive-element-is-not-keyboard-accessible.md": {
47
+ "rules": [
48
+ "tabindex",
49
+ "scrollable-region-focusable",
50
+ "nested-interactive",
51
+ "frame-focusable-content",
52
+ "accesskeys"
53
+ ],
54
+ "description": "Interactive elements with keyboard accessibility issues"
55
+ }
56
+ },
57
+ "defaultTemplate": "arc-accessibility-issue-template.md"
58
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Template Mappings Schema",
4
+ "description": "Schema for mapping AxeCore rule IDs to accessibility issue templates",
5
+ "type": "object",
6
+ "properties": {
7
+ "version": {
8
+ "type": "string",
9
+ "description": "Version of the mappings configuration"
10
+ },
11
+ "description": {
12
+ "type": "string",
13
+ "description": "Description of this configuration file"
14
+ },
15
+ "mappings": {
16
+ "type": "object",
17
+ "description": "Map of template filenames to their rule configurations",
18
+ "patternProperties": {
19
+ ".*\\.md$": {
20
+ "type": "object",
21
+ "properties": {
22
+ "rules": {
23
+ "type": "array",
24
+ "description": "Array of AxeCore rule IDs that map to this template",
25
+ "items": {
26
+ "type": "string"
27
+ }
28
+ },
29
+ "description": {
30
+ "type": "string",
31
+ "description": "Human-readable description of what issues this template covers"
32
+ }
33
+ },
34
+ "required": ["rules"]
35
+ }
36
+ }
37
+ },
38
+ "defaultTemplate": {
39
+ "type": "string",
40
+ "description": "Default template to use when no specific mapping exists",
41
+ "pattern": ".*\\.md$"
42
+ }
43
+ },
44
+ "required": ["mappings", "defaultTemplate"]
45
+ }
@@ -0,0 +1,81 @@
1
+ # Control lacks a label in the code
2
+
3
+ ## Severity
4
+ 1-Critical
5
+
6
+ ## Suggested Priority
7
+ Blocker
8
+
9
+ -------- copy below ---------
10
+
11
+ [URL/Path]
12
+ ######
13
+
14
+ [Steps to reproduce]
15
+ ######
16
+
17
+ [Element]
18
+ The ##### located #####
19
+
20
+ [What is the issue]
21
+ The ###### control lacks a label in the code making it difficult for screen reader users to understand its purpose. A meaningful label is not announced.
22
+
23
+ [Why it is important]
24
+ Accessible labels provide critical information about a button’s purpose, enabling users of assistive technologies [such as voice recognition and screen readers] to navigate and interact with the application effectively. Without labels, users may face difficulties understanding what actions buttons will perform, leading to frustration and limited functionality.
25
+
26
+ [Code reference]
27
+ (## Tester note: grab code snippet from experience and delete me ##)
28
+ {code:html}
29
+ <button></button>
30
+ {code}
31
+
32
+ [How to fix]
33
+ Ensure that the control has an accessible label. There are many ways this is defined in the code. The control’s nested text or alternative text of images within controls can be used as the accessible name of the control.
34
+
35
+ When on-screen text is not available, authors can use another method to provide an accessible name, such as by using {{aria-labelledby}}, {{aria-label}}, or {{title}} attribute (not recommended in all cases), to provide the accessible name. The {{aria-labelledby}} attribute must contain one or more IDs of elements that label the button. The aria-label attribute is best when there is no on-screen label. Authors should place the string that labels the form field in the aria-label attribute.
36
+
37
+ Authors can also identify an accessible name using an associated label element whenever an on-screen label is present. The label element's value is then explicitly associated with the relevant form field using the for and {{ID}} attributes. Use of the label element provides an added benefit as it increases the target area that users can click to focus the form field.
38
+
39
+ [Compliant code example]
40
+ (## Tester note: include real code example or just leave generic examples below and delete me ##)
41
+ {code:html}
42
+ <button>My Account</button>
43
+ {code}
44
+
45
+ {code:html}
46
+ <a href=”/facebook” aria-label=”Facebook”><svg>...</svg></button>
47
+ {code}
48
+
49
+ {code:html}
50
+ <span id=”example”>Some text</span>
51
+ <a href=”/facebook” aria-labelledby=”example”><svg>...</svg></button>
52
+ {code}
53
+
54
+ [How to test]
55
+ Screen reader testing: Use a screen reader to navigate to the control and verify that the correct label is announced.
56
+
57
+ Visual inspection: Ensure the button has a clear, descriptive label. Check that either {{aria-label}}, {{aria-labelledby}}, or {{title}} are present in the code, and that the label reflects the button's purpose.
58
+
59
+ Use the Chrome DevTools Accessibility Inspector to verify that the Name property has been properly calculated. Open DevTools > Choose Accessibility Pane > Inspect element > review Computed Properties
60
+
61
+ [MagentaA11y]
62
+ https://www.magentaa11y.com/how-to-test/link-button/
63
+ https://www.magentaa11y.com/checklist-web/link/
64
+ https://www.magentaa11y.com/checklist-web/button/
65
+
66
+ [WCAG]
67
+ (## Tester note: Choose or add and delete me ##)
68
+ 2.4.4: Link Purpose (In Context) (A)
69
+ 2.4.6: Headings and Labels (AA)
70
+ 2.5.3: Label in Name (AA)
71
+ 4.1.2 Name, Role, Value (A)
72
+
73
+ [Operating system]
74
+ ######
75
+
76
+ [Browser]
77
+ ######
78
+
79
+ [Assistive technology]
80
+ Keyboard
81
+
@@ -0,0 +1,121 @@
1
+ # Heading levels incorrectly nested
2
+
3
+ ## Severity
4
+ 3-Average
5
+
6
+ ## Suggested Priority
7
+ Medium
8
+
9
+ -------- copy below ---------
10
+
11
+ [URL/Path]
12
+ ######
13
+
14
+ [Steps to reproduce]
15
+ ######
16
+
17
+ [Element]
18
+ (## Tester note: Describe where the heading is in the UI and delete me ##)
19
+
20
+ [What is the issue]
21
+ The following heading level nesting example does not meet the requirements for logically structured heading hierarchy:
22
+
23
+ The heading levels on this page are incorrectly nested, meaning that headings do not follow a logical order. For example, a {{<h3>}} may appear before a {{<h2>}}, or a {{<h4>}} may follow a {{<h2>}} without an appropriate {{<h3>}} in between. This disrupts the hierarchical structure of the page and makes it harder for users to understand the page content and navigate effectively.
24
+
25
+ [Why it is important]
26
+ Proper heading structure is crucial for accessibility as it helps assistive technologies, such as screen readers, understand and convey the relationships between different sections of content. Incorrectly nested headings can confuse users, making it difficult for them to grasp the organization of the page. This issue impacts people who rely on headings for navigation, especially those using screen readers or keyboard navigation, preventing them from efficiently moving through content. WCAG 1.3.1 (Info and Relationships) requires that information, structure, and relationships be conveyed clearly.
27
+
28
+ [Code reference]
29
+ (## Tester note: CSS code references can be helpful here – delete me ##)
30
+ {code:css}
31
+ ...
32
+ {code}
33
+
34
+ [How to fix]
35
+
36
+ Ensure that heading levels are used in a logical, hierarchical order. For example:
37
+
38
+ - An {{<h1>}} should be the first heading on the page.
39
+
40
+ - {{<h2>}} headings should follow {{<h1>}}, and {{<h3>}} should follow {{<h2>}}.
41
+
42
+ - Do not skip heading levels (e.g., {{<h1>}} skipping to {{<h3>}} is incorrect; it should be {{<h1>}} then {{<h2>}} then {{<h3>}}).
43
+
44
+ - A single heading should not use multiple levels of nested heading elements (e.g., {{<h1>}}T-Mobile {{<h3>}}iPhone Deals{{/h3}}{{/h1}} is incorrect; it should be simplified to use a single heading level {{<h1>}}T-Mobile iPhone Deals {{</h1>}}), and inner text can font sizing and styling be further customized using CSS styles.
45
+
46
+ Use the correct HTML elements for headings: {{<h1>}}, {{<h2>}}, {{<h3>}}, etc. Avoid using styling (like font size) alone to create the appearance of a heading.
47
+
48
+ Repeating patterns of headings are allowed so long as they follow a logical sequence (example: {{<h2>}},{{<h3>}},{{<h2>}},{{<h3>}})
49
+
50
+ [Compliant code example]
51
+ (## Tester note: n/a here if not applicable and is a design change and delete me ##)
52
+ {code:html}
53
+
54
+ <h1>My favorite taco recipe</h1>
55
+
56
+ <!-- Author's entire life story as it relates to tacos -->
57
+
58
+ <h2>Ingredients</h2>
59
+
60
+ <!-- List of ingredients -->
61
+
62
+ <h2>Steps</h2>
63
+
64
+ <h3>Preparing the protein</h3>
65
+
66
+ <!-- List of instructions -->
67
+
68
+ <h3>Preparing the vegetables</h3>
69
+
70
+ <!-- List of instructions -->
71
+
72
+ <h3>Assembly and plating</h3>
73
+
74
+ <!-- List of instructions-->
75
+
76
+ <h2>Nutrition information</h2>
77
+
78
+ <!-- List of nutrition info -->
79
+
80
+ <h2>Related recipes</h2>
81
+
82
+ <!-- List of related recipes -->
83
+ {code}
84
+
85
+ [How to test]
86
+
87
+ Automated:
88
+ - Use an accessibility testing tool such as Axe DevTools or the Level Access extension to detect any heading structure issues. These tools will flag incorrect nesting of heading levels.
89
+
90
+ - Follow-up with manual verification of the heading hierarchy in the HTML source code. (See Manual checks below.)
91
+
92
+ Manual:
93
+
94
+ - Inspect the page's HTML code to check the order of the heading elements (<h1>, <h2>, <h3>, etc.).
95
+
96
+ - Navigate through the page using a screen reader or keyboard shortcuts (e.g., arrow keys or heading shortcut keys) to verify that headings are in a logical order and the page content is easy to understand.
97
+
98
+ - Review the document structure using browser developer tools to ensure headings follow the correct hierarchy.
99
+
100
+ [MagentaA11y]
101
+
102
+ https://www.magentaa11y.com/checklist-web/heading/
103
+
104
+ [Resources]
105
+
106
+ https://www.w3.org/WAI/tutorials/page-structure/headings
107
+
108
+ [WCAG]
109
+ 1.3.1 Info and Relationships (Level A)
110
+
111
+ [Operating system]
112
+ ######
113
+
114
+ [Browser]
115
+ ######
116
+
117
+ [Assistive technology]
118
+ ######
119
+
120
+
121
+
@@ -0,0 +1,79 @@
1
+ # Images should be marked as decorative
2
+
3
+ ## Severity
4
+ Low
5
+
6
+ ## Suggested Priority
7
+ Low
8
+
9
+ -------- copy below ---------
10
+
11
+ [URL/Path]
12
+ ######
13
+
14
+ [Steps to reproduce]
15
+ ######
16
+
17
+ [Element]
18
+ (## Tester note: Describe where the thing is in the UI and delete me ##)
19
+
20
+ [What is the issue]
21
+ The (## Tester note: describe image here – delete me ##) image/icon does not provide meaningful information, however, it is not marked as decorative.
22
+
23
+ [Why it is important]
24
+ When images are not properly marked as decorative, screen readers may announce them unnecessarily. This creates noise, cognitive overload, or potentially conveys incorrect information for users who are blind or rely on assistive technologies. Properly marking images as decorative ensures the images are skipped by assistive technologies, which provides a cleaner overall experience for screen reader users.
25
+
26
+ [Code reference]
27
+ (## Tester note: CSS code references can be helpful here – delete me ##)
28
+ {code}
29
+ ...
30
+ {code}
31
+
32
+ [How to fix]
33
+
34
+ Ensure standard {{<img>}} elements have an empty {{alt=””}} attribute or {{alt (null)}}.
35
+ Ensure {{<svg>}} elements have {{aria-hidden=”true” focusable="false"}} attributes.
36
+ [Compliant code example]
37
+ (## Tester note: n/a here if not applicable and is a design change and delete me ##)
38
+ {code:html}
39
+
40
+ <img src="image.jpg" alt="">
41
+
42
+ {code}
43
+
44
+ {code:html}
45
+
46
+ <svg aria-hidden="true">...</svg>
47
+
48
+ {code}
49
+
50
+ [How to test]
51
+
52
+ Automated: Use an automated scanning tool like Axe, Level Access, or Lighthouse to scan for images that are missing {{alt}} attributes. Decorative images still require an empty {{alt}} attribute, so if an image is missing an {{alt}} attribute all together it will be flagged by a scanner. A scanner will not flag images that should be treated as decorative, so manual testing is necessary.
53
+
54
+
55
+ Manual: Use a screen reader (e.g., NVDA, JAWS, VoiceOver) to navigate to images on the page with your arrow keys, or try jumping directly to images with the NVDA/JAWS keyboard shortcut key {{G}}, or Voiceover keyboard shortcut keys {{VO key + Command + G}}. Ensure decorative images are being skipped over and not announced by the screen reader.
56
+
57
+ [MagentaA11y]
58
+ www.magentaa11y.com/checklist-web/image-decorative/
59
+
60
+ www.magentaa11y.com/how-to-test/images/
61
+
62
+ [WCAG]
63
+ 1.1.1 Non-Text Content (A)
64
+
65
+ [Operating system]
66
+ ######
67
+
68
+ [Browser]
69
+ ######
70
+
71
+ [Assistive technology]
72
+ JAWS
73
+ NVDA
74
+ VoiceOver
75
+
76
+ [Additional Resources]
77
+
78
+ https://www.w3.org/WAI/tutorials/images/decision-tree/
79
+
@@ -0,0 +1,75 @@
1
+ # Interactive element is not keyboard accessible
2
+
3
+ ## Severity
4
+ 1-Critical
5
+
6
+ ## Suggested Priority
7
+ Blocker
8
+
9
+ -------- copy below ---------
10
+
11
+ [URL/Path]
12
+ ######
13
+
14
+ [Steps to reproduce]
15
+ ######
16
+
17
+ [Element]
18
+ The ##### button located #####
19
+
20
+ [What is the issue]
21
+ (## Tester note: choose one and delete me ##)
22
+ The ###### is not keyboard accessible. Keyboard users are not able to reach the control in any way or activate it.
23
+
24
+ The ###### is not keyboard accessible. Keyboard users are able to reach the control, but nothing happens when those users try to activate the control.
25
+
26
+ [Why it is important]
27
+ All functionalities must be operable using only a keyboard or similar input method. Some users rely exclusively on keyboards, screen readers, or alternative input devices, such as switch controls or adaptive keyboards, to navigate and interact with websites. Ensuring that all interactive elements, such as buttons, links, and form controls, can be accessed and activated via keyboard is very important for accessibility. Users with mobility or dexterity-related disabilities as well as screen reader users will benefit from keyboard accessible interfaces.
28
+
29
+ [Code reference]
30
+ (## Tester note: show actual code and delete me ##)
31
+ {code:html}
32
+ ...
33
+ {code}
34
+
35
+ [How to fix]
36
+ - Ensure that all interactive elements are keyboard operable and allow for keyboard focus. Keyboard users should be able to tab to the control and activate it with the keyboard alone.
37
+ - Use an element that is naturally focusable such as a {{<button>}} or {{<a>}}.
38
+ - In cases where a negative {{tabindex}} has been used, remove {{tabindex="-1"}} from the element.
39
+ - Ensure the button does not own {{aria-hidden="true"}}
40
+ - Ensure anchor tags / links own valid {{href}} attribute values.
41
+
42
+ [Compliant code example]
43
+ (## Tester note: show a real code fragment here or use generic examples below and delete me ##)
44
+ {code:html}
45
+ <button>My Account</button>
46
+ {code}
47
+
48
+ {code:html}
49
+ <a href=”/some-page”>Learn more about MagentaA11y</a>
50
+ {code}
51
+
52
+ [How to test]
53
+ Keyboard: Using the keyboard alone, tab to the control. Focus should move to the control. Try activating the control, the control should work with the enter key and spacebar if it is a button and just the enter key if it is a link.
54
+
55
+ Manual inspection: Using Chrome DevTools, inspect the control and verify that the {{tabindex=”-1”}} and {{aria-hidden=”true”}} attributes are not present.
56
+
57
+ [MagentaA11y]
58
+ https://www.magentaa11y.com/how-to-test/keyboard-focus/
59
+ https://www.magentaa11y.com/checklist-web/button/
60
+ https://www.magentaa11y.com/checklist-web/link/
61
+
62
+ [WCAG]
63
+ (## Tester note: Choose or add and delete me ##)
64
+ 2.1.1 Keyboard (A)
65
+ 2.4.3 Focus Order (A)
66
+
67
+ [Operating system]
68
+ ######
69
+
70
+ [Browser]
71
+ ######
72
+
73
+ [Assistive technology]
74
+ Keyboard
75
+
@@ -0,0 +1,111 @@
1
+ # [WIP] Link text is not descriptive or lacks purpose
2
+
3
+ ## Severity
4
+ 3-Average
5
+
6
+ ## Suggested Priority
7
+ Medium
8
+
9
+ (## Tester note: review guidance prior to logging issue ##)
10
+
11
+ 1) 1.3.1 Information & Relationships does NOT apply to buttons. Buttons can have repetitive names on the same page as long as they are doing the same action. Always inspect the code to learn whether something is coded as a link or button in HTML. `role="button"` on a link counts as a Button.
12
+
13
+ 2) If the link is nested within its related content within the same list item {{<li>}}, {{<p>}}, or table cell {{<td>}} then the link has programmatic determination and satisfies 1.3.1 Information & Relationships.
14
+
15
+ -------- copy below ---------
16
+
17
+ [URL/Path]
18
+ ######
19
+
20
+ [Steps to reproduce]
21
+ ######
22
+
23
+ [Element]
24
+ (## Tester note: Describe where the thing is in the UI and delete me ##)
25
+
26
+ [What is the issue]
27
+ The ###### link text is not descriptive enough to convey its purpose or destination. For example, links such as "Shop now", "Buy now", "Click here", or "Read more" lack context when read independently.
28
+
29
+ [Why it is important]
30
+ Descriptive link text improves navigation for all users, especially for people using assistive technologies such as screen readers. These users often navigate links out of context, so the purpose of each link must be clear without relying on surrounding content.
31
+
32
+ When multiple links on a screen have the same visible text label but different targets, then providing distinguishing context becomes very important.
33
+
34
+ Voice Recognition users benefit from having meaningful link purpose in the code so that they can activate controls by voice alone. Imagine saying "click 'Learn more'" and seeing that there are 6 options for voice control to choose from. This is the equivalent of making someone do multiple clicks to perform a single action!!
35
+
36
+ [Code reference]
37
+ (## Tester note: CSS code references can be helpful here – delete me ##)
38
+ {code:html}
39
+ ...
40
+ {code}
41
+
42
+ [How to fix]
43
+ Update the link text to describe the link's purpose or destination. For example, replace "Buy Now" with "Buy our new iPhone 93 Pro" or "Learn more about our services." Ensure that links with identical destinations have consistent text. Avoid overly verbose descriptions. This may be a content change so partner with design or key stakeholders before changing copy.
44
+
45
+ If the generic link text itself cannot be changed then apply a code-based fix such as proper use of {{aria-describedby}}, {{aria-label}}, {{aria-labelledby}} so that context is included in the link's label in the code.
46
+
47
+ If the link is pointing to files like PDF or opening pages in new windows, it is best practice to include this information within the link's accessible name in some way.
48
+
49
+ [Compliant code example]
50
+ (## Tester note: tester can leave these generic examples in place or author a tailored solution based on the Code Reference (preferred) ##)
51
+
52
+ **aria-label:** {{aria-label}} attribute value includes the visible text and it is front-loaded followed by a comma and then the additional context which should match nearby text and be super meaningful.
53
+ {code:html}
54
+ <h2>iPhone 24 Pro</h2>
55
+ <a href="#" aria-label="Buy now, iPhone 24 Pro">Buy Now</a>
56
+ {code}
57
+
58
+ **aria-describedby:** Nearby text content is programmatically associated.
59
+ {code:html}
60
+ <h2 id="unique-id-0">Some cool heading</h2>
61
+ <a href="#" aria-describedby="unique-id-0">Buy Now</a>
62
+ {code}
63
+
64
+ **aria-labelledby:** The control itself is referenced as well as other nearby content via {{aria-labelledby}}.
65
+ {code:html}
66
+ <h2 id="unique-id-0">Some cool heading</h2>
67
+ <a href="#" aria-labelledby="unique-id-1 unique-id-0" id="unique-id-1">Buy Now</a>
68
+ {code}
69
+
70
+ **Link to file:**
71
+ {code:html}
72
+ <a href="#">Download the awesome manual (PDF)</a>
73
+ {code}
74
+
75
+ **Opens in a new window:**
76
+ {code:html}
77
+ <a href="#" aria-label="Learn more, iPhone 24 Pro, opens in a new window">Learn More</a>
78
+ {code}
79
+
80
+ [How to test]
81
+ Automated: Use tools such as Axe DevTools or the Level Access extension to identify links with generic text.
82
+
83
+ Manual:
84
+ - Review all links and ensure the text clearly conveys their purpose out of context.
85
+ - Using Chrome DevTools Accessibility Inspector, inspect the link in the HTML. The Name property value in Computed Properties (in conjunction with any Description property text) should be meaningful.
86
+ - Use a screen reader to navigate the page by links (e.g., NVDA's "Links List"). Confirm the text is descriptive and unambiguous.
87
+
88
+ [MagentaA11y]
89
+ https://www.magentaa11y.com/checklist-web/link/
90
+
91
+ [Resources]
92
+ ######
93
+
94
+ [WCAG]
95
+ 2.4.4 Link Purpose (In Context) (A)
96
+ 2.5.3 Label in Name (A)
97
+
98
+ [Operating system]
99
+ ######
100
+
101
+ [Build Version]
102
+ ######
103
+
104
+ [Browser]
105
+ ######
106
+
107
+ [Assistive technology]
108
+ JAWS
109
+ NVDA
110
+ VoiceOver
111
+ TalkBack
@@ -0,0 +1,74 @@
1
+ # [WIP] Non-text content does not meet required 3:1 contrast
2
+
3
+ ## Severity
4
+ 2-Severe
5
+
6
+ ## Suggested Priority
7
+ High
8
+
9
+ -------- copy below ---------
10
+
11
+ [URL/Path]
12
+ ######
13
+
14
+ [Steps to reproduce]
15
+ ######
16
+
17
+ [Element]
18
+ (## Tester note: Describe where the thing is in the UI and delete me ##)
19
+
20
+ The ##### located at #####
21
+
22
+ [What is the issue]
23
+ The ###### lacks 3:1 contrast which is required for non-text content that is important, informative, and contains context (aka not decorative).
24
+
25
+ [Color reference]
26
+ (## Tester note: fill out hex codes for XXXXXX which is the foreground or non-text content color and YYYYYY which is the background or adjacent color ##)
27
+
28
+ Non-text content color XXXXXX fails 3:1 contrast against YYYYYY background.
29
+ https://webaim.org/resources/contrastchecker/?fcolor=000000&bcolor=FFFFFF
30
+
31
+ [Why it is important]
32
+ Non-text content such as icons, images of text, graphics, etc. that contain important information must have contrast in order for the most possible users to be able to see them. High contrast helps users with vision disabilities such as low vision users, as well as color vision deficiencies such as red-green color blindness, blue-yellow color blindness, and complete color blindness. 3:1 contrast is actually about calculating the hue contrast such that even if you cannot make out color at all, the lightness/darkness of the colors will be sufficient for a user to tell them apart.
33
+
34
+ [How to fix]
35
+ Refer to the WebAIM Contrast checker — https://webaim.org/resources/contrastchecker/?fcolor=000000&bcolor=FFFFFF — to find a color that will have 3:1 contrast.
36
+
37
+ Consider TDDS color schemes as well: https://www.figma.com/design/HIvbo95KykcH9kuhwcVgky/1.-Foundations?node-id=1-480151&p=f&m=dev
38
+
39
+ Note: Fix will likely require consultation with a designer to find a branded and TDDS compliant color.
40
+
41
+ [Compliant code example]
42
+ n/a — this is typically a design change
43
+
44
+ [How to test]
45
+ Automated:
46
+ - Run an automated scan tool such as LevelAccess, Axe, or Lighthouse. Note, however, that these tools regularly miss these types of contrast issues. Manual evaluation is recommended.
47
+ - Input hex codes into WebAIM Contrast checker — https://webaim.org/resources/contrastchecker/?fcolor=000000&bcolor=FFFFFF — to verify contrast is less than 3:1.
48
+
49
+ Manual:
50
+ - Open DevTools in your browser window (F12)
51
+ - Right-click and select "Inspect" on the different color combinations that you see as you move from the top of the page on down
52
+ - Find the hexadecimal color values in the "Styles" tab of your DevTools window
53
+ - Enter the hex values into a contrast checking tool (like WebAIM Contrast Checker or Deque's Color Contrast Analyzer) to verify if the contrast is less than 3:1.
54
+
55
+ [MagentaA11y]
56
+ https://www.magentaa11y.com/how-to-test/color-contrast/
57
+
58
+ [Resources]
59
+ Figma contrast checker: https://www.figma.com/community/plugin/732603254453395948/stark-contrast-accessibility-checker
60
+
61
+ [WCAG]
62
+ 1.4.11 Non-text Contrast (AA)
63
+
64
+ [Operating system]
65
+ ######
66
+
67
+ [Build Version]
68
+ ######
69
+
70
+ [Browser]
71
+ ######
72
+
73
+ [Assistive technology]
74
+ ######