@@ -51,61 +51,61 @@ Automated checks can catch a lot of common issues before they reach production.
5151### Design
5252
5353- Ensure all content's foreground color values meet the [ minimum contrast ratio]
54- for the background color they are placed over
54+ for the background color they are placed over ( [ WCAG 1.4.3 ] [ wcag-1-4-3 ] )
5555- Ensure all interactive content has distinct hover and focus states to help
56- indicate interactivity
56+ indicate interactivity ( [ WCAG 2.4.7 ] [ wcag-2-4-7 ] )
5757- Ensure interactive elements [ have a visible text label] [ rule-2 ]
58- - Ensure color is not the only way to determine meaning
58+ - Ensure color is not the only way to determine meaning ( [ WCAG 1.4.1 ] [ wcag-1-4-1 ] )
5959- Ensure interactive components use common UI affordances where applicable, to
6060 help users understand how they can be operated
6161- Prefer icons and glyphs that don't rely on specialized knowledge to understand
6262 their meaning, unless being used in a domain-specific context
63- - Prefer language that is [ simple and direct]
64- - Ensure form inputs have labels that are visible in every state
65- - Ensure link and button text is descriptive and distinct
63+ - Prefer language that is [ simple and direct] ( [ WCAG 3.1 ] [ wcag-3-1 ] )
64+ - Ensure form inputs have [ labels that are visible in every state] [ placeholder-labels ]
65+ - Ensure link and button text is descriptive and distinct ( [ WCAG 2.4.4 ] [ wcag-2-4-4 ] )
6666- Prefer content that is broken into logical sections, with headings that
67- explain the content that follows
67+ explain the content that follows ( [ WCAG 2.4.10 ] [ wcag-2-4-10 ] )
6868- Prefer text sizing that is set to 16px or larger
6969- Ensure animation does not auto-play, can be paused, and avoids [ vestibular and
70- seizure triggers]
71- - Ensure video content has captions
70+ seizure triggers] ( [ WCAG 2.2.2 ] [ wcag-2-2-2 ] )
71+ - Ensure video content has captions ( [ WCAG 1.2.2 ] [ wcag-1-2-2 ] )
7272- Prefer larger interactive target sizes, with some space between grouped
73- interactive controls
73+ interactive controls ( [ WCAG 2.5.8 ] [ wcag-2-5-8 ] )
7474
7575### Development
7676
77- - Ensure every focusable or interactive element has an [ accessible name] [ ]
77+ - Ensure every focusable or interactive element has an [ accessible name] [ ] ( [ WCAG 4.1.2 ] [ wcag-4-1-2 ] )
7878- Follow the [ Cardinal Rules of Naming] [ ] :
7979 1 . [ Heed Warnings and Test Thoroughly] [ rule-1 ]
8080 2 . [ Prefer Visible Text] [ rule-2 ]
8181 3 . [ Prefer Native Techniques] [ rule-3 ]
8282 4 . [ Avoid Browser Fallback] [ rule-4 ]
8383 5 . [ Compose Brief, Useful Names] [ rule-5 ]
84- - Ensure semantic markup is used to describe content
85- - Ensure content does not disappear off the screen when zoomed
84+ - Ensure [ semantic markup] [ semantic-markup ] is used to describe content
85+ - Ensure content does not disappear off the screen when zoomed ( [ WCAG 1.4.10 ] [ wcag-1-4-10 ] )
8686- Ensure that interactive content can be tabbed to and activated using the
87- keyboard, and that the tab order matches reading order
87+ keyboard, and that the tab order matches reading order ( [ WCAG 2.1.1 ] [ wcag-2-1-1 ] , [ WCAG 2.4.3 ] [ wcag-2-4-3 ] )
8888- Ensure that heading elements are used, and that heading levels are placed in a
89- logical order
90- - Ensure that landmarks are used to describe the overall layout of the page or
89+ logical order ( [ WCAG 2.4.10 ] [ wcag-2-4-10 ] )
90+ - Ensure that [ landmarks] [ landmark-regions ] are used to describe the overall layout of the page or
9191 view
9292- Ensure that alternative descriptions for image content are concise,
9393 descriptive, and use punctuation (` alt ` attributes for images, ` title `
9494 elements for SVGs)
95- - Ensure labels are programmatically associated with their inputs
95+ - Ensure [ labels are programmatically associated] [ labels-associated-inputs ] with their inputs
9696- Prefer implementing a method to allow users to skip sections of repeated
97- content
97+ content ( [ WCAG 2.4.1 ] [ wcag-2-4-1 ] )
9898- Ensure each page or view has a unique title that describes the content it
99- contains
100- - The ` title ` attribute is only used to describe ` iframe ` element contents
101- - Ensure that links are used to navigate to other locations and buttons are used
102- to trigger actions
103- - Ensure that focus is trapped inside of modal interactions
104- - Ensure ` fieldset ` and ` legend ` elements are used to group related inputs and
105- label them
99+ contains ( [ WCAG 2.4.2 ] [ wcag-2-4-2 ] )
100+ - The [ ` title ` attribute is only used to describe ` iframe ` element contents] [ title-iframe ]
101+ - Ensure that [ links are used to navigate to other locations and buttons are used
102+ to trigger actions] [ links-vs-buttons ]
103+ - Ensure that [ focus is trapped inside of modal interactions] [ focus-traps ]
104+ - Ensure ` fieldset ` and ` legend ` elements are used to [ group related inputs and
105+ label them] [ fieldsets-legends ]
106106- Ensure form feedback messaging is programmatically associated with the
107- relevant inputs
108- - Ensure that [ dynamic changes to a web page are announced] ( https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html )
107+ relevant inputs ( [ WCAG 3.3.1 ] [ wcag-3-3-1 ] )
108+ - Ensure that dynamic changes to a web page are announced ( [ WCAG 4.1.3 ] [ wcag-4-1-3 ] )
109109- Prefer using role selectors in automated acceptance tests
110110 - [ capybara_accessible_selectors]
111111 - [ Testing Library's ` getByRole() ` ] [ testing-library-getbyrole ]
@@ -121,6 +121,33 @@ Automated checks can catch a lot of common issues before they reach production.
121121[ capybara_accessible_selectors ] : https://github.com/citizensadvice/capybara_accessible_selectors
122122[ testing-library-getbyrole ] : https://testing-library.com/docs/queries/byrole
123123[ playwright-getbyrole ] : https://playwright.dev/docs/locators#locate-by-role
124+ [ landmark-regions ] : https://www.w3.org/WAI/ARIA/apg/practices/landmark-regions/
125+ [ labels-associated-inputs ] : https://www.w3.org/WAI/WCAG22/Techniques/html/H44
126+ [ title-iframe ] : https://www.w3.org/WAI/WCAG22/Techniques/html/H64
127+ [ links-vs-buttons ] : https://www.nngroup.com/videos/buttons-vs-links/
128+ [ focus-traps ] : https://okenlabs.com/blog/accessibility-implementing-focus-traps/
129+ [ fieldsets-legends ] : https://www.w3.org/WAI/WCAG22/Techniques/html/H71
130+ [ placeholder-labels ] : https://www.deque.com/blog/accessible-forms-the-problem-with-placeholders/#:~:text=A%20Placeholder%20Is%20Not%20a%20Replacement%20for%20Visible%20Labels
131+ [ semantic-markup ] : https://www.w3.org/WAI/WCAG22/Techniques/html/H101
132+
133+ [ wcag-1-4-3 ] : https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html
134+ [ wcag-1-4-1 ] : https://www.w3.org/WAI/WCAG22/Understanding/use-of-color.html
135+ [ wcag-3-1 ] : https://www.w3.org/WAI/WCAG22/Understanding/readable.html
136+ [ wcag-2-4-4 ] : https://www.w3.org/WAI/WCAG22/Understanding/link-purpose-in-context
137+ [ wcag-2-4-10 ] : https://www.w3.org/WAI/WCAG22/Understanding/section-headings.html
138+ [ wcag-2-2-2 ] : https://www.w3.org/WAI/WCAG22/Understanding/pause-stop-hide.html
139+ [ wcag-1-2-2 ] : https://www.w3.org/WAI/WCAG22/Understanding/captions-prerecorded.html
140+ [ wcag-2-5-8 ] : https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html
141+ [ wcag-4-1-2 ] : https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html
142+ [ wcag-4-1-3 ] : https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html
143+ [ wcag-1-4-10 ] : https://www.w3.org/WAI/WCAG22/Understanding/reflow.html
144+ [ wcag-1-3-1 ] : https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html
145+ [ wcag-2-1-1 ] : https://www.w3.org/WAI/WCAG22/Understanding/keyboard.html
146+ [ wcag-2-4-3 ] : https://www.w3.org/WAI/WCAG22/Understanding/focus-order.html
147+ [ wcag-2-4-1 ] : https://www.w3.org/WAI/WCAG22/Understanding/bypass-blocks.html
148+ [ wcag-2-4-2 ] : https://www.w3.org/WAI/WCAG22/Understanding/page-titled.html
149+ [ wcag-3-3-1 ] : https://www.w3.org/WAI/WCAG22/Understanding/error-identification.html
150+ [ wcag-2-4-7 ] : https://www.w3.org/WAI/WCAG22/Understanding/focus-visible.html
124151
125152## Full audit
126153
0 commit comments