summaryrefslogtreecommitdiffstats
path: root/testing/marionette/harness/marionette_harness/tests/unit/test_set_window_size.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/marionette/harness/marionette_harness/tests/unit/test_set_window_size.py')
-rw-r--r--testing/marionette/harness/marionette_harness/tests/unit/test_set_window_size.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/testing/marionette/harness/marionette_harness/tests/unit/test_set_window_size.py b/testing/marionette/harness/marionette_harness/tests/unit/test_set_window_size.py
new file mode 100644
index 000000000..e1bd5e684
--- /dev/null
+++ b/testing/marionette/harness/marionette_harness/tests/unit/test_set_window_size.py
@@ -0,0 +1,84 @@
+# 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_harness import MarionetteTestCase
+
+
+class TestSetWindowSize(MarionetteTestCase):
+ def setUp(self):
+ super(MarionetteTestCase, self).setUp()
+ self.start_size = self.marionette.window_size
+ self.max_width = self.marionette.execute_script("return window.screen.availWidth;")
+ self.max_height = self.marionette.execute_script("return window.screen.availHeight;")
+
+ def tearDown(self):
+ # WebDriver spec says a resize cannot result in window being maximized, an
+ # error is returned if that is the case; therefore if the window is maximized
+ # at the start of this test, returning to the original size via set_window_size
+ # size will result in error; so reset to original size minus 1 pixel width
+ if self.start_size['width'] == self.max_width and self.start_size['height'] == self.max_height:
+ self.start_size['width']-=1
+ self.marionette.set_window_size(self.start_size['width'], self.start_size['height'])
+ super(MarionetteTestCase, self).tearDown()
+
+ def test_that_we_can_get_and_set_window_size(self):
+ # event handler
+ self.marionette.execute_script("""
+ window.wrappedJSObject.rcvd_event = false;
+ window.onresize = function() {
+ window.wrappedJSObject.rcvd_event = true;
+ };
+ """)
+
+ # valid size
+ width = self.max_width - 100
+ height = self.max_height - 100
+ self.marionette.set_window_size(width, height)
+ self.wait_for_condition(lambda m: m.execute_script("return window.wrappedJSObject.rcvd_event;"))
+ size = self.marionette.window_size
+ self.assertEqual(size['width'], width,
+ "Window width is {0} but should be {1}".format(size['width'], width))
+ self.assertEqual(size['height'], height,
+ "Window height is {0} but should be {1}".format(size['height'], height))
+
+ def test_that_we_can_get_new_size_when_set_window_size(self):
+ actual = self.marionette.window_size
+ width = actual['width'] - 50
+ height = actual['height'] - 50
+ size = self.marionette.set_window_size(width, height)
+ self.assertIsNotNone(size, "Response is None")
+ self.assertEqual(size['width'], width,
+ "New width is {0} but should be {1}".format(size['width'], width))
+ self.assertEqual(size['height'], height,
+ "New height is {0} but should be {1}".format(size['height'], height))
+
+ def test_possible_to_request_window_larger_than_screen(self):
+ self.marionette.set_window_size(4 * self.max_width, 4 * self.max_height)
+ size = self.marionette.window_size
+
+ # In X the window size may be greater than the bounds of the screen
+ self.assertGreaterEqual(size["width"], self.max_width)
+ self.assertGreaterEqual(size["height"], self.max_height)
+
+ def test_that_we_can_maximise_the_window(self):
+ # valid size
+ width = self.max_width - 100
+ height = self.max_height - 100
+ self.marionette.set_window_size(width, height)
+
+ # event handler
+ self.marionette.execute_script("""
+ window.wrappedJSObject.rcvd_event = false;
+ window.onresize = function() {
+ window.wrappedJSObject.rcvd_event = true;
+ };
+ """)
+ self.marionette.maximize_window()
+ self.wait_for_condition(lambda m: m.execute_script("return window.wrappedJSObject.rcvd_event;"))
+
+ size = self.marionette.window_size
+ self.assertGreaterEqual(size['width'], self.max_width,
+ "Window width does not use availWidth, current width: {0}, max width: {1}".format(size['width'], self.max_width))
+ self.assertGreaterEqual(size['height'], self.max_height,
+ "Window height does not use availHeight. current width: {0}, max width: {1}".format(size['height'], self.max_height))