standards-support
standards-support copied to clipboard
Electron: Grid header cells aren't announced when focus is moved in the table body
Summary
This is specific to web code hosted in the Electron framework, which ultimately uses Chromium to do the rendering and communicate accessibility information. I'm not sure if the behavior below is intentional, so let me know if this is expected.
When WAI-ARIA Authoring Practices Data Grid Examples is hosted in electron-quick-start, moving focus in the grid examples won't have the header cells be read out.
- Clone electron-quick-start to a local folder.
- Use the instructions in the repository README to start the application.
- Ctrl+Shift+I to open developer tools.
- In the console, set
window.location.href = "https://www.w3.org/TR/wai-aria-practices/examples/grid/dataGrids.html"
- Open JAWs 2022.
- Move focus into any of the cells in the grid's body.
- Move focus to the cell directly to the right using the right arrow key.
Expected result
The cell contents and the header for that cell would be read.
Actual result
Only the cell contents were read.
Example
- Launch WAI-ARIA Authoring Practices Data Grid Examples in Electron using the instructions above.
- Move focus to the cell '01-Jan-16' in the first grid on the webpage.
- Activate the right arrow key.
- 'Deposit' is announced, but not the 'Type' header cell.
Additional Information
This workflow behaves as expected with JAWs 2022 + Chrome, JAWs 2021 + Electron, and NVDA + Electron. Using Accessibility Insights for Windows, I believe that Electron is doing the right thing here, too - GetCurrentColumnHeaderItems and GetCurrentRowHeaderItems seem to return the expected values.
JAWS version and build number
Version 2022.2202.38 ILM Version 2022.2204.20 ILM
Operating System and version
Microsoft Windows 10 Enterprise Version: 10.0.19042 Build 19042
Browser and version:
Electron Version 18.0.0-beta.5. (This version of Electron uses Chromium 100.0.4894.0)
After a meeting between Epic Systems and some people from the JAWS development team, it turns out that JAWS + Electron interactions have a complicated history. Electron used to be treated the same as Chrome, but due to various electron apps wanting to have slight deviations in behavior, this ended up being a complex problem resulting in behavior like the above. This is still a problem they are trying to solve.
A workaround is to pretend that your application name is the same as Chrome's. More specifically, setup your ConfigNames.ini file to have a line that looks like this, where YourApplicationName
is, well, the name of your application:
YourApplicationName=chrome
I'm leaving this open for now since I'm not sure if this should still be considered a bug or not - I'm not sure if pretending that our application has a different name is a good long-term solution. Feel free to close if you disagree.