Let's Be Real

A presentation at Accessibility Camp Chicago in September 2018 in Chicago, IL, USA by Melanie Sumner

Slide 1

Slide 1

Let’s Be Real A practical, developer guide to common accessibility challenges

Slide 2

Slide 2

About Me

Melanie Sumner • • • • • LinkedIn Ember Chicago Meetup EmberJS Core Team ember-a11y US Navy Veteran @melaniersumner

Slide 3

Slide 3

Reality Check

Slide 4

Slide 4

Developer Concerns

• Package management • Code environment • Workspaces • Performance • Optimizations • Asset loading • Server-side rendering • CDN optimizations • Collaboration tools • Review tools • Linting • Formatting • Coverage reports • Lighthouse scores • Examples • Documentation • Changelogs • Version control • Package publishing • Deployments • Unit tests • Integration tests • Visual regression tests • API integration tests • Continuous deployment • Accessibility

Slide 5

Slide 5

Who We’re (probably) Working With

• Project Manager • Content Manager • BA • Designer • Developer • QA

Slide 6

Slide 6

You're Not Alone

You have a team. You are not alone. P.S. if you don’t have a team and you are alone, you especially have no excuse…

Slide 7

Slide 7

You are not alone, but….

• Accessibility is not only your responsibility but developers need to be realistic about this. • You’re the technical expert. You’re probably the one who makes accessible code a reality.

Slide 8

Slide 8

You do not require permission to create accessible code. -Melanie Sumner

Slide 9

Slide 9

What do you do…

•If your hard drive failed? •If your monitor wouldn’t turn on? •If GitHub went down? •If you didn’t have the basics you needed to complete your work?

Slide 10

Slide 10

Alt text: a cat with a look of panic on its face

Slide 11

Slide 11

Alt text: a baby with a scrunched up crying face

Slide 12

Slide 12

What do you do…

•When there is no keyboard navigation pattern in the spec? •When you’re reviewing code that works but isn’t using semantic HTML? •When you can tell the designs don’t have enough contrast?

Slide 13

Slide 13

Alt text: a cartoon dog sitting on a chair and smiling, while the room around him is on fire.

Slide 14

Slide 14

Stop just accepting it. You’re being set up for failure. You deserve better.

Slide 15

Slide 15

Speak Up

•Gracefully educate your colleagues • “I noticed the keyboard specs were missingwould you like me to add them?” •Set them up for success, too! • “Here’s where I get the common keyboard navigation patterns. They’re super useful!”

Slide 16

Slide 16

Be Persistent

https://www.youtube.com/watch?v=KxGRhd_iWuE

Slide 17

Slide 17

Focus, please!

Slide 18

Slide 18

Focus vs. Selection

•Focus • Focus is a pointer (think, mouse cursor) • There is only ONE point of focus at any time • Interactions happen at the point of focus

Slide 19

Slide 19

Focus vs. Selection (con’t)

•Selection • Selection can be performed on specific elements • You could have a multi-select • When focus leaves, the selection persists

Slide 20

Slide 20

Simple Developer Rule

• document.activeElement must always have a value • The value can’t be null • The value can’t be the body element •Maybe you can test for this somehow…

Slide 21

Slide 21

Overlays

• It might look like an overlay. • It might act like an overlay. • If I can use my keyboard to navigate to the options behind the overlay, guess what? • It’s not an overlay.

Slide 22

Slide 22

Keyboard Navigation

Slide 23

Slide 23

N.I.H. is real

Photo of a giant wheel by Kosta Bratsos on Unsplash

Slide 24

Slide 24

Know what already exists

• Operating systems • Assistive technology • Browsers • Common conventions

Slide 25

Slide 25

http://w3c.github.io/aria-practices/#keyboard

Slide 26

Slide 26

A11ynomicon #noBlackMagic

Slide 27

Slide 27

Presentation Role

• WAI-ARIA requires browsers to automatically apply role=“presentation” to some types of UI components. • Role-based, not element based. • Even if you ‘div’, this is a gotcha!

Slide 28

Slide 28

Drumroll, please…

• button • checkbox • img • math • menuitemcheckbox • menuitemradio • option • progressbar • radio • scrollbar • separator • slider • switch • tab

Slide 29

Slide 29

Wait, what?

Slide 30

Slide 30

Insert Incantation Here

Slide 31

Slide 31

Alt: blob character saying "oh no"

Slide 32

Slide 32

How to succeed

Mel’s list for developer success

Slide 33

Slide 33

#10

Accept that “Not Invented Here” syndrome is real

Slide 34

Slide 34

#9

Use a checklist.

Slide 35

Slide 35

#8

Be part of the conversation. Silence is not golden.

Slide 36

Slide 36

#7

Get to know the techniques…and the failures. https://www.w3.org/TR/WCAG20-TECHS/

Slide 37

Slide 37

#6

Keyboard navigation must exist!

Slide 38

Slide 38

#5

Sometimes the answer isn’t more code, it’s a simpler UX.

Slide 39

Slide 39

#4

There might be several ways to do a thing. Keep an open mind.

Slide 40

Slide 40

#3

There is no substitute for knowing how assistive technology works.

Slide 41

Slide 41

#2

Use semantic HTML.

Slide 42

Slide 42

#1

Be Magnanimous.

Slide 43

Slide 43

Thank You!

I believe in you. You got this. Persistence, patience and passion will win. I’m proud of you. I want to tell you that incase no one else ever has. Don’t beat yourself up. You are a work in progress which means you’ll get there a little at a time, not all at once. Everything will be okay in the end. If it’s not okay, it’s not the end. You are much stronger than you think. A little progress each day adds up to big results. You are amazing. You are good enough. You are worth it. @melaniersumner