diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /devtools/client/webconsole/test/browser/browser_console_content_object.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/client/webconsole/test/browser/browser_console_content_object.js')
-rw-r--r-- | devtools/client/webconsole/test/browser/browser_console_content_object.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser/browser_console_content_object.js b/devtools/client/webconsole/test/browser/browser_console_content_object.js new file mode 100644 index 0000000000..fce1e1a324 --- /dev/null +++ b/devtools/client/webconsole/test/browser/browser_console_content_object.js @@ -0,0 +1,85 @@ +/* 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/. */ + +// Test that console API calls in the content page appear in the browser console. + +"use strict"; + +const TEST_URI = `data:text/html,<!DOCTYPE html><meta charset=utf8>console API calls<script> + console.log({ contentObject: "YAY!", deep: ["yes!"] }); +</script>`; + +add_task(async function () { + // Show the content messages + await pushPref("devtools.browsertoolbox.scope", "everything"); + + await addTab(TEST_URI); + + info("Open the Browser Console"); + let hud = await BrowserConsoleManager.toggleBrowserConsole(); + + info("Wait until the content object is displayed"); + let objectMessage = await waitFor(() => + findConsoleAPIMessage( + hud, + `Object { contentObject: "YAY!", deep: (1) […] }` + ) + ); + ok(true, "Content object is displayed in the Browser Console"); + + await testExpandObject(objectMessage); + + info("Restart the Browser Console"); + await safeCloseBrowserConsole(); + hud = await BrowserConsoleManager.toggleBrowserConsole(); + + info("Wait until the content object is displayed"); + objectMessage = await waitFor(() => + findConsoleAPIMessage( + hud, + `Object { contentObject: "YAY!", deep: (1) […] }` + ) + ); + ok(true, "Content object is displayed in the Browser Console after restart"); + + await testExpandObject(objectMessage); +}); + +async function testExpandObject(objectMessage) { + info("Check that the logged content object can be expanded"); + const oi = objectMessage.querySelector(".tree"); + + ok(oi, "There's an object inspector component for the content object"); + + oi.querySelector(".arrow").click(); + // The object inspector now looks like: + // ▼ Object { contentObject: "YAY!", deep: (1) […] } + // | contentObject: "YAY!" + // | ▶︎ deep: Array [ "yes!" ] + // | ▶︎ <prototype> + await waitFor(() => oi.querySelectorAll(".node").length === 4); + ok(true, "The ObjectInspector was expanded"); + const [root, contentObjectProp, deepProp, prototypeProp] = [ + ...oi.querySelectorAll(".node"), + ]; + + ok( + root.textContent.includes('Object { contentObject: "YAY!", deep: (1) […] }') + ); + ok(contentObjectProp.textContent.includes(`contentObject: "YAY!"`)); + ok(deepProp.textContent.includes(`deep: Array [ "yes!" ]`)); + ok(prototypeProp.textContent.includes(`<prototype>`)); + + // The object inspector now looks like: + // ▼ Object { contentObject: "YAY!", deep: (1) […] } + // | contentObject: "YAY!" + // | ▼︎ deep: (1) […] + // | | 0: "yes!" + // | | length: 1 + // | | ▶︎ <prototype> + // | ▶︎ <prototype> + deepProp.querySelector(".arrow").click(); + await waitFor(() => oi.querySelectorAll(".node").length === 7); + ok(true, "The nested array was expanded"); +} |