“Built-in” accessibility: blessing or curse?

A presentation at #a11yTO Conf 2024 in October 2024 in Toronto, ON, Canada by Hidde de Vries

Slide 1

Slide 1

Hidde de Vries, a11yTO, 3 October, Toronto “Built-in” accessibility: blessing or curse?

Slide 2

Slide 2

25 years ago…

Slide 3

Slide 3

“in the grand scheme of things it’s always the same principles and guidelines” — Eric Eggert (in post about WCAG) See: Do we need WCAG 3 now? yatil.net/blog/do-we-need-wcag-3-now

Slide 4

Slide 4

Slide 5

Slide 5

Websites with sticky elements that cover everything when zoomed aren’t accessible codepen.io/hidde/pen/PovjPYV

Slide 6

Slide 6

Websites with FAQs that aren’t reachable by just a keyboard aren’t accessible codepen.io/hidde/pen/ExzXVmb

Slide 7

Slide 7

Websites with important election results in an image with no alternatives aren’t accessible

Slide 8

Slide 8

We need better websites…

Slide 9

Slide 9

(lack of) Accessibility is a website problem, not a user problem

Slide 10

Slide 10

WAI-ARIA TECHNIQUES UNDERSTANDING COGA ACT-RULES WCAG 2.1 LEVEL A/A/AAA ATAG AXE LOW VISION ASSISTIVE TECH ACCESSIBLE VR XAUR UAAG ACT MATURITY MODEL WEBVTT AGWG LAWS & POLICIES SEMANTICS CONFORMANCE EVALUATION EARL AUTHORING PRACTICES WCAG-EM ACCESSIBILITY STATEMENTS

Slide 11

Slide 11

In defense of websites… Hard to ind good code examples • Conformance vs guidance • AT/browser support vs actual usability • WCAG often can’t tell you what to do (for reasons, but still) f •

Slide 12

Slide 12

Many of us “Are there opportunities to change the system to improve accessibility across the board?”

Slide 13

Slide 13

Managers “Can we integrate accessibility into our practices?”

Slide 14

Slide 14

Browsers “Can we display websites better?”

Slide 15

Slide 15

CMSes “Can we help content editors edit more accessible content?”

Slide 16

Slide 16

Standards bodies “Can we make standards that take accessibility into account”?

Slide 17

Slide 17

Built-in accessibility: blessing or curse?

Slide 18

Slide 18

Built-in accessibility: blessing and curse

Slide 19

Slide 19

Building accessibility into systems

Slide 20

Slide 20

Building accessibility into systems (1) Web Platform features

Slide 21

Slide 21

Building accessibility into systems (1) Web Platform features // features that make a11y possible, // e.g. support for alt text <img src=”” alt=”” />

Slide 22

Slide 22

Building accessibility into systems (1) Web Platform features // features that make a11y possible, // e.g. support for captions <video> <track>…</track> </video>

Slide 23

Slide 23

Building accessibility into systems (1) Web Platform features // features that do accessibility // semantics for you, like headings <h1>Top news</h1>

Slide 24

Slide 24

// features that do some accessibility // semantics for you, like popover <button popovertarget=”p”> Open popover </button> <div popover id=”p”> I am popover content </div>

Slide 25

Slide 25

// features that do some accessibility // semantics for you, like popover I am popover content <button popovertarget=”p”> Open popover </button> <div popover id=”p”> I am popover content </div>

Slide 26

Slide 26

// features that do some accessibility // semantics for you, like popover I am popover content <button popovertarget=”p”> Open popover </button> <div popover id=”p”> I am popover content </div>

Slide 27

Slide 27

‘Built-in’: aria-expanded state I am popover content See: On popover accessibility: what the browser does and doesn’t do https://hidde.blog/popover-accessibility/

Slide 28

Slide 28

‘Built-in’: aria-expanded state aria-details relationship (if apt) I am popover content See: On popover accessibility: what the browser does and doesn’t do https://hidde.blog/popover-accessibility/

Slide 29

Slide 29

‘Built-in’: aria-expanded state aria-details relationship (if apt) I am popover content group fallback role (if apt) See: On popover accessibility: what the browser does and doesn’t do https://hidde.blog/popover-accessibility/

Slide 30

Slide 30

‘Built-in’: aria-expanded state aria-details relationship (if apt) I am popover content group fallback role (if apt) some focus management See: On popover accessibility: what the browser does and doesn’t do https://hidde.blog/popover-accessibility/

Slide 31

Slide 31

Not built-in: colour contrast zoom support I am popover content etc etc See: On popover accessibility: what the browser does and doesn’t do https://hidde.blog/popover-accessibility/

Slide 32

Slide 32

“Horizontal review” in standards processes See: FAST w3c.github.io/apa/fast/

Slide 33

Slide 33

Self-review in TAG z Self-Review Questionnaire: Accessibility github.com/w3ctag/accessibility-questionnaire/blob/main/accessibility-questionnaire.md

Slide 34

Slide 34

Implementations in browsers can have accessibility bugs It’s Mid-2022 and Browsers (Mostly Safari) Still Break Accessibility via Display Properties adrianroselli.com/2022/07/its-mid-2022-and-browsers-mostly-safari-still-break-accessibility-via-display-properties.html

Slide 35

Slide 35

See: HTML, the inaccessible parts daverupert.com/2020/02/html-the-inaccessible-parts/

Slide 36

Slide 36

Slide 37

Slide 37

Chromium Blog, Updates to form controls and focus blog.chromium.org/2020/03/updates-to-form-controls-and-focus.html

Slide 38

Slide 38

Chromium Blog, Updates to form controls and focus blog.chromium.org/2020/03/updates-to-form-controls-and-focus.html

Slide 39

Slide 39

Improvements re making accessibility tree testable >1000 Web Platform Tests labeled “accessibility” See: Improving Web Accessibility with Web Platform Tests webkit.org/blog/15400/improving-web-accessibility-with-web-platform-tests/

Slide 40

Slide 40

TAKEAWAY #1 We need web platform / HTML features that are accessible and/or include accessibility and it’s not trivial

Slide 41

Slide 41

Building accessibility into systems (2) CMSes

Slide 42

Slide 42

Slide 43

Slide 43

Checks in Jooa11y, for Joomla (based on Sa11y)

Slide 44

Slide 44

Checks in Editoria11y v2, for Drupal (Based on Sa11y)

Slide 45

Slide 45

Contrast warnings in Gutenberg, for WordPress Checks in Editoria11y v2, for Drupal (Based on Sa11y)

Slide 46

Slide 46

Porta11y, accessible checks for Portable Text github.com/hidde/porta11y github.com/hidde/porta11y Checks in Editoria11y v2, for Drupal (Based on Sa11y)

Slide 47

Slide 47

TAKEAWAY #2 CMSes can be accessibility assistants and it’s (usually) not trivial

Slide 48

Slide 48

Building accessibility into systems (3) Browsers

Slide 49

Slide 49

f f “Could browsers ix more accessibility problems automatically?” talks.hiddedevries.nl/KKW74X/could-browsers- ix-more-accessibility-problems-automatically

Slide 50

Slide 50

Untruncate text Force focus indication Force colour contrast Suppress autoplay of gifs and videos

Slide 51

Slide 51

TAKEAWAY #3 Browsers could intervene when the web content they serve is inaccessible and it’s (usually) not trivial

Slide 52

Slide 52

Building accessibility into systems (4) Design systems

Slide 53

Slide 53

Design systems can make your patterns repeatable

Slide 54

Slide 54

“Not only is this work not inherently valuable, it is also not inherently harmless” — Amy Hupe Building conscious design systems amyhupe.co.uk/articles/building-conscious-design-systems

Slide 55

Slide 55

Design systems can make good patterns repeatable

Slide 56

Slide 56

Design systems can good make good patterns d ba repeatable or

Slide 57

Slide 57

Design systems can make patterns repeatable so we’d better ensure they’re good

Slide 58

Slide 58

Design systems can teach the nuance between the components

Slide 59

Slide 59

TAKEAWAY #4 Design Systems make code and principles repeatable, ensure you repeat the right things f and it’s (de and initely) it’s not trivial

Slide 60

Slide 60

“Built-in” accessibility It can be done. It’s worthwhile. It’s not trivial.

Slide 61

Slide 61

What are the or: questions constraints? you can ask

Slide 62

Slide 62

What could (possibly) go wrong?

Slide 63

Slide 63

Does the icon disappear in dark mode? Will the tabs break with too many items? What if all buttons in a group are named the same? How do we ensure there’s useful text in <FormFieldError>? f Can we force the label component to be used whenever the text ield component is used?

Slide 64

Slide 64

What decides the accessibility of a component?

Slide 65

Slide 65

Save

Slide 66

Slide 66

The quick brown fox jumps Where does she jump? Over the lazy dog? Well, there is really only one way to ind out… f Find out

Slide 67

Slide 67

Slide 68

Slide 68

Who impacts the accessibility of a UI?

Slide 69

Slide 69

developer QA tester designer Who impacts the accessibility of a UI? researcher content editor

Slide 70

Slide 70

(it’s the whole team)

Slide 71

Slide 71

browser that renders it What impacts the accessibility of a UI? assistive technology CMS that is involved with managing it

Slide 72

Slide 72

A design system can impact through components and docs

Slide 73

Slide 73

What design system components can do • User preference support (dark/forced color mode, text spacing, zoom support) • Accessibility semantics (roles, states, properties) • Keyboard support • Focus management • Support for accessibility features (images: alt support, video players: caption support, etc)

Slide 74

Slide 74

What design system docs can do • All variables/settings documented • Theme validator (colour f contrast, spacing etc) • Full lows: how do components work together? • Showing the right way

Slide 75

Slide 75

What design system docs can do • All variables/settings documented • Theme validator (colour f contrast, spacing etc) • Full lows: how do components work together? • Showing the right way

Slide 76

Slide 76

“Educate, don’t berate” — Meryl Evans (in “Progress over perfection“)

Slide 77

Slide 77

Used as-is Interpreted Components (excluding settings) Documentation Component settings

Slide 78

Slide 78

TAKEAWAY #6 Components that people reuse and documentation that people interpret are an opportunity to inspire quality

Slide 79

Slide 79

What design system marketing should do Avoid overpromising the accessibility impact Say “makes it easier to” instead of “will take care of” ff Emphasise the role of design system in a continuous e ort

Slide 80

Slide 80

NL Design System

Slide 81

Slide 81

Community of 500+ web professionals in all layers of Dutch government who work together. We collect the best components, guidelines, patterns and user research for digital services.

Slide 82

Slide 82

Collaboration through “Relay Model” with quality checks in each of four stages.

Slide 83

Slide 83

Lessons learned

Slide 84

Slide 84

Make it concrete

Slide 85

Slide 85

Make it concrete

Slide 86

Slide 86

Make it concrete “Add error messages for forms into a live region” “Only use assertive live regions when information requires the user’s attention immediately”

Slide 87

Slide 87

Make it concrete: do’s and don’ts

Slide 88

Slide 88

Back guidance up with research

Slide 89

Slide 89

“Accessibility isn’t just about meeting standards, it’s about usability too” — Vasilis van Gemert (this morning)

Slide 90

Slide 90

User research as input for patterns

Slide 91

Slide 91

Accessibility audit reports as input for guidelines organisation X organisation Y organisation Z Design Open Hour

Slide 92

Slide 92

Most reported issues as input for guidelines FUT URE

Slide 93

Slide 93

Make it open source More perspectives lead to better quality • Easier to report issues • Easier to steal • Most e ective against reinvention of wheels • Instigates collaboration ff •

Slide 94

Slide 94

Work in the open

Slide 95

Slide 95

Threads in public channels so that people can peak (low-treshold)

Slide 96

Slide 96

Public bi-weekly meetings that are also publised afterwards

Slide 97

Slide 97

Test with people and share the results

Slide 98

Slide 98

Test with people and share the results Because accessibility is more than WCAG

Slide 99

Slide 99

Test with people and share the results Because not everyone will test, your results likely have some use for others

Slide 100

Slide 100

gebruikersonderzoeken.nl

Slide 101

Slide 101

Open design decisions up for automated scrutiny

Slide 102

Slide 102

Save

Slide 103

Slide 103

—nl-button-border-color: #2446AE —nl-button-color: #2446AE Save —nl-button-background-color: #ffffff

Slide 104

Slide 104

—nl-button-border-color: #2446AE —nl-button-color: #2446AE Save —nl-button-background-color: #ffffff

Slide 105

Slide 105

—nl-button-border-color: #2446AE —nl-button-color: #cccccc Save —nl-button-background-color: #ffffff

Slide 106

Slide 106

—nl-button-border-color: #2446AE —nl-button-color: #cccccc Save 🚨 —nl-button-background-color: #ffffff

Slide 107

Slide 107

Verify with process

Slide 108

Slide 108

Verify with process: GOV.UK

Slide 109

Slide 109

Verify with process: NL Design System “Relay Model”

Slide 110

Slide 110

Do handover to consumers with test steps

Slide 111

Slide 111

Handover: USWDS • Explain which tests you’ve done • Explain what consumers of the components should test themselves

Slide 112

Slide 112

Make it concrete Back guidance up with research Make it open source Work in the open Test with users, share the tests Test design tokens Verify with process Handover with test steps

Slide 113

Slide 113

Wrapping up

Slide 114

Slide 114

Built-in accessibility: blessing and curse

Slide 115

Slide 115

Re: in defense of websites… 💡 • Hard to ind good code examples • Conformance vs guidance • AT/browser support vs actual usability • WCAG often can’t tell you what to do (for reasons, but still) f 💡 💡 💡 💡

Slide 116

Slide 116

“Built-in” accessibility It’s not trivial, not a oneoff, not a quick “fix”. It can be done. It’s worthwhile.

Slide 117

Slide 117

Tha n k you ! hidde.blog/slides @hdv in most places

Slide 118

Slide 118

Thank you! hidde.blog @hdv@front-end.social Slides: talks.hiddedevries.nl