Commit 959e614d authored by Katie Dektar's avatar Katie Dektar Committed by Chromium LUCI CQ

Improve a11y JS integration tests by catching console errors and warnings.

This will let us do things similar to DCHECK for test by logging any
bad state in the extension and causing a test failure. It also serves to
remind developers to remove verbose logging.

AX-Relnotes: N/A
Bug: 1167335
Change-Id: Ib6da571243c0684115527ef87b8189796dba7e6c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2634082
Commit-Queue: Katie Dektar <katie@chromium.org>
Reviewed-by: default avatarDavid Tseng <dtseng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845323}
parent 263bacef
......@@ -37,8 +37,8 @@ AccessibilityCommonE2ETest = class extends E2ETestBase {
base::Bind(&AccessibilityManager::EnableAutoclick,
base::Unretained(AccessibilityManager::Get()),
true);
WaitForExtension(extension_misc::kAccessibilityCommonExtensionId, load_cb);
`);
super.testGenPreambleCommon('kAccessibilityCommonExtensionId');
}
async getPref(name) {
......
......@@ -32,6 +32,7 @@ import('/accessibility_common/accessibility_common_loader.js').then(reinit);
/** @override */
testGenCppIncludes() {
super.testGenCppIncludes();
GEN(`
#include "ash/accessibility/accessibility_delegate.h"
#include "ash/shell.h"
......@@ -50,8 +51,8 @@ import('/accessibility_common/accessibility_common_loader.js').then(reinit);
base::Bind(&AccessibilityManager::EnableAutoclick,
base::Unretained(AccessibilityManager::Get()),
true);
WaitForExtension(extension_misc::kAccessibilityCommonExtensionId, load_cb);
`);
super.testGenPreambleCommon('kAccessibilityCommonExtensionId');
}
/**
......
......@@ -61,8 +61,8 @@ MagnifierE2ETest = class extends E2ETestBase {
base::Bind(&MagnificationManager::SetMagnifierEnabled,
base::Unretained(MagnificationManager::Get()),
true);
WaitForExtension(extension_misc::kAccessibilityCommonExtensionId, load_cb);
`);
super.testGenPreambleCommon('kAccessibilityCommonExtensionId');
}
};
......
......@@ -37,7 +37,9 @@ ChromeVoxE2ETest = class extends E2ETestBase {
base::Bind(&AccessibilityManager::EnableSpokenFeedback,
base::Unretained(AccessibilityManager::Get()),
true);
WaitForExtension(extension_misc::kChromeVoxExtensionId, load_cb);
`);
// TODO(accessibility): fix errors and enable fail on console errors.
super.testGenPreambleCommon(
'kChromeVoxExtensionId', false /* don't fail on console error */);
}
};
......@@ -21,6 +21,10 @@ E2ETestBase = class extends testing.Test {
testGenCppIncludes() {
GEN(`
#include "chrome/browser/speech/extension_api/tts_engine_extension_api.h"
#include "chrome/browser/ui/browser.h"
#include "content/public/test/browser_test_utils.h"
#include "extensions/browser/extension_host.h"
#include "extensions/browser/process_manager.h"
`);
}
......@@ -31,6 +35,42 @@ E2ETestBase = class extends testing.Test {
`);
}
/** @override */
testGenPostamble() {
GEN(`
if (fail_on_console_error) {
EXPECT_EQ(0u, console_observer.messages().size())
<< "Found console.log or console.warn with message: "
<< console_observer.GetMessageAt(0);
}
`);
}
testGenPreambleCommon(extensionIdName, failOnConsoleError = true) {
GEN(`
WaitForExtension(extension_misc::${extensionIdName}, load_cb);
extensions::ExtensionHost* host =
extensions::ProcessManager::Get(browser()->profile())
->GetBackgroundHostForExtension(
extension_misc::${extensionIdName});
bool fail_on_console_error = ${failOnConsoleError};
content::WebContentsConsoleObserver console_observer(host->host_contents());
// A11y extensions should not log warnings or errors: these should cause
// test failures.
auto filter =
[](const content::WebContentsConsoleObserver::Message& message) {
return message.log_level ==
blink::mojom::ConsoleMessageLevel::kWarning ||
message.log_level == blink::mojom::ConsoleMessageLevel::kError;
};
if (fail_on_console_error) {
console_observer.SetFilter(base::BindRepeating(filter));
}
`);
}
/**
* Listens and waits for the first event on the given node of the given type.
* @param {!chrome.automation.AutomationNode} node
......
......@@ -28,14 +28,12 @@ SelectToSpeakE2ETest = class extends E2ETestBase {
testGenPreamble() {
super.testGenPreamble();
GEN(`
//keyboard::SetRequestedKeyboardState(keyboard::KEYBOARD_STATE_ENABLED);
//ash::Shell::Get()->CreateKeyboard();
base::Closure load_cb =
base::Bind(&AccessibilityManager::SetSelectToSpeakEnabled,
base::Unretained(AccessibilityManager::Get()),
true);
WaitForExtension(extension_misc::kSelectToSpeakExtensionId, load_cb);
`);
`);
super.testGenPreambleCommon('kSelectToSpeakExtensionId');
}
/**
......
......@@ -31,8 +31,8 @@ SwitchAccessE2ETest = class extends E2ETestBase {
base::Bind(&AccessibilityManager::SetSwitchAccessEnabled,
base::Unretained(AccessibilityManager::Get()),
true);
WaitForExtension(extension_misc::kSwitchAccessExtensionId, load_cb);
`);
super.testGenPreambleCommon('kSwitchAccessExtensionId');
}
/**
......
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