summaryrefslogtreecommitdiffstats
path: root/testing/marionette/harness/marionette_harness/tests/unit/test_timeouts.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/marionette/harness/marionette_harness/tests/unit/test_timeouts.py')
-rw-r--r--testing/marionette/harness/marionette_harness/tests/unit/test_timeouts.py115
1 files changed, 115 insertions, 0 deletions
diff --git a/testing/marionette/harness/marionette_harness/tests/unit/test_timeouts.py b/testing/marionette/harness/marionette_harness/tests/unit/test_timeouts.py
new file mode 100644
index 000000000..354e6a7eb
--- /dev/null
+++ b/testing/marionette/harness/marionette_harness/tests/unit/test_timeouts.py
@@ -0,0 +1,115 @@
+# 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/.
+
+from marionette_driver.by import By
+from marionette_driver.errors import (
+ MarionetteException,
+ NoSuchElementException,
+ ScriptTimeoutException,
+)
+from marionette_driver.marionette import HTMLElement
+
+from marionette_harness import MarionetteTestCase, run_if_manage_instance, skip_if_mobile
+
+
+class TestTimeouts(MarionetteTestCase):
+ def tearDown(self):
+ self.marionette.timeout.reset()
+ MarionetteTestCase.tearDown(self)
+
+ def test_page_timeout_notdefinetimeout_pass(self):
+ test_html = self.marionette.absolute_url("test.html")
+ self.marionette.navigate(test_html)
+
+ def test_page_timeout_fail(self):
+ self.marionette.timeout.page_load = 0
+ test_html = self.marionette.absolute_url("test.html")
+ self.assertRaises(MarionetteException, self.marionette.navigate, test_html)
+
+ def test_page_timeout_pass(self):
+ self.marionette.timeout.page_load = 60
+ test_html = self.marionette.absolute_url("test.html")
+ self.marionette.navigate(test_html)
+
+ def test_search_timeout_notfound_settimeout(self):
+ test_html = self.marionette.absolute_url("test.html")
+ self.marionette.navigate(test_html)
+ self.marionette.timeout.implicit = 1
+ self.assertRaises(NoSuchElementException, self.marionette.find_element, By.ID, "I'm not on the page")
+ self.marionette.timeout.implicit = 0
+ self.assertRaises(NoSuchElementException, self.marionette.find_element, By.ID, "I'm not on the page")
+
+ def test_search_timeout_found_settimeout(self):
+ test_html = self.marionette.absolute_url("test.html")
+ self.marionette.navigate(test_html)
+ button = self.marionette.find_element(By.ID, "createDivButton")
+ button.click()
+ self.marionette.timeout.implicit = 8
+ self.assertEqual(HTMLElement, type(self.marionette.find_element(By.ID, "newDiv")))
+
+ def test_search_timeout_found(self):
+ test_html = self.marionette.absolute_url("test.html")
+ self.marionette.navigate(test_html)
+ button = self.marionette.find_element(By.ID, "createDivButton")
+ button.click()
+ self.assertRaises(NoSuchElementException, self.marionette.find_element, By.ID, "newDiv")
+
+ @run_if_manage_instance("Only runnable if Marionette manages the instance")
+ @skip_if_mobile("Bug 1322993 - Missing temporary folder")
+ def test_reset_timeout(self):
+ timeouts = [getattr(self.marionette.timeout, f) for f in (
+ 'implicit', 'page_load', 'script',)]
+
+ def do_check(callback):
+ for timeout in timeouts:
+ timeout = 10000
+ self.assertEqual(timeout, 10000)
+ callback()
+ for timeout in timeouts:
+ self.assertNotEqual(timeout, 10000)
+
+ def callback_quit():
+ self.marionette.quit()
+ self.marionette.start_session()
+
+ do_check(self.marionette.restart)
+ do_check(callback_quit)
+
+ def test_execute_async_timeout_settimeout(self):
+ test_html = self.marionette.absolute_url("test.html")
+ self.marionette.navigate(test_html)
+ self.marionette.timeout.script = 1
+ self.assertRaises(ScriptTimeoutException, self.marionette.execute_async_script, "var x = 1;")
+
+ def test_no_timeout_settimeout(self):
+ test_html = self.marionette.absolute_url("test.html")
+ self.marionette.navigate(test_html)
+ self.marionette.timeout.script = 1
+ self.assertTrue(self.marionette.execute_async_script("""
+ var callback = arguments[arguments.length - 1];
+ setTimeout(function() { callback(true); }, 500);
+ """))
+
+ def test_compat_input_types(self):
+ # When using the spec-incompatible input format which we have
+ # for backwards compatibility, it should be possible to send ms
+ # as a string type and have the server parseInt it to an integer.
+ body = {"type": "script", "ms": "30000"}
+ self.marionette._send_message("setTimeouts", body)
+
+ def test_deprecated_set_timeouts_command(self):
+ body = {"implicit": 3000}
+ self.marionette._send_message("timeouts", body)
+
+ def test_deprecated_set_search_timeout(self):
+ self.marionette.set_search_timeout(1000)
+ self.assertEqual(1, self.marionette.timeout.implicit)
+
+ def test_deprecated_set_script_timeout(self):
+ self.marionette.set_script_timeout(2000)
+ self.assertEqual(2, self.marionette.timeout.script)
+
+ def test_deprecated_set_page_load_timeout(self):
+ self.marionette.set_page_load_timeout(3000)
+ self.assertEqual(3, self.marionette.timeout.page_load)