Commit 5c81652a authored by Roman Aleksandrov's avatar Roman Aleksandrov Committed by Commit Bot

Management WebUI: Apply a11y review and cover by tests

Add empty alt to the extension's image
because the name of the extension is presented.
Add backButton alt to be consistent with other Settings pages.
Cover all the issues by tests.

Bug: 879146
Change-Id: I74d4c8683fac4b9051eb43706b260fe0e030a5c3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1554769
Commit-Queue: Roman Aleksandrov <raleksandrov@google.com>
Reviewed-by: default avatarHector Carmona <hcarmona@chromium.org>
Cr-Commit-Position: refs/heads/master@{#650513}
parent 837cbb87
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
$i18n{dark}> $i18n{dark}>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no"> <meta name="viewport" content="width=device-width, user-scalable=yes">
<title>$i18n{title}</title> <title>$i18n{title}</title>
<link rel="stylesheet" href="chrome://resources/css/md_colors.css"> <link rel="stylesheet" href="chrome://resources/css/md_colors.css">
......
...@@ -171,7 +171,7 @@ ...@@ -171,7 +171,7 @@
<div class="sections-container"> <div class="sections-container">
<div class="card"> <div class="card">
<section class="page-subtitle"> <section class="page-subtitle">
<a href="chrome://settings/help"> <a href="chrome://settings/help" aria-label="$i18n{backButton}">
<iron-icon icon="cr:arrow-back"></iron-icon> <iron-icon icon="cr:arrow-back"></iron-icon>
</a> </a>
[[subtitle_]] [[subtitle_]]
...@@ -259,8 +259,7 @@ ...@@ -259,8 +259,7 @@
<template is="dom-repeat" items="[[extensions_]]"> <template is="dom-repeat" items="[[extensions_]]">
<div class="list-item"> <div class="list-item">
<div class="extension-name"> <div class="extension-name">
<img src="[[item.icon]]" <img src="[[item.icon]]" alt="">
aria-describedby="a11yAssociation">
<span>[[item.name]]</span> <span>[[item.name]]</span>
</div> </div>
<div class="extension-permissions"> <div class="extension-permissions">
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/webui/management_a11y_browsertest.h"
#include "base/path_service.h"
#include "chrome/browser/extensions/chrome_test_extension_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/common/chrome_paths.h"
ManagementA11yUIBrowserTest::ManagementA11yUIBrowserTest() {
CHECK(base::PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir_));
test_data_dir_ = test_data_dir_.AppendASCII("extensions");
}
ManagementA11yUIBrowserTest::~ManagementA11yUIBrowserTest() {}
void ManagementA11yUIBrowserTest::InstallPowerfulPolicyEnforcedExtension() {
extensions::ChromeTestExtensionLoader loader(browser()->profile());
loader.set_ignore_manifest_warnings(true);
loader.set_grant_permissions(true);
loader.set_location(extensions::Manifest::EXTERNAL_POLICY_DOWNLOAD);
loader.LoadExtension(test_data_dir_.AppendASCII("good.crx"));
}
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_WEBUI_MANAGEMENT_A11Y_BROWSERTEST_H_
#define CHROME_BROWSER_UI_WEBUI_MANAGEMENT_A11Y_BROWSERTEST_H_
#include "base/files/file_path.h"
#include "base/macros.h"
#include "chrome/test/base/web_ui_browser_test.h"
// C++ test fixture used by management_a11y_test.js.
class ManagementA11yUIBrowserTest : public WebUIBrowserTest {
public:
ManagementA11yUIBrowserTest();
~ManagementA11yUIBrowserTest() override;
protected:
void InstallPowerfulPolicyEnforcedExtension();
base::FilePath test_data_dir_;
};
#endif // CHROME_BROWSER_UI_WEBUI_MANAGEMENT_A11Y_BROWSERTEST_H_
...@@ -94,6 +94,7 @@ content::WebUIDataSource* CreateManagementUIHtmlSource() { ...@@ -94,6 +94,7 @@ content::WebUIDataSource* CreateManagementUIHtmlSource() {
{"toolbarTitle", IDS_MANAGEMENT_TOOLBAR_TITLE}, {"toolbarTitle", IDS_MANAGEMENT_TOOLBAR_TITLE},
{"searchPrompt", IDS_SETTINGS_SEARCH_PROMPT}, {"searchPrompt", IDS_SETTINGS_SEARCH_PROMPT},
{"clearSearch", IDS_DOWNLOAD_CLEAR_SEARCH}, {"clearSearch", IDS_DOWNLOAD_CLEAR_SEARCH},
{"backButton", IDS_ACCNAME_BACK},
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
{kManagementExtensionReportMachineName, {kManagementExtensionReportMachineName,
IDS_MANAGEMENT_EXTENSION_REPORT_MACHINE_NAME}, IDS_MANAGEMENT_EXTENSION_REPORT_MACHINE_NAME},
......
...@@ -1051,6 +1051,8 @@ test("browser_tests") { ...@@ -1051,6 +1051,8 @@ test("browser_tests") {
"../browser/ui/webui/inspect_ui_browsertest.cc", "../browser/ui/webui/inspect_ui_browsertest.cc",
"../browser/ui/webui/interstitials/interstitial_ui_browsertest.cc", "../browser/ui/webui/interstitials/interstitial_ui_browsertest.cc",
"../browser/ui/webui/log_web_ui_url_browsertest.cc", "../browser/ui/webui/log_web_ui_url_browsertest.cc",
"../browser/ui/webui/management_a11y_browsertest.cc",
"../browser/ui/webui/management_a11y_browsertest.h",
"../browser/ui/webui/management_ui_browsertest.cc", "../browser/ui/webui/management_ui_browsertest.cc",
"../browser/ui/webui/net_internals/net_internals_ui_browsertest.cc", "../browser/ui/webui/net_internals/net_internals_ui_browsertest.cc",
"../browser/ui/webui/net_internals/net_internals_ui_browsertest.h", "../browser/ui/webui/net_internals/net_internals_ui_browsertest.h",
...@@ -5321,6 +5323,8 @@ if (!is_android) { ...@@ -5321,6 +5323,8 @@ if (!is_android) {
sources += [ sources += [
"../browser/ui/webui/extensions/extension_settings_browsertest.cc", "../browser/ui/webui/extensions/extension_settings_browsertest.cc",
"../browser/ui/webui/extensions/extension_settings_browsertest.h", "../browser/ui/webui/extensions/extension_settings_browsertest.h",
"../browser/ui/webui/management_a11y_browsertest.cc",
"../browser/ui/webui/management_a11y_browsertest.h",
] ]
} }
} }
......
...@@ -54,6 +54,7 @@ js2gtest("browser_tests_js_webui") { ...@@ -54,6 +54,7 @@ js2gtest("browser_tests_js_webui") {
"history/history_browsertest.js", "history/history_browsertest.js",
"js2gtest_browsertest.js", "js2gtest_browsertest.js",
"load_time_data_browsertest.js", "load_time_data_browsertest.js",
"management/a11y/management_a11y_test.js",
"media_router/media_router_elements_browsertest.js", "media_router/media_router_elements_browsertest.js",
"mock4js_browsertest.js", "mock4js_browsertest.js",
"net_internals/chromeos_view.js", "net_internals/chromeos_view.js",
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/** @const {string} Path to root from chrome/test/data/webui/management/a11y. */
const ROOT_PATH = '../../../../../../';
// Polymer BrowserTest fixture and aXe-core accessibility audit.
GEN_INCLUDE([
ROOT_PATH + 'chrome/test/data/webui/a11y/accessibility_test.js',
ROOT_PATH + 'chrome/test/data/webui/polymer_browser_test_base.js',
]);
GEN('#include "chrome/browser/ui/webui/management_a11y_browsertest.h"');
/**
* Test fixture for Accessibility of Chrome Management page.
* @constructor
* @extends {PolymerTest}
*/
CrManagementA11yTest = class extends PolymerTest {
/** @override */
get browsePreload() {
return 'chrome://management/';
}
// Include files that define the mocha tests.
get extraLibraries() {
return PolymerTest.getLibraries(ROOT_PATH);
}
// Default accessibility audit options. Specify in test definition to use.
static get axeOptions() {
return {
'rules': {
// Disable 'skip-link' check since there are few tab stops before the
// main content.
'skip-link': {enabled: false},
// TODO(crbug.com/761461): enable after addressing flaky tests.
'color-contrast': {enabled: false},
},
};
}
// Default accessibility violation filter. Specify in test definition to use.
static get violationFilter() {
return {
'aria-valid-attr': function(nodeResult) {
return nodeResult.element.hasAttribute('aria-active-attribute');
},
'list': function(nodeResult) {
return nodeResult && nodeResult.element &&
nodeResult.element.tagName == 'UL' &&
nodeResult.element.getElementsByTagName('DOM-REPEAT').length != 0;
},
};
}
/** @override */
get typedefCppFixture() {
return 'ManagementA11yUIBrowserTest';
}
};
AccessibilityTest.define('CrManagementA11yTest', {
/** @override */
name: 'SimpleTest',
/** @override */
axeOptions: CrManagementA11yTest.axeOptions,
/** @override */
tests: {'Accessible with No Changes': function() {}},
/** @override */
violationFilter: Object.assign({}, CrManagementA11yTest.violationFilter),
});
CrManagementA11yTestWithExtension = class extends CrManagementA11yTest {
/** @override */
testGenPreamble() {
GEN(' InstallPowerfulPolicyEnforcedExtension();');
}
};
AccessibilityTest.define('CrManagementA11yTestWithExtension', {
/** @override */
name: 'ExtensionSection',
/** @override */
axeOptions: CrManagementA11yTest.axeOptions,
/** @override */
tests: {'Accessible with Extension Section': function() {}},
/** @override */
violationFilter: Object.assign({}, CrManagementA11yTest.violationFilter),
});
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment