Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Good intentions gone bad
Search
Eva Ferreira
May 23, 2024
Programming
310
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Good intentions gone bad
JSHeroes 2024
Eva Ferreira
May 23, 2024
More Decks by Eva Ferreira
See All by Eva Ferreira
Fun with Flags - i18n in the AI era
evaferreira
0
73
Criptografía para enamorados 💖
evaferreira
0
35
Cryptography for lovers 💖
evaferreira
0
58
Bulletproof your Design system
evaferreira
0
110
Bulletproof your Design System
evaferreira
0
180
Tales of Accessibility Failures
evaferreira
0
94
Tales of Accessibility Failures
evaferreira
0
250
La accesibilidad de todos los días - HackAcademy
evaferreira
0
180
Rescue the Dead Horse
evaferreira
0
180
Other Decks in Programming
See All in Programming
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
430
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
130
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
230
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
190
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
760
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
940
Security issues being discussed on Web Platforms
petamoriken
0
1.2k
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
6
13k
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
480
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
230
FreeBSDでZabbixを動かす
kenkino
0
330
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
520
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
900
Crafting Experiences
bethany
1
350
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
Git: the NoSQL Database
bkeepers
PRO
432
67k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
250
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
720
KATA
mclloyd
PRO
35
16k
Fireside Chat
paigeccino
43
4k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
Done Done
chrislema
187
17k
Transcript
Good Intentions, Gone Bad Eva Ferreira – JS Heroes, 2024
Not another “This is how you do a11y” talk Good
intentions gone bad. @evaferreira92
@evaferreira92 YOU DON’T HAVE TO LEARN FROM YOUR MISTAKES IF
YOU CAN LEARN FROM MINE
WARNING This is a work in progress. I will, most
definitely, keep on messing up. @evaferreira92
5 lessons 1. Accessibility personas 2. Simplest things first 3.
People mean well 4. Test, test, test! 5. Accessibility ownership
Lesson 1
A11y personas Understanding disabilities and assistive technologies
What is a disability? “Accessibility is for blind people”
Disability: A failed interaction between the environment and a person
with a medical condition.
Diverse group of people, a wide range of needs. @evaferreira92
16% of world’s population. has a permanent disability.
None
None
Assistive Technologies * Also known as AT
The most common assistive technology is…
Keyboard Visual and motor impairments
Lesson 2
Simplest things tend to have the biggest impact. I went
ALL IN into aria and screen readers
I wrongly prioritized screen readers over keyboard navigation Begin your
a11y journey with simple and impactful changes. @evaferreira92
Simple, impactful • Color contrast • Semantics • Keyboard navigation
Outlines Skip navigation links @evaferreira92
Outlines
None
@evaferreira92
But they are ugly! Yes, they are!
https://www.sarasoueidan.com Use outlines on your focusable elements
https://mabl.com
Skip navigation links
https://www.sarasoueidan.com
Skip navigation links
None
Lots impact, Low code.
Sometimes simple is not that simple “Code debt just called;
it wants your happiness back.” @evaferreira92
Prioritize Impact and easy to solve @evaferreira92
Prioritize 1. Big impact, easy to solve 2. Mix with
small impact, easy to solve Ideal for Fridays 3. Big impact, hard to solve 4. Small impact, hard to solve @evaferreira92
Lesson 3
People mean well … Most of the time.
Story time! Story Number 1
Aria-label all the things! The Infobae & the React Testing
Library stories @evaferreira92
@evaferreira92
Code
Non Screen Reader users
Screen Reader users
aria-label overrides values
Screen Reader users
Why?
@evaferreira92 https://webaim.org/blog/aria-cause-solution https://webaim.org/blog/aria-cause-solution
Story time! Story Number 2
“Every image should have an alt text!” @evaferreira92
Rules for alternative texts • The alt attribute is compulsory
• It can be empty if the image is decorative (alt=“”) • Do not be redundant • If it has an action, describe the action, not the image @evaferreira92
https://www.w3.org/WAI/tutorials/images/decision-tree
The SEO in the room And the story of how
every image had the same alt text. @evaferreira92
Lesson 4
Testing correctly Having 98/100 on Lighthouse won’t save you.
None
None
Manual tests @evaferreira92
Manual tests • Keyboard navigation • Screen readers @evaferreira92
What do we test? We test users’ stories. @evaferreira92
Can a user with [assistive technology] do [action]? @evaferreira92
Test users’ stories • Can a user with keyboard navigation
- create an account? • Can a user with a screen reader - add a product to the cart? • Can a user watch this video - using captions? @evaferreira92
Test for people. @evaferreira92
Automated tests WCAG
None
WCAG • Set of rules created by W3C a long
time ago. • Standard in the industry • What gives the foundation for a11y laws all around the globe • Different success criteria depending on target audience, target country, type of company, etc. @evaferreira92
Of course, always aim for no errors. @evaferreira92
Automated tools • Axe-core by Deque • Lighthouse • Mabl
• Storybook add-on @evaferreira92
Automated tools • Add these to your pipelines • CI/CD
should fail when requirements are not met. @evaferreira92
How many websites do you think pass with no errors?
5%? 20%? 40%?
4.1% WebAIM Million, 2024 https://webaim.org/projects/million
None
@evaferreira92
“It’s just too hard.” @evaferreira92
@evaferreira92
Lesson 5
A11y ownership Team effort
None
None
You cannot out-code bad design. Accessibility is a team effort.
So, You made a mistake. What happens when you mess
up.
You try again! * Easier said than done @evaferreira92
None
Mistakes are: • Temporal • Localized • Changeable
You don’t need to be always right. Aim for making
new mistakes instead of repeating old ones. @evaferreira92
You need to try, you need to care. @evaferreira92
Thanks! @evaferreira92