summaryrefslogtreecommitdiffstats
path: root/testing/marionette/harness/marionette_harness/tests/unit/test_element_id_chrome.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/marionette/harness/marionette_harness/tests/unit/test_element_id_chrome.py')
-rw-r--r--testing/marionette/harness/marionette_harness/tests/unit/test_element_id_chrome.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/testing/marionette/harness/marionette_harness/tests/unit/test_element_id_chrome.py b/testing/marionette/harness/marionette_harness/tests/unit/test_element_id_chrome.py
new file mode 100644
index 0000000000..6c9f01f339
--- /dev/null
+++ b/testing/marionette/harness/marionette_harness/tests/unit/test_element_id_chrome.py
@@ -0,0 +1,88 @@
+# 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 NoSuchElementException
+from marionette_driver.marionette import WebElement
+
+from marionette_harness import MarionetteTestCase, parameterized, WindowManagerMixin
+
+
+PAGE_XHTML = "chrome://remote/content/marionette/test_no_xul.xhtml"
+PAGE_XUL = "chrome://remote/content/marionette/test.xhtml"
+
+
+class TestElementIDChrome(WindowManagerMixin, MarionetteTestCase):
+ def setUp(self):
+ super(TestElementIDChrome, self).setUp()
+
+ self.marionette.set_context("chrome")
+
+ def tearDown(self):
+ self.close_all_windows()
+
+ super(TestElementIDChrome, self).tearDown()
+
+ @parameterized("XUL", PAGE_XUL)
+ @parameterized("XHTML", PAGE_XHTML)
+ def test_id_identical_for_the_same_element(self, chrome_url):
+ win = self.open_chrome_window(chrome_url)
+ self.marionette.switch_to_window(win)
+
+ found_el = self.marionette.find_element(By.ID, "textInput")
+ self.assertEqual(WebElement, type(found_el))
+
+ found_el_new = self.marionette.find_element(By.ID, "textInput")
+ self.assertEqual(found_el_new.id, found_el.id)
+
+ @parameterized("XUL", PAGE_XUL)
+ @parameterized("XHTML", PAGE_XHTML)
+ def test_id_unique_per_session(self, chrome_url):
+ win = self.open_chrome_window(chrome_url)
+ self.marionette.switch_to_window(win)
+
+ found_el = self.marionette.find_element(By.ID, "textInput")
+ self.assertEqual(WebElement, type(found_el))
+
+ self.marionette.delete_session()
+ self.marionette.start_session()
+
+ self.marionette.set_context("chrome")
+ self.marionette.switch_to_window(win)
+
+ found_el_new = self.marionette.find_element(By.ID, "textInput")
+ self.assertNotEqual(found_el_new.id, found_el.id)
+
+ @parameterized("XUL", PAGE_XUL)
+ @parameterized("XHTML", PAGE_XHTML)
+ def test_id_no_such_element_in_another_chrome_window(self, chrome_url):
+ original_handle = self.marionette.current_window_handle
+
+ win = self.open_chrome_window(chrome_url)
+ self.marionette.switch_to_window(win)
+
+ found_el = self.marionette.find_element(By.ID, "textInput")
+ self.assertEqual(WebElement, type(found_el))
+
+ self.marionette.switch_to_window(original_handle)
+
+ with self.assertRaises(NoSuchElementException):
+ found_el.get_property("localName")
+
+ @parameterized("XUL", PAGE_XUL)
+ @parameterized("XHTML", PAGE_XHTML)
+ def test_id_removed_when_chrome_window_is_closed(self, chrome_url):
+ original_handle = self.marionette.current_window_handle
+
+ win = self.open_chrome_window(chrome_url)
+ self.marionette.switch_to_window(win)
+
+ found_el = self.marionette.find_element(By.ID, "textInput")
+ self.assertEqual(WebElement, type(found_el))
+
+ self.marionette.close_chrome_window()
+ self.marionette.switch_to_window(original_handle)
+
+ with self.assertRaises(NoSuchElementException):
+ found_el.get_property("localName")