diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /devtools/client/webconsole/test/browser/browser_webconsole_css_error_impacted_elements.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/client/webconsole/test/browser/browser_webconsole_css_error_impacted_elements.js')
-rw-r--r-- | devtools/client/webconsole/test/browser/browser_webconsole_css_error_impacted_elements.js | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser/browser_webconsole_css_error_impacted_elements.js b/devtools/client/webconsole/test/browser/browser_webconsole_css_error_impacted_elements.js new file mode 100644 index 0000000000..b11e84a74b --- /dev/null +++ b/devtools/client/webconsole/test/browser/browser_webconsole_css_error_impacted_elements.js @@ -0,0 +1,126 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Create a simple page for the iframe +const httpServer = createTestHTTPServer(); +httpServer.registerPathHandler(`/`, function (request, response) { + response.setStatusLine(request.httpVersion, 200, "OK"); + response.write(` + <html> + <head> + <meta charset="utf-8"> + <style> + .subframe { + color: blouge; + } + </style> + </head> + <body class="subframe"> + <h1 class="subframe">Hello</h1> + <p class="subframe">sub-frame</p> + </body> + </html>`); +}); + +const TEST_URI = `data:text/html,<!DOCTYPE html><meta charset=utf8> + <style> + button { + cursor: unknownCursor; + } + </style> + <button id=1>Button 1</button> + <button id=2>Button 2</button> + <iframe src="http://localhost:${httpServer.identity.primaryPort}/"></iframe> + `; + +add_task(async function () { + // Enable CSS Warnings + await pushPref("devtools.webconsole.filter.css", true); + + const hud = await openNewTabAndConsole(TEST_URI); + const toolbox = hud.toolbox; + + // Load the inspector panel to make it possible to listen for new node selections + await toolbox.loadTool("inspector"); + const inspector = toolbox.getPanel("inspector"); + + info("Check the CSS warning message for the top level document"); + let messageNode = await waitFor(() => + findWarningMessage(hud, "Error in parsing value for ‘cursor’", ".css") + ); + + info("Click on the expand arrow"); + messageNode.querySelector(".arrow").click(); + + await waitFor( + () => messageNode.querySelectorAll(".objectBox-node").length == 2 + ); + ok( + messageNode.textContent.includes("NodeList [ button#1, button#2 ]"), + "The message was expanded and shows the impacted elements" + ); + + let node = messageNode.querySelector(".objectBox-node"); + let openInInspectorIcon = node.querySelector(".open-inspector"); + ok(openInInspectorIcon !== null, "The is an open in inspector icon"); + + info( + "Clicking on the inspector icon and waiting for the inspector to be selected" + ); + let onInspectorSelected = toolbox.once("inspector-selected"); + let onInspectorUpdated = inspector.once("inspector-updated"); + let onNewNode = toolbox.selection.once("new-node-front"); + + openInInspectorIcon.click(); + + await onInspectorSelected; + await onInspectorUpdated; + let nodeFront = await onNewNode; + + ok(true, "Inspector selected and new node got selected"); + is(nodeFront.displayName, "button", "The expected node was selected"); + is(nodeFront.id, "1", "The expected node was selected"); + + info("Go back to the console"); + await toolbox.selectTool("webconsole"); + + info("Check the CSS warning message for the third-party iframe"); + messageNode = await waitFor(() => + findWarningMessage(hud, "Error in parsing value for ‘color’", ".css") + ); + + info("Click on the expand arrow"); + messageNode.querySelector(".arrow").click(); + + await waitFor( + () => messageNode.querySelectorAll(".objectBox-node").length == 3 + ); + ok( + messageNode.textContent.includes( + "NodeList(3) [ body.subframe, h1.subframe, p.subframe ]" + ), + "The message was expanded and shows the impacted elements" + ); + node = messageNode.querySelectorAll(".objectBox-node")[2]; + openInInspectorIcon = node.querySelector(".open-inspector"); + ok(openInInspectorIcon !== null, "The is an open in inspector icon"); + + info( + "Clicking on the inspector icon and waiting for the inspector to be selected" + ); + onInspectorSelected = toolbox.once("inspector-selected"); + onInspectorUpdated = inspector.once("inspector-updated"); + onNewNode = toolbox.selection.once("new-node-front"); + + openInInspectorIcon.click(); + + await onInspectorSelected; + await onInspectorUpdated; + nodeFront = await onNewNode; + + ok(true, "Inspector selected and new node got selected"); + is(nodeFront.displayName, "p", "The expected node was selected"); + is(nodeFront.className, "subframe", "The expected node was selected"); +}); |