signalapp / Signal-Desktop

A private messenger for Windows, macOS, and Linux.
https://signal.org/download
GNU Affero General Public License v3.0
14.18k stars 2.59k forks source link

Accessibility Features For Assistive Technology #2711

Open munawarb opened 5 years ago

munawarb commented 5 years ago

Bug description

While the Electron app is mostly accessible because it's rendered in web page form, there are some things that the app is lacking that make it difficult to use with assistive technology such as screen-reading software. I've looked at #752 but it doesn't address specific access issues; just general guidelines. I use a screen-reader called NVDA which is free and open-source, so it can be used to test Signal accessibility. https://www.nvaccess.org/

Steps to reproduce

  1. Incoming chats should be read automatically by screen readers. In HTML 5, this is done commonly using ARIA; I don't know the Electron equivalent since my expertise aren't in Electron app development.
  2. If step 1 will require much work, what would help screen-reader users somewhat is for a sound to play when a message arrives. Right now, this can be configured by turning on notifications, but notifications only appear when the app doesn't have focus. It would be helpful to get an audio tone when a new message arrives even when focused in the chat in question. This feature, at minimum, would make the app so much more user-friendly for us because now we can hear that a new message has arrived and we need to find it.
  3. Every message should be separated by a navigation element such as a heading. This will allow screen-reader users to quickly jump from message to message. Right now, we have to arrow passed the "More info" and "Delete" options to get to the next and previous messages. However, screen-readers allow users to press H for next heading and other things similar to this, such as I and SHIFT+I to move among list items. So placing the messages in an HTML list or placing each message in a heading would help.
  4. In the reading order, there are two buttons placed after the edit field to type a new message. These buttons are unlabeled so we do not know what they are.
  5. Pressing LEFT or RIGHT ARROW when in a pull-down menu (such as File) should move to the previous and next menus; right now, the keys do nothing. Because the menu bar in the Electron app is not visible to screen-reading software, an access technology user will not be aware of the menu bar's existence unless by chance, so allowing for LEFT and RIGHT ARROW movement across the rest of the menus will allow us to discover the other menus available. A lot of us press ALT+F and hope it does something (which, thankfully, in Signal's case, it does and this was how I discovered that there was a File menu with Preferences and other items.)

Actual result:

Expected result:

Screenshots

Platform info

Signal version:

Operating System:

Linked device version:

Link to debug log

scottnonnenberg-signal commented 5 years ago

Yep, we certainly have some accessibility challenges. Thanks for spending the time to provide the details of your experience using the app with a screenreader.

Regarding the sounds, yes, we did make an explicit decision not to make a sound when a new message arrives if you are using the app. Only if you need to be notified to go load the app because you're not currently in it. It definitely makes sense that that behavior would be a challenge for you.

Surprising that the Electron-provided top-level menu isn't visible to screenreaders. We'll have to follow up with the Electron folks about that.

munawarb commented 5 years ago

Hi @scottnonnenberg-signal, Thanks for your response to this issue, and you're welcome re: providing information.

Maybe providing an Accessibility group in Options where users can turn on and off the sound for new messages while in the app will be helpful. In keeping with your current design decision, it could be turned off by default, so it'd be an opt-in feature.

I poked around in the source code a bit and see that it is indeed standard JavaScript and HTML, so perhaps looking into an ARIA live region would be good. Specifically using the aria-live="polite" attribute to automatically read a new message, as laid out here: https://developer.paciellogroup.com/blog/2014/03/screen-reader-support-aria-live-regions/

I got this answer from a somewhat outdated Stack Overflow question (they mention how ARIA support is spotty, but the answer was written in 2016 and the article I linked was written in 2014.) https://stackoverflow.com/questions/37410501/aria-tags-force-screen-reader-to-read-some-text

The answer mentions changing the text of the label. I think this will be unwise in the case of Signal and think the ARIA way is better because of the setup.

I hope this helps you and am glad at least the Signal team is aware of the issues!

munawarb commented 5 years ago

Also one more update, I've just updated Signal, and I'm not sure if it's because I've changed a setting in my screen-reader or if Signal has made a UI change, but my screen-reader is indicating that the messages are in list form. This is great, because it's allowing me to jump from list item to list item with my screen reader and quickly scroll through messages, so +1 for that!

MarcoZehe commented 5 years ago

Thanks for reporting these issues! I found similar problems the last time I tried Signal for Desktop. So I am wondering if there have been any updates since the last comment on this issue in September 2018, which is over half a year ago by now.

munawarb commented 4 years ago

Hi @MarcoZehe, I recently got an Email from Signal support asking to follow up and see if we can work together to fix the issues, so I'm going to take them up on it and see where we get.

I'm glad they're active about it. I'll update this issue as the support ticket progresses. They specifically mentioned Voiceover though so not sure if the ticket will resolve desktop issues, but it's worth a shot.

MarcoZehe commented 4 years ago

I got the same request, however since it mentions VoiceOver, and I am no longer an iOS user, I am not sure whether I should contact them, too. I use Android now.

mikolysz commented 4 years ago

There have been some changes to the state of accessibility on desktop recently.

  1. Electron seems to have been updated to a later version that fixes the menu bar issue. The menu bar now works as intended. You can consider this problem fixed.

  2. One of the recent Signal updates caused a regression, and the messages aren't laid out as list items any more. This is important, as screen reader users have special commands to move between list items. This allowed us to jump through messages very quickly. Now, the messages are nothing more than a large block of text, which is hard to navigate through, especially when long or voice messages are involved. Voice messages are represented as more than one control, so navigating with up/down arrows is cumbersome and inefficient. I would appreciate if this was fixed somewhat soon, as I use Signal daily, and this makes it way worse than it was before. Sorry I can't git bisect and figure out which commit caused the regression, but I'm low on disk space and there's no way I can install all those build tools.

Also adding that aria live region would definitely be appreciated. It's basically a one-line change, just add the aria-live="polite" attribute to the area containing all the messages and you're done. I'd gladly do it myself but I can't, see reasons above.

One more thing to consider when accessibility is concerned is adding the ability to pair with something else than a QR, preferably a code we could type. Scanning a QR is very hard for blind people. It often involves lots of blindly waving the camera and hoping for the best. I'm experienced in doing this now and can do it in under a minute, but when I was doing it for the first time, it was like 10 mins. I know at least a few people who couldn't do this at all, as they just don't have a monitor. There are some people who own PCs, but just don't plug in a display, as they don't really need one.

munawarb commented 4 years ago

Agreed with @devil418. I no longer see the messages in a list form.

Scanning the QR code is no issue though. What you can try is maximizing your Signal window. Your camera will eventually pick up the code.

I do feel like the latest version of Signal Desktop is far more in accessible than previous versions. Yes, the menu bar problem is corrected but other things have broken.

I think they do have an ARIA live region now but it seems to be surrounding the whole message history instead of the latest message, since my screen reader reads the entire message history when I get a new message.

I'm probably going to fork this repo and see if I can fix some of these things in a PR.

MarcoZehe commented 3 years ago

I See some improvements in the current Signal for Desktop, especially when not using the virtual cursor of NVDA or JAWS, or when using a Mac with VoiceOver. However is there a new issue tracking recent work? Any PRs I could follow? What's the plan?

Simon818 commented 1 year ago

Really sad to see that messages are still not back to being list items. That and the in-app sound are probably the most important changes for us and also the easiest to implement. I can create separate issues for the remaining accessibility barriers if it would help separate things a little; I know this is not great organizationally.