Cookie Banner Accessibility Testing: Alex Stine 🔗 **Source:** [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) > [!note]+ Document Notes > tags: [accessibility, wordpress, privacy] > author: [MISSING] > source: YouTube > reference: [https://www.youtube.com/watch?v=NT-SXjxVYH0] > date created: > > # 🏷️ Title: Cookie Banner Accessibility Testing: Alex Stine > <!-- deep-read:sections start --> ## 🧰 Action Inbox - [H1] Draft focus-trap guidance for cookie modals — context/https://www.youtube.com/watch?v=NT-SXjxVYH0 - [H2] Add “first in DOM” rule to docs — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=1351 - [H3] Replace nested controls; add ARIA pattern — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=1709 - [H4] Standardize button labels and outcomes — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=2007 - [H5] Remove aria-hidden on essential toggles — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=2360 - [H6] Cut noisy landmarks; simplify regions — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=2573 - [H7] Add “return focus to trigger” rule — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=6018 - [H8] Provide top and bottom Save controls — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=4792 - [H9] Prefer table markup for cookie lists — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=4730 - [H10] Add “opens dialog” semantics to triggers — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=3191 - [H11] Add persistent “Change consent” entrypoint — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=4176 - [H12] Document GOV.UK pattern as alternative — context/https://www.youtube.com/watch?v=NT-SXjxVYH0&t=5855 ## 🧭 Table of Contents - [📝 Summary](#-summary) - [📖 Main Content](#-main-content) - [🗒️ Notes](#️-notes) - [📚 References](#-references) - [🗣️ Paraphrase](#️-paraphrase) - [📰 Newsletter](#-newsletter) - [✅ Action Items](#-action-items) - [🧪 Hypotheses](#-hypotheses) - [📊 Methodology](#-methodology) - [❓ Questions](#-questions) - [🔮 Future Research](#-future-research) - [💡 Implications](#-implications) - [🧠 Learning Styles Assessment](#-learning-styles-assessment) - [📊 Accessibility Assessment](#-accessibility-assessment) - [🌍 DEIB Assessment](#-deib-assessment) - [✅ Logical Validity](#-logical-validity) - [🛡️ DARVO Analysis](#-darvo-analysis) - [🎯 Conclusion](#-conclusion) ### 🔗 References - Video: Cookie Banner Accessibility Testing — Alex Stine (YouTube). https://www.youtube.com/watch?v=NT-SXjxVYH0 - WCAG overview (W3C). https://www.w3.org/WAI/standards-guidelines/wcag/ - ARIA Authoring Practices, Dialog, Disclosure, Tabs (WAI-ARIA APG). https://www.w3.org/WAI/ARIA/apg/ - GOV.UK cookies pattern and policy. https://www.gov.uk/help/cookies - Equalize Digital (organizers of the meetup). https://equalizedigital.com - If any link is blocked by your network, use a different device and continue. ## 📝 Summary - Alex Stine tests real WordPress cookie banners with NVDA. - He stresses focus management and honest semantics. - Vendors, organizers, and site owners are stakeholders. - Risks include lost focus, hidden controls, and misleading labels. - Bottom line: simpler patterns with tested focus logic work best. ## 📖 Main Content - Cookie banners must be findable, operable, and predictable. - Focus should enter the modal and exit to the trigger. - Labels should state actions and outcomes plainly. - Do not hide essential toggles from assistive tech. - Prefer standard patterns for dialogs, tabs, and disclosures. - Avoid “region spam” and nested interactive elements. - Consider the GOV.UK approach: banner + full settings page. - Uncertainties remain around legal defaults and locales; test with counsel. ### 🗒️ Notes #### ⏱️ [00:07:29](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=449) Focus behavior guidance ### [H1] Focus trap improves consent discoverability > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “It should definitely throw you into a modal like environment.” Focus traps prevent missing consent; provide a clear escape path. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=449) #articleseed #xref ID:rw_H1 #### ⏱️ [00:22:31](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=1351) DOM order and discoverability ### [H2] First-in-DOM increases banner detection > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “At least make the cookie banner available as the first item in the HTML.” Ensure initial focus can reach consent before main content. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=1351) #xref ID:rw_H2 #### ⏱️ [00:28:29](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=1709) Nested controls pitfall ### [H3] Avoid interactive elements inside buttons > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “It's not correct to have a… checkbox nested inside… a button.” Use separate controls; follow ARIA patterns for disclosures. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=1709) #articleseed ID:rw_H3 #### ⏱️ [00:33:27](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=2007) Label clarity ### [H4] Button names must match outcomes > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “Accept and… Save preferences… so confusing.” Name actions precisely; avoid different labels for identical outcomes. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=2007) #articleseed ID:rw_H4 #### ⏱️ [00:39:20](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=2360) Hidden toggles risk ### [H5] aria-hidden on essentials blocks consent > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “It looks like it might have… aria-hidden=true on it.” Never hide mandatory disclosures or controls from AT users. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=2360) #xref ID:rw_H5 #### ⏱️ [00:42:53](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=2573) Landmark noise ### [H6] Excess regions harm navigation clarity > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “This is way too cluttered… everything is a region.” Limit landmarks to meaningful sections; reduce verbosity. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=2573) #articleseed ID:rw_H6 #### ⏱️ [01:40:18](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=6018) Post-save focus ### [H7] Return focus to invoking control > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “Focus should land back on the trigger.” On close, restore context and reduce disorientation. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=6018) #xref ID:rw_H7 #### ⏱️ [01:19:52](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=4792) Control placement ### [H8] Provide Save at top and bottom > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “Having a save button only at the top… is… annoying.” Duplicate primary actions to match user flow. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=4792) #articleseed ID:rw_H8 #### ⏱️ [01:18:45](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=4730) Data display ### [H9] List cookies using data tables > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “Wouldn't this be better as a table?” Use <table> for names, purposes, and durations. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=4730) #xref ID:rw_H9 #### ⏱️ [00:53:57](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=3237) Headings matter ### [H10] Real headings aid banner discovery > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “They’re just spans… not headings.” Use semantic headings for navigation and scans. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=3237) #xref ID:rw_H10 #### ⏱️ [01:09:11](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=4151) Persistent entrypoint ### [H11] Provide a visible “Change consent” control > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “Everyone needs a way to revisit.” Offer a constant, labeled settings button. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=4151) #articleseed ID:rw_H11 #### ⏱️ [01:37:35](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=5855) Alternative pattern ### [H12] GOV.UK uses page-level consent settings > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “They redirect to a full page for settings.” Use a page for complex settings; keep banner simple. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0&t=5855) #xref #articleseed ID:rw_H12 ## 📚 References - Cookie Banner Accessibility Testing — Alex Stine (YouTube). https://www.youtube.com/watch?v=NT-SXjxVYH0 - WCAG 2.x quick reference (W3C). https://www.w3.org/WAI/WCAG21/quickref/ - ARIA APG: Dialog, Tabs, Disclosure. https://www.w3.org/WAI/ARIA/apg/ - GOV.UK cookies policy. https://www.gov.uk/help/cookies ## 🗣️ Paraphrase - Alex demonstrates real cookie banners with a screen reader. He critiques focus handling, labeling, and semantics. - He recommends simpler structures, honest roles, and clear labels. He praises GOV.UK’s page-based settings as an option. ## 📰 Newsletter - Cookie banners still trip teams. Alex Stine showed why. Focus traps, clear labels, and ARIA patterns reduce pain. - Watch the session and retune your consent UI. Resources: the video, WCAG primers, and ARIA APG. - WordPress folks: add a persistent “Change consent” button, test with NVDA, and log focus returns. - Links: Video (YouTube), WCAG overview (W3C), ARIA APG (W3C). ## ✅ Action Items #### DevRel - Publish a “cookie modal focus” demo and gist. - Add NVDA/VoiceOver test scripts to docs. - Record a five-minute “label outcomes” screencast. #### OSPO - Define a CMP pattern library with WCAG mapping. - Gate CMP merges on keyboard and SR tests. - Track CMP issues in a dedicated compliance board. #### Community - Run a “banner repair” clinic for maintainers. - Pair contributors on ARIA patterns and testing. - Share before/after metrics from repaired banners. #### WordPress - Core: document modal focus-return guidance. - Docs: add CMP examples using native elements. - Themes: lint for region overuse and fake headings. - Plugins: require persistent consent settings entrypoint. - Accessibility: add test checklist to Plugin Handbook. #### The WPOCC - Fund a short CMP accessibility audit series. - Offer microgrants for plugin fixes and tests. - Publish a vendor scorecard with reproducible tests. ### FAIR - Ship a CMP governance checklist and scorecard. - Add provenance notes for cookie lists and toggles. - Recommend sunset criteria for noncompliant CMPs. ## 🧪 Hypotheses - Focus traps reduce missed consent interactions by 30%. - Duplicate Save controls decrease abandonment by 15%. - Semantic headings improve SR discovery speed by 20%. - Reducing landmark noise cuts navigation time by 10%. - Persistent settings entrypoints increase revisits by 25%. ### 📊 Methodology - A/B test banners with and without focus traps. - Task-based SR studies measuring time and errors. - Telemetry on clicks for Save buttons by position. - Heuristic audits for headings and region counts. ### ❓ Questions - How do legal defaults vary by jurisdiction? - When should sites prefer a full settings page? - What telemetry respects privacy while guiding UX? ### 🔮 Future Research - Evaluate CMP patterns on mobile with SRs. - Compare iframe-based CMPs versus native DOM. - Study cognitive load of long legal copy. ### 💡 Implications - Better CMP UX improves trust and compliance. - Clear semantics lower support costs and risk. - Shared patterns reduce maintainer burden. ### 🧠 Learning Styles Assessment - Reading level estimate: Flesch-Kincaid Grade ~9–10. #### 👀 Visual learners - Present: modal layouts, toggles. - Improve: annotated focus diagrams and tables. #### 🔊 Aural learners - Present: recorded demo. - Improve: 3-minute audio summary. #### 🗣️ Verbal learners - Present: definitions and labels. - Improve: side-by-side term comparisons. #### 🧩 Kinesthetic learners - Present: live testing. - Improve: hands-on labs with NVDA scripts. #### 🧠 Logical learners - Present: rules and checklists. - Improve: decision trees for patterns. #### 🧑‍🤝‍🧑 Social learners - Present: meetup Q&A. - Improve: mentorship circles. #### 🧘‍♀️ Solitary learners - Present: transcript. - Improve: self-check quizzes. #### 🌿 Naturalistic learners - Present: none. - Improve: privacy ecosystem maps. ### 📊 Accessibility Assessment #### Screen reader semantics - Present: some dialogs, headings, labels. - Improve: consistent roles and describedby ties. #### Keyboard navigation - Present: tab paths work in parts. - Improve: trap focus and return to trigger. #### Contrast and readability - Present: varies by theme. - Improve: enforce WCAG 2.2 contrast rules. #### Text resizing and reflow - Present: modals sometimes scroll. - Improve: avoid clipping; respect reduced motion. #### Media and captions - Present: captions in meetup. - Improve: downloadable transcripts. #### Forms and interactions - Present: toggles and checkboxes. - Improve: avoid nested controls; use native inputs. #### Standards reference - Map issues to WCAG 2.2 AA and ARIA APG. ### 🌍 DEIB Assessment #### Cultural breadth - Present: global community context. - Improve: add non-US examples beyond GOV.UK. #### Inclusive language - Present: plain terms mostly. - Improve: remove legalese where possible. #### Neurodiversity support - Present: structured steps. - Improve: reduce cognitive load in dialogs. #### Representation - Present: community voices. - Improve: more user testing with diverse SR users. #### Psychological safety - Present: respectful critique. - Improve: clear reporting and escalation paths. ### ✅ Logical Validity #### Strong reasoning - Focus management improves discoverability [H1], [H7]. Evidence aligns with SR behavior. - Semantic headings aid navigation [H10]. This matches assistive tech heuristics. - Simpler regions reduce noise [H6]. This improves scan efficiency. #### Fallacies - None observed; claims stay within observed demos. - Avoid universal prescriptions; note context and patterns. #### Tone of voice - Critical yet constructive. Emphasizes user impact and practical fixes. ### 🛡️ DARVO Analysis - Deny: Vendors sometimes overstate compliance; no denial patterns here. - Attack: None noted. - Reverse victim/offender: None. The discussion centers users’ needs. ## 🎯 Conclusion - Build cookie banners with honest semantics and tested focus flows. - Keep labels clear and outcomes predictable. - Prefer native inputs and standard patterns. - Add a persistent consent entrypoint. - Test with real screen reader users and ship iteratively. ## 🧱 Refactor Appendix (append after 🎯 Conclusion) ### 📚 Literature Split Pad - Purpose: Stage Konik CEE units that become per-source Literature notes. - Split level: **H3**. - Include verbatim quotes under 25 words and a [view highlight] link. ### [H1] 5–10-word present-tense claim > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) by an unnamed author via [[YouTube]]. Published [MISSING]. Accessed . > “Short quote, verbatim, ≤25 words.” Two lines: context and use. Cite data if relevant. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0#H1) #xref #articleseed ID:rw_[MISSING] ### [H2] 5–10-word present-tense claim > [!quote] [Cookie Banner Accessibility Testing: Alex Stine](https://www.youtube.com/watch?v=NT-SXjxVYH0) > “Short quote, verbatim, ≤25 words.” Two lines: context and use. [view highlight](https://www.youtube.com/watch?v=NT-SXjxVYH0#H2) #xref ID:rw_[MISSING] --- ### 🔖 Atomic Split Pad (Zettel Candidates) - Purpose: Promote reusable claims into Atomic notes. - Split level: **H4**. - Each item: one idea, present tense, specific, testable. #### [Z1] Focus traps reduce missed consent - Applies to modal consent banners. - Use SR time-to-consent as metric. - Links: [[Focus-Management]] [[Dialog-APG]] #### [Z2] Restore focus to invoking element - Applies on modal close. - Measure post-close orientation time. - Links: [[Focus-Management]] [[Keyboard-Nav]] #### [Z3] Use headings for banner scans - Applies to non-modal banners. - Count SR jumps to headings. - Links: [[Semantic-HTML]] [[WCAG-Nav]] #### [Z4] Avoid nested interactive controls - Applies to checkboxes and buttons. - Lint for nested roles. - Links: [[ARIA-APG]] [[Form-Patterns]] #### [Z5] Duplicate primary actions by flow - Applies to long preference panels. - Track Save clicks by position. - Links: [[CTA-Placement]] [[UX-Metrics]] #### [Z6] Reduce landmark verbosity - Applies to accordions and panels. - Cap regions to meaningful sections. - Links: [[ARIA-Regions]] [[Navigation]] #### [Z7] Do not hide essential toggles - Applies to required categories. - Ban aria-hidden and disabled on disclosures. - Links: [[Legal-Consent]] [[AT-Support]] #### [Z8] Prefer tables for cookie inventories - Applies to cookie name, purpose, duration. - Validate with SR table navigation. - Links: [[Semantic-Data]] [[Tables]] #### [Z9] Provide persistent consent entrypoint - Applies sitewide in footer or header. - Measure revisit rates and edits. - Links: [[Settings-Entrypoint]] [[UX-Trust]] #### [Z10] Consider page-level settings pattern - Applies to complex jurisdictions. - Compare comprehension and completion time. - Links: [[GOV.UK-Pattern]] [[CMP-Design]] --- ### ✏️ Fleeting Queue (Extract by Selection) - Purpose: Capture quick actions or sparks for Fleeting notes. - Extraction: **Select one line** → “Refactor: Extract selection to new note (content only).” - Keep each line short and self-contained. - [F1] Add “Change consent” link to global footer — context/YouTube #fleeting #inbox - [F2] Replace fake headings with <h*> elements — context/YouTube #fleeting #inbox - [F3] Write tab vs. disclosure decision rule — context/YouTube #fleeting #inbox --- <!-- deep-read:sections end -->