Tested on WordPress 4.2-alpha
Summary of the result at the bottom of this post.
- Kim van Iersel
- Gabriela Nino de Rivera
- Tina Tedesco
- Malgorzata Mlynarczyk
- Greg Wocher
- Jeff de Wit
- Petra de Jong
Go to Dashboard > Plugins > Add New
Add a new plugin (any plugin, witch one doesn’t matter)
Can you add a plugin and also is it clear what happens for a screen reader user.
Go to Dashboard > Plugins > Installed plugins
Can you also test updating an already uploaded plugin.
Kim van Iersel
When I clicked on a plugin, after the name appeared some message which implied that the plugin should be installed. I thought it was not clear because I’m used to read this info below/with the heading. Now there was no notice that plugin was downloaded and installed. I went to the plugins, the list of installed plugins and there it was, activated and all!
For me personally, there is little information about the process and results.
Gabriela Nino de Rivera:
NVDA for Windows XP and FireFox, VoiceOver OS X Yosemite 10.10.2 and Safari. Extensions for Firefox: WAVE toolbar, Web developer toolbar and Jim Thatcher favelets. Firefox Inspector for manual code review.
From Dashboard > Plugins > Add New page, there are two ways for adding a new plugin: first one is clicking on the “Install now” button available with the plugin information.
The second one is to chose “more details” where an “Install now” button is at the bottom of the popup frame.
Before adding a plugin, the user needs to search for it. The user might or might not know the plugin’s name. I’m not sure if the process for searching a plugin is in the scope of this test, so I’ll try to be short.
Searching for a plugin
To search for a plugin, the user can sort by category or use the search tool on the page.
A list of five categories are available for the user (featured, popular, recommended, favorites and Beta testing). After being redirected to the category page, the user it is not notified where she is. The focus is moved at the beginning of the page, the user need to come back where she were. There is only a visual indication so NVDA and VoiceOver can’t tell the user current location.
The search tool form it is a little bit confusing. When using the search tool, NVDA and VoiceOver will recognize that there is an input text, but it seems that the association between the label and the input is missing. This could be maybe occasioned by the hidden objects on the form.
<form class="search-form search-plugins" method="get">
<input type="hidden" value="search" name="tab"></input> <label><span class="screen-reader-text">Search Plugins</span>
input class="wp-filter-search" type="search" placeholder="Search Plugins" value="" name="s"></input></label>
input id="search-submit" class="button screen-reader-text" type="submit" value="Search Plugins" name=""></input></form>
- Inputs are missing an id attribute
- Label is missing the for attribute to make the association with the input.
There is a select menu on the search form that it appears when a search is done. This select menu is missing a label, so when the focus is on this element, NVDA and VoiceOver won’t give any extra information than “keyword popup button” or “select menu keyword”.
<select id=”typeselector” name=”type”>
<option selected=”selected” value=”term”></option>
<option value=”tag”></option> </select>
Adding a plugin
Clicking on the “Install now” button available with the plugin information
When adding a plugin from the button “install now”, even if the focus on this element, none of the two screen readers notifies the user about the progress or the installation confirmation. The feedback is only visual.
Clicking on the “Install now” button at the bottom of the “More details” popup information
If the user decides to add a plugin from the “install now” button on more details, she will be redirected to a confirmation page where she can easily have feedback about the installation.
When an error happens the focus is not moved to the error element, so the user can not know about it unless she moves to the top and read again the page with the screen reader. Errors are only identified visually: by a red line at the left of the text.
When the error is written in other languages, it does not seems to be using the lang attribute to specify the language of the text.
I tried installing a plug in and received no information from my screen reader. It did not seem like anything happened. I received no message or additional information.
I was able to add a plugin using keyboard only, and using a screen reader (NVDA in Firefox and Chrome). However, I did notice few issues:
There’s a missing <h3> heading. I’d probably place this heading somewhere at the beginning of <div class=”tablenav top”> container, and set its value to a currently selected plugins category (as shown in <ul class=”filter-links”>). So, for example, if the page is showing “Popular” plugins, this heading should be <h3>Popular plugins</h3> (this heading can be hidden from sighted users).
At the moment the selected category of plugins (‘Featured’, ‘Popular’, ‘Recommended’, etc) is only indicated using visual cues (border-bottom and different text colour). Screen reader users don’t know which page they are viewing when browsing through that list of links. The currently viewed page shouldn’t really be a link (because it’s only linking to itself), and/or maybe it would be useful to add some text to the selected one (hidden from sighted users).
For example, on the page showing ‘Popular’ plugins, the list could look like this:
On most of the ‘Add Plugins’ pages the search area only contains one input field (‘Search plugins’). However, on the ‘Search results’ page there’s an extra field, a dropdown list. That dropdown list has no label. It should be labeled, for example:
<label for="typeselector"><span class="screen-reader-text">Search plugins by: </span></label>
<select id="typeselector" name="type">
<option selected="selected" value="term">Keyword</option>
<label for="search-text"><span class="screen-reader-text">Enter word or phrase:</span>
<input type="search" value="form" name="s" ffpdm="gff6ot1hm6l5m5fe7xst3o">
‘Search plugins’ button is hidden. This means that from sighted keyboard users point of view the focus disappears from view when the focus is moved away from the ‘search plugins’ input field. Focusable elements shouldn’t be hidden from view, as this can be confusing to sighted people who use keyboard.
For every listed plugin there’s an image link without text or an ‘alt’ attribute. This means that the purpose of those links will be unknown to screen reader users. NVDA read out for each of them ‘plugin-install tab=plugin-info”. I don’t think it’s necessary to wrap a link around those images, as there is an adjacent text link to the same page right next to it. I personally would remove the <a> element and add an empty ‘alt’ attribute to each of those images.
When the text of the ‘Install Now’ button changes to ‘Installed’, the colour contast ratio between the text and the background is not sufficient – only 2.07:1, which is below the required minimum (4.5:1).
‘Install Now’ button and screen readers:
- This button should be marked-up using <button> element, rather than <a>, as it is not a link (it doesn’t take the user to a different location). From a screen reader user point of view, selecting that link doesn’t do anything – the user stays on the same page.
- for me, the value of ‘aria-label’ attribute on that element was not read out by NVDA. Perhaps ‘aria-describedby’ would work better? It could point at the preceding heading, which contains the name of the plugin
- I was also wondering if perhaps screen reader users should be given some feedback as to what is happening on the page after the ‘Install Now’ button has been pressed. I’d try adding ‘aria-live=”polite”‘ on that button (or a <span> inside that button, containing the button text). In that way whenever the text of that button changes (‘Install Now’ -> ‘Installing…’ -> ‘Installed!’), it should be automatically announced to screen reader users. However, please bear in mind that I haven’t tested it, so I can’t guarantee it will work as expected. I would try it though.
JAWS and NVDA on my Windows 8.1
I was unable to install any plugin. I would click on the link that said install this
plugin and nothing happened.
Petra de Jong
No problems with adding a plugin. I knew which plugin I installed and that the install was successful.
Jeff de Wit
Adding plugins seems to function fine. There’s a lot of tabbing involved in selecting a plugin though. No different from how it is with 4.1, it’s 5 links per plugin block after all. Though 3 of them (image, title, more details) open the same modal.
Updating seems to work fine as well with just a keyboard. I was having some minor issues with updating Jetpack, but it’s probably because Jetpack auto-updates.
NVDA doesn’t actually tell me that the update or installation of the plugin is complete though. It also seems to announce table rows and stuff as I go through the installed plugin page (I think that’s a known issue).
Comment by Rian
Regarding the missing visible submit button in search plugins: I can see and I often find myself installing a featured plugin instead of doing a search. With out thinking, I expect a submit button, and therefor I press the nearest submit button in sight. Maybe for usability (don’t make me think?) a visible submit button would be nice with the search plugin form.
Summary a11y test plugin pages and Shiny Updates
Overall: And this doesn’t only count for the plugin pages: The heading structure is not semantic, a missing H1 and there are skipped levels in the admin pages.
- Screen reader users get no feedback on what catagory they are seaching in
- ‘Search plugins’ button is visually hidden, not usable
- The search plugin form has no label (added a comment: #26600)
- Select menu on the search form with search results : missing a label
Adding a plugin:
- Screen reader users get no feedback if a plugin is installed or not
- When an error happens in /wp-admin/update.php?action=install-plugin the focus is not moved to the error element (related: #31368)
- When the error is written in other languages, it does not seems to be using the lang attribute to specify the language of the text.
- When the text of the ‘Install Now’ button changes to ‘Installed’, the colour contast ratio between the text and the background is not sufficient.
Updating a plugin:
- Screen reader users get no feedback if a plugin is updated or not
Comment by Andrea
I would like to add one thing no one reported, may I? The Install Now “button” (should be a real button) has an aria-label attribute that should be updated together with the button text updates, so when the button text changes to “Installed!” the aria-label should be updated too, currently it’s not:
<a ... aria-label="Install Getty Images 2.3.0 now">Install Now</a>
<a ... aria-label="Install Getty Images 2.3.0 now">Installed!</a> <-- conflicting infos
Just after a page refresh the button is correctly changed to a span with correct information but it uses a title attribute that should be avoided, see “Title attributes galore” https://core.trac.wordpress.org/ticket/24766
<span ... title="This plugin is already installed and is up to date ">Installed</span>
- Errors handling (failed update, failed install) and feedback could be improved. Additionally, in some cases like a failed update, you have no UI controls available to take any further action, your only option is to refresh the page.