-
Notifications
You must be signed in to change notification settings - Fork 12
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
va-process-list-item: move status eyebrow into header so that it gets read by screen readers #1437
Conversation
… read by screen readers
{header ? <HeaderLevel part="header" class='usa-process-list__heading'>{header}</HeaderLevel> : null} | ||
{header || status ? ( | ||
// aria-label hack to avoid header being read twice in voiceOver | ||
<HeaderLevel part="header" class='usa-process-list__heading' aria-label={`${status ? `${statusTextMap[status]}: ` : ''}${header}`}> |
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.
In VoiceOver when there are multiple elements in the header it will read it as "Header level 3; two items;" and repeats the heading text multiple times. The aria-label
in the header and aria-hidden
on the container fixes this issue, but it seems like there should be a better solution? @rsmithadhoc do you have a suggestion?
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 tested in other screen readers, JAWS didn't recognize the headings at all. I'll take a look and see if there's a better solution.
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.
@powellkerry
I think the original HTML may be the way to go here.
<h2>
<span></span>
<span></span>
</h2>
When reading the page, I see that VoiceOver reads the heading, then repeats the 2 items within the heading, like you said. But when using the command to read the next heading it only reads it once and using the headings menu it only reads it once, as expected.
While not ideal for VoiceOver, we may have to accept it for now. It may be confusing, but I don't think it would hinder the user in navigating the page. JAWS and NVDA only read it once when reading the page. I also tested them reading next heading or using their headings menu and it also functioned as intended with the original HTML.
I think the HTML is fine in the original way, so VoiceOver should be able to handle it. I think it also keeps things much simpler and should work in a wider range of places, as aria-hidden
can cause some issues, like I saw with JAWS.
Thanks!
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.
Development looks good to me!
Chromatic
https://98739-proc-list-eyebrow-acc--65a6e2ed2314f7b8f98609d8.chromatic.com
Description
This PR moves the status eyebrow text inside the header so that it doesn't get skipped by screen readers.
* moving the eyebrow into the header caused the color of the eyebrow in the current step to be blue. I overrode this so that they are #3d4551
Closes 98739
QA Checklist
Screenshots
No visual differences:
Before:
After:
Acceptance criteria
Definition of done