summaryrefslogtreecommitdiffstats
path: root/remote/cdp/test/browser/log
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /remote/cdp/test/browser/log
parentInitial commit. (diff)
downloadfirefox-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.toml21
-rw-r--r--remote/cdp/test/browser/log/browser_entryAdded.js138
-rw-r--r--remote/cdp/test/browser/log/head.js9
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
+);