From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../browser_webconsole_exception_stackframe.js | 104 +++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 devtools/client/webconsole/test/browser_webconsole_exception_stackframe.js (limited to 'devtools/client/webconsole/test/browser_webconsole_exception_stackframe.js') diff --git a/devtools/client/webconsole/test/browser_webconsole_exception_stackframe.js b/devtools/client/webconsole/test/browser_webconsole_exception_stackframe.js new file mode 100644 index 000000000..5cedfbad5 --- /dev/null +++ b/devtools/client/webconsole/test/browser_webconsole_exception_stackframe.js @@ -0,0 +1,104 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Test that the console receive exceptions include a stackframe. +// See bug 1184172. + +// On e10s, the exception is triggered in child process +// and is ignored by test harness +if (!Services.appinfo.browserTabsRemoteAutostart) { + SimpleTest.ignoreAllUncaughtExceptions(); +} + +function test() { + let hud; + + const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" + + "test/test-exception-stackframe.html"; + const TEST_FILE = TEST_URI.substr(TEST_URI.lastIndexOf("/")); + + Task.spawn(runner).then(finishTest); + + function* runner() { + const {tab} = yield loadTab(TEST_URI); + hud = yield openConsole(tab); + + const stack = [{ + file: TEST_FILE, + fn: "thirdCall", + line: 21, + }, { + file: TEST_FILE, + fn: "secondCall", + line: 17, + }, { + file: TEST_FILE, + fn: "firstCall", + line: 12, + }]; + + let results = yield waitForMessages({ + webconsole: hud, + messages: [{ + text: "nonExistingMethodCall is not defined", + category: CATEGORY_JS, + severity: SEVERITY_ERROR, + collapsible: true, + stacktrace: stack, + }, { + text: "SyntaxError: 'buggy;selector' is not a valid selector", + category: CATEGORY_JS, + severity: SEVERITY_ERROR, + collapsible: true, + stacktrace: [{ + file: TEST_FILE, + fn: "domAPI", + line: 25, + }, { + file: TEST_FILE, + fn: "onLoadDomAPI", + line: 33, + } + ] + }, { + text: "DOMException", + category: CATEGORY_JS, + severity: SEVERITY_ERROR, + collapsible: true, + stacktrace: [{ + file: TEST_FILE, + fn: "domException", + line: 29, + }, { + file: TEST_FILE, + fn: "onLoadDomException", + line: 36, + }, + + ] + }], + }); + + let elem = [...results[0].matched][0]; + ok(elem, "message element"); + + let msg = elem._messageObject; + ok(msg, "message object"); + + ok(msg.collapsed, "message is collapsed"); + + msg.toggleDetails(); + + ok(!msg.collapsed, "message is not collapsed"); + + msg.toggleDetails(); + + ok(msg.collapsed, "message is collapsed"); + + yield closeConsole(tab); + } +} -- cgit v1.2.3