-
Notifications
You must be signed in to change notification settings - Fork 0
Update a11y docs #60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Update a11y docs #60
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,68 +1,100 @@ | ||
| # Accessibility / a11y | ||
| # Accessibility | ||
|
|
||
| ## Background info | ||
|
|
||
| [The A11y Project](https://a11yproject.com/about) | ||
| Accessibility (shortened as a11y) is a primary consideration in our design and engineering processes. By foregrounding | ||
| accessibility, we intend to make our web properties more equitable and usable for everyone. | ||
|
|
||
| The Libraries' Accessibility Team (LAT), established in 2023, has adopted [Inclusive Design](https://www.nngroup.com/articles/inclusive-design) | ||
| as one of its guiding principles. Inclusive Design is similar to [Universal Design](https://universaldesign.ie/about-universal-design), | ||
| in that both explore the idea of meeting as many people’s needs as possible. Inclusive Design focuses more on individual | ||
| needs, and acknowledges that multiple design approaches may be required to meet this goal. | ||
|
|
||
| We consider Inclusive Design to be an inherently aspirational goal, as more can always be done. This is also what makes | ||
| it a useful framing device for accessibility work. The human experience is incredibly diverse, and a single design is | ||
| not likely to meet every person's needs. We can always strive to do better. | ||
|
|
||
| ## Goals | ||
|
|
||
| - The site is usable by everyone. | ||
| - Intentional access restrictions like MIT only are okay. | ||
| - The site meets as many people's accessibility needs as possible. | ||
| - Anyone that is authorized to use a site can actually use it. | ||
| - Intentional access restrictions (like 'MIT users only') are okay. | ||
| - The site is compliant with [WCAG 2.1 AA](https://www.w3.org/TR/2023/REC-WCAG21-20230921/) guidelines. | ||
jazairi marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| ## Local software projects | ||
|
|
||
| Local projects should include an accessibility review. This should be added to the project timeline as early as possible | ||
| in the scheduling process. The review plan should include a formal review by [Disability and Access Services](https://studentlife.mit.edu/das) | ||
| towards the end of the project. The process and expectations for this should be discussed during the initial | ||
| accessibility planning, but it has typically gone as follows: | ||
|
|
||
| - We develop an accessibility testing script (usually completed by someone in UXWS) and reach out to our contacts at DAS; | ||
| - We meet with DAS to discuss what the app does and any specifics we'd like them to test; | ||
| - We share the staging app with DAS, who complete their review and leave notes as issues a private GitHub repo; | ||
| - We fix any open issues and confirm with DAS that they have been resolved. | ||
|
|
||
| While writing frontend code, keep the following tips in mind: | ||
|
|
||
| - Use valid HTML5 and our [style guide](/mitlib-style) to start with a good baseline for usable and accessible websites. | ||
| - All Rails apps should include our [theme gem](https://github.com/MITLibraries/mitlibraries-theme/), which provides | ||
| styles from the guide and various partials to improve accessibility. | ||
| - Use semantic HTML elements and ARIA attributes where appropriate to help screen reader users navigate the page. | ||
| - Ensure that every page has a logical tab structure. | ||
| - Ensure that every page includes a skip link, so people using keyboard navigation can jump to the page's main content. | ||
| (A customizable skip link partial is included in the theme gem.) | ||
| - Run local checks throughout your development process (see [Accessibility testing](#accessibility-testing). | ||
| - Consult with colleagues in EngX and UXWS if you find an issue that you either can't fix or your own, or aren't sure | ||
| how to fix. Open discussions about accessibility issues often lead to the best-designed solutions. | ||
|
|
||
| ## Local Coding Projects | ||
|
|
||
| - Local coding projects should schedule an accessibility plan review with UX | ||
| early in the project. | ||
| - Part of that plan will likely be to schedule an internal review with UX | ||
| towards the end of the project. | ||
| - Most projects should, coordinated through UX, schedule a formal review by [MIT | ||
| Assistive Technology Information Center | ||
| (ATIC)](http://studentlife.mit.edu/atic/) towards the end of the project. The | ||
| process and expectations for this should be discussed during the initial | ||
| accessibility plan review. | ||
| - Use valid html 5 and our [style guide](/mitlib-style) to start out with a | ||
| great baseline for accessible websites. | ||
| - Run some local checks throughout your development process to fix any issues | ||
| you can as they come up, but don't stress about trying to pass every test on | ||
| your own. | ||
| - Ask UX if something concerns you that you can't fix on your own so | ||
| they can determine if they want to help now, or wait for the accessibility | ||
| review at the end of the project. | ||
| - Accessibility reviews from UX and ATIC will provide guidance on resolving any | ||
| issues before or shortly after a project goes into production. | ||
|
|
||
| ## Implementing Open Source or Vended Solutions | ||
|
|
||
| - Discuss with UX whether an accessibility review is appropriate and who will | ||
| lead the review. | ||
|
|
||
| ## Automated Checking | ||
|
|
||
| - All of our public GitHub repos are set to automatically check via | ||
| [AccessLint](https://www.accesslint.com), which is great for what it is | ||
| but is _not_ a comprehensive Accessibility Plan. | ||
|
|
||
| ## Manual testing | ||
|
|
||
| - The [Web Accessibility Evaluation Tool (WAVE)](https://wave.webaim.org/) is | ||
| useful for checking single web pages. It can be installed as a browser | ||
| extension for either Chrome or Firefox. | ||
| - The [Accessible Name & Description Inspector (ANDI) | ||
| tool](https://www.ssa.gov/accessibility/andi/help/install.html) is a | ||
| Javascript tool to evaluate a loaded webpage. | ||
| - A screenreader like [VoiceOver](https://www.apple.com/voiceover/info/guide/_1121.html) | ||
| ### Accessibility testing | ||
|
|
||
| #### Automated testing | ||
|
|
||
| All of our public GitHub repos are set to automatically check via [AccessLint](https://www.accesslint.com). This is a | ||
| useful tool, but is _not_ a comprehensive accessibility plan. | ||
|
|
||
| #### Manual testing | ||
|
|
||
| - For every pull request that touches a UI element, the author should run an accessibility checker tool to confirm that the | ||
| change does not introduce an access barrier. In EngX, we use the following: | ||
| - The [Web Accessibility Evaluation Tool (WAVE)](https://wave.webaim.org/) is | ||
| useful for checking single web pages. It can be installed as a browser | ||
| extension for either Chrome or Firefox. | ||
| - The [Accessible Name & Description Inspector (ANDI) | ||
| tool](https://www.ssa.gov/accessibility/andi/help/install.html) is a | ||
| Javascript tool to evaluate a loaded webpage. | ||
| - Some people navigate webpages by keyboard. To ensure accessibility for these users, it's a good idea to attempt to navigate | ||
| the site periodically using your keyboard (e.g., when a new feature is added to the UI). This can help confirm that | ||
| UI elements flow in a logical order. | ||
| - A screen reader like [VoiceOver](https://www.apple.com/voiceover/info/guide/_1121.html) | ||
| for the Mac or [NVDA](https://www.nvaccess.org/download/) for Windows can be | ||
| useful for user testing to confirm that elements are reachable, or that | ||
| interactions will play out as expected. Articles like ["Testing with Screen | ||
| Readers" at WebAIM](https://webaim.org/articles/screenreader_testing/) are | ||
| also useful. | ||
| - While periodic screen reader testing can be helpful to identify issues, it has limited utility unless done by an | ||
| expert user. (This will occur as part of the formal DAS review.) | ||
|
|
||
| ## Implementing open source or vended solutions | ||
|
|
||
| As with locally developed software, any open source or vended software that includes a UI should be evaluated for | ||
| accessibility. Any vendor claims related to accessibility should be confirmed, to the extent we are able to do so. UXWS | ||
| should be consulted for accessibility reviews of vended products. | ||
|
|
||
| Ideally, accessibility should be discussed early in vendor negotations, and any potential issues should be addressed | ||
| with the vendor. | ||
|
|
||
| ## Resources | ||
|
|
||
| - [A11y Project Web Accessibility Checklist](https://a11yproject.com/checklist) | ||
| - [HTML_CodeSniffer](https://squizlabs.github.io/HTML_CodeSniffer/) | ||
| - [AccessLint](https://www.accesslint.com) | ||
| - Chrome Dev Tools Accessibility Audit | ||
| - [Google Developers Web Fundamentals: Accessibility](https://developers.google.com/web/fundamentals/accessibility/) | ||
| - [Web Accessibility in Mind (WebAIM)](https://webaim.org/) | ||
| - [Web Content Accessibility Guides (WCAG)](https://www.w3.org/WAI/standards-guidelines/wcag/): a set of guidelines | ||
| that is considered the benchmark for web accessibility. | ||
| - [Section508.gov](https://www.section508.gov/): information related to Section 508 of the Rehabilitation Act, which is | ||
| U.S. federal legislation related to IT accessibility. | ||
| - [A11y Project Web Accessibility Checklist](https://a11yproject.com/checklist): a WCAG checklist that simplifies the | ||
| guidelines for easier review. | ||
| - [HTML_CodeSniffer](https://squizlabs.github.io/HTML_CodeSniffer/): evaluates HTML against WCAG or Section 508 | ||
| requirements. | ||
| - [AccessLint](https://www.accesslint.com): a GitHub app that includes accessibility checks in CI. As previously noted, | ||
| this should not be considered a comprehensive evaluation, bur rather one of many tools to evaluate accessibility. | ||
| - [Web Accessibility in Mind (WebAIM)](https://webaim.org/): provides training and articles in accessibility. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel like we should indeed note that
accessibilityis often shortened toa11ybut I'd prefer we use the full word in our documentation whenever we can as it reads so awkwardly otherwise.