My Accessibility Journey: the Quest for an Accessible Component Library

Rate this content
Bookmark

Creating web applications can be challenging. Creating accessible ones - even more so. However the real challenge lies in maintaining accessibility in your project since it requires knowledge and skills beyond those of traditional web development. To make this happen, one must choose the proper tools to keep the accessibility level high when code gets refactored, monitor the accessibility status and test it automatically during CI. To tackle these challenges, I’ll introduce a different approach that intertwines accessibility into the gut of the web application by creating an accessible React components library. I’ll discuss the principles, tools and techniques I use to test and maintain the accessibility level over time, and provide you with the initial recipe to drive the accessibility change in your organization.

FAQ

The key components include breaking down the application into small, manageable components, focusing on making each component as accessible as possible using correct HTML tags, and automating functional and accessibility tests to ensure ongoing compliance.

To maintain accessibility after updates like rebranding, it's crucial to have a robust testing harness in place. Implement automated accessibility testing within your development pipeline to continuously validate the accessibility of components even as changes are made.

Using proper HTML tags for components such as buttons and input fields naturally supports accessibility features like keyboard focus and screen reader compatibility, reducing the need for additional accessibility modifications and simplifying development.

Automation plays a crucial role in maintaining accessibility by continuously running functional and accessibility tests against components. This ensures that all parts of the application remain accessible to all users, even after updates or changes.

Common challenges include ensuring keyboard navigability, providing adequate text alternatives for images, and maintaining sufficient color contrast. These can be addressed by using semantic HTML, implementing accessible design principles from the start, and regular accessibility testing.

Starting with accessibility in mind ensures that the application is inclusive from the outset, reduces the need for costly retrofits, and helps in complying with legal standards. It also enhances the user experience for all users, including those with disabilities.

Tools such as Cypress for running functional tests, Storybook for visualizing components, and custom SDKs like those provided by Avinst for detecting accessibility issues are recommended for thorough testing of web applications' accessibility.

Asaf Shochet Avida
Asaf Shochet Avida
23 min
24 Oct, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

The Talk discusses the speaker's journey in making applications accessible and the importance of preventing inaccessible code from being shipped. It explores the process of building and creating accessible components, emphasizing the use of appropriate HTML tags and conducting functional and accessibility testing. The Talk also highlights the benefits of automation in testing and fixing accessibility issues. Overall, it emphasizes the importance of accessibility and provides practical tips for incorporating it into software development.

1. My Accessibility Journey

Short description:

The first time I had an accessibility test, it was a success on one end, but a complete failure on the other. We worked hard to make the application accessible, but every time we made changes, accessibility was left behind. The code was full of patches and hacks, not maintainable in the long run.

Hi. The first time I had an accessibility test a few years ago, it was a success on one end, but a complete failure on the other one. We had an application and we worked very hard to make it accessible, applying many patches and specific accessibility techniques and accessible code, but every time we had to change something in the code, for example, a rebranding effort, new colours or a new interaction, accessibility was just left behind because no one remembered to test it. For that, it was most of the time it was broken, a lot like this. I mean, the code worked functionality-wise but if you look under the hood, it was full of patches, full of hacks, not something we were very proud of. And it was not something that you can maintain for a long while.

2. My Accessibility Journey: Introduction

Short description:

In my other project, we did things differently to make it accessible from the start and in a maintainable way. This talk is about my accessibility journey and the quest for an accessible component library. Accessibility is about inclusion and letting everyone use your application. We want to prevent inaccessible code from being shipped. We start by testing the accessibility flow-by-flow, such as the login, forgot password, sign up, sign out, purchase, and contact support flows.

So that's why in my other project, when we started a new accessibility project and in a different company, we did things in a different way. We wanted to make it accessible from the start and in a maintainable way. And if you are tackling the same problem today or you're trying to make your application accessible in a way that will last, this talk is for you.

So let me start. This talk is called my accessibility journey, the quest for an accessible component library, or as should the full name be, my accessibility journey, the quest for an accessible component library that reflects and redesigns and is maintainable and testable. Which are like small points, but they are very important for us to have accessible code.

So let me introduce myself. I'm Asaf. I'm the father of Sahr, Naziv, and I've been in the web development field for over a decade in various roles and currently I'm the frontend tech lead for Avinst, which is a startup that specializes in giving developers great developer tools for accessibility. For example, we have algorithms based on computer vision and machine learning that help to detect and find accessibility issues. We create Chrome extensions and other extensions for mobile as well that help developers and testers to find their issues on their applications. And we develop SDKs that expand testing frameworks such as Cypress or Selenium and give them accessibility add-ons for their testing. I'm going to dig into the last one in a short while in this presentation.

So before we start, what is accessibility? Accessibility is about inclusion. It's about letting everybody in. Letting all the people use your amazing application. For example, a person who has a physical disability and cannot use the mouse will still need a way to navigate through your website, and to click on your drop-down and to select the third option that opens another submenu, and then to select the fourth option from there. So if you have some kind of navigation or some kind of interaction for the users that we all have in our applications, you want to make sure that this is also accessible for someone who cannot use the mouse. And it's not trivial. It should be, but it's not. So what we do is we want to prevent these kind of things from leaving our code. We want to ship only code that is accessible from the start.

So when we want to make our own application accessible, we thought about where should we start doing this effort? So we had several ideas. It all came from the testing side of things. I mean, these ideas are very much like discussions we had about testing. So we can test the product or test the accessibility of the product flow-by-flow. For example, we can cover the login flow, start with the login screen, and then confirm that the login pop-up is valid, that the forgotmypassword flow works, and sign up and sign out also works with the keyboard and with screen reader, which is an accessible technology, for example. The same for purchase flow and the same for the contact support flow. Sorry for my voice. I have a bit of a cold.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Design Systems: Walking the Line Between Flexibility and Consistency
React Advanced Conference 2021React Advanced Conference 2021
47 min
Design Systems: Walking the Line Between Flexibility and Consistency
Top Content
Design systems aim to bring consistency to a brand's design and make the UI development productive. Component libraries with well-thought API can make this a breeze. But, sometimes an API choice can accidentally overstep and slow the team down! There's a balance there... somewhere. Let's explore some of the problems and possible creative solutions.
Towards a Standard Library for JavaScript Runtimes
Node Congress 2022Node Congress 2022
34 min
Towards a Standard Library for JavaScript Runtimes
Top Content
You can check the slides for James' talk here.
Accessibility at Discord
React Advanced Conference 2021React Advanced Conference 2021
22 min
Accessibility at Discord
Composition vs Configuration: How to Build Flexible, Resilient and Future-proof Components
React Summit 2022React Summit 2022
17 min
Composition vs Configuration: How to Build Flexible, Resilient and Future-proof Components
Top Content
There are many ways of authoring components in React, and doing it right might not be that easy, especially when components get more complex. In this talk, you will learn how to build future-proof React components. We will cover two different approaches to building components - Composition and Configuration, to build the same component using both approaches and explore their advantages and disadvantages.
Configuring Axe Accessibility Tests
TestJS Summit 2021TestJS Summit 2021
30 min
Configuring Axe Accessibility Tests
Top Content
Axe-core is a popular accessibility testing engine that is used Google, Microsoft, and hundreds of other companies to ensure that their websites are accessible. Axe-core can even integrate into many popular testing frameworks, tools, and IDEs. In this advanced session, we'll be learning how to configure axe and its integrations to fine tune how it runs and checks your pages and code for accessibility violations.
Building Cross-Platform Component Libraries for Web and Native with React
React Advanced Conference 2021React Advanced Conference 2021
21 min
Building Cross-Platform Component Libraries for Web and Native with React
Top Content
Building products for multiple platforms such as web and mobile often requires separate code-based despite most of the components being identical in look and feel. Is there a way where we could use shared React component library on different platforms and save time? In this presentation I'll demonstrate one way to build truly cross-platform component library with a unique approach of using React & React Native in combination.

Workshops on related topic

Build a Data-Rich Beautiful Dashboard With MUI X's Data Grid and Joy UI
React Summit 2023React Summit 2023
137 min
Build a Data-Rich Beautiful Dashboard With MUI X's Data Grid and Joy UI
Top Content
WorkshopFree
Sam Sycamore
Siriwat (Jun) Kunaporn
2 authors
Learn how to put MUI’s complete ecosystem to use to build a beautiful and sophisticated project management dashboard in a fraction of the time that it would take to construct it from scratch. In particular, we’ll see how to integrate the MUI X Data Grid with Joy UI, our newest component library and sibling to the industry-standard Material UI.
Table of contents:- Introducing our project and tools- App setup and package installation- Constructing the dashboard- Prototyping, styling, and themes - Joy UI features- Filtering, sorting, editing - Data Grid features- Conclusion, final thoughts, Q&A
Web Accessibility for Ninjas: A Practical Approach for Creating Accessible Web Applications
React Summit 2023React Summit 2023
109 min
Web Accessibility for Ninjas: A Practical Approach for Creating Accessible Web Applications
Workshop
Asaf Shochet Avida
Eitan Noy
2 authors
In this hands-on workshop, we’ll equip you with the tools and techniques you need to create accessible web applications. We’ll explore the principles of inclusive design and learn how to test our websites using assistive technology to ensure that they work for everyone.
We’ll cover topics such as semantic markup, ARIA roles, accessible forms, and navigation, and then dive into coding exercises where you’ll get to apply what you’ve learned. We’ll use automated testing tools to validate our work and ensure that we meet accessibility standards.
By the end of this workshop, you’ll be equipped with the knowledge and skills to create accessible websites that work for everyone, and you’ll have hands-on experience using the latest techniques and tools for inclusive design and testing. Join us for this awesome coding workshop and become a ninja in web accessibility and inclusive design!
Automated accessibility testing with jest-axe and Lighthouse CI
TestJS Summit 2021TestJS Summit 2021
85 min
Automated accessibility testing with jest-axe and Lighthouse CI
Workshop
Bonnie Schulkin
Bonnie Schulkin
Do your automated tests include a11y checks? This workshop will cover how to get started with jest-axe to detect code-based accessibility violations, and Lighthouse CI to validate the accessibility of fully rendered pages. No amount of automated tests can replace manual accessibility testing, but these checks will make sure that your manual testers aren't doing more work than they need to.
Web Accessibility in JavaScript Apps
React Summit 2022React Summit 2022
161 min
Web Accessibility in JavaScript Apps
Workshop
Sandrina Pereira
Sandrina Pereira
Often we see JavaScript damaging the accessibility of a website. In this workshop, you’ll learn how to avoid common mistakes and how to use JS in your favor to actually enhance the accessibility of your web apps!
In this workshop we’ll explore multiple real-world examples with accessibility no-nos, and you'll learn how to make them work for people using a mouse or a keyboard. You’ll also learn how screen readers are used, and I'll show you that there's no reason to be afraid of using one!
Join me and let me show you how accessibility doesn't limit your solutions or skills. On the contrary, it will make them more inclusive!
By the end, you will:- Understand WCAG principles and how they're organized- Know common cases where JavaScript is essential to accessibility- Create inclusive links, buttons and toggleble elements- Use live regions for errors and loading states- Integrate accessibility into your team workflow right away- Realize that creating accessible websites isn’t as hard as it sounds ;)
Creating Accessible React Native Apps
React Summit Remote Edition 2021React Summit Remote Edition 2021
91 min
Creating Accessible React Native Apps
Workshop
Scott Vinkle
Scott Vinkle
React Native is a framework used to create native iOS and Android apps in a way web developers may already be familiar with. But how do you ensure your React Native apps are inclusive and usable everyone? Scott will share tips on how to test and build React Native apps with accessibility baked-in!