ucfopen / crossword-materia-widget

A Materia quiz and study tool that uses words and clues to randomly generate a crossword puzzle
GNU Affero General Public License v3.0
2 stars 7 forks source link

Issue/52 player accessibility overhaul #53

Closed clpetersonucf closed 11 months ago

clpetersonucf commented 1 year ago

This is a rework of the Crossword player's accessibility implementation to be more in line with WCAG 2.0 requirements. It includes:

cayb0rg commented 1 year ago

Really like this implementation. Keyboard navigation feels good. I think the down key for word options feels especially intuitive. The aria labels, descriptions, and live regions are also great. Some things I found:

clpetersonucf commented 11 months ago

Additional updates:

"Let it ride" issues or could not resolve:

Final todos:

clpetersonucf commented 11 months ago

Final (?) tweaks:

FrenjaminBanklin commented 11 months ago

Agree with Cay's points. I also think it might be a good idea to tweak the spacing of the intro/tutorial text and left-align the paragraphs just so everything looks a bit more uniform.

You already made a note about some of these, but for the sake of completion I'll mention them again anyway. The few remaining things I noticed that are kinda weird/confusing/inconvenient but are ultimately still pretty minor:

Not sure how much control we really have over what order the screen reader reads things in, and the problems are generally pretty minor but I could still see unsighted users getting a little confused. Since we're already updating the aria-live region to read out the location of the cursor when it moves, maybe we could also figure out a way to bypass the usual 'read the letter' behavior and just add the last typed letter to the aria-live readout?

It might also be nice to indicate when a cell is part of another word since it will already have a value when users tab into it, but I could also see that being extraneous/confusing information for a person who can't see the layout anyway.

clpetersonucf commented 11 months ago

Updated the intro dialog layout slightly, added aria-hidden to the <aside /> containing the tutorial image, and added a toolbar button to display the intro dialog.

The remaining items may fall under the "let it ride" category. I experimented with reading out the just-typed letter through the live region, but the screenreader opts to concatenate previously typed letters together, so it attempts to read out the word or phrase at it exists so far. I found the behavior moderately confusing, so I'm not entirely convinced it's better than the current behavior.

FrenjaminBanklin commented 11 months ago

The screen reader tripping a bit over what order it reads things in when typing a letter into a slot is probably fine for now, if not ideal. The intro dialog looks better - the keyboard instructions dialog is fine but might also look a bit more put-together if it gets the same treatment as the intro window.

I'm also just now noticing that the player gets a little weird when the user tabs into a cell that is shared by two words.

In the demo, for example, tabbing through the letters of the 'Stonehenge' question will quickly land on a cell that is shared with the 'The White House' question - but instead of reading out 'Character position 2 of 10' followed by the text for the 'Stonehenge' question it reads out 'Character position 8 of 15' followed by the text for the 'The White House' question. I don't think this is a huge deal necessarily, but it could be confusing if a non-sighted user all of a sudden winds up in a different spot of a different question that they weren't expecting because they can't see the overlap.

clpetersonucf commented 11 months ago

Good catch. The aria-describedby attribute in intersection character spaces will now update depending on the currently selected word/direction.