diff options
Diffstat (limited to 'remote/cdp/test/browser/target/browser_createTarget.js')
-rw-r--r-- | remote/cdp/test/browser/target/browser_createTarget.js | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/remote/cdp/test/browser/target/browser_createTarget.js b/remote/cdp/test/browser/target/browser_createTarget.js new file mode 100644 index 0000000000..80e45f1c7a --- /dev/null +++ b/remote/cdp/test/browser/target/browser_createTarget.js @@ -0,0 +1,103 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const PAGE_TEST = + "https://example.com/browser/remote/cdp/test/browser/target/doc_test.html"; + +add_task( + async function raisesWithoutArguments({ client }) { + const { Target } = client; + + let exceptionThrown = false; + try { + await Target.createTarget(); + } catch (e) { + exceptionThrown = true; + } + ok(exceptionThrown, "createTarget raised error without a URL"); + }, + { createTab: false } +); + +add_task( + async function raisesWithInvalidUrlType({ client }) { + const { Target } = client; + + for (const url of [null, true, 1, [], {}]) { + info(`Checking url with invalid value: ${url}`); + + let errorThrown = ""; + try { + await Target.createTarget({ + url, + }); + } catch (e) { + errorThrown = e.message; + } + + ok( + errorThrown.match(/url: string value expected/), + `URL fails for invalid type: ${url}` + ); + } + }, + { createTab: false } +); + +add_task( + async function invalidUrlDefaults({ client }) { + const { Target } = client; + const expectedUrl = "about:blank"; + + for (const url of ["", "example.com", "https://example[.com", "https:"]) { + // Here we cannot wait for browserLoaded, because the tab might already + // be on about:blank when `createTarget` resolves. + const onNewTabLoaded = BrowserTestUtils.waitForNewTab( + gBrowser, + "about:blank", + true + ); + const { targetId } = await Target.createTarget({ url }); + is(typeof targetId, "string", "Got expected type for target id"); + + // Wait for the load to be done before checking the URL. + const tab = await onNewTabLoaded; + const browser = tab.linkedBrowser; + is(browser.currentURI.spec, expectedUrl, "Expected URL loaded"); + } + }, + { createTab: false } +); + +add_task( + async function opensTabWithCorrectInfo({ client }) { + const { Target } = client; + + const url = PAGE_TEST; + const onNewTabLoaded = BrowserTestUtils.waitForNewTab(gBrowser, url, true); + const { targetId } = await Target.createTarget({ url }); + + is(typeof targetId, "string", "Got expected type for target id"); + + const tab = await onNewTabLoaded; + const browser = tab.linkedBrowser; + is(browser.currentURI.spec, url, "Expected URL loaded"); + + const { targetInfos } = await Target.getTargets(); + const targetInfo = targetInfos.find(info => info.targetId === targetId); + ok(!!targetInfo, "Found target info with the same target id"); + is(targetInfo.url, url, "Target info refers to the same target URL"); + is( + targetInfo.type, + "page", + "Target info refers to the same target as page type" + ); + ok( + !targetInfo.attached, + "Target info refers to the same target as not attached" + ); + }, + { createTab: false } +); |