summaryrefslogtreecommitdiffstats
path: root/remote/cdp/test/browser/browser_cdp.js
diff options
context:
space:
mode:
Diffstat (limited to 'remote/cdp/test/browser/browser_cdp.js')
-rw-r--r--remote/cdp/test/browser/browser_cdp.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/remote/cdp/test/browser/browser_cdp.js b/remote/cdp/test/browser/browser_cdp.js
new file mode 100644
index 0000000000..bbc593c39e
--- /dev/null
+++ b/remote/cdp/test/browser/browser_cdp.js
@@ -0,0 +1,74 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test very basic CDP features.
+add_task(async function testCDP({ client }) {
+ const { Browser, Log, Page } = client;
+
+ ok("Browser" in client, "Browser domain is available");
+ ok("Log" in client, "Log domain is available");
+ ok("Page" in client, "Page domain is available");
+
+ const version = await Browser.getVersion();
+ const { isHeadless } = Cc["@mozilla.org/gfx/info;1"].getService(
+ Ci.nsIGfxInfo
+ );
+ is(
+ version.product,
+ (isHeadless ? "Headless" : "") +
+ `${Services.appinfo.name}/${Services.appinfo.version}`,
+ "Browser.getVersion works and depends on headless mode"
+ );
+ is(
+ version.userAgent,
+ window.navigator.userAgent,
+ "Browser.getVersion().userAgent is correct"
+ );
+
+ is(
+ version.revision,
+ Services.appinfo.sourceURL.split("/").pop(),
+ "Browser.getVersion().revision is correct"
+ );
+
+ is(
+ version.jsVersion,
+ Services.appinfo.version,
+ "Browser.getVersion().jsVersion is correct"
+ );
+
+ // receive console.log messages and print them
+ let result = await Log.enable();
+ info("Log domain has been enabled");
+ Assert.deepEqual(result, {}, "Got expected result value");
+
+ Log.entryAdded(({ entry }) => {
+ const { timestamp, level, text, args } = entry;
+ const msg = text || args.join(" ");
+ console.log(`${new Date(timestamp)}\t${level.toUpperCase()}\t${msg}`);
+ });
+
+ // turn on navigation related events, such as DOMContentLoaded et al.
+ result = await Page.enable();
+ info("Page domain has been enabled");
+ Assert.deepEqual(result, {}, "Got expected result value");
+
+ const frameStoppedLoading = Page.frameStoppedLoading();
+ const frameNavigated = Page.frameNavigated();
+ const loadEventFired = Page.loadEventFired();
+ await Page.navigate({
+ url: toDataURL(`<script>console.log("foo")</script>`),
+ });
+ info("A new page has been requested");
+
+ await loadEventFired;
+ info("`Page.loadEventFired` fired");
+
+ await frameStoppedLoading;
+ info("`Page.frameStoppedLoading` fired");
+
+ await frameNavigated;
+ info("`Page.frameNavigated` fired");
+});