summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraboxhall@chromium.org <aboxhall@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-31 11:37:54 +0000
committeraboxhall@chromium.org <aboxhall@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-31 11:37:54 +0000
commit13e4495f67835cbfbb9c3fa8decfe679f296db04 (patch)
tree0fb00e98388d4427fda09777235f71663c412fc4
parent73c77e461e2070852032adae38dc1f86065a6f29 (diff)
downloadchromium_src-13e4495f67835cbfbb9c3fa8decfe679f296db04.zip
chromium_src-13e4495f67835cbfbb9c3fa8decfe679f296db04.tar.gz
chromium_src-13e4495f67835cbfbb9c3fa8decfe679f296db04.tar.bz2
Move accessibility audit message out of test_api.js and into the library
BUG= Review URL: https://chromiumcodereview.appspot.com/12095077 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179862 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--DEPS2
-rw-r--r--chrome/test/data/webui/accessibility_audit_browsertest.js38
-rw-r--r--chrome/test/data/webui/test_api.js121
3 files changed, 48 insertions, 113 deletions
diff --git a/DEPS b/DEPS
index 8454493..96e2ddd 100644
--- a/DEPS
+++ b/DEPS
@@ -326,7 +326,7 @@ deps = {
"/trunk/deps/third_party/opus@173498",
"src/third_party/accessibility-developer-tools":
- Var("chromium_git") + "/external/accessibility-developer-tools.git@e2a7557c79da617d0c06d6e96ada803b8b4b3ece",
+ Var("chromium_git") + "/external/accessibility-developer-tools.git@ad5df9a5341d38778658c90e4aa241c4ebe4e8aa",
"src/webkit/media/crypto/ppapi/cdm":
"/trunk/deps/cdm@173055",
diff --git a/chrome/test/data/webui/accessibility_audit_browsertest.js b/chrome/test/data/webui/accessibility_audit_browsertest.js
index 6e5c046..2493c22 100644
--- a/chrome/test/data/webui/accessibility_audit_browsertest.js
+++ b/chrome/test/data/webui/accessibility_audit_browsertest.js
@@ -41,11 +41,21 @@ WebUIAccessibilityAuditBrowserTest.prototype = {
isAsync: false,
tearDown: function() {
+ var accessibilityResults = this.getAccessibilityResults();
+ var numAccessibilityErrors = 0;
+ var numAccessibilityWarnings = 0;
+ for (var i = 0; i < accessibilityResults.length; i++) {
+ var result = accessibilityResults[i];
+ if (result.rule.severity == axs.constants.Severity.Warning)
+ numAccessibilityWarnings++;
+ else
+ numAccessibilityErrors++;
+ }
+
if (this.expectedErrors != null)
- expectEquals(this.expectedErrors, this.getAccessibilityErrors().length);
+ expectEquals(this.expectedErrors, numAccessibilityErrors);
if (this.expectedWarnings != null) {
- expectEquals(this.expectedWarnings,
- this.getAccessibilityWarnings().length);
+ expectEquals(this.expectedWarnings, numAccessibilityWarnings);
}
testing.Test.prototype.tearDown.call(this);
}
@@ -139,6 +149,8 @@ function expectAuditWillRun(times) {
willArgs.push(callFunction(realAudit.run));
expectedInvocation.will.apply(expectedInvocation, willArgs);
axs.Audit = audit.proxy();
+ axs.Audit.createReport = realAudit.createReport;
+ axs.Audit.accessibilityErrorMessage = realAudit.accessibilityErrorMessage;
}
// Test that an audit failure causes a test failure, if both
@@ -337,26 +349,24 @@ TEST_F('WebUIAccessibilityAuditBrowserTest_IssuesAreWarnings',
this.disableAccessibilityChecks();
addAuditFailures();
- var accessibilityErrors = [];
- var accessibilityWarnings = [];
+ var accessibilityResults = [];
try {
- assertAccessibilityOk(accessibilityErrors, accessibilityWarnings);
+ assertAccessibilityOk(accessibilityResults);
} catch (e) {
// Expected error from assertion
}
- expectEquals(2, accessibilityErrors.length);
- expectEquals(1, accessibilityWarnings.length);
+ expectEquals(3, accessibilityResults.length);
- accessibilityErrors.length = 0;
- accessibilityWarnings.length = 0;
+ accessibilityResults.length = 0;
this.accessibilityAuditConfig.ignoreSelectors('lowContrastElements', 'P');
try {
- assertAccessibilityOk(accessibilityErrors, accessibilityWarnings);
+ assertAccessibilityOk(accessibilityResults);
} catch (e) {
// Expected error from assertion
}
- expectEquals(2, accessibilityErrors.length);
- // lowContrastElements should pass as the failing element is ignored.
- expectEquals(0, accessibilityWarnings.length);
+ expectEquals(2, accessibilityResults.length);
+ for (var i = 0; i < accessibilityResults.length; i++) {
+ expectFalse(accessibilityResults[i].rule.name == 'lowContrastElements');
+ }
});
diff --git a/chrome/test/data/webui/test_api.js b/chrome/test/data/webui/test_api.js
index d2068e7..9dc23c1 100644
--- a/chrome/test/data/webui/test_api.js
+++ b/chrome/test/data/webui/test_api.js
@@ -144,33 +144,18 @@ var testing = {};
accessibilityIssuesAreErrors: false,
/**
- * Holds any accessibility errors found during the accessibility audit.
- * @type {Array.<string>}
- */
- a11yErrors_: [],
-
- /**
- * Holds any accessibility warnings found during the accessibility audit.
- * @type {Array.<string>}
+ * Holds any accessibility results found during the accessibility audit.
+ * @type {Array.<Object>}
*/
- a11yWarnings_: [],
+ a11yResults_: [],
/**
* Gets the list of accessibility errors found during the accessibility
* audit. Only for use in testing.
- * @return {Array.<string>}
- */
- getAccessibilityErrors: function() {
- return this.a11yErrors_;
- },
-
- /**
- * Gets the list of accessibility warnings found during the accessibility
- * audit. Only for use in testing.
- * @return {Array.<string>}
+ * @return {Array.<Object>}
*/
- getAccessibilityWarnings: function() {
- return this.a11yWarnings_;
+ getAccessibilityResults: function() {
+ return this.a11yResults_;
},
/**
@@ -251,10 +236,9 @@ var testing = {};
if (!this.runAccessibilityChecks || typeof document === 'undefined')
return;
- if (!runAccessibilityAudit(this.a11yErrors_, this.a11yWarnings_,
+ if (!runAccessibilityAudit(this.a11yResults_,
this.accessibilityAuditConfig)) {
- var report = accessibilityAuditReport(this.a11yErrors_,
- this.a11yWarnings_);
+ var report = accessibilityAuditReport(this.a11yResults_);
if (this.accessibilityIssuesAreErrors)
throw new Error(report);
else
@@ -890,111 +874,52 @@ var testing = {};
/**
* Run an accessibility audit on the current page state.
* @type {Function}
- * @param {Array} a11yErrors
- * @param {Array} a11yWarnings
+ * @param {Array} a11yResults
* @param {axs.AuditConfigutarion=} opt_config
* @return {boolean} Whether there were any errors or warnings
* @private
*/
- function runAccessibilityAudit(a11yErrors, a11yWarnings, opt_config) {
+ function runAccessibilityAudit(a11yResults, opt_config) {
var auditResults = axs.Audit.run(opt_config);
for (var i = 0; i < auditResults.length; i++) {
var auditResult = auditResults[i];
if (auditResult.result == axs.constants.AuditResult.FAIL) {
var auditRule = auditResult.rule;
// TODO(aboxhall): more useful error messages (sadly non-trivial)
- if (auditRule.severity == axs.constants.Severity.Severe)
- a11yErrors.push(accessibilityErrorMessage(auditRule, auditResult));
- else
- a11yWarnings.push(accessibilityErrorMessage(auditRule, auditResult));
+ a11yResults.push(auditResult);
}
}
// TODO(aboxhall): have strict (no errors or warnings) vs non-strict
// (warnings ok)
// TODO(aboxhall): some kind of info logging for warnings only??
- return (a11yErrors.length == 0 && a11yWarnings.length == 0);
+ return (a11yResults.length == 0);
}
/**
- * Concatenates the accessibility error messages in |a11yErrors| and
+ * Concatenates the accessibility error messages for each result in
+ * |a11yResults| and
* |a11yWarnings| in to an accessibility report, appends it to the given
* |message| and returns the resulting message string.
- * @param {Array.<string>} a11yErrors The list of accessibility error messages
- * @param {Array.<string>} a11yWarnings The list of accessibility warning
- * messages.
+ * @param {Array.<string>} a11yResults The list of accessibility results
* @return {string} |message| + accessibility report.
*/
- function accessibilityAuditReport(a11yErrors, a11yWarnings, message) {
- message = message ? message + '\n' : '';
- message += '\n*** Begin accessibility audit results ***';
- message += '\nAn accessibility audit found ';
-
- if (a11yErrors.length > 0) {
- message += a11yErrors.length +
- (a11yErrors.length == 1 ? ' error ' : ' errors ');
- if (a11yWarnings.length > 0)
- message += 'and ';
- }
- if (a11yWarnings.length > 0) {
- message += a11yWarnings.length +
- (a11yWarnings.length == 1 ? ' warning ' : ' warnings ');
- }
- message += 'on this page.\n';
- message += 'For more information, please see ' +
- 'http://chromium.org/developers/accessibility/webui-accessibility-audit';
-
- for (var i = 0; i < a11yErrors.length; i++)
- message += '\n\n' + a11yErrors[i];
-
- for (var i = 0; i < a11yWarnings.length; i++)
- message += '\n\n' + a11yWarnings[i];
- message += '\n*** End accessibility audit results ***';
- return message;
- }
-
- /**
- * Creates an error message for a given accessibility audit rule and
- * corresponding result.
- * @param {axs.AuditRule} rule The audit rule which the result is for
- * @param {Object.<string, (string|Array.<Element>)>} result The result
- * object returned from the audit.
- * @return {string} An error message describing the failure and listing
- * up to five elements which failed the audit rule.
- */
- function accessibilityErrorMessage(rule, result) {
- if (rule.severity == axs.constants.Severity.Severe)
- var message = 'Error: '
- else
- var message = 'Warning: '
- message += rule.name + ' failed on the following ' +
- (result.elements.length == 1 ? 'element' : 'elements');
-
- if (result.elements.length == 1)
- message += ':'
- else {
- message += ' (1 - ' + Math.min(5, result.elements.length) +
- ' of ' + result.elements.length + '):';
- }
-
- var maxElements = Math.min(result.elements.length, 5);
- for (var i = 0; i < maxElements; i++)
- message += '\n' + axs.utils.getQuerySelectorText(result.elements[i]);
+ function accessibilityAuditReport(a11yResults, message) {
+ message = message ? message + '\n\n' : '\n';
+ message += axs.Audit.createReport(a11yResults);
return message;
}
/**
* Asserts that the current page state passes the accessibility audit.
- * @param {Array=} opt_errors Array to fill with errors, if desired.
- * @param {Array=} opt_warnings Array to fill with warnings, if desired.
+ * @param {Array=} opt_results Array to fill with results, if desired.
*/
- function assertAccessibilityOk(opt_errors, opt_warnings) {
+ function assertAccessibilityOk(opt_results) {
helper.registerCall();
- var a11yErrors = opt_errors || [];
- var a11yWarnings = opt_warnings || [];
+ var a11yResults = opt_results || [];
var auditConfig = currentTestCase.fixture.accessibilityAuditConfig;
- if (!runAccessibilityAudit(a11yErrors, a11yWarnings, auditConfig))
- throw new Error(accessibilityAuditReport(a11yErrors, a11yWarnings));
+ if (!runAccessibilityAudit(a11yResults, auditConfig))
+ throw new Error(accessibilityAuditReport(a11yResults));
}
/**