fune/devtools/client/debugger/test/mochitest/browser_dbg-pretty-print-console.js
Nicolas Chevobbe fffc801961 Bug 1809941 - [devtools] Add line break after parens when content is long. r=devtools-reviewers,bomsy.
When dealing with a `(` token, we check the next tokens to find the matching
closing paren. In the same time, we compute the length of all the tokens inside
the paren.
If we reach a given length (60 at the moment) without finding the closing paren,
we consider it "long" and will treat it (and the closing paren) as line delimiter.
On top of that, we expand line delimiters to `||` and `&&` when there not in a
"short" paren, so we can split up long lines.

Differential Revision: https://phabricator.services.mozilla.com/D175477
2023-04-17 12:30:30 +00:00

66 lines
2 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
// The test has a lot of interactions between debugger and console panels which
// might take more than 30s to complete on a slow machine.
"use strict";
requestLongerTimeout(2);
// Tests that pretty-printing updates console messages.
add_task(async function() {
const dbg = await initDebugger("doc-minified.html");
invokeInTab("arithmetic");
info("Switch to console and check message");
const minifiedLink = await waitForConsoleLink(
dbg,
"arithmetic",
"math.min.js:3:73"
);
info("Click on the link to open the debugger");
minifiedLink.click();
await waitForSelectedSource(dbg, "math.min.js");
await waitForSelectedLocation(dbg, 3);
info("Click on pretty print button and wait for the file to be formatted");
clickElement(dbg, "prettyPrintButton");
await waitForSelectedSource(dbg, "math.min.js:formatted");
info("Switch back to console and check message");
const formattedLink = await waitForConsoleLink(
dbg,
"arithmetic",
"math.min.js:formatted:31:24"
);
ok(true, "Message location was updated as expected");
info(
"Click on the link again and check the debugger opens in formatted file"
);
formattedLink.click();
await selectSource(dbg, "math.min.js:formatted");
await waitForSelectedLocation(dbg, 31);
});
async function waitForConsoleLink(dbg, messageText, linkText) {
const { toolbox } = dbg;
await toolbox.selectTool("webconsole");
return waitFor(async () => {
// Wait until the message updates.
const [message] = await findConsoleMessages(toolbox, messageText);
if (!message) {
return false;
}
const linkEl = message.querySelector(".frame-link-source");
if (!linkEl) {
return false;
}
return linkEl.textContent == linkText ? linkEl : false;
});
}