[wp-trac] [WordPress Trac] #50512: Improve accessibility of the Plugin & Themes Auto-Updates feature

WordPress Trac noreply at wordpress.org
Mon Jun 29 17:15:04 UTC 2020


#50512: Improve accessibility of the Plugin & Themes Auto-Updates feature
-----------------------------------------------+-------------------------
 Reporter:  ryokuhi                            |      Owner:  (none)
     Type:  defect (bug)                       |     Status:  new
 Priority:  normal                             |  Milestone:  5.5
Component:  Security                           |    Version:  trunk
 Severity:  normal                             |   Keywords:  needs-patch
  Focuses:  ui, accessibility, administration  |
-----------------------------------------------+-------------------------
 The Accessibility Team made a review of the Plugin & Themes auto-updates
 feature, recently introduced into core through #50052. A few accessibility
 issues where pointed out.


 == Enable / Disable controls as links
 Currently, Enable / Disable controls are links. According to the
 [https://developer.wordpress.org/coding-standards/wordpress-coding-
 standards/accessibility/#semantics-for-controls accessibility coding
 standards (see the third row in the table)]:
 * the control should be a link when JavaScript is not available and
 * a button the rest of the time.
 According to the current implementation, instead:
 * when JavaScript is off, the links work because they have a working
 {{{href}}} attribute;
 * when JavaScript is on, the links behave like buttons, but they’re still
 perceived as links.

 A partial solution would be to add the CSS class {{{aria-button-if-js}}},
 that adds a {{{role=button}}} for these cases; this doesn't make the link-
 as-button work through spacebar as expected, though.
 To replicate the standard {{{button}}} behaviour, there's the need to:
 * add a keydown event and prevent the default action (page scrolling);
 * add a keyup event to trigger a click on the link, as native buttons are
 activated when the spacebar is released.

 A better solution would be to change the {{{link}}} element to a
 {{{button}}} element, but the class {{{aria-button-if-js}}} should be
 changed with caution because of the risk to break existing behaviour (in
 case keydown and keyup events are already attached to the link).

 Another solution might be to create a new CSS class {{{aria-button-
 behavior-if-js}}}, that can be assigned instead of {{{aria-button-if-js}}}
 whenever it is safe to do that.


 == Icons don't use aria-hidden=true
 This problem was already addressed and solved during WordCamp Europe
 Contributor Day (see #50293)


 == Button text change
 Currently, the "enabling / disabling" button text changes depending on the
 state, but it's a pattern that shouldn't be encouraged in general.

 Two possible solutions were proposed.
 1. Create two separate notifications for enabling and disabling, insert
 them after the button and then transition the text of the button after the
 event (for example, from “Enable auto-updates” to “Disable auto-updates”).
 2. Have two buttons, one for enabling auto-updates and the other for
 disabling them.

 The first solution might cause problems to some users. For example:
 * Users learn there’s a button that says “Enable auto-updates”.
 * Users do their job and enable (or disable) updates for various plugins.
 * They search again for a button named “Enable auto-updates”, because the
 UI taught them there’s such a button.
 * The button isn’t there any longer, at least apparently, because it now
 has a different name.

 The second solution means there are always two buttons and one of them is
 always disabled, since it can't be used.

 It's possible that there won't be a good solution for this specific issue
 and that it would be better to leave the interface as is.


 == Inline notifications
 There's some code for inline notifications in case of errors: it's an
 empty paragraph that probably gets filled with some error message. It
 should be tested on how the message is announced and exposed to assistive
 technologies.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/50512>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list