1
0
Fork 0
firefox/remote/shared/webdriver/test/xpcshell/test_Session.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

139 lines
4 KiB
JavaScript

/* 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/. */
"use strict";
const { Timeouts } = ChromeUtils.importESModule(
"chrome://remote/content/shared/webdriver/Capabilities.sys.mjs"
);
const { getWebDriverSessionById, WebDriverSession } =
ChromeUtils.importESModule(
"chrome://remote/content/shared/webdriver/Session.sys.mjs"
);
function createSession(options = {}) {
const { capabilities = {}, connection, isBidi = false } = options;
const flags = new Set();
if (isBidi) {
flags.add("bidi");
} else {
flags.add("http");
}
return new WebDriverSession(capabilities, flags, connection);
}
add_task(function test_WebDriverSession_ctor() {
// Missing WebDriver session flags
Assert.throws(() => new WebDriverSession({}), /TypeError/);
// Session needs to be either HTTP or BiDi
for (const flags of [[], ["bidi", "http"]]) {
Assert.throws(
() => new WebDriverSession({}, new Set(flags)),
/SessionNotCreatedError:/
);
}
// Session id and path
let session = createSession();
equal(typeof session.id, "string");
equal(session.path, `/session/${session.id}`);
// Sets HTTP and BiDi flags correctly.
session = createSession({ isBidi: false });
equal(session.bidi, false);
equal(session.http, true);
session = createSession({ isBidi: true });
equal(session.bidi, true);
equal(session.http, false);
// Sets capabilities based on session configuration flag.
const capabilities = {
acceptInsecureCerts: true,
unhandledPromptBehavior: "ignore",
// HTTP only
pageLoadStrategy: "eager",
strictFileInteractability: true,
timeouts: { script: 1000 },
};
// HTTP session
session = createSession({ capabilities, isBidi: false });
equal(session.acceptInsecureCerts, true);
equal(session.pageLoadStrategy, "eager");
equal(session.strictFileInteractability, true);
equal(session.timeouts.script, 1000);
equal(session.userPromptHandler.toJSON(), "ignore");
// BiDi session
session = createSession({ capabilities, isBidi: true });
equal(session.acceptInsecureCerts, true);
equal(session.userPromptHandler.toJSON(), "ignore");
equal(session.pageLoadStrategy, undefined);
equal(session.strictFileInteractability, undefined);
equal(session.timeouts, undefined);
});
add_task(function test_WebDriverSession_destroy() {
const session = createSession();
session.destroy();
// Calling twice doesn't raise error.
session.destroy();
});
add_task(function test_WebDriverSession_getters() {
const session = createSession();
equal(
session.a11yChecks,
session.capabilities.get("moz:accessibilityChecks")
);
equal(
session.acceptInsecureCerts,
session.capabilities.get("acceptInsecureCerts")
);
equal(session.pageLoadStrategy, session.capabilities.get("pageLoadStrategy"));
equal(session.proxy, session.capabilities.get("proxy"));
equal(
session.strictFileInteractability,
session.capabilities.get("strictFileInteractability")
);
equal(session.timeouts, session.capabilities.get("timeouts"));
equal(
session.userPromptHandler,
session.capabilities.get("unhandledPromptBehavior")
);
});
add_task(function test_WebDriverSession_setters() {
const session = createSession();
const timeouts = new Timeouts();
timeouts.pageLoad = 45;
session.timeouts = timeouts;
equal(session.timeouts, session.capabilities.get("timeouts"));
});
add_task(function test_getWebDriverSessionById() {
const session1 = createSession();
const session2 = createSession();
equal(getWebDriverSessionById(session1.id), session1);
equal(getWebDriverSessionById(session2.id), session2);
session1.destroy();
equal(getWebDriverSessionById(session1.id), undefined);
equal(getWebDriverSessionById(session2.id), session2);
session2.destroy();
equal(getWebDriverSessionById(session1.id), undefined);
equal(getWebDriverSessionById(session2.id), undefined);
});