Skip to content
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

SIEM app accessibility issues #64596

Open
snide opened this issue Apr 27, 2020 · 1 comment
Open

SIEM app accessibility issues #64596

snide opened this issue Apr 27, 2020 · 1 comment
Assignees
Labels
Project:Accessibility Team: SecuritySolution Security Solutions Team working on SIEM, Endpoint, Timeline, Resolver, etc. Team:SIEM

Comments

@snide
Copy link
Contributor

snide commented Apr 27, 2020

As SIEM moves closer to GA I thought it might be helpful to write up some of the bigger gotchas the app has in terms of accessibility. This is by no means an exhaustive list, and instead covers the really big breaks that prevent the app from being used at all by a Keyboard or Screenreader driven experience:

The drag and drop system is a dead end

SIEM relies on drag and drop to bring content to the timeline. It breaks in the following ways:

  1. You can't put any of these elements into the timeline using your keyboard.
  2. The default key commands for drag and drop work and announce, but don't actually do anything.

The timeline itself is inaccessible by keyboard

As far as I can tell you can't actually open the timeline flyout using your keyboard.

The timeline doesn't trap focus or provide context

Assuming that you got the timeline up. It doesn't actually trap the focus. There is no real indication or structure to the layout of where you are. No headings, role usage or dialog to screenreaders. Several of the navigation items within the timeline have trouble with focus (options gear as an example)

The core timeline experience has lots of issues

  • Once the timeline is up, the same drag and drop problems exist in the results. While the DnD elements are selectable, and give feedback to screen-readers they can do things, they don't actually do anything.
  • The filter bar has almost no screenreader context. Lots of generic buttons.
  • Lots of the buttons don't receive focus and have no proper context to their actions

Issues in the table itself

  • The column headers have duplicate button states and have the same DnD issues
  • Focus state within the tables seems to have a lot of problems. You can't seem to use the mouse to create focus.
  • The grouped filtering actions can't be triggered from the keyboard (the magnifying glass stuff)
  • The rows don't announce with any context. Repeated content like "expand" and "pin" are generically announced.
  • It is nearly impossible to tab through beyond the table because of the number of action items. Likely could use some skip links here.
  • The customize columns popover doesn't trap focus and has quite a few issues. In general though nothing seems to be labeled and there's no context for screenreaders.

I think at a certain point it might be good for the team to have an intro to accessibility session with @myasonik on how some of these issues might be addressed.

@elasticmachine
Copy link
Contributor

Pinging @elastic/siem (Team:SIEM)

@MindyRS MindyRS added the Team: SecuritySolution Security Solutions Team working on SIEM, Endpoint, Timeline, Resolver, etc. label Oct 27, 2020
@andrew-goldstein andrew-goldstein self-assigned this Oct 29, 2020
andrew-goldstein added a commit to andrew-goldstein/kibana that referenced this issue Dec 14, 2020
…(a11y) Improvements

This PR improves the accessibility of Timeline and the draggables used throughout the Security Solution.

- ⌨️ Keyboard support for all draggables
  - 🖱 Click on any draggable with the mouse to give it keyboard focus

  - 🕵️‍♀️ Press `Enter` to display the draggable's action / options menu (e.g. Filter value, Investigate in Timeline, Show Top N). The menu also displays hyperlinks to allow for keyboard navigation from draggables containing links.

  - 🚀 Press `Space` to start dragging via keyboard, and press `Space` again to drop

- 🏓 Timeline, + all Timeline-based tables (i.e. Detections, Host / Network Events, External alerts) support keyboard navigation
  - ⬆️ ⬇️ ⬅️ ➡️ arrow key navigation per the `Keyboard Support` section of [w3.org grid examples](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html)

  - 📉 📈 `page down` and `page up` support per the `Keyboard interactions` section of the [MDN ARIA grid role documentation](<https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Grid_Role>) (and also the [w3](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html))

  - 🏠 🔚 `home` and `end` moves focus to the first and last cell in the row, per [w3.org](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html) & [MDN](<https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Grid_Role>)

  - 🕹🏠 🕹🔚 `ctrl + home` and `ctrl + end` moves focus to the first and last cell in the row, per [w3.org](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html) & [MDN](<https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Grid_Role>)

- 🎉 Screenreader improvements for Timeline, + all Timeline-based tables, and draggables (tested with Voiceover for `macOS` version `10.15`)

  - 👂 Draggables implement custom screenreader announcements. For example, when a draggable field is selected, the screenreader reads a custom message that reads the _field name_ in addition to the value, to provide additional context. For example, selecting a field named `network_flow` may be read phonetically by the screen reader as:
  > event.action network underscore flow Press enter for actions, or press space to begin dragging

  - 📅 Timeline, + all Timeline-based tables provide an enhanced screenreader experience via the use of `EuiScreenReaderOnly` and [w3 grid roles](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html) to provide context. For example, after clicking an arrow key to select a cell, the screenreader reads:

  > You are in a table cell. row: 2, column: 5, event.module system Press enter for options, or press space to begin dragging.

  ![you-are-in-a-table-cell](https://user-images.githubusercontent.com/4459398/102074207-a7e95000-3dc1-11eb-8e01-5b14c72094c9.png)

  - 📰 Timeline's table supports Voiceover screenreader shortcuts that read all cells across a row, or all rows down a column. See <elastic#83364> for details

  - 🍿 popovers and tooltips were enhanced via `EuiScreenReaderOnly` to provide additional context to screen readers

- 🪓 The [axe - Web Accessibility Testing Chrome extension](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd) was run interactively throughout the Security Solution to find and fix the highest-severity issues found by `axe`

- 🧹 Other keyboard-related improvements include

  - The `Customize Columns` popover traps keyboard focus, and allows navigation of content via arrow keys & home / end

  - The `Event details` view allows navigation of content via arrow keys & home / end

  - Improvements to keyboard-focus trapping in popovers throughout the Security Solution

This PR addresses the following issues:

- [X] [[Security Solution] Add support for Voiceover announcements In Timeline's table elastic#83364](elastic#83364)

- [X] [[Security app] Detections events list 'overflow' ... button and expand > button do not have hover over names elastic#74140](elastic#74140)

- [X] [SIEM app accessibility issues elastic#64596](elastic#64596)

- After merging with the _Timeline Evolution_ PR, the drop zone at the bottom of the screen stopped accepting draggables after the first draggable is dropped. The current workaround is to press `Enter` to open the draggables action menu, and select the `Investigate in timeline` action. When Timeline is open, the drag area at the top of the screen accepts additional draggables via keyboard.
andrew-goldstein added a commit that referenced this issue Dec 16, 2020
…11y) Improvements (#85767)

# [Security Solution][Timeline] Timeline and Draggable Accessibility (a11y) Improvements

This PR improves the accessibility of Timeline and the draggables used throughout the Security Solution.

- ⌨️ Keyboard support for all draggables
  - 🖱 Click on any draggable with the mouse to give it keyboard focus

  - 🕵️‍♀️ Press `Enter` to display the draggable's action / options menu (e.g. Filter value, Investigate in Timeline, Show Top N). The menu also displays hyperlinks to allow for keyboard navigation from draggables containing links.

  - 🚀 Press `Space` to start dragging via keyboard, and press `Space` again to drop

- 🏓 Timeline, + all Timeline-based tables (i.e. Detections, Host / Network Events, External alerts) support keyboard navigation
  - ⬆️ ⬇️ ⬅️ ➡️ arrow key navigation per the `Keyboard Support` section of [w3.org grid examples](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html)

  - 📉 📈 `page down` and `page up` support per the `Keyboard interactions` section of the [MDN ARIA grid role documentation](<https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Grid_Role>) (and also the [w3](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html))

  - 🏠 🔚 `home` and `end` moves focus to the first and last cell in the row, per [w3.org](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html) & [MDN](<https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Grid_Role>)

  - 🕹🏠 🕹🔚 `ctrl + home` and `ctrl + end` moves focus to the first and last cell in the row, per [w3.org](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html) & [MDN](<https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Grid_Role>)

- 🎉 Screenreader improvements for Timeline, + all Timeline-based tables, and draggables (tested with Voiceover for `macOS` version `10.15`)

  - 👂 Draggables implement custom screenreader announcements. For example, when a draggable field is selected, the screenreader reads a custom message that reads the _field name_ in addition to the value, to provide additional context. For example, selecting a field named `network_flow` may be read phonetically by the screen reader as:
  > event.action network underscore flow Press enter for actions, or press space to begin dragging

  - 📅 Timeline, + all Timeline-based tables provide an enhanced screenreader experience via the use of `EuiScreenReaderOnly` and [w3 grid roles](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html) to provide context. For example, after clicking an arrow key to select a cell, the screenreader reads:

  > You are in a table cell. row: 2, column: 5, event.module system Press enter for options, or press space to begin dragging.

  ![you-are-in-a-table-cell](https://user-images.githubusercontent.com/4459398/102074207-a7e95000-3dc1-11eb-8e01-5b14c72094c9.png)

  - 📰 Timeline's table supports Voiceover screenreader shortcuts that read all cells across a row, or all rows down a column. See <#83364> for details

  - 🍿 popovers and tooltips were enhanced via `EuiScreenReaderOnly` to provide additional context to screen readers

- 🪓 The [axe - Web Accessibility Testing Chrome extension](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd) was run interactively throughout the Security Solution to find and fix the highest-severity issues found by `axe`

- 🧹 Other keyboard-related improvements include

  - The `Customize Columns` popover traps keyboard focus, and allows navigation of content via arrow keys & home / end

  - The `Event details` view allows navigation of content via arrow keys & home / end

  - Improvements to keyboard-focus trapping in popovers throughout the Security Solution

This PR addresses the following issues:

- [X] [[Security Solution] Add support for Voiceover announcements In Timeline's table #83364](#83364)

- [X] [[Security app] Detections events list 'overflow' ... button and expand > button do not have hover over names #74140](#74140)

- [X] [SIEM app accessibility issues #64596](#64596)

- After merging with the _Timeline Evolution_ PR, the drop zone at the bottom of the screen stopped accepting draggables after the first draggable is dropped. The current workaround is to press `Enter` to open the draggables action menu, and select the `Investigate in timeline` action. When Timeline is open, the drag area at the top of the screen accepts additional draggables via keyboard. EDIT: I paired with @XavierM on this, and he has a fix for this issue (duplicate draggable IDs) in his PR.
andrew-goldstein added a commit that referenced this issue Dec 16, 2020
…11y) Improvements (#85767) (#86081)

# [Security Solution][Timeline] Timeline and Draggable Accessibility (a11y) Improvements

This PR improves the accessibility of Timeline and the draggables used throughout the Security Solution.

- ⌨️ Keyboard support for all draggables
  - 🖱 Click on any draggable with the mouse to give it keyboard focus

  - 🕵️‍♀️ Press `Enter` to display the draggable's action / options menu (e.g. Filter value, Investigate in Timeline, Show Top N). The menu also displays hyperlinks to allow for keyboard navigation from draggables containing links.

  - 🚀 Press `Space` to start dragging via keyboard, and press `Space` again to drop

- 🏓 Timeline, + all Timeline-based tables (i.e. Detections, Host / Network Events, External alerts) support keyboard navigation
  - ⬆️ ⬇️ ⬅️ ➡️ arrow key navigation per the `Keyboard Support` section of [w3.org grid examples](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html)

  - 📉 📈 `page down` and `page up` support per the `Keyboard interactions` section of the [MDN ARIA grid role documentation](<https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Grid_Role>) (and also the [w3](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html))

  - 🏠 🔚 `home` and `end` moves focus to the first and last cell in the row, per [w3.org](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html) & [MDN](<https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Grid_Role>)

  - 🕹🏠 🕹🔚 `ctrl + home` and `ctrl + end` moves focus to the first and last cell in the row, per [w3.org](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html) & [MDN](<https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Grid_Role>)

- 🎉 Screenreader improvements for Timeline, + all Timeline-based tables, and draggables (tested with Voiceover for `macOS` version `10.15`)

  - 👂 Draggables implement custom screenreader announcements. For example, when a draggable field is selected, the screenreader reads a custom message that reads the _field name_ in addition to the value, to provide additional context. For example, selecting a field named `network_flow` may be read phonetically by the screen reader as:
  > event.action network underscore flow Press enter for actions, or press space to begin dragging

  - 📅 Timeline, + all Timeline-based tables provide an enhanced screenreader experience via the use of `EuiScreenReaderOnly` and [w3 grid roles](https://www.w3.org/TR/wai-aria-practices-1.1/examples/grid/dataGrids.html) to provide context. For example, after clicking an arrow key to select a cell, the screenreader reads:

  > You are in a table cell. row: 2, column: 5, event.module system Press enter for options, or press space to begin dragging.

  ![you-are-in-a-table-cell](https://user-images.githubusercontent.com/4459398/102074207-a7e95000-3dc1-11eb-8e01-5b14c72094c9.png)

  - 📰 Timeline's table supports Voiceover screenreader shortcuts that read all cells across a row, or all rows down a column. See <#83364> for details

  - 🍿 popovers and tooltips were enhanced via `EuiScreenReaderOnly` to provide additional context to screen readers

- 🪓 The [axe - Web Accessibility Testing Chrome extension](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd) was run interactively throughout the Security Solution to find and fix the highest-severity issues found by `axe`

- 🧹 Other keyboard-related improvements include

  - The `Customize Columns` popover traps keyboard focus, and allows navigation of content via arrow keys & home / end

  - The `Event details` view allows navigation of content via arrow keys & home / end

  - Improvements to keyboard-focus trapping in popovers throughout the Security Solution

This PR addresses the following issues:

- [X] [[Security Solution] Add support for Voiceover announcements In Timeline's table #83364](#83364)

- [X] [[Security app] Detections events list 'overflow' ... button and expand > button do not have hover over names #74140](#74140)

- [X] [SIEM app accessibility issues #64596](#64596)

- After merging with the _Timeline Evolution_ PR, the drop zone at the bottom of the screen stopped accepting draggables after the first draggable is dropped. The current workaround is to press `Enter` to open the draggables action menu, and select the `Investigate in timeline` action. When Timeline is open, the drag area at the top of the screen accepts additional draggables via keyboard. EDIT: I paired with @XavierM on this, and he has a fix for this issue (duplicate draggable IDs) in his PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Project:Accessibility Team: SecuritySolution Security Solutions Team working on SIEM, Endpoint, Timeline, Resolver, etc. Team:SIEM
Projects
None yet
Development

No branches or pull requests

4 participants