diff --git a/testing/marionette/harness/marionette_harness/tests/unit/test_capabilities.py b/testing/marionette/harness/marionette_harness/tests/unit/test_capabilities.py index f50fdc568438..5c9c92d0376b 100644 --- a/testing/marionette/harness/marionette_harness/tests/unit/test_capabilities.py +++ b/testing/marionette/harness/marionette_harness/tests/unit/test_capabilities.py @@ -223,9 +223,14 @@ class TestCapabilityMatching(MarionetteTestCase): self.marionette.start_session({"desiredCapabilities": {"pageLoadStrategy": strategy}}) self.assertEqual(self.marionette.session_capabilities["pageLoadStrategy"], strategy) + # A null value should be treatend as "normal" + self.delete_session() + self.marionette.start_session({"desiredCapabilities": {"pageLoadStrategy": None}}) + self.assertEqual(self.marionette.session_capabilities["pageLoadStrategy"], "normal") + for value in ["", "EAGER", True, 42, {}, []]: print("invalid strategy {}".format(value)) - with self.assertRaises(SessionNotCreatedException): + with self.assertRaisesRegexp(SessionNotCreatedException, "InvalidArgumentError"): self.marionette.start_session({"desiredCapabilities": {"pageLoadStrategy": value}}) def test_proxy_default(self): diff --git a/testing/marionette/session.js b/testing/marionette/session.js index f353b6407b57..c47423e52def 100644 --- a/testing/marionette/session.js +++ b/testing/marionette/session.js @@ -245,7 +245,7 @@ session.Capabilities = class extends Map { throw new TypeError(); } - return super.set(key, value); + return super.set(key, value); } toString() { return "[object session.Capabilities]"; } @@ -357,11 +357,18 @@ session.Capabilities = class extends Map { break; case "pageLoadStrategy": - if (Object.values(session.PageLoadStrategy).includes(v)) { - matched.set("pageLoadStrategy", v); + if (v === null) { + matched.set("pageLoadStrategy", session.PageLoadStrategy.Normal); } else { - throw new TypeError("Unknown page load strategy: " + v); + assert.string(v); + + if (Object.values(session.PageLoadStrategy).includes(v)) { + matched.set("pageLoadStrategy", v); + } else { + throw new InvalidArgumentError("Unknown page load strategy: " + v); + } } + break; case "proxy":