Presentation: Accessibility doesn't have to be hard

A presentation for South West User Experience, October 2022.


Contents:


Introduction

Slide: Andrew Hick: an, drew as in picture, hick rhymes with pick

I work in the accessibility monitoring team at the Government Digital Service in Bristol, love making websites work for everyone, and enjoy making things out of pens, pixels, code and string.

I also love retro video games and made one about my cat.

Happy cartoon faces

We monitor websites and mobile apps for the public sector accessibility regulations.


Show of hands

Slide: Who is a: user researcher, interaction designer, content designer, service designer, graphic designer, developer, tester, product manager, delivery manager, accessibility specialist ...anything else?

Raise your hand if you’ve heard something like this:

“Accessibility isn’t part of the Minimum Viable Product”

Raise your hand if you’ve heard something like this:

“None of our users are disabled”

Spoken: Both of these statements are red flags - you’re fighting a losing battle if a stakeholder is looking for excuses not to make a site accessible.


Accessibility doesn't have to be hard

I’m going to try and convince you that accessibility doesn’t have to be hard.

Slide: This is a controversial statement because it can take effort, careful thought and budget to get everything right.

But if accessibility is itself inaccessible, it can be hard to engage with it.


Two types of team

Slide: “Why should we make it accessible?”

  • Accessibility is seen as red tape
  • “That’s not in the Minimum Viable Product”
  • “None of our users are disabled”
  • “That’s a Severity 3 issue”
  • Test at the end, or (worse) get an overlay

Spoken: The first is the ‘why should we’ team - ‘why should we make it accessible?’

This is characterised by people who see accessibility as a barrier or red tape, people who don’t think accessibility is part of the minimum viable product (the clue is in the word viable), people who think they have no disabled users, deprioritise accessibility issues or move testing to the end. Even worse, they might think that accessibility issues can be fixed with a single line of code, as some overlay vendors claim.

Then there’s the second type.

Slide: “Why wouldn’t we make it accessible?”

  • Accessibility is a human right
  • Minimum Viable Product includes accessibility
  • We don’t want to exclude anyone
  • Accessibility defects take priority
  • Test throughout

Spoken: The other type is the ‘why wouldn’t we’ team - ‘why wouldn’t we make it accessible’?

Of course, accessibility is a human right. Of course, viable means accessible. Of course, we don’t want to exclude anyone. Of course, we test for accessibility throughout, from research through to deployment.

Slide: Be a “why wouldn’t we” team 🤗

Spoken: But to make that easier…


Accessibility should be accessible

Slide: If we just leave accessibility to the mythical accessibility unicorns it can feel impenetrable. 🦄

Accessibility should be everyone’s responsibility.

Spoken: Leaving accessibility to a mythical accessibility unicorn (if they even exist) is a good start but doesn’t educate the rest of the team at all. By ‘mythical unicorn’ this could refer to an internal or external accessibility specialist, quality assurance tester with lots of conflicting priorities, enthusiastic content designer or another role. Unfortunately many teams don’t even have anyone aware of accessibility.

Accessibility shouldn’t fall to one person - it should be everyone’s responsibility.

Slide: Talking of accessibility, let’s clear up some quick terms...

HTML = HyperText Markup Language

CSS = Cascading Style Sheets

WCAG = Web Content Accessibility Guidelines (usually pronounced wuh-cag). There are 3 levels of compliance and we usually aim for AA. Version 2.2 due soon!

ARIA = Accessible Rich Internet Applications

“ARIA is accessibility tree surgery” - Alice Boxhall & Rob Dodson

- a way of hacking how HTML is interpreted by assistive technologies


80:20 rule

Spoken: The 80:20 rule can be misinterpreted as if to say we shouldn't cater for all users. This is the opposite of what accessibility is about. So here's a clarification...

Slide: ⚠️ Clarification...

The web needs to work for 100% of users.

But to get there, 80% of the outcome can be achieved by 20% of the effort. For example, teams having a general awareness of things like keyboard access, responsive design and semantics.

Spoken: I’m a big believer in the 80:20 rule - that 20% of the work delivers 80% of the benefit. If we can all look out for common accessibility issues with every user story, we’ll probably eliminate most accessibility issues.

Slide: Depth: Can I use aria-label on an HTML <div> with no role?

Breadth: does a site work when zoomed, with a keyboard, with a screen reader?

Spoken: Accessibility depth is useful to answer tricky questions like whether you can use an aria-label on a <div> with no role. However, my job title is accessibility specialist, but I still have to look up things like that and it’s not always clear what the real-life impact is. (I’m lazy and tend not to memorise things that I can look up.)

We’ll get the best results if we’re all on the lookout for broader, simple things, like whether a site works with zoom, with a keyboard or with a screen reader. That’s the 20% of effort with the most benefit.

Slide: The best way to eliminate accessibility issues is if a whole team can look out for the main things that affect most users.

Accessibility unicorns can find any remaining issues...

...and you’ll get real insight from disabled users rather than issues you could have found yourself.


Accessibility myths

Slide: “None of our users are disabled”

1 in 5 people has a disability.

“We are all only temporarily not disabled” (Home Office)

Spoken: According to Scope, one in five working age adults has a disability. And the Home Office have previously shared posters saying “We are all only temporarily not disabled”. Although the wording of this phrase might be controversial because there’s a risk it centres non-disabled people, it’s there to provoke a change in mindset that you might be helping your future self and those around you.

Slide: Situational disabilities

Twelve examples of permanent, temporary and situational disabilities. These are: Touch: one arm, arm injury, new parent; See: blind, cataract, distracted driver; Hear: deaf, ear infection, bartender; Speak: non-verbal, laryngitis, heavy accent

Image from Microsoft Inclusive Design.

Spoken: This graphic from Microsoft Inclusive Design is often shared, but great at illustrating the different temporalities of disability. There are permanent, temporary and situational disabilities, with examples under touch, see, hear and speak categories. For example, having one arm is a permanent disability, having an arm injury is a temporary disability, and being a new parent holding a baby is a situational disability.

I don’t have a permanent disability, but I’ve recently had a baby and suddenly need to do a lot more things one-handed, and navigate around steps with a pushchair. Also, I have a mild colour vision deficiency to the point that I might miss some visual cues on websites.

And don't forget that:

Slide: Not all disabilities are visible

Spoken: One estimate says that 80% of disabilities are not visible.

Slide: “Accessibility means we can’t make our website swooshy”

Accessibility drives aesthetics” - Alex Chen

Spoken: I really recommend the article 'Accessibility drives aesthetics' by Alex Chen. They provide several examples of where making things accessible also makes them aesthetic.

Slide: An example of a very busy car sales website

Spoken: Ling’s Cars is often used as an example of an inaccessible site and it’s true that there is lots of moving and distracting stuff on there. I’ve still seen worse in terms of accessibility though - the biggest offenders seem to be Enterprise Resource Planning type things.

Slide: Screenshot of the gov.uk homepage

Spoken: And with GOV.UK - you can’t argue that’s not elegant, surely?

Slide: Subtle transitions are probably OK, as long as they aren’t too distracting...

...but make sure it works in HTML before adding swooshy bits (this is progressive enhancement)

Spoken: Another misunderstanding of accessibility is...

Slide: “People can access it because they can get to the website”

While wider digital inclusion is really important, we don’t want to lose focus on people with disabilities.

‘Accessibility’ usually relates to people with disabilities and assistive technology.

‘Wider accessibility’ relates to usability and inclusion.

Slide: “We’ve added some ARIA labels”

This can be good or bad - more later. It needs to be done well.

Spoken: One thing I’ve heard is ‘it’s accessible because we’ve added ARIA labels’. These can help but it needs to be done well.

Slide: “We use an overlay”

Be very careful. 🐲 No website plugin can fix all accessibility issues and some can make things worse.

See the Overlay Fact Sheet

Spoken: Now we’re into real ‘there be dragons’ territory. It’s possible to use a plugin or overlay which adds functionality to a webpage.

Be very careful, the consensus across the accessibility community is overwhelmingly to avoid them. Particularly any which claim to fix all accessibility issues in a line of code - they can often make things worse.

It’s worth reading the Overlay Factsheet before looking at any overlay type solutions.

It's often tempting to think that...

Slide: “Accessibility means meeting Web Content Accessibility Guidelines”

Just because something passes Web Content Accessibility Guidelines doesn’t mean it’s accessible.

We should test with disabled users and aim to exceed the guidelines.

One question we haven't yet answered is:


What is accessibility?

Spoken: Here are a few definitions of accessibility...

Slide: Accessibility is a civic and human right

- Crystal Preston-Watson

Spoken: - it’s really hard to argue with that statement.

Slide: Accessibility is a mindset, ensuring everyone has the same experience and derives the same value

- Aaron Farber

Spoken: A counterexample to this is where people use the alt text in Twitter for in-jokes - that’s not the same experience. Another one is where captions have swear words censored out - as deaf/Deaf people won’t have the same experience.

Slide: Web Content Accessibility Guidelines?

Spoken: Is accessibility WCAG? We’ve just said that WCAG does not equal accessibility and that’s right.

Slide: WCAG has its limitations...

The AA standard doesn’t include digital alternatives, the need for headings, good content, unambiguous links or excessive tabbing.

Spoken: The double A standard, which most things aim for, misses out things like alternatives to digital channels, content being clear, or unique links. It is ambiguous in places, and doesn’t always define things well. It’s also very black and white, not distinguishing between big failures (like a lack of keyboard support) and small ones (like an ARIA attribute used on an element which shouldn’t support it). It’s far from perfect. But...

Slide: ...it’s a good start.

98% of public sector sites failed our simple WCAG tests in 2021.

Spoken: However, it’s a good start for now. According to our testing (we released a report into our public sector website and app testing in 2021), only 2% of pages passed our simple tests. And this is for organisations that have been legally required to make their websites accessible since 2018.

Slide: So there’s still a lot of work just to meet WCAG.

But once we’re there, why wouldn’t we want to improve on that?

How do we do that?


Listen to disabled people

Slide: Advice from non-disabled white men like me can only go so far.

But by testing better and testing earlier, we can filter out issues so that the insight we gain from disabled people is more valuable.

Spoken: I’m conscious that this might sound a bit ‘othering’ and I hope that there are disabled people in your teams. Disabled people’s insight trumps adherence to standards. I’ve had the pleasure of working with Marian Avery who recently tweeted this:

Slide: Marian Avery: “You should never talk about disabled people in a divisive 'us and them' way. That leads to a saviour mentality (bad).

We're here. We walk, roll and live among you.

You'll be one of us one day.”

Slide: Things we’ve learnt when testing with disabled users

A carousel is still going to be distracting, even if it has a pause button.

Screenshot of an animation with a caption and a picture of a university student fading in, and a pause button

Left-aligning text helps people who use high levels of zoom

(otherwise info might get missed).

Spoken: Most people read websites in the shape of a capital F and it’s important to anchor text to the left hand side of the screen, otherwise information might get missed.

Slide: It’s important to communicate the expanded/collapsed state of a menu.

A red menu containing Research options. the word Research has a freehand highlight.


How to test

Spoken: To summarise so far, to get the best insight from testing with disabled users, we should all be on the lookout for common issues and view accessibility as something that everyone should get involved with. So how do we actually do that?

Slide: This is one way to test WCAG.

Everyone in our team has a different way that they like to do it, but it all achieves the same result.

Find what works for you!

Slide: 1. TabTabTabTabTab

Tab through each page at 100%, 200% and 400% zoom.

Make sure you can read and interact with everything with using a keyboard. Also that you can bypass menus, nothing unusual happens, and you don’t get trapped.

Spoken: This test will probably give you the best indication of how much the site team has thought about accessibility.

This might look like quite a lot, but essentially it’s ‘can you interact with the website using the keyboard at different zoom levels?’ There are a couple of nuances like whether you can bypass menus or what constitutes a keyboard trap, but fundamentally, does it work?

Slide: This covers:

  • 2.1.1 Keyboard
  • 2.1.2 No keyboard trap
  • 2.4.1 Bypass blocks
  • 2.4.3 Focus order
  • 2.4.7 Focus visible
  • 3.2.1 On focus
  • 3.2.2 On input

as well as two zoom requirements:

  • 1.4.4 Resize text
  • 1.4.10 Reflow

(We’ll come back to 1.4.12 Text spacing later)

Spoken: The next thing to do is to check if there’s anything on the page that relies on a sense, or interferes with the viewing of the page.

Slide: 2. Sensory things

Make sure nothing on the page is intrusive, has low contrast, or relies on time, sense or colour.

Intrusive means flashing, or sound/visuals that can’t be paused.

Spoken: Look out for intrusive things like flashing, auto-playing sound or time limits, or things that rely on good vision. Faint text, or using colour alone to convey meaning, are a no-no.

We’re not saying you can’t use colour at all (although you might think that from looking at gov.uk). We’re just saying that colour shouldn’t be the only means of conveying information.

And sound and vision can be a useful addition to a site, but it shouldn’t be the only way to convey information, and definitely shouldn’t flash, or play without the option of stopping it.

Slide: This covers, for colour and contrast:

  • 1.4.1 Use of colour
  • 1.4.3 Contrast (minimum)
  • 1.4.11 Non-text contrast

as well as seven sensory things:

  • 1.3.3 Sensory characteristics
  • 1.4.2 Audio control
  • 1.4.5 Images of text
  • 1.4.13 Content on hover or focus
  • 2.2.1 Timing adjustable
  • 2.2.2 Pause, stop, hide
  • 2.3.1 Three flashes

The rules around media are a bit more convoluted, but:

Where there are videos, audio needs captions, and meaningful visuals need audio description.

Audio-only media needs a transcript. Video-only media needs a transcript or audio description.

  • 1.2.1 Audio-only and video-only
  • 1.2.2 Captions (prerecorded)
  • 1.2.3 Audio description or media alternative
  • 1.2.4 Captions (live)
  • 1.2.5 Audio description

If you’re testing at level AA then 1.2.3 is actually irrelevant because it’s superseded by 1.2.5.

Slide: 3. Use a test tool

We use the Axe Chrome extension from Deque

(other tools are available)

Spoken: We currently use the Axe Chrome extension although others are available, like WAVE and Google Lighthouse (although I think this also relies on Axe). This runs an automated check on a website for things like missing form labels and alternative text, incorrect usage of ARIA and some colour contrast issues.

While you can count issues in different ways, we believe Axe finds around 30-40% of accessibility issues. So it’s never a full test, but the things it does pick up would usually be harder to find yourself.

Slide: Axe test results showing 267 errors, including 'ensure every ARIA input has an accessible name' under WCAG 4.1.2

A pixellated skull (Sans from the game Undertale) saying 'You're gonna have a bad time'

Spoken: This is what a site with lots of issues might look like - in this case, there are 267 issues such as ‘ARIA input fields must have an accessible name’.

When I see this I think of the meme ‘you’re gonna have a bad time’. This is the otherwise loveable Sans from the game Undertale.

Slide: Axe test results showing 0 errors, including 'ensure every ARIA input has an accessible name' under WCAG 4.1.2

Pixellated flying cat shaped like a pop tart in space, with rainbows streaming behind it

Spoken: And this is what Axe looks like where there are no automatically-detectable issues.

Any excuse to add a nyan cat in to celebrate.

Slide: Axe can find some issues with around 17 criteria:

1.1.1, 1.3.1, 1.3.4, 1.3.5, 1.4.1, 1.4.4, 1.4.12, 2.2.1, 2.2.2, 2.4.1, 2.4.2, 2.5.3, 2.4.4, 3.1.1, 3.1.2, 4.1.1, 4.1.2

Axe is...

  • good with labels and markup,
  • OK with contrast and alt text,
  • and not so good with keyboard and sensory things.

Slide: 4. Use a screen reader

Check that things are what they look like, have appropriate labels, and dynamic changes are communicated.

We use NVDA on Windows because it provides the most ‘raw’ experience and is commonly used.

It doesn’t try to autocorrect bad markup too much. It’s also free (although donations are always welcomed).

VoiceOver on Mac works well too but is less widely used.

Fluffy black cat with an intense expression sitting in a cardboard box labelled 'Boots'

Spoken: Here we have a picture of a cat in a box. What alternative text would you use here?

I’ve gone with: “Fluffy black cat with an intense expression sitting in a cardboard box labelled 'Boots'.” I did consider “Puss in Boots” which would be convenient, but that would mean that people reading the alt text wouldn’t be getting the same information as people who can see the image.

This covers:

Slide: Checks on page elements

  • 1.1.1 Non-text content
  • 1.3.1 Info and relationships
  • 1.3.2 Meaningful sequence
  • 2.4.4 Link purpose
  • 2.4.6 Headings and labels
  • 2.5.3 Label in name
  • 4.1.2 Name, role, value
  • 4.1.3 Status messages

For forms, there's also:

  • 1.3.5 Identify input purpose
  • 3.3.1 Error identification
  • 3.3.2 Labels or instructions
  • 3.3.3 Error suggestion
  • 3.3.4 Error prevention

Slide: 5. Use a phone

Use a mobile to check whether a site works in portrait/landscape, and whether anything relies on gestures or movement.

  • 1.3.4 Orientation
  • 2.5.1 Pointer gestures
  • 2.5.2 Pointer cancellation
  • 2.5.4 Motion actuation

Slide: 6. Check across the site

Check that pages have appropriate titles and languages.

Check that components and navigation are consistent, and there’s more than one way to get to each page.

  • 2.4.2 Page titled
  • 2.4.5 Multiple ways
  • 3.1.1 Language of page
  • 3.1.2 Language of parts
  • 3.2.3 Consistent navigation
  • 3.2.4 Consistent identification

Slide: 7. Check the last bits (if time)

Spoken: Here are the last bits. I’ve said to check them ‘if time’ because these fall more under the 80% of effort that only delivers 20% of the benefit.

Slide: Specific bookmarklets can help test the following:

  • 1.4.12 Text spacing
  • 2.1.4 Character key shortcuts
  • 4.1.1 Parsing

Text spacing and character key shortcut issues are relatively rare.

Parsing issues are unlikely to cause too many problems if no other issues have been detected.

That’s WCAG!

Some things have been simplified here, but if you know what accessibility smells to sniff out for, you can dig further when something fails.


Write it all up

Spoken: Once we’ve tested, we need to communicate the results in an accessible way.

Currently we send attached reports, but we’re close to being able to send HTML reports published on our platform.

Here’s what we include in our reports:

  • Slide: Pages we checked
  • Tools we used
  • Issues we found, with context
  • Comments on the accessibility statement

Spoken: We’re currently trialling two types of report: ordering issues by WCAG or ordering them by page. We’re doing some research into it, but if anyone has any insight over what works best then please let me know.

Slide: By WCAG:

An example issue under the heading WCAG 1.2.5 Audio Description

By page:

An example issue under the heading 'Site search page'

We’ve tested our site and written a nice report.

But rather than finding issues, wouldn’t it be nice to prevent them?

Spoken: As well as getting everyone in the team bought in with accessibility, what else can we do?

A common term in testing is to...


Shift left

Slide: Design defects are considerably cheaper to fix than live defects.

Spoken: While the amount varies based on the kind of pipeline you use, design defects are always cheaper to fix than live defects.

Slide: Build accessibility into your acceptance criteria, tests and releases.

“Not accessible, not acceptable” - RNIB

Spoken: So why wouldn’t we build accessibility into our acceptance criteria, tests and releases? If it’s not accessible, it’s not done, or to use the wording from the Royal National Institute for Blind People’s wording, ‘not accessible, not acceptable’.


Keep it simple

This is more likely to prevent defects.

Slide: Just because you can, doesn’t mean you should.

Several circles with shiba inu dogs and captions like 'just scroll', 'reveal now', 'so impress'

Spoken: There’s a component we see a lot called wow.js and I love the website - who doesn’t love shiba inu dogs? It makes things animate themselves into view as you scroll down the page.

However, when we’ve tested it using a keyboard and screen reader, we’ve noticed that items don’t appear in the DOM (on the page) until you scroll, meaning that some users will miss some content. I’m holding out hope that they can find an accessible way to do it though, just so I can keep going back to their website. Next...


Keep it semantic

Slide: Use the right HTML tag when you can.

Just because you can make your own custom components with ARIA, doesn't always mean you should.

Spoken: Semantic HTML means using tags that have the correct meaning for the thing you’re trying to achieve. If you’re building your own custom components then just a reminder that there is a thing called ARIA that you can use to give things certain accessibility properties. But only use it if you need to. I’ll talk a bit more about ARIA at the end if we have time.


Resources

Slide: Accessibility testing guide

Link to the guide

Front page of the accessibility testing guide on GitHub

We’ve worked on the guide for the past couple of years, led by Anika Henke in GDS.

It covers how to test each WCAG level A and AA criteria in depth. We use it all the time.

WCAG decision tree

Link to the decision tree

However there are about 50 level AA criteria - where do you start?

I made a decision tree to help you work out which criteria something might fail on.

A table containing questions and possible failures for media

These resources are linked to from: AndrewHick.com/accessibility

I also recommend Google's free Web Accessibility course, hosted by Udacity.


Who to follow

Spoken: Finally I’m going to suggest some people to follow.

Don’t just listen to me, listen to more people who are passionate about accessibility and inclusion. I've used names and handles as used on everyone's Twitter profile:


A bit more about ARIA

Slide: The first rule of ARIA is ‘don’t use ARIA’

The official Using ARIA guide says:

If you can use a native HTML element or attribute with the semantics and behaviour you require already built in, instead of re-purposing an element and adding an ARIA role, state or property to make it accessible, then do so.

If you want a button, you could:

  • add <div role=”button”>
  • add a keyboard event listener for Space and Enter using Javascript
  • add custom focus styles using CSS

...or use <button>

If you want a checkbox, you could:

  • add <div role=”checkbox” aria-checked=”false”>
  • add a keyboard event listener for Space and Enter using Javascript
  • set the checked/unchecked state and toggle functionality using Javascript
  • add custom focus styles using CSS

...or use <input type=”checkbox”>

ARIA is powerful, but can’t modify an element’s appearance or behaviour, add focus, or add keyboard support.

Only use it when you need to.

No ARIA is better than bad ARIA. - World Wide Web Consortium (W3C)

Slide: That's the end of the slides - thank you so much for reading!

This presentation, and the links from it, are on AndrewHick.com/swux.

My Twitter handle is @andrew_hick.