summaryrefslogtreecommitdiffstats
path: root/testing/marionette/harness/marionette_harness/tests/unit/test_about_pages.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/marionette/harness/marionette_harness/tests/unit/test_about_pages.py')
-rw-r--r--testing/marionette/harness/marionette_harness/tests/unit/test_about_pages.py134
1 files changed, 134 insertions, 0 deletions
diff --git a/testing/marionette/harness/marionette_harness/tests/unit/test_about_pages.py b/testing/marionette/harness/marionette_harness/tests/unit/test_about_pages.py
new file mode 100644
index 000000000..e9992f8a5
--- /dev/null
+++ b/testing/marionette/harness/marionette_harness/tests/unit/test_about_pages.py
@@ -0,0 +1,134 @@
+# 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 import By, Wait
+from marionette_driver.keys import Keys
+
+from marionette_harness import MarionetteTestCase, skip, skip_if_mobile, WindowManagerMixin
+
+
+class TestAboutPages(WindowManagerMixin, MarionetteTestCase):
+
+ def setUp(self):
+ super(TestAboutPages, self).setUp()
+
+ if self.marionette.session_capabilities['platformName'] == 'darwin':
+ self.mod_key = Keys.META
+ else:
+ self.mod_key = Keys.CONTROL
+
+ self.remote_uri = self.marionette.absolute_url("windowHandles.html")
+
+ def tearDown(self):
+ self.close_all_tabs()
+
+ super(TestAboutPages, self).tearDown()
+
+ def open_tab_with_link(self):
+ with self.marionette.using_context("content"):
+ self.marionette.navigate(self.remote_uri)
+
+ link = self.marionette.find_element(By.ID, "new-tab")
+ link.click()
+
+ @skip_if_mobile("Bug 1333209 - Process killed because of connection loss")
+ def test_back_forward(self):
+ # Bug 1311041 - Prevent changing of window handle by forcing the test
+ # to be run in a new tab.
+ new_tab = self.open_tab(trigger=self.open_tab_with_link)
+ self.marionette.switch_to_window(new_tab)
+
+ self.marionette.navigate("about:blank")
+ self.marionette.navigate(self.remote_uri)
+ self.marionette.navigate("about:support")
+
+ self.marionette.go_back()
+ self.assertEqual(self.marionette.get_url(), self.remote_uri)
+
+ self.marionette.go_forward()
+ self.assertEqual(self.marionette.get_url(), "about:support")
+
+ self.marionette.close()
+ self.marionette.switch_to_window(self.start_tab)
+
+ @skip_if_mobile("Bug 1333209 - Process killed because of connection loss")
+ def test_navigate_non_remote_about_pages(self):
+ # Bug 1311041 - Prevent changing of window handle by forcing the test
+ # to be run in a new tab.
+ new_tab = self.open_tab(trigger=self.open_tab_with_link)
+ self.marionette.switch_to_window(new_tab)
+
+ self.marionette.navigate("about:blank")
+ self.assertEqual(self.marionette.get_url(), "about:blank")
+ self.marionette.navigate("about:support")
+ self.assertEqual(self.marionette.get_url(), "about:support")
+
+ self.marionette.close()
+ self.marionette.switch_to_window(self.start_tab)
+
+ @skip_if_mobile("On Android no shortcuts are available")
+ def test_navigate_shortcut_key(self):
+ def open_with_shortcut():
+ self.marionette.navigate(self.remote_uri)
+ with self.marionette.using_context("chrome"):
+ main_win = self.marionette.find_element(By.ID, "main-window")
+ main_win.send_keys(self.mod_key, Keys.SHIFT, 'a')
+
+ new_tab = self.open_tab(trigger=open_with_shortcut)
+ self.marionette.switch_to_window(new_tab)
+
+ Wait(self.marionette).until(lambda mn: mn.get_url() == "about:addons",
+ message="'about:addons' hasn't been loaded")
+
+ self.marionette.close()
+ self.marionette.switch_to_window(self.start_tab)
+
+ @skip("Bug 1334137 - Intermittent: Process killed because of hang in getCurrentUrl()")
+ @skip_if_mobile("Interacting with chrome elements not available for Fennec")
+ def test_type_to_non_remote_tab(self):
+ # Bug 1311041 - Prevent changing of window handle by forcing the test
+ # to be run in a new tab.
+ new_tab = self.open_tab(trigger=self.open_tab_with_link)
+ self.marionette.switch_to_window(new_tab)
+
+ with self.marionette.using_context("chrome"):
+ urlbar = self.marionette.find_element(By.ID, 'urlbar')
+ urlbar.send_keys(self.mod_key + 'a')
+ urlbar.send_keys(self.mod_key + 'x')
+ urlbar.send_keys('about:support' + Keys.ENTER)
+ Wait(self.marionette).until(lambda mn: mn.get_url() == "about:support",
+ message="'about:support' hasn't been loaded")
+
+ self.marionette.close()
+ self.marionette.switch_to_window(self.start_tab)
+
+ @skip_if_mobile("Interacting with chrome elements not available for Fennec")
+ def test_type_to_remote_tab(self):
+ # Bug 1311041 - Prevent changing of window handle by forcing the test
+ # to be run in a new tab.
+ new_tab = self.open_tab(trigger=self.open_tab_with_link)
+ self.marionette.switch_to_window(new_tab)
+
+ # about:blank keeps remoteness from remote_uri
+ self.marionette.navigate("about:blank")
+ with self.marionette.using_context("chrome"):
+ urlbar = self.marionette.find_element(By.ID, 'urlbar')
+ urlbar.send_keys(self.mod_key + 'a')
+ urlbar.send_keys(self.mod_key + 'x')
+ urlbar.send_keys(self.remote_uri + Keys.ENTER)
+
+ Wait(self.marionette).until(lambda mn: mn.get_url() == self.remote_uri,
+ message="'{}' hasn't been loaded".format(self.remote_uri))
+
+ @skip_if_mobile("Needs application independent method to open a new tab")
+ def test_hang(self):
+ # Bug 1311041 - Prevent changing of window handle by forcing the test
+ # to be run in a new tab.
+ new_tab = self.open_tab(trigger=self.open_tab_with_link)
+
+ # Close the start tab
+ self.marionette.close()
+ self.marionette.switch_to_window(new_tab)
+
+ self.marionette.navigate(self.remote_uri)