summaryrefslogtreecommitdiff
path: root/browser/devtools/webconsole/test/browser_console_error_source_click.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/devtools/webconsole/test/browser_console_error_source_click.js')
-rw-r--r--browser/devtools/webconsole/test/browser_console_error_source_click.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/browser/devtools/webconsole/test/browser_console_error_source_click.js b/browser/devtools/webconsole/test/browser_console_error_source_click.js
new file mode 100644
index 000000000..98fe93dbc
--- /dev/null
+++ b/browser/devtools/webconsole/test/browser_console_error_source_click.js
@@ -0,0 +1,75 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+// Check that JS errors and CSS warnings open view source when their source link
+// is clicked in the Browser Console. See bug 877778.
+
+const TEST_URI = "data:text/html;charset=utf8,<p>hello world from bug 877778 " +
+ "<button onclick='foobar.explode()' " +
+ "style='test-color: green-please'>click!</button>";
+function test()
+{
+ let hud;
+
+ addTab(TEST_URI);
+ browser.addEventListener("load", function onLoad() {
+ browser.removeEventListener("load", onLoad, true);
+ HUDConsoleUI.toggleBrowserConsole().then(browserConsoleOpened);
+ }, true);
+
+ function browserConsoleOpened(aHud)
+ {
+ hud = aHud;
+ ok(hud, "browser console opened");
+
+ let button = content.document.querySelector("button");
+ ok(button, "button element found");
+
+ info("generate exception and wait for the message");
+ executeSoon(() => {
+ expectUncaughtException();
+ button.click();
+ });
+
+ waitForMessages({
+ webconsole: hud,
+ messages: [
+ {
+ text: "ReferenceError: foobar is not defined",
+ category: CATEGORY_JS,
+ severity: SEVERITY_ERROR,
+ },
+ {
+ text: "Unknown property 'test-color'",
+ category: CATEGORY_CSS,
+ severity: SEVERITY_WARNING,
+ },
+ ],
+ }).then(onMessageFound);
+ }
+
+ function onMessageFound(results)
+ {
+ let viewSource = hud.viewSource;
+ let viewSourceCalled = false;
+ hud.viewSource = () => viewSourceCalled = true;
+
+ for (let result of results) {
+ viewSourceCalled = false;
+
+ let msg = [...results[0].matched][0];
+ ok(msg, "message element found for: " + result.text);
+ let locationNode = msg.querySelector(".webconsole-location");
+ ok(locationNode, "message location element found");
+
+ EventUtils.synthesizeMouse(locationNode, 2, 2, {}, hud.iframeWindow);
+
+ ok(viewSourceCalled, "view source opened");
+ }
+
+ hud.viewSource = viewSource;
+ finishTest();
+ }
+}