зеркало из https://github.com/mozilla/gecko-dev.git
Backed out 8 changesets (bug 1470646) for linting failure on a CLOSED TREE
Backed out changeset 9b8d9f803b25 (bug 1470646) Backed out changeset 58e2010d2842 (bug 1470646) Backed out changeset 2b19429d778f (bug 1470646) Backed out changeset e543f592454a (bug 1470646) Backed out changeset 22469044267d (bug 1470646) Backed out changeset e5415b1e22f5 (bug 1470646) Backed out changeset 13e47fa99a31 (bug 1470646) Backed out changeset 42964d651f02 (bug 1470646) --HG-- rename : testing/marionette/capabilities.js => testing/marionette/session.js rename : testing/marionette/test/unit/test_capabilities.js => testing/marionette/test/unit/test_session.js
This commit is contained in:
Родитель
54208e7808
Коммит
cc751350dc
|
@ -153,7 +153,7 @@ class SessionStoreTestCase(PuppeteerMixin, MarionetteTestCase):
|
|||
:raises: WindowsError: if a Windows API call failed
|
||||
"""
|
||||
|
||||
if self.marionette.session_capabilities['platformName'] != 'windows':
|
||||
if self.marionette.session_capabilities['platformName'] != 'windows_nt':
|
||||
raise Exception('Unsupported platform for simulate_os_shutdown')
|
||||
|
||||
self._shutdown_with_windows_restart_manager(self.marionette.process_id)
|
||||
|
|
|
@ -69,7 +69,7 @@ class TestPageInfoWindow(PuppeteerMixin, MarionetteTestCase):
|
|||
|
||||
platformName = self.marionette.session_capabilities['platformName']
|
||||
for trigger in open_strategies:
|
||||
if trigger == 'shortcut' and platformName == 'windows':
|
||||
if trigger == 'shortcut' and platformName == 'windows_nt':
|
||||
# The shortcut for page info window does not exist on windows.
|
||||
self.assertRaises(ValueError, self.browser.open_page_info_window,
|
||||
trigger=trigger)
|
||||
|
@ -93,7 +93,7 @@ class TestPageInfoWindow(PuppeteerMixin, MarionetteTestCase):
|
|||
platformName = self.marionette.session_capabilities['platformName']
|
||||
for trigger in close_strategies:
|
||||
# menu only works on OS X
|
||||
if trigger == 'menu' and platformName != 'mac':
|
||||
if trigger == 'menu' and platformName != 'darwin':
|
||||
continue
|
||||
|
||||
page_info = self.browser.open_page_info_window()
|
||||
|
|
|
@ -17,10 +17,6 @@ const {
|
|||
Context,
|
||||
WindowState,
|
||||
} = ChromeUtils.import("chrome://marionette/content/browser.js", {});
|
||||
const {
|
||||
Capabilities,
|
||||
Timeouts,
|
||||
} = ChromeUtils.import("chrome://marionette/content/capabilities.js", {});
|
||||
ChromeUtils.import("chrome://marionette/content/capture.js");
|
||||
const {
|
||||
CertificateOverrideManager,
|
||||
|
@ -55,6 +51,7 @@ ChromeUtils.import("chrome://marionette/content/modal.js");
|
|||
const {MarionettePrefs} = ChromeUtils.import("chrome://marionette/content/prefs.js", {});
|
||||
ChromeUtils.import("chrome://marionette/content/proxy.js");
|
||||
ChromeUtils.import("chrome://marionette/content/reftest.js");
|
||||
ChromeUtils.import("chrome://marionette/content/session.js");
|
||||
const {
|
||||
PollPromise,
|
||||
TimedPromise,
|
||||
|
@ -147,7 +144,7 @@ this.GeckoDriver = function(appId, server) {
|
|||
this.sandboxes = new Sandboxes(() => this.getCurrentWindow());
|
||||
this.legacyactions = new legacyaction.Chain();
|
||||
|
||||
this.capabilities = new Capabilities();
|
||||
this.capabilities = new session.Capabilities();
|
||||
|
||||
this.mm = globalMessageManager;
|
||||
this.listener = proxy.toListener(
|
||||
|
@ -706,7 +703,7 @@ GeckoDriver.prototype.newSession = async function(cmd) {
|
|||
this.sessionID = WebElement.generateUUID();
|
||||
|
||||
try {
|
||||
this.capabilities = Capabilities.fromJSON(cmd.parameters);
|
||||
this.capabilities = session.Capabilities.fromJSON(cmd.parameters);
|
||||
|
||||
if (!this.secureTLS) {
|
||||
logger.warn("TLS certificate errors will be ignored for this session");
|
||||
|
@ -1875,7 +1872,7 @@ GeckoDriver.prototype.getTimeouts = function() {
|
|||
GeckoDriver.prototype.setTimeouts = function(cmd) {
|
||||
// merge with existing timeouts
|
||||
let merged = Object.assign(this.timeouts.toJSON(), cmd.parameters);
|
||||
this.timeouts = Timeouts.fromJSON(merged);
|
||||
this.timeouts = session.Timeouts.fromJSON(merged);
|
||||
};
|
||||
|
||||
/** Single tap. */
|
||||
|
@ -2858,7 +2855,7 @@ GeckoDriver.prototype.deleteSession = function() {
|
|||
CertificateOverrideManager.uninstall();
|
||||
|
||||
this.sessionID = null;
|
||||
this.capabilities = new Capabilities();
|
||||
this.capabilities = new session.Capabilities();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,14 +12,14 @@ XPCOMUtils.defineLazyGetter(this, "log", Log.get);
|
|||
|
||||
this.EXPORTED_SYMBOLS = ["pprint", "truncate"];
|
||||
|
||||
const ELEMENT_NODE = 1;
|
||||
const MAX_STRING_LENGTH = 250;
|
||||
|
||||
/**
|
||||
* Pretty-print values passed to template strings.
|
||||
*
|
||||
* Usage::
|
||||
* Usage:
|
||||
*
|
||||
* <pre><code>
|
||||
* const {pprint} = Cu.import("chrome://marionette/content/error.js", {});
|
||||
* let bool = {value: true};
|
||||
* pprint`Expected boolean, got ${bool}`;
|
||||
|
@ -31,12 +31,13 @@ const MAX_STRING_LENGTH = 250;
|
|||
*
|
||||
* pprint`Current window: ${window}`;
|
||||
* => '[object Window https://www.mozilla.org/]'
|
||||
* </code></pre>
|
||||
*/
|
||||
function pprint(ss, ...values) {
|
||||
function pretty(val) {
|
||||
let proto = Object.prototype.toString.call(val);
|
||||
if (typeof val == "object" && val !== null &&
|
||||
"nodeType" in val && val.nodeType === ELEMENT_NODE) {
|
||||
|
||||
if (val && val.nodeType === 1) {
|
||||
return prettyElement(val);
|
||||
} else if (["[object Window]", "[object ChromeWindow]"].includes(proto)) {
|
||||
return prettyWindowGlobal(val);
|
||||
|
|
|
@ -21,17 +21,8 @@ class TestCapabilities(MarionetteTestCase):
|
|||
processID: Services.appinfo.processID,
|
||||
}
|
||||
""")
|
||||
self.os_name = self.marionette.execute_script("""
|
||||
let name = Services.sysinfo.getProperty("name");
|
||||
switch (name) {
|
||||
case "Windows_NT":
|
||||
return "windows";
|
||||
case "Darwin":
|
||||
return "mac";
|
||||
default:
|
||||
return name.toLowerCase();
|
||||
}
|
||||
""")
|
||||
self.os_name = self.marionette.execute_script(
|
||||
"return Services.sysinfo.getProperty('name')").lower()
|
||||
self.os_version = self.marionette.execute_script(
|
||||
"return Services.sysinfo.getProperty('version')")
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ class TestKeyActions(WindowManagerMixin, MarionetteTestCase):
|
|||
|
||||
def setUp(self):
|
||||
super(TestKeyActions, self).setUp()
|
||||
if self.marionette.session_capabilities["platformName"] == "mac":
|
||||
if self.marionette.session_capabilities["platformName"] == "darwin":
|
||||
self.mod_key = Keys.META
|
||||
else:
|
||||
self.mod_key = Keys.CONTROL
|
||||
|
|
|
@ -22,7 +22,7 @@ class BaseLegacyMouseAction(MarionetteTestCase):
|
|||
def setUp(self):
|
||||
super(BaseLegacyMouseAction, self).setUp()
|
||||
|
||||
if self.marionette.session_capabilities["platformName"] == "mac":
|
||||
if self.marionette.session_capabilities["platformName"] == "darwin":
|
||||
self.mod_key = Keys.META
|
||||
else:
|
||||
self.mod_key = Keys.CONTROL
|
||||
|
|
|
@ -65,7 +65,7 @@ class BaseMouseAction(MarionetteTestCase):
|
|||
def setUp(self):
|
||||
super(BaseMouseAction, self).setUp()
|
||||
|
||||
if self.marionette.session_capabilities["platformName"] == "mac":
|
||||
if self.marionette.session_capabilities["platformName"] == "darwin":
|
||||
self.mod_key = Keys.META
|
||||
else:
|
||||
self.mod_key = Keys.CONTROL
|
||||
|
|
|
@ -50,7 +50,7 @@ class BaseNavigationTestCase(WindowManagerMixin, MarionetteTestCase):
|
|||
self.test_page_remote = self.marionette.absolute_url("test.html")
|
||||
self.test_page_slow_resource = self.marionette.absolute_url("slow_resource.html")
|
||||
|
||||
if self.marionette.session_capabilities["platformName"] == "mac":
|
||||
if self.marionette.session_capabilities["platformName"] == "darwin":
|
||||
self.mod_key = Keys.META
|
||||
else:
|
||||
self.mod_key = Keys.CONTROL
|
||||
|
|
|
@ -15,7 +15,7 @@ class TestSwitchToWindowContent(WindowManagerMixin, MarionetteTestCase):
|
|||
def setUp(self):
|
||||
super(TestSwitchToWindowContent, self).setUp()
|
||||
|
||||
if self.marionette.session_capabilities["platformName"] == "mac":
|
||||
if self.marionette.session_capabilities["platformName"] == "darwin":
|
||||
self.mod_key = Keys.META
|
||||
else:
|
||||
self.mod_key = Keys.CONTROL
|
||||
|
|
|
@ -22,7 +22,7 @@ class TypingTestCase(MarionetteTestCase):
|
|||
def setUp(self):
|
||||
super(TypingTestCase, self).setUp()
|
||||
|
||||
if self.marionette.session_capabilities["platformName"] == "mac":
|
||||
if self.marionette.session_capabilities["platformName"] == "darwin":
|
||||
self.mod_key = Keys.META
|
||||
else:
|
||||
self.mod_key = Keys.CONTROL
|
||||
|
|
|
@ -31,7 +31,7 @@ class TestWindowMaximize(MarionetteTestCase):
|
|||
width=self.original_size["width"], height=self.original_size["height"])
|
||||
|
||||
def assert_window_maximized(self, actual, delta=None):
|
||||
if self.marionette.session_capabilities["platformName"] == "windows":
|
||||
if self.marionette.session_capabilities["platformName"] == "windows_nt":
|
||||
delta = 16
|
||||
else:
|
||||
delta = 22
|
||||
|
|
|
@ -186,13 +186,13 @@ class TestWindowRect(MarionetteTestCase):
|
|||
# On macOS, windows can only be moved off the screen on the
|
||||
# horizontal axis. The system menu bar also blocks windows from
|
||||
# being moved to (0,0).
|
||||
elif os == "mac":
|
||||
elif os == "darwin":
|
||||
self.assertEqual(-8, new_position["x"])
|
||||
self.assertEqual(23, new_position["y"])
|
||||
|
||||
# It turns out that Windows is the only platform on which the
|
||||
# window can be reliably positioned off-screen.
|
||||
elif os == "windows":
|
||||
elif os == "windows_nt":
|
||||
self.assertEqual(-8, new_position["x"])
|
||||
self.assertEqual(-8, new_position["y"])
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@ marionette.jar:
|
|||
content/assert.js (assert.js)
|
||||
content/atom.js (atom.js)
|
||||
content/browser.js (browser.js)
|
||||
content/capabilities.js (capabilities.js)
|
||||
content/capture.js (capture.js)
|
||||
content/cert.js (cert.js)
|
||||
content/cookie.js (cookie.js)
|
||||
|
@ -35,6 +34,7 @@ marionette.jar:
|
|||
content/reftest.js (reftest.js)
|
||||
content/reftest.xul (reftest.xul)
|
||||
content/server.js (server.js)
|
||||
content/session.js (session.js)
|
||||
content/stream-utils.js (stream-utils.js)
|
||||
content/sync.js (sync.js)
|
||||
content/transport.js (transport.js)
|
||||
|
|
|
@ -17,10 +17,6 @@ ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
|
|||
ChromeUtils.import("chrome://marionette/content/accessibility.js");
|
||||
ChromeUtils.import("chrome://marionette/content/action.js");
|
||||
ChromeUtils.import("chrome://marionette/content/atom.js");
|
||||
const {
|
||||
Capabilities,
|
||||
PageLoadStrategy,
|
||||
} = ChromeUtils.import("chrome://marionette/content/capabilities.js", {});
|
||||
ChromeUtils.import("chrome://marionette/content/capture.js");
|
||||
const {
|
||||
element,
|
||||
|
@ -45,6 +41,7 @@ ChromeUtils.import("chrome://marionette/content/legacyaction.js");
|
|||
const {Log} = ChromeUtils.import("chrome://marionette/content/log.js", {});
|
||||
ChromeUtils.import("chrome://marionette/content/navigate.js");
|
||||
ChromeUtils.import("chrome://marionette/content/proxy.js");
|
||||
ChromeUtils.import("chrome://marionette/content/session.js");
|
||||
|
||||
XPCOMUtils.defineLazyGetter(this, "logger", () => Log.getWithPrefix(outerWindowID));
|
||||
XPCOMUtils.defineLazyGlobalGetters(this, ["URL"]);
|
||||
|
@ -73,7 +70,7 @@ const SUPPORTED_STRATEGIES = new Set([
|
|||
Object.defineProperty(this, "capabilities", {
|
||||
get() {
|
||||
let payload = sendSyncMessage("Marionette:WebDriver:GetCapabilities");
|
||||
return Capabilities.fromJSON(payload[0]);
|
||||
return session.Capabilities.fromJSON(payload[0]);
|
||||
},
|
||||
configurable: true,
|
||||
});
|
||||
|
@ -281,7 +278,8 @@ const loadListener = {
|
|||
// is also treaded specifically here, because it gets temporary
|
||||
// loaded for new content processes, and we only want to rely on
|
||||
// complete loads for it.
|
||||
} else if ((capabilities.get("pageLoadStrategy") === PageLoadStrategy.Eager &&
|
||||
} else if ((capabilities.get("pageLoadStrategy") ===
|
||||
session.PageLoadStrategy.Eager &&
|
||||
documentURI != "about:blank") ||
|
||||
/about:blocked\?/.exec(documentURI)) {
|
||||
this.stop();
|
||||
|
@ -399,7 +397,8 @@ const loadListener = {
|
|||
|
||||
// Only wait if the page load strategy is not `none`
|
||||
loadEventExpected = loadEventExpected &&
|
||||
(capabilities.get("pageLoadStrategy") !== PageLoadStrategy.None);
|
||||
(capabilities.get("pageLoadStrategy") !==
|
||||
session.PageLoadStrategy.None);
|
||||
|
||||
if (loadEventExpected) {
|
||||
let startTime = new Date().getTime();
|
||||
|
|
|
@ -8,14 +8,12 @@ import marionette_driver
|
|||
|
||||
|
||||
class Keys(marionette_driver.keys.Keys):
|
||||
"""
|
||||
Proxy to Marionette's keys with an "accel" provided for convenience
|
||||
testing across platforms.
|
||||
"""
|
||||
"""Proxy to marionette's keys with an "accel" provided for convenience
|
||||
testing across platforms."""
|
||||
|
||||
def __init__(self, marionette):
|
||||
self.is_mac = marionette.session_capabilities["platformName"] == "mac"
|
||||
self.isDarwin = marionette.session_capabilities['platformName'] == 'darwin'
|
||||
|
||||
@property
|
||||
def ACCEL(self):
|
||||
return self.META if self.is_mac else self.CONTROL
|
||||
return self.META if self.isDarwin else self.CONTROL
|
||||
|
|
|
@ -246,7 +246,7 @@ class BrowserWindow(BaseWindow):
|
|||
elif trigger == 'menu':
|
||||
self.menubar.select_by_id('tools-menu', 'menu_pageInfo')
|
||||
elif trigger == 'shortcut':
|
||||
if win.marionette.session_capabilities['platformName'] == 'windows':
|
||||
if win.marionette.session_capabilities['platformName'] == 'windows_nt':
|
||||
raise ValueError('Page info shortcut not available on Windows.')
|
||||
win.send_shortcut(win.localize_entity('pageInfoCmd.commandkey'),
|
||||
accel=True)
|
||||
|
|
|
@ -394,7 +394,7 @@ class BaseWindow(BaseLib):
|
|||
platform = self.marionette.session_capabilities['platformName']
|
||||
|
||||
keymap = {
|
||||
'accel': Keys.META if platform == "mac" else Keys.CONTROL,
|
||||
'accel': Keys.META if platform == 'darwin' else Keys.CONTROL,
|
||||
'alt': Keys.ALT,
|
||||
'cmd': Keys.COMMAND,
|
||||
'ctrl': Keys.CONTROL,
|
||||
|
|
|
@ -18,12 +18,7 @@ const {
|
|||
|
||||
XPCOMUtils.defineLazyGlobalGetters(this, ["URL"]);
|
||||
|
||||
this.EXPORTED_SYMBOLS = [
|
||||
"Capabilities",
|
||||
"PageLoadStrategy",
|
||||
"Proxy",
|
||||
"Timeouts",
|
||||
];
|
||||
this.EXPORTED_SYMBOLS = ["session"];
|
||||
|
||||
// Enable testing this module, as Services.appinfo.* is not available
|
||||
// in xpcshell tests.
|
||||
|
@ -31,8 +26,15 @@ const appinfo = {name: "<missing>", version: "<missing>"};
|
|||
try { appinfo.name = Services.appinfo.name.toLowerCase(); } catch (e) {}
|
||||
try { appinfo.version = Services.appinfo.version; } catch (e) {}
|
||||
|
||||
/**
|
||||
* State associated with a WebDriver session.
|
||||
*
|
||||
* @namespace
|
||||
*/
|
||||
this.session = {};
|
||||
|
||||
/** Representation of WebDriver session timeouts. */
|
||||
class Timeouts {
|
||||
session.Timeouts = class {
|
||||
constructor() {
|
||||
// disabled
|
||||
this.implicit = 0;
|
||||
|
@ -42,7 +44,7 @@ class Timeouts {
|
|||
this.script = 30000;
|
||||
}
|
||||
|
||||
toString() { return "[object Timeouts]"; }
|
||||
toString() { return "[object session.Timeouts]"; }
|
||||
|
||||
/** Marshals timeout durations to a JSON Object. */
|
||||
toJSON() {
|
||||
|
@ -56,7 +58,7 @@ class Timeouts {
|
|||
static fromJSON(json) {
|
||||
assert.object(json,
|
||||
pprint`Expected "timeouts" to be an object, got ${json}`);
|
||||
let t = new Timeouts();
|
||||
let t = new session.Timeouts();
|
||||
|
||||
for (let [type, ms] of Object.entries(json)) {
|
||||
switch (type) {
|
||||
|
@ -82,14 +84,14 @@ class Timeouts {
|
|||
|
||||
return t;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Enum of page loading strategies.
|
||||
*
|
||||
* @enum
|
||||
*/
|
||||
const PageLoadStrategy = {
|
||||
session.PageLoadStrategy = {
|
||||
/** No page load strategy. Navigation will return immediately. */
|
||||
None: "none",
|
||||
/**
|
||||
|
@ -105,7 +107,7 @@ const PageLoadStrategy = {
|
|||
};
|
||||
|
||||
/** Proxy configuration object representation. */
|
||||
class Proxy {
|
||||
session.Proxy = class {
|
||||
/** @class */
|
||||
constructor() {
|
||||
this.proxyType = null;
|
||||
|
@ -255,7 +257,7 @@ class Proxy {
|
|||
return [hostname, port];
|
||||
}
|
||||
|
||||
let p = new Proxy();
|
||||
let p = new session.Proxy();
|
||||
if (typeof json == "undefined" || json === null) {
|
||||
return p;
|
||||
}
|
||||
|
@ -354,23 +356,23 @@ class Proxy {
|
|||
});
|
||||
}
|
||||
|
||||
toString() { return "[object Proxy]"; }
|
||||
}
|
||||
toString() { return "[object session.Proxy]"; }
|
||||
};
|
||||
|
||||
/** WebDriver session capabilities representation. */
|
||||
class Capabilities extends Map {
|
||||
session.Capabilities = class extends Map {
|
||||
/** @class */
|
||||
constructor() {
|
||||
super([
|
||||
// webdriver
|
||||
["browserName", appinfo.name],
|
||||
["browserVersion", appinfo.version],
|
||||
["platformName", getWebDriverPlatformName()],
|
||||
["platformName", Services.sysinfo.getProperty("name").toLowerCase()],
|
||||
["platformVersion", Services.sysinfo.getProperty("version")],
|
||||
["pageLoadStrategy", PageLoadStrategy.Normal],
|
||||
["pageLoadStrategy", session.PageLoadStrategy.Normal],
|
||||
["acceptInsecureCerts", false],
|
||||
["timeouts", new Timeouts()],
|
||||
["proxy", new Proxy()],
|
||||
["timeouts", new session.Timeouts()],
|
||||
["proxy", new session.Proxy()],
|
||||
|
||||
// features
|
||||
["rotatable", appinfo.name == "B2G"],
|
||||
|
@ -392,16 +394,17 @@ class Capabilities extends Map {
|
|||
* JSON-safe capability value.
|
||||
*/
|
||||
set(key, value) {
|
||||
if (key === "timeouts" && !(value instanceof Timeouts)) {
|
||||
if (key === "timeouts" && !(value instanceof session.Timeouts)) {
|
||||
throw new TypeError();
|
||||
} else if (key === "proxy" && !(value instanceof Proxy)) {
|
||||
} else if (key === "proxy" && !(value instanceof session.Proxy)) {
|
||||
throw new TypeError();
|
||||
}
|
||||
|
||||
return super.set(key, value);
|
||||
}
|
||||
|
||||
toString() { return "[object Capabilities]"; }
|
||||
/** @return {string} */
|
||||
toString() { return "[object session.Capabilities]"; }
|
||||
|
||||
/**
|
||||
* JSON serialisation of capabilities object.
|
||||
|
@ -418,7 +421,7 @@ class Capabilities extends Map {
|
|||
* @param {Object.<string, *>=} json
|
||||
* WebDriver capabilities.
|
||||
*
|
||||
* @return {Capabilities}
|
||||
* @return {session.Capabilities}
|
||||
* Internal representation of WebDriver capabilities.
|
||||
*/
|
||||
static fromJSON(json) {
|
||||
|
@ -428,12 +431,12 @@ class Capabilities extends Map {
|
|||
assert.object(json,
|
||||
pprint`Expected "capabilities" to be an object, got ${json}"`);
|
||||
|
||||
return Capabilities.match_(json);
|
||||
return session.Capabilities.match_(json);
|
||||
}
|
||||
|
||||
// Matches capabilities as described by WebDriver.
|
||||
static match_(json = {}) {
|
||||
let matched = new Capabilities();
|
||||
let matched = new session.Capabilities();
|
||||
|
||||
for (let [k, v] of Object.entries(json)) {
|
||||
switch (k) {
|
||||
|
@ -445,12 +448,12 @@ class Capabilities extends Map {
|
|||
|
||||
case "pageLoadStrategy":
|
||||
if (v === null) {
|
||||
matched.set("pageLoadStrategy", PageLoadStrategy.Normal);
|
||||
matched.set("pageLoadStrategy", session.PageLoadStrategy.Normal);
|
||||
} else {
|
||||
assert.string(v,
|
||||
pprint`Expected ${k} to be a string, got ${v}`);
|
||||
|
||||
if (Object.values(PageLoadStrategy).includes(v)) {
|
||||
if (Object.values(session.PageLoadStrategy).includes(v)) {
|
||||
matched.set("pageLoadStrategy", v);
|
||||
} else {
|
||||
throw new InvalidArgumentError(
|
||||
|
@ -461,12 +464,12 @@ class Capabilities extends Map {
|
|||
break;
|
||||
|
||||
case "proxy":
|
||||
let proxy = Proxy.fromJSON(v);
|
||||
let proxy = session.Proxy.fromJSON(v);
|
||||
matched.set("proxy", proxy);
|
||||
break;
|
||||
|
||||
case "timeouts":
|
||||
let timeouts = Timeouts.fromJSON(v);
|
||||
let timeouts = session.Timeouts.fromJSON(v);
|
||||
matched.set("timeouts", timeouts);
|
||||
break;
|
||||
|
||||
|
@ -492,27 +495,7 @@ class Capabilities extends Map {
|
|||
|
||||
return matched;
|
||||
}
|
||||
}
|
||||
|
||||
this.Capabilities = Capabilities;
|
||||
this.PageLoadStrategy = PageLoadStrategy;
|
||||
this.Proxy = Proxy;
|
||||
this.Timeouts = Timeouts;
|
||||
|
||||
function getWebDriverPlatformName() {
|
||||
let name = Services.sysinfo.getProperty("name");
|
||||
|
||||
switch (name) {
|
||||
case "Windows_NT":
|
||||
return "windows";
|
||||
|
||||
case "Darwin":
|
||||
return "mac";
|
||||
|
||||
default:
|
||||
return name.toLowerCase();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Specialisation of |JSON.stringify| that produces JSON-safe object
|
||||
// literals, dropping empty objects and entries which values are undefined
|
|
@ -8,15 +8,10 @@ ChromeUtils.import("resource://gre/modules/Preferences.jsm");
|
|||
ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const {InvalidArgumentError} = ChromeUtils.import("chrome://marionette/content/error.js", {});
|
||||
const {
|
||||
Capabilities,
|
||||
PageLoadStrategy,
|
||||
Proxy,
|
||||
Timeouts,
|
||||
} = ChromeUtils.import("chrome://marionette/content/capabilities.js", {});
|
||||
ChromeUtils.import("chrome://marionette/content/session.js");
|
||||
|
||||
add_test(function test_Timeouts_ctor() {
|
||||
let ts = new Timeouts();
|
||||
let ts = new session.Timeouts();
|
||||
equal(ts.implicit, 0);
|
||||
equal(ts.pageLoad, 300000);
|
||||
equal(ts.script, 30000);
|
||||
|
@ -25,13 +20,13 @@ add_test(function test_Timeouts_ctor() {
|
|||
});
|
||||
|
||||
add_test(function test_Timeouts_toString() {
|
||||
equal(new Timeouts().toString(), "[object Timeouts]");
|
||||
equal(new session.Timeouts().toString(), "[object session.Timeouts]");
|
||||
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
add_test(function test_Timeouts_toJSON() {
|
||||
let ts = new Timeouts();
|
||||
let ts = new session.Timeouts();
|
||||
deepEqual(ts.toJSON(), {"implicit": 0, "pageLoad": 300000, "script": 30000});
|
||||
|
||||
run_next_test();
|
||||
|
@ -43,7 +38,7 @@ add_test(function test_Timeouts_fromJSON() {
|
|||
pageLoad: 20,
|
||||
script: 30,
|
||||
};
|
||||
let ts = Timeouts.fromJSON(json);
|
||||
let ts = session.Timeouts.fromJSON(json);
|
||||
equal(ts.implicit, json.implicit);
|
||||
equal(ts.pageLoad, json.pageLoad);
|
||||
equal(ts.script, json.script);
|
||||
|
@ -57,7 +52,7 @@ add_test(function test_Timeouts_fromJSON_unrecognised_field() {
|
|||
script: 42,
|
||||
};
|
||||
try {
|
||||
Timeouts.fromJSON(json);
|
||||
session.Timeouts.fromJSON(json);
|
||||
} catch (e) {
|
||||
equal(e.name, InvalidArgumentError.name);
|
||||
equal(e.message, "Unrecognised timeout: sessionId");
|
||||
|
@ -68,7 +63,7 @@ add_test(function test_Timeouts_fromJSON_unrecognised_field() {
|
|||
|
||||
add_test(function test_Timeouts_fromJSON_invalid_type() {
|
||||
try {
|
||||
Timeouts.fromJSON({script: "foobar"});
|
||||
session.Timeouts.fromJSON({script: "foobar"});
|
||||
} catch (e) {
|
||||
equal(e.name, InvalidArgumentError.name);
|
||||
equal(e.message, "Expected [object String] \"script\" to be a positive integer, got [object String] \"foobar\"");
|
||||
|
@ -79,7 +74,7 @@ add_test(function test_Timeouts_fromJSON_invalid_type() {
|
|||
|
||||
add_test(function test_Timeouts_fromJSON_bounds() {
|
||||
try {
|
||||
Timeouts.fromJSON({script: -42});
|
||||
session.Timeouts.fromJSON({script: -42});
|
||||
} catch (e) {
|
||||
equal(e.name, InvalidArgumentError.name);
|
||||
equal(e.message, "Expected [object String] \"script\" to be a positive integer, got [object Number] -42");
|
||||
|
@ -89,15 +84,15 @@ add_test(function test_Timeouts_fromJSON_bounds() {
|
|||
});
|
||||
|
||||
add_test(function test_PageLoadStrategy() {
|
||||
equal(PageLoadStrategy.None, "none");
|
||||
equal(PageLoadStrategy.Eager, "eager");
|
||||
equal(PageLoadStrategy.Normal, "normal");
|
||||
equal(session.PageLoadStrategy.None, "none");
|
||||
equal(session.PageLoadStrategy.Eager, "eager");
|
||||
equal(session.PageLoadStrategy.Normal, "normal");
|
||||
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
add_test(function test_Proxy_ctor() {
|
||||
let p = new Proxy();
|
||||
let p = new session.Proxy();
|
||||
let props = [
|
||||
"proxyType",
|
||||
"httpProxy",
|
||||
|
@ -116,7 +111,7 @@ add_test(function test_Proxy_ctor() {
|
|||
});
|
||||
|
||||
add_test(function test_Proxy_init() {
|
||||
let p = new Proxy();
|
||||
let p = new session.Proxy();
|
||||
|
||||
// no changed made, and 5 (system) is default
|
||||
equal(p.init(), false);
|
||||
|
@ -132,26 +127,26 @@ add_test(function test_Proxy_init() {
|
|||
"http://localhost:1234");
|
||||
|
||||
// direct
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "direct";
|
||||
ok(p.init());
|
||||
equal(Preferences.get("network.proxy.type"), 0);
|
||||
|
||||
// autodetect
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "autodetect";
|
||||
ok(p.init());
|
||||
equal(Preferences.get("network.proxy.type"), 4);
|
||||
|
||||
// system
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "system";
|
||||
ok(p.init());
|
||||
equal(Preferences.get("network.proxy.type"), 5);
|
||||
|
||||
// manual
|
||||
for (let proxy of ["ftp", "http", "ssl", "socks"]) {
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "manual";
|
||||
p.noProxy = ["foo", "bar"];
|
||||
p[`${proxy}Proxy`] = "foo";
|
||||
|
@ -171,7 +166,7 @@ add_test(function test_Proxy_init() {
|
|||
}
|
||||
|
||||
// empty no proxy should reset default exclustions
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "manual";
|
||||
p.noProxy = [];
|
||||
ok(p.init());
|
||||
|
@ -181,30 +176,30 @@ add_test(function test_Proxy_init() {
|
|||
});
|
||||
|
||||
add_test(function test_Proxy_toString() {
|
||||
equal(new Proxy().toString(), "[object Proxy]");
|
||||
equal(new session.Proxy().toString(), "[object session.Proxy]");
|
||||
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
add_test(function test_Proxy_toJSON() {
|
||||
let p = new Proxy();
|
||||
let p = new session.Proxy();
|
||||
deepEqual(p.toJSON(), {});
|
||||
|
||||
// autoconfig url
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "pac";
|
||||
p.proxyAutoconfigUrl = "foo";
|
||||
deepEqual(p.toJSON(), {proxyType: "pac", proxyAutoconfigUrl: "foo"});
|
||||
|
||||
// manual proxy
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "manual";
|
||||
deepEqual(p.toJSON(), {proxyType: "manual"});
|
||||
|
||||
for (let proxy of ["ftpProxy", "httpProxy", "sslProxy", "socksProxy"]) {
|
||||
let expected = {proxyType: "manual"};
|
||||
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "manual";
|
||||
|
||||
if (proxy == "socksProxy") {
|
||||
|
@ -236,7 +231,7 @@ add_test(function test_Proxy_toJSON() {
|
|||
}
|
||||
|
||||
// noProxy: add brackets for IPv6 address
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "manual";
|
||||
p.noProxy = ["2001:db8::1"];
|
||||
let expected = {proxyType: "manual", noProxy: "[2001:db8::1]"};
|
||||
|
@ -246,35 +241,35 @@ add_test(function test_Proxy_toJSON() {
|
|||
});
|
||||
|
||||
add_test(function test_Proxy_fromJSON() {
|
||||
let p = new Proxy();
|
||||
deepEqual(p, Proxy.fromJSON(undefined));
|
||||
deepEqual(p, Proxy.fromJSON(null));
|
||||
let p = new session.Proxy();
|
||||
deepEqual(p, session.Proxy.fromJSON(undefined));
|
||||
deepEqual(p, session.Proxy.fromJSON(null));
|
||||
|
||||
for (let typ of [true, 42, "foo", []]) {
|
||||
Assert.throws(() => Proxy.fromJSON(typ), /InvalidArgumentError/);
|
||||
Assert.throws(() => session.Proxy.fromJSON(typ), /InvalidArgumentError/);
|
||||
}
|
||||
|
||||
// must contain a valid proxyType
|
||||
Assert.throws(() => Proxy.fromJSON({}), /InvalidArgumentError/);
|
||||
Assert.throws(() => Proxy.fromJSON({proxyType: "foo"}),
|
||||
Assert.throws(() => session.Proxy.fromJSON({}), /InvalidArgumentError/);
|
||||
Assert.throws(() => session.Proxy.fromJSON({proxyType: "foo"}),
|
||||
/InvalidArgumentError/);
|
||||
|
||||
// autoconfig url
|
||||
for (let url of [true, 42, [], {}]) {
|
||||
Assert.throws(() => Proxy.fromJSON(
|
||||
Assert.throws(() => session.Proxy.fromJSON(
|
||||
{proxyType: "pac", proxyAutoconfigUrl: url}), /InvalidArgumentError/);
|
||||
}
|
||||
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "pac";
|
||||
p.proxyAutoconfigUrl = "foo";
|
||||
deepEqual(p,
|
||||
Proxy.fromJSON({proxyType: "pac", proxyAutoconfigUrl: "foo"}));
|
||||
session.Proxy.fromJSON({proxyType: "pac", proxyAutoconfigUrl: "foo"}));
|
||||
|
||||
// manual proxy
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "manual";
|
||||
deepEqual(p, Proxy.fromJSON({proxyType: "manual"}));
|
||||
deepEqual(p, session.Proxy.fromJSON({proxyType: "manual"}));
|
||||
|
||||
for (let proxy of ["httpProxy", "sslProxy", "ftpProxy", "socksProxy"]) {
|
||||
let manual = {proxyType: "manual"};
|
||||
|
@ -284,11 +279,11 @@ add_test(function test_Proxy_fromJSON() {
|
|||
"foo:-1", "foo:65536", "foo/test", "foo#42", "foo?foo=bar",
|
||||
"2001:db8::1"]) {
|
||||
manual[proxy] = host;
|
||||
Assert.throws(() => Proxy.fromJSON(manual),
|
||||
Assert.throws(() => session.Proxy.fromJSON(manual),
|
||||
/InvalidArgumentError/);
|
||||
}
|
||||
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "manual";
|
||||
if (proxy == "socksProxy") {
|
||||
manual.socksVersion = 5;
|
||||
|
@ -312,7 +307,7 @@ add_test(function test_Proxy_fromJSON() {
|
|||
p[`${proxy}`] = host_map[host].hostname;
|
||||
p[`${proxy}Port`] = host_map[host].port;
|
||||
|
||||
deepEqual(p, Proxy.fromJSON(manual));
|
||||
deepEqual(p, session.Proxy.fromJSON(manual));
|
||||
}
|
||||
|
||||
// Without a port the default port of the scheme is used
|
||||
|
@ -330,53 +325,52 @@ add_test(function test_Proxy_fromJSON() {
|
|||
p[`${proxy}Port`] = default_ports[proxy];
|
||||
}
|
||||
|
||||
deepEqual(p, Proxy.fromJSON(manual));
|
||||
deepEqual(p, session.Proxy.fromJSON(manual));
|
||||
}
|
||||
}
|
||||
|
||||
// missing required socks version
|
||||
Assert.throws(() => Proxy.fromJSON(
|
||||
Assert.throws(() => session.Proxy.fromJSON(
|
||||
{proxyType: "manual", socksProxy: "foo:1234"}),
|
||||
/InvalidArgumentError/);
|
||||
|
||||
// noProxy: invalid settings
|
||||
for (let noProxy of [true, 42, {}, null, "foo",
|
||||
[true], [42], [{}], [null]]) {
|
||||
Assert.throws(() => Proxy.fromJSON(
|
||||
Assert.throws(() => session.Proxy.fromJSON(
|
||||
{proxyType: "manual", noProxy}),
|
||||
/InvalidArgumentError/);
|
||||
}
|
||||
|
||||
// noProxy: valid settings
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "manual";
|
||||
for (let noProxy of [[], ["foo"], ["foo", "bar"], ["127.0.0.1"]]) {
|
||||
let manual = {proxyType: "manual", "noProxy": noProxy};
|
||||
p.noProxy = noProxy;
|
||||
deepEqual(p, Proxy.fromJSON(manual));
|
||||
deepEqual(p, session.Proxy.fromJSON(manual));
|
||||
}
|
||||
|
||||
// noProxy: IPv6 needs brackets removed
|
||||
p = new Proxy();
|
||||
p = new session.Proxy();
|
||||
p.proxyType = "manual";
|
||||
p.noProxy = ["2001:db8::1"];
|
||||
let manual = {proxyType: "manual", "noProxy": ["[2001:db8::1]"]};
|
||||
deepEqual(p, Proxy.fromJSON(manual));
|
||||
deepEqual(p, session.Proxy.fromJSON(manual));
|
||||
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
add_test(function test_Capabilities_ctor() {
|
||||
let caps = new Capabilities();
|
||||
let caps = new session.Capabilities();
|
||||
ok(caps.has("browserName"));
|
||||
ok(caps.has("browserVersion"));
|
||||
ok(caps.has("platformName"));
|
||||
ok(["linux", "mac", "windows", "android"].includes(caps.get("platformName")));
|
||||
ok(caps.has("platformVersion"));
|
||||
equal(PageLoadStrategy.Normal, caps.get("pageLoadStrategy"));
|
||||
equal(session.PageLoadStrategy.Normal, caps.get("pageLoadStrategy"));
|
||||
equal(false, caps.get("acceptInsecureCerts"));
|
||||
ok(caps.get("timeouts") instanceof Timeouts);
|
||||
ok(caps.get("proxy") instanceof Proxy);
|
||||
ok(caps.get("timeouts") instanceof session.Timeouts);
|
||||
ok(caps.get("proxy") instanceof session.Proxy);
|
||||
|
||||
ok(caps.has("rotatable"));
|
||||
|
||||
|
@ -390,13 +384,13 @@ add_test(function test_Capabilities_ctor() {
|
|||
});
|
||||
|
||||
add_test(function test_Capabilities_toString() {
|
||||
equal("[object Capabilities]", new Capabilities().toString());
|
||||
equal("[object session.Capabilities]", new session.Capabilities().toString());
|
||||
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
add_test(function test_Capabilities_toJSON() {
|
||||
let caps = new Capabilities();
|
||||
let caps = new session.Capabilities();
|
||||
let json = caps.toJSON();
|
||||
|
||||
equal(caps.get("browserName"), json.browserName);
|
||||
|
@ -421,7 +415,7 @@ add_test(function test_Capabilities_toJSON() {
|
|||
});
|
||||
|
||||
add_test(function test_Capabilities_fromJSON() {
|
||||
const {fromJSON} = Capabilities;
|
||||
const {fromJSON} = session.Capabilities;
|
||||
|
||||
// plain
|
||||
for (let typ of [{}, null, undefined]) {
|
||||
|
@ -432,7 +426,7 @@ add_test(function test_Capabilities_fromJSON() {
|
|||
}
|
||||
|
||||
// matching
|
||||
let caps = new Capabilities();
|
||||
let caps = new session.Capabilities();
|
||||
|
||||
caps = fromJSON({acceptInsecureCerts: true});
|
||||
equal(true, caps.get("acceptInsecureCerts"));
|
||||
|
@ -440,7 +434,7 @@ add_test(function test_Capabilities_fromJSON() {
|
|||
equal(false, caps.get("acceptInsecureCerts"));
|
||||
Assert.throws(() => fromJSON({acceptInsecureCerts: "foo"}), InvalidArgumentError);
|
||||
|
||||
for (let strategy of Object.values(PageLoadStrategy)) {
|
||||
for (let strategy of Object.values(session.PageLoadStrategy)) {
|
||||
caps = fromJSON({pageLoadStrategy: strategy});
|
||||
equal(strategy, caps.get("pageLoadStrategy"));
|
||||
}
|
||||
|
@ -480,9 +474,9 @@ add_test(function test_Capabilities_fromJSON() {
|
|||
run_next_test();
|
||||
});
|
||||
|
||||
// use Proxy.toJSON to test marshal
|
||||
// use session.Proxy.toJSON to test marshal
|
||||
add_test(function test_marshal() {
|
||||
let proxy = new Proxy();
|
||||
let proxy = new session.Proxy();
|
||||
|
||||
// drop empty fields
|
||||
deepEqual({}, proxy.toJSON());
|
||||
|
@ -498,7 +492,7 @@ add_test(function test_marshal() {
|
|||
deepEqual({proxyType: {foo: "bar"}}, proxy.toJSON());
|
||||
|
||||
// iterate over complex object that implement toJSON
|
||||
proxy.proxyType = new Proxy();
|
||||
proxy.proxyType = new session.Proxy();
|
||||
deepEqual({}, proxy.toJSON());
|
||||
proxy.proxyType.proxyType = "manual";
|
||||
deepEqual({proxyType: {proxyType: "manual"}}, proxy.toJSON());
|
||||
|
@ -506,7 +500,7 @@ add_test(function test_marshal() {
|
|||
// drop objects with no entries
|
||||
proxy.proxyType = {foo: {}};
|
||||
deepEqual({}, proxy.toJSON());
|
||||
proxy.proxyType = {foo: new Proxy()};
|
||||
proxy.proxyType = {foo: new session.Proxy()};
|
||||
deepEqual({}, proxy.toJSON());
|
||||
|
||||
run_next_test();
|
|
@ -8,7 +8,6 @@ skip-if = appname == "thunderbird"
|
|||
[test_action.js]
|
||||
[test_assert.js]
|
||||
[test_browser.js]
|
||||
[test_capabilities.js]
|
||||
[test_cookie.js]
|
||||
[test_dom.js]
|
||||
[test_element.js]
|
||||
|
@ -18,4 +17,5 @@ skip-if = appname == "thunderbird"
|
|||
[test_message.js]
|
||||
[test_navigate.js]
|
||||
[test_prefs.js]
|
||||
[test_session.js]
|
||||
[test_sync.js]
|
||||
|
|
|
@ -619878,7 +619878,7 @@
|
|||
"support"
|
||||
],
|
||||
"webdriver/tests/actions/control_click.py": [
|
||||
"cbe7cc08b4a991da0cce1dfefd96b25be3b50138",
|
||||
"341a8fbfe64f5231a91999768de0b44bba121122",
|
||||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/actions/key.py": [
|
||||
|
@ -619922,7 +619922,7 @@
|
|||
"support"
|
||||
],
|
||||
"webdriver/tests/actions/support/keys.py": [
|
||||
"b06f684335c4ebb18ee8d0dd9e9b757f4cdcd52a",
|
||||
"528ab8473914c14f9671d89b8a888d30162714ec",
|
||||
"support"
|
||||
],
|
||||
"webdriver/tests/actions/support/mouse.py": [
|
||||
|
@ -620318,7 +620318,7 @@
|
|||
"support"
|
||||
],
|
||||
"webdriver/tests/new_session/create_alwaysMatch.py": [
|
||||
"d0100b96ccdcc99bccd7bd611bd9df2f51c4a728",
|
||||
"b2783003e5e1a7d762a4340b33f65d6afd9b0e62",
|
||||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/new_session/create_firstMatch.py": [
|
||||
|
@ -620386,7 +620386,7 @@
|
|||
"support"
|
||||
],
|
||||
"webdriver/tests/set_window_rect/set.py": [
|
||||
"04161b59c5b144dd571dca3ef224595f9d4612f2",
|
||||
"79de443bc251f7effaa7c2ef3b95695f22db01c6",
|
||||
"wdspec"
|
||||
],
|
||||
"webdriver/tests/set_window_rect/user_prompts.py": [
|
||||
|
|
|
@ -407,7 +407,7 @@ class WdspecTest(Test):
|
|||
test_type = "wdspec"
|
||||
|
||||
default_timeout = 25
|
||||
long_timeout = 180 # 3 minutes
|
||||
long_timeout = 120
|
||||
|
||||
|
||||
manifest_test_cls = {"reftest": ReftestTest,
|
||||
|
|
|
@ -18,7 +18,7 @@ def test_control_click(session, test_actions_page, key_chain, mouse_chain, modif
|
|||
outer = session.find.css("#outer", all=False)
|
||||
mouse_chain.click(element=outer)
|
||||
session.actions.perform([key_chain.dict, mouse_chain.dict])
|
||||
if os == "windows":
|
||||
if os == "windows_nt":
|
||||
expected = [
|
||||
{"type": "mousemove"},
|
||||
{"type": "mousedown"},
|
||||
|
|
|
@ -15,7 +15,9 @@
|
|||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
"""The Keys implementation."""
|
||||
"""
|
||||
The Keys implementation.
|
||||
"""
|
||||
|
||||
from inspect import getmembers
|
||||
import sys
|
||||
|
@ -25,7 +27,7 @@ class Keys(object):
|
|||
"""
|
||||
Set of special keys codes.
|
||||
|
||||
See also https://w3c.github.io/webdriver/#h-keyboard-actions
|
||||
See also https://w3c.github.io/webdriver/webdriver-spec.html#h-keyboard-actions
|
||||
"""
|
||||
|
||||
NULL = u"\ue000"
|
||||
|
@ -740,7 +742,7 @@ ALL_EVENTS = {
|
|||
}
|
||||
}
|
||||
|
||||
if sys.platform == "mac":
|
||||
if sys.platform == 'darwin':
|
||||
MODIFIER_KEY = Keys.META
|
||||
else:
|
||||
MODIFIER_KEY = Keys.CONTROL
|
||||
|
|
|
@ -13,4 +13,3 @@ def test_valid(new_session, add_browser_capabilites, key, value):
|
|||
response, _ = new_session({"capabilities": {
|
||||
"alwaysMatch": add_browser_capabilites({key: value})}})
|
||||
assert_success(response)
|
||||
|
||||
|
|
|
@ -334,7 +334,7 @@ def test_negative_x_y(session):
|
|||
# On macOS, windows can only be moved off the screen on the
|
||||
# horizontal axis. The system menu bar also blocks windows from
|
||||
# being moved to (0,0).
|
||||
elif os == "mac":
|
||||
elif os == "darwin":
|
||||
assert_success(response, {"x": -8,
|
||||
"y": 23,
|
||||
"width": original["width"],
|
||||
|
@ -342,7 +342,7 @@ def test_negative_x_y(session):
|
|||
|
||||
# It turns out that Windows is the only platform on which the
|
||||
# window can be reliably positioned off-screen.
|
||||
elif os == "windows":
|
||||
elif os == "windows_nt":
|
||||
assert_success(response, {"x": -8,
|
||||
"y": -8,
|
||||
"width": original["width"],
|
||||
|
|
Загрузка…
Ссылка в новой задаче