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 /remote/cdp/test/browser/log | |
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 'remote/cdp/test/browser/log')
-rw-r--r-- | remote/cdp/test/browser/log/browser.toml | 21 | ||||
-rw-r--r-- | remote/cdp/test/browser/log/browser_entryAdded.js | 138 | ||||
-rw-r--r-- | remote/cdp/test/browser/log/head.js | 9 |
3 files changed, 168 insertions, 0 deletions
diff --git a/remote/cdp/test/browser/log/browser.toml b/remote/cdp/test/browser/log/browser.toml new file mode 100644 index 0000000000..728e461609 --- /dev/null +++ b/remote/cdp/test/browser/log/browser.toml @@ -0,0 +1,21 @@ +[DEFAULT] +tags = "cdp" +subsuite = "remote" +args = [ + "--remote-debugging-port", + "--remote-allow-origins=null", +] +prefs = [ # Bug 1600054: Make CDP Fission compatible + "fission.bfcacheInParent=false", + "fission.webContentIsolationStrategy=0", +] +skip-if = [ + "display == 'wayland'" # Bug 1861933: Timestamp unreliable due to worker setup +] +support-files = [ + "!/remote/cdp/test/browser/chrome-remote-interface.js", + "!/remote/cdp/test/browser/head.js", + "head.js", +] + +["browser_entryAdded.js"] diff --git a/remote/cdp/test/browser/log/browser_entryAdded.js b/remote/cdp/test/browser/log/browser_entryAdded.js new file mode 100644 index 0000000000..1c6ba2e0a8 --- /dev/null +++ b/remote/cdp/test/browser/log/browser_entryAdded.js @@ -0,0 +1,138 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +add_task(async function noEventsWhenLogDomainDisabled({ client }) { + await runEntryAddedTest(client, 0, async () => { + await throwScriptError("foo"); + }); +}); + +add_task(async function noEventsAfterLogDomainDisabled({ client }) { + const { Log } = client; + + await Log.enable(); + await Log.disable(); + + await runEntryAddedTest(client, 0, async () => { + await throwScriptError("foo"); + }); +}); + +add_task(async function noEventsForConsoleMessageWithException({ client }) { + const { Log } = client; + + await Log.enable(); + + const context = await enableRuntime(client); + await runEntryAddedTest(client, 0, async () => { + evaluate(client, context.id, () => { + const foo = {}; + foo.bar(); + }); + }); +}); + +add_task(async function eventsForScriptErrorWithoutException({ client }) { + const { Log } = client; + + await Log.enable(); + + await enableRuntime(client); + const events = await runEntryAddedTest(client, 1, async () => { + throwScriptError({ + text: "foo", + sourceName: "https://foo.bar", + lineNumber: 7, + category: "javascript", + }); + }); + + is(events[0].source, "javascript", "Got expected source"); + is(events[0].level, "error", "Got expected level"); + is(events[0].text, "foo", "Got expected text"); + is(events[0].url, "https://foo.bar", "Got expected url"); + is(events[0].lineNumber, 7, "Got expected line number"); +}); + +add_task(async function eventsForScriptErrorLevels({ client }) { + const { Log } = client; + + await Log.enable(); + + const flags = { + info: Ci.nsIScriptError.infoFlag, + warning: Ci.nsIScriptError.warningFlag, + error: Ci.nsIScriptError.errorFlag, + }; + + await enableRuntime(client); + for (const [level, flag] of Object.entries(flags)) { + const events = await runEntryAddedTest(client, 1, async () => { + throwScriptError({ text: level, flag }); + }); + + is(events[0].text, level, "Got expected text"); + is(events[0].level, level, "Got expected level"); + } +}); + +add_task(async function eventsForScriptErrorContent({ client }) { + const { Log } = client; + + await Log.enable(); + + const context = await enableRuntime(client); + const events = await runEntryAddedTest(client, 1, async () => { + evaluate(client, context.id, () => { + document.execCommand("copy"); + }); + }); + + is(events[0].source, "other", "Got expected source"); + is(events[0].level, "warning", "Got expected level"); + ok( + events[0].text.includes("document.execCommand(‘cut’/‘copy’) was denied"), + "Got expected text" + ); + is(events[0].url, undefined, "Got undefined url"); + is(events[0].lineNumber, 2, "Got expected line number"); +}); + +async function runEntryAddedTest(client, eventCount, callback, options = {}) { + const { Log } = client; + + const EVENT_ENTRY_ADDED = "Log.entryAdded"; + + const history = new RecordEvents(eventCount); + history.addRecorder({ + event: Log.entryAdded, + eventName: EVENT_ENTRY_ADDED, + messageFn: payload => `Received "${EVENT_ENTRY_ADDED}"`, + }); + + const timeBefore = Date.now(); + await callback(); + + const entryAddedEvents = await history.record(); + is(entryAddedEvents.length, eventCount, "Got expected amount of events"); + + if (eventCount == 0) { + return []; + } + + const timeAfter = Date.now(); + + // Check basic details for entryAdded events + entryAddedEvents.forEach(event => { + const timestamp = event.payload.entry.timestamp; + + ok( + timestamp >= timeBefore && timestamp <= timeAfter, + "Got valid timestamp" + ); + }); + + return entryAddedEvents.map(event => event.payload.entry); +} diff --git a/remote/cdp/test/browser/log/head.js b/remote/cdp/test/browser/log/head.js new file mode 100644 index 0000000000..1a1c90fbf6 --- /dev/null +++ b/remote/cdp/test/browser/log/head.js @@ -0,0 +1,9 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +Services.scriptloader.loadSubScript( + "chrome://mochitests/content/browser/remote/cdp/test/browser/head.js", + this +); |