mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 02:05:42 +00:00
a239502f8a
MozReview-Commit-ID: Jh8dsZk0c9f --HG-- rename : devtools/client/webconsole/test/browser_console_clear_method.js => devtools/client/webconsole/test/browser_webconsole_clear_method.js extra : rebase_source : 44bb26e3fb66f71161cac484360ba23bc5094031
132 lines
4.8 KiB
JavaScript
132 lines
4.8 KiB
JavaScript
/* -*- 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/ */
|
|
|
|
// Check that calls to console.clear from a script delete the messages
|
|
// previously logged.
|
|
|
|
"use strict";
|
|
|
|
add_task(function* () {
|
|
const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" +
|
|
"test/test-console-clear.html";
|
|
|
|
yield loadTab(TEST_URI);
|
|
let hud = yield openConsole();
|
|
ok(hud, "Web Console opened");
|
|
|
|
info("Check the console.clear() done on page load has been processed.");
|
|
yield waitForLog("Console was cleared", hud);
|
|
ok(hud.outputNode.textContent.includes("Console was cleared"),
|
|
"console.clear() message is displayed");
|
|
ok(!hud.outputNode.textContent.includes("log1"), "log1 not displayed");
|
|
ok(!hud.outputNode.textContent.includes("log2"), "log2 not displayed");
|
|
|
|
info("Logging two messages log3, log4");
|
|
ContentTask.spawn(gBrowser.selectedBrowser, {}, function* () {
|
|
content.wrappedJSObject.console.log("log3");
|
|
content.wrappedJSObject.console.log("log4");
|
|
});
|
|
|
|
yield waitForLog("log3", hud);
|
|
yield waitForLog("log4", hud);
|
|
|
|
ok(hud.outputNode.textContent.includes("Console was cleared"),
|
|
"console.clear() message is still displayed");
|
|
ok(hud.outputNode.textContent.includes("log3"), "log3 is displayed");
|
|
ok(hud.outputNode.textContent.includes("log4"), "log4 is displayed");
|
|
|
|
info("Open the variables view sidebar for 'objFromPage'");
|
|
yield openSidebar("objFromPage", { a: 1 }, hud);
|
|
let sidebarClosed = hud.jsterm.once("sidebar-closed");
|
|
|
|
info("Call console.clear from the page");
|
|
ContentTask.spawn(gBrowser.selectedBrowser, {}, function* () {
|
|
content.wrappedJSObject.console.clear();
|
|
});
|
|
|
|
// Cannot wait for "Console was cleared" here because such a message is
|
|
// already present and would yield immediately.
|
|
info("Wait for variables view sidebar to be closed after console.clear()");
|
|
yield sidebarClosed;
|
|
|
|
ok(!hud.outputNode.textContent.includes("log3"), "log3 not displayed");
|
|
ok(!hud.outputNode.textContent.includes("log4"), "log4 not displayed");
|
|
ok(hud.outputNode.textContent.includes("Console was cleared"),
|
|
"console.clear() message is still displayed");
|
|
is(hud.outputNode.textContent.split("Console was cleared").length, 2,
|
|
"console.clear() message is only displayed once");
|
|
|
|
info("Logging one messages log5");
|
|
ContentTask.spawn(gBrowser.selectedBrowser, {}, function* () {
|
|
content.wrappedJSObject.console.log("log5");
|
|
});
|
|
yield waitForLog("log5", hud);
|
|
|
|
info("Close and reopen the webconsole.");
|
|
yield closeConsole(gBrowser.selectedTab);
|
|
hud = yield openConsole();
|
|
yield waitForLog("Console was cleared", hud);
|
|
|
|
ok(hud.outputNode.textContent.includes("Console was cleared"),
|
|
"console.clear() message is still displayed");
|
|
ok(!hud.outputNode.textContent.includes("log1"), "log1 not displayed");
|
|
ok(!hud.outputNode.textContent.includes("log2"), "log1 not displayed");
|
|
ok(!hud.outputNode.textContent.includes("log3"), "log3 not displayed");
|
|
ok(!hud.outputNode.textContent.includes("log4"), "log4 not displayed");
|
|
ok(hud.outputNode.textContent.includes("log5"), "log5 still displayed");
|
|
});
|
|
|
|
/**
|
|
* Wait for a single message to be logged in the provided webconsole instance
|
|
* with the category CATEGORY_WEBDEV and the SEVERITY_LOG severity.
|
|
*
|
|
* @param {String} message
|
|
* The expected messaged.
|
|
* @param {WebConsole} webconsole
|
|
* WebConsole instance in which the message should be logged.
|
|
*/
|
|
function* waitForLog(message, webconsole, options) {
|
|
yield waitForMessages({
|
|
webconsole: webconsole,
|
|
messages: [{
|
|
text: message,
|
|
category: CATEGORY_WEBDEV,
|
|
severity: SEVERITY_LOG,
|
|
}],
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Open the variables view sidebar for the object with the provided name objName
|
|
* and wait for the expected object is displayed in the variables view.
|
|
*
|
|
* @param {String} objName
|
|
* The name of the object to open in the sidebar.
|
|
* @param {Object} expectedObj
|
|
* The properties that should be displayed in the variables view.
|
|
* @param {WebConsole} webconsole
|
|
* WebConsole instance in which the message should be logged.
|
|
*
|
|
*/
|
|
function* openSidebar(objName, expectedObj, webconsole) {
|
|
let msg = yield webconsole.jsterm.execute(objName);
|
|
ok(msg, "output message found");
|
|
|
|
let anchor = msg.querySelector("a");
|
|
let body = msg.querySelector(".message-body");
|
|
ok(anchor, "object anchor");
|
|
ok(body, "message body");
|
|
|
|
yield EventUtils.synthesizeMouse(anchor, 2, 2, {}, webconsole.iframeWindow);
|
|
|
|
let vviewVar = yield webconsole.jsterm.once("variablesview-fetched");
|
|
let vview = vviewVar._variablesView;
|
|
ok(vview, "variables view object exists");
|
|
|
|
yield findVariableViewProperties(vviewVar, [
|
|
expectedObj,
|
|
], { webconsole: webconsole });
|
|
}
|