gecko-dev/devtools/client/webconsole/test/browser_webconsole_clear_method.js
Julian Descottes a239502f8a Bug 1296870 - Rename browser_console clear test to browser_webconsole;r=bgrins
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
2016-08-22 23:47:29 +02:00

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 });
}