doc/development/fe_guide/accessibility/_index.md
Accessibility is important for users who use screen readers or rely on keyboard-only functionality to ensure they have an equivalent experience to sighted mouse users.
GitLab uses a comprehensive, multi-level approach to ensure accessibility compliance. Each tool serves a specific purpose in our development workflow, working together to provide complete coverage from development to production:
| Tool | When to use | Coverage | Feedback timing |
|---|---|---|---|
| Linting | While writing code | JS, Vue, Markdown files | Real-time in editor |
| Storybook tests | Component development | Vue components in isolation | CI pipeline on component changes and local testing |
| Feature tests | Feature development | Complete user journeys (HAML + Vue + JS) | CI pipeline and local testing |
| Browser extension | Code review & debugging | Any page, on-demand | Manual, immediate |
| Monitoring | Production oversight | Key application pages | Continuous monitoring |
During development:
For different file types:
You can enable linting for accessibility defects with a free VS Code plugin - axe Accessibility Linter. We strongly recommend that to everyone contributing to GitLab that use VS Code.
To enable linting:
The GitLab repository includes axe-linter.yml configuration that maps Pajamas Design System components to native HTML elements, significantly increasing linter coverage.
Storybook tests use axe-playwright to automatically test Vue components for accessibility violations.
Component's tests run in CI on any Vue or JavaScript file change and block merges when it finds violations. However, it only tests components that have Storybook entries and they need to be up-to-date.
Feature tests with axe-core-gem provide the most comprehensive accessibility testing by validating complete user experiences.
They cover all our frontend architecture (HAML, Vue, JS) and allow checks at any step of a user journey. Though they may be resource heavy.
Use axe DevTools browser extensions for immediate accessibility feedback:
There is no setup required. You get a full page scan with resources on how to fix violations. Highlighting feature will help you identify the elements in question. A paid pro version offers guided testing and component-specific scans.
Our Sitespeed setup with axe extension provides ongoing accessibility monitoring with minimal setup.
You can see SiteSpeed Report for the latest run against staging in GitLab Browser Performance Tool.
For detailed implementation guidance, see our automated testing guide:
Follow these best practices to implement accessible web applications:
Enhance your accessibility knowledge with these resources: