Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* Any copyright is dedicated to the Public Domain.
// Test that we safely close and reopen the Browser Console.
"use strict";
add_task(async function () {
// Enable the multiprocess mode as it is more likely to break on startup
await pushPref("devtools.browsertoolbox.scope", "everything");
const promises = [];
for (let i = 0; i < 5; i++) {
info("Open the Browser Console");
promises.push(BrowserConsoleManager.toggleBrowserConsole());
// Use different pause time between opening and closing
await wait(i * 100);
info("Close the Browser Console");
promises.push(BrowserConsoleManager.closeBrowserConsole());
// Use different pause time between opening and closing
await wait(i * 100);
}
info("Wait for all opening/closing promises");
// Ignore any exception here, we expect some as we are racing opening versus destruction
await Promise.allSettled(promises);
// The browser console may end up being opened or closed because of usage of "toggle"
// Ensure having a console opened to verify it works
let hud = BrowserConsoleManager.getBrowserConsole();
if (!hud) {
info("Reopen the browser console a last time");
hud = await BrowserConsoleManager.toggleBrowserConsole();
}
info("Log a message and ensure it is visible and the console mostly works");
console.log("message from mochitest");
await checkUniqueMessageExists(hud, "message from mochitest", ".console-api");
// Clear the messages in order to be able to run this test more than once
// and clear the message we just logged
await clearOutput(hud);
info("Ensure closing the Browser Console at the end of the test");
await BrowserConsoleManager.closeBrowserConsole();
ok(
!BrowserConsoleManager.getBrowserConsole(),
"No browser console opened at the end of test"
);
});