Open gnprice opened 3 years ago
For anyone who regularly uses a screenreader, I'd be especially interested in your feedback on what's most annoying for you in using Zulip, or thoughts on how a specific part of the UI should work, or any other aspect of this that you have something to say about :slightly_smiling_face:
Another note: the old PR #2753 contains fixes for some of the items above. In particular:
On the PM-conversations screen, if there's a group-PM thread, the initials that we use for making up an avatar get read out. They shouldn't be.
when you select a stream it says something like "Test here. Five thousand seven hundred and five." (for
#test-here
with 5705 unreads.) The number should probably say "unreads" or something. Needs playing with other apps to see what conventions are.
On the PM-conversations screen, the avatars are selectable. They shouldn't be
A good place to start would be to revive the changes from that PR.
Since I have already worked on this type of issue earlier where I added accessibility labels to the send and back button. I would like to work on this issue as well.
@Gautam-Arora24 Sounds great -- please do!
- [ ] In the nav bar on a stream or topic narrow, the
#
is selectable. It shouldn't be.
Hmm, could we revisit this a bit? I think that icon usefully conveys some important information, and it might make sense to keep it as a selectable item (but give it an accessibilityLabel
with that information if we do). If we don't make it selectable, I'd still like to convey the information, but we'd need to find another way to do it. (Perhaps by making a single selectable item out of the parent View
of the StreamIcon
and the Text
with stream.name
, and give that an accessibilityLabel
that includes the information plus the stream name.)
That information is:
Also, I notice that the subscribe/unsubscribe switches in the "All streams" tab are impossible to interact with, at least with VoiceOver on iOS.
Also, I notice that the subscribe/unsubscribe switches in the "All streams" tab are impossible to interact with, at least with VoiceOver on iOS.
@chrisbobbe The subscribe/unsubscribe switches are impossible to interact with just because the Touchable
component in StreamItem
groups its children into one accessible component. Therefore, when we use VoiceOver for a list item in the "All Streams" tab, it doesn't individually select a Switch. What are your views on this?
On iOS, I notice that in the compose box, the order of selection goes like this: "expand menu" button, "send message" button, then after that, the message-content input field. It should go from left to right: "expand menu", message-content input field, "send message" button.
Probably the misuse of FloatingActionButton
for the "send message" button is at least partly to blame. The button isn't (and shouldn't be) "floating".
We've just completed #4232 with #4355, by adding captions to two particularly critical bits of the UI. But there are still more things we should do to make using the app a good experience with a screen reader.
The essential thing for working on this issue is to take some time using the app this way -- and before that, to take some time learning how to use one of these systems, if you're not already a regular user of them. Here's the upstream guides for doing so with either Android or iOS: https://developer.android.com/guide/topics/ui/accessibility/testing https://developer.apple.com/documentation/uikit/accessibility_for_ios_and_tvos/supporting_voiceover_in_your_app
In particular, the following steps are highly educational, and essential for working in this area:
When I did that for the first time, on Android, I spent about a half-hour and learned quite a lot. As you continue working in this area, you'll keep doing more of it.
One general principle in choosing how a given widget should work is that we want things to feel natural and as-expected for people who regularly use one of these systems. So the labels we choose, and other aspects like what's selectable, what order things come in, etc., should match what other apps do, especially apps from the platform maker (Google or Apple) and other major apps.
Here's a list of some of the things we should improve or investigate (in the order I found them, not necessarily priority):
NavBarBackButton.js
) gives the right label for Android, but it should probably be something else on iOS.#test-here
with 5705 unreads.) The number should probably say "unreads" or something. Needs playing with other apps to see what conventions are.#
is selectable. It shouldn't be.Or: maybe the compose menu shouldn't open at all? And instead, we'd have a "local context menu". (At least on TalkBack.) That seems to be the way some other interactions are handled -- e.g. if you have a notification (on Android), you can do a TalkBack-specific gesture to pull up the "local context menu", which is a modal designed for efficient non-visual interaction, and use that to expand or dismiss the notification. Not sure -- experimentation needed.No, I think using the compose menu normally is the right path. That's e.g. what stock Android Messages does, and it has a fairly similar compose menu.:zulip:
emoji, which is the only example of a third kind.) Needs debugging and then fixing.