Skip to content
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

Feat/wcag-checklist2194: added new wcag page #2202

Open
wants to merge 14 commits into
base: master
Choose a base branch
from

Conversation

amandadupell
Copy link
Contributor

@amandadupell amandadupell commented Jan 11, 2022

Deploy Preview

What does this PR do?

Adds new WCAG checklist page with Global Code section and WCAG checklist section to the Accessibility page.

Where should the reviewer start?

Accessibility page and WCAG page

What testing has been done on this PR?

Manual

In addition to the feature you are implementing, have you checked the following:

General UX Checks

  • Small, medium, and large screen sizes
  • Cross-browsers (FireFox, Chrome, and Safari)
  • Light & dark modes
  • All hyperlinks route properly

Accessibility Checks

  • Keyboard interactions
  • Screen reader experience
  • Run WAVE accessibility plugin (Chrome)

Code Quality Checks

  • Console is free of warnings and errors
  • Passes E2E commit checks
  • Visual snapshots are reasonable

How should this be manually tested?

Run locally or deploy link

Any background context you want to provide?

What are the relevant issues?

#2194 #2191 #1816

Screenshots (if appropriate)

Should this PR be mentioned in Design System updates?

Yes

Is this change backwards compatible or is it a breaking change?

Compatible

@amandadupell amandadupell linked an issue Jan 11, 2022 that may be closed by this pull request

No. There is no such thing as a "100%" accessible product. However, this checklist prompts designers and developers to check for coverage of a wide range of disability conditions. Addressing these issues will improve experiences for all users who access your product and increase overall accessibility.

## Global Code
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not familiar with the term "global code" in this context.
Can you share more about its meaning? Is there a resource you can send me?

I was expecting this to be labeled something like "Checklist".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This entire page is serving as the checklist with a brief introduction and the main headers being the sections the checklist will be divided into. I wasn't sure about having another header on the page be "Checklist" if the entire page serves as the checklist.

I think we will need a table of contents moving forward as it gets longer also since there will be a lot of sections.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mentioned this below, but it'd be nice to see the overall content outline for this page (sans detail). This will help with content hierarchy, headings and such.


Global code affects an entire website or product application.

export const globalCodeOptionsObjects = [
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should place this in the /examples/foundation/accessibility/... directory as opposed to in the .mdx file. Other pages have created a data.js file for similar purposes. See "tag" as an example.

category: 'Philosophy',
cardOrder: 3,
description: `A checklist for ensuring a product's accessibility is up
to WCAG 2.1 standards.`,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we link to WCAG 2.1 here?

import { getPageDetails, getRelatedContent, nameToPath } from '../../utils';
import { CardGrid } from '../../components';

export const wcagChecklistCard = [getPageDetails('WCAG Checklist')];
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this being exported here? Where is it being consumed other than this file?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like it should be placed in examples/foundation/accessibility

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using export in MDX is the convention for using variables/JSX in the same .mdx file that it's created in. If we want to avoid any variables/JSX being created directly in .mdx files, then I agree with moving it to the examples folder.


The following checklist is a resource for researchers, designers and developers to use to check their product's accessibility. It uses the Web Content Accessibility Guidelines (WCAG) 2.1 as a reference point, as the WCAG is a shared accessibility standard for individuals, organizations and governments worldwide.

<CardGrid cards={wcagChecklistCard} />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like it should be placed in examples/foundation/accessibility and imported for use here.

Comment on lines +5 to +6
1. **A: Essential**
- If this is not met, assistive technologies will not be able to aid in reading, understanding or operating the page or product.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The formatting of this list has a lot going on with the numbering, A-level and sub-bullets.

This might be a candidate to move to a component implementation.

Text,
} from 'grommet';

export const Checklist = ({ optionsObjects }) => (
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have designs you are referencing for this checklist implementation? This feels like a pattern I haven't seen before and I have the following reactions:

  • Do we need the show/collapse treatment?
  • I was not able to use the keyboard to check/uncheck.
  • I found the screen reader experience difficult.
  • I am wondering if we should be using here, where each list item contains a checkbox, title, description, and url. resolves to an which does not seem right.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The design pattern came mostly from the checklist that I took inspiration from: https://www.a11yproject.com/checklist/ which has a show/collapse for more information and a link to the success criterion. I think we could work with not having the show/collapse and instead just having a list of checkboxes with a title, description and url. Wanted to get some initial feedback on this pattern before moving forward.

The screen reader experience was one that I am still working with, as I made note of the way the screen reader is reading aloud the icons and not allowing the check/uncheck behavior.

Comment on lines +20 to +21
const announce = useContext(AnnounceContext);
const size = useContext(ResponsiveContext);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like that you are experimenting with each of these.

return (
<Box direction="row">
<Box direction="row" gap="medium" pad="xsmall">
<Check
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't seem right. We should be consuming the Design System's Checkbox instead of reinventing it here.


export const globalCodeOptionsObjects = [
{
value: 'Validate your HTML by avoiding significant parsing errors.',
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are we using for reference to create this list? Can you share where you are sourcing / getting inspiration from?

The presentation order seems a bit jumbled and isn't flowing for me. Can we group / order in a more intuitive manner? I am having trouble following.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is the inspiration: https://www.a11yproject.com/checklist/

For this section in particular, I am taking from their grouping of items that relate to "global code" or the code that affects the entire page or product. These are usually easy and fast things to check first for overall functionality. Ensuring these things are in order would be a good first pass at the accessibility of the site.

Moving forward, the next sections will continue to draw inspiration from this checklist but I am cross referencing with more checklists that I have looked into to determine the best way to break up the WCAG:

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd be interested in seeing the bullet-pointed "outline" of the checklist to get a sense of the vision. It doesn't (nor shouldn't) have all the detail at this stage, rather it serves as a roadmap for what this checklist might look like.

@taysea
Copy link
Collaborator

taysea commented Jan 12, 2022

Matt gave some good pointers related to code-specifics, so I would second many of his comments there.

I think a broader question I have is thinking about what we are hoping to solve by adding this page on the site. I love the idea of having a tangible checklist that teams can reference when developing and testing their applications. However, some questions that come to mind as I'm looking at this are:

  1. Is this checklist fairly stable or are rules often added / changed? Just thinking ahead to maintainability of us writing this checklist ourselves. I also know that Lauren Britton had begun some work with the Bills on creating an accessibility checklist that would span various stages of product design/development cycles -- do you know the status of any of that? just want to loop in that work potentially if there is any momentum.

  2. Currently, when I refresh the page all my checkmarks are lost vs on the A11Y Project the checkmarks persist even when I close and re-open the window. Saying this to prompt the question of "What is the best format to provide this checklist in?" I assume a team will not be able to go through the entire checklist in a single session.

@amandadupell
Copy link
Contributor Author

Matt gave some good pointers related to code-specifics, so I would second many of his comments there.

I think a broader question I have is thinking about what we are hoping to solve by adding this page on the site. I love the idea of having a tangible checklist that teams can reference when developing and testing their applications. However, some questions that come to mind as I'm looking at this are:

  1. Is this checklist fairly stable or are rules often added / changed? Just thinking ahead to maintainability of us writing this checklist ourselves. I also know that Lauren Britton had begun some work with the Bills on creating an accessibility checklist that would span various stages of product design/development cycles -- do you know the status of any of that? just want to loop in that work potentially if there is any momentum.
  2. Currently, when I refresh the page all my checkmarks are lost vs on the A11Y Project the checkmarks persist even when I close and re-open the window. Saying this to prompt the question of "What is the best format to provide this checklist in?" I assume a team will not be able to go through the entire checklist in a single session.

i brought spoke to bill today about working with lauren and he forwarded along the checklist that they worked on here: https://hpe.sharepoint.com/:x:/t/hpe-design/EQCuEhbnzChIvPdyxmAh63MBvUO7d6no5eGwIZ0brfiKHQ?e=j5Indu

this list seems to be focused on questions people should ask themselves as they work and review their product. i think we could use some of these questions as a pre-cursor to the actual WCAG-aligned checklist.

in terms of management, this list would only need to be updated as new versions of the WCAG are published. they aren't released often and they are always backwards compatible so this list would potentially only expand to the new rules and criteria that is added. some more about how stable the wcag is here: https://www.w3.org/WAI/standards-guidelines/wcag/faq/#done

for your second point, i was wondering how we could store the checklist state or allow for users to clear entire sections. i agree that people would probably not be able to go through the entire checklist in one sitting, so i think persisting the checked items would make sense with allowing for quick clearing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Start and Add Global Code Section for WCAG Rules
3 participants