tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_expected.py (9202B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 
      5 from urllib.parse import quote
      6 
      7 from marionette_driver import expected
      8 from marionette_driver.by import By
      9 
     10 from marionette_harness import marionette_test
     11 
     12 
     13 def inline(doc):
     14    return "data:text/html;charset=utf-8,{}".format(quote(doc))
     15 
     16 
     17 static_element = inline("""<p>foo</p>""")
     18 static_elements = static_element + static_element
     19 
     20 remove_element_by_tag_name = """var el = document.getElementsByTagName('{}')[0];
     21    document.getElementsByTagName("body")[0].remove(el);"""
     22 
     23 hidden_element = inline("<p style='display: none'>hidden</p>")
     24 
     25 selected_element = inline("<option selected>selected</option>")
     26 unselected_element = inline("<option>unselected</option>")
     27 
     28 enabled_element = inline("<input>")
     29 disabled_element = inline("<input disabled>")
     30 
     31 
     32 def no_such_element(marionette):
     33    return marionette.find_element(By.ID, "nosuchelement")
     34 
     35 
     36 def no_such_elements(marionette):
     37    return marionette.find_elements(By.ID, "nosuchelement")
     38 
     39 
     40 def p(marionette):
     41    return marionette.find_element(By.TAG_NAME, "p")
     42 
     43 
     44 def ps(marionette):
     45    return marionette.find_elements(By.TAG_NAME, "p")
     46 
     47 
     48 class TestExpected(marionette_test.MarionetteTestCase):
     49    def test_element_present_func(self):
     50        self.marionette.navigate(static_element)
     51        el = expected.element_present(p)(self.marionette)
     52        self.assertIsNotNone(el)
     53 
     54    def test_element_present_locator(self):
     55        self.marionette.navigate(static_element)
     56        el = expected.element_present(By.TAG_NAME, "p")(self.marionette)
     57        self.assertIsNotNone(el)
     58 
     59    def test_element_present_not_present(self):
     60        r = expected.element_present(no_such_element)(self.marionette)
     61        self.assertIsInstance(r, bool)
     62        self.assertFalse(r)
     63 
     64    def test_element_not_present_func(self):
     65        r = expected.element_not_present(no_such_element)(self.marionette)
     66        self.assertIsInstance(r, bool)
     67        self.assertTrue(r)
     68 
     69    def test_element_not_present_locator(self):
     70        r = expected.element_not_present(By.ID, "nosuchelement")(self.marionette)
     71        self.assertIsInstance(r, bool)
     72        self.assertTrue(r)
     73 
     74    def test_element_not_present_is_present(self):
     75        self.marionette.navigate(static_element)
     76        r = expected.element_not_present(p)(self.marionette)
     77        self.assertIsInstance(r, bool)
     78        self.assertFalse(r)
     79 
     80    def test_element_stale(self):
     81        self.marionette.navigate(static_element)
     82        el = self.marionette.find_element(By.TAG_NAME, "p")
     83        self.assertIsNotNone(el)
     84        self.marionette.execute_script(remove_element_by_tag_name.format("p"))
     85        r = expected.element_stale(el)(self.marionette)
     86        self.assertTrue(r)
     87 
     88    def test_element_stale_is_not_stale(self):
     89        self.marionette.navigate(static_element)
     90        el = self.marionette.find_element(By.TAG_NAME, "p")
     91        r = expected.element_stale(el)(self.marionette)
     92        self.assertFalse(r)
     93 
     94    def test_elements_present_func(self):
     95        self.marionette.navigate(static_elements)
     96        els = expected.elements_present(ps)(self.marionette)
     97        self.assertEqual(len(els), 2)
     98 
     99    def test_elements_present_locator(self):
    100        self.marionette.navigate(static_elements)
    101        els = expected.elements_present(By.TAG_NAME, "p")(self.marionette)
    102        self.assertEqual(len(els), 2)
    103 
    104    def test_elements_present_not_present(self):
    105        r = expected.elements_present(no_such_elements)(self.marionette)
    106        self.assertEqual(r, [])
    107 
    108    def test_elements_not_present_func(self):
    109        r = expected.element_not_present(no_such_elements)(self.marionette)
    110        self.assertIsInstance(r, bool)
    111        self.assertTrue(r)
    112 
    113    def test_elements_not_present_locator(self):
    114        r = expected.element_not_present(By.ID, "nosuchelement")(self.marionette)
    115        self.assertIsInstance(r, bool)
    116        self.assertTrue(r)
    117 
    118    def test_elements_not_present_is_present(self):
    119        self.marionette.navigate(static_elements)
    120        r = expected.elements_not_present(ps)(self.marionette)
    121        self.assertIsInstance(r, bool)
    122        self.assertFalse(r)
    123 
    124    def test_element_displayed(self):
    125        self.marionette.navigate(static_element)
    126        el = self.marionette.find_element(By.TAG_NAME, "p")
    127        visible = expected.element_displayed(el)(self.marionette)
    128        self.assertTrue(visible)
    129 
    130    def test_element_displayed_locator(self):
    131        self.marionette.navigate(static_element)
    132        visible = expected.element_displayed(By.TAG_NAME, "p")(self.marionette)
    133        self.assertTrue(visible)
    134 
    135    def test_element_displayed_when_hidden(self):
    136        self.marionette.navigate(hidden_element)
    137        el = self.marionette.find_element(By.TAG_NAME, "p")
    138        visible = expected.element_displayed(el)(self.marionette)
    139        self.assertFalse(visible)
    140 
    141    def test_element_displayed_when_hidden_locator(self):
    142        self.marionette.navigate(hidden_element)
    143        visible = expected.element_displayed(By.TAG_NAME, "p")(self.marionette)
    144        self.assertFalse(visible)
    145 
    146    def test_element_displayed_when_not_present(self):
    147        self.marionette.navigate("about:blank")
    148        visible = expected.element_displayed(By.TAG_NAME, "p")(self.marionette)
    149        self.assertFalse(visible)
    150 
    151    def test_element_displayed_when_stale_element(self):
    152        self.marionette.navigate(static_element)
    153        el = self.marionette.find_element(By.TAG_NAME, "p")
    154        self.marionette.execute_script("arguments[0].remove()", [el])
    155        missing = expected.element_displayed(el)(self.marionette)
    156        self.assertFalse(missing)
    157 
    158    def test_element_not_displayed(self):
    159        self.marionette.navigate(hidden_element)
    160        el = self.marionette.find_element(By.TAG_NAME, "p")
    161        hidden = expected.element_not_displayed(el)(self.marionette)
    162        self.assertTrue(hidden)
    163 
    164    def test_element_not_displayed_locator(self):
    165        self.marionette.navigate(hidden_element)
    166        hidden = expected.element_not_displayed(By.TAG_NAME, "p")(self.marionette)
    167        self.assertTrue(hidden)
    168 
    169    def test_element_not_displayed_when_visible(self):
    170        self.marionette.navigate(static_element)
    171        el = self.marionette.find_element(By.TAG_NAME, "p")
    172        hidden = expected.element_not_displayed(el)(self.marionette)
    173        self.assertFalse(hidden)
    174 
    175    def test_element_not_displayed_when_visible_locator(self):
    176        self.marionette.navigate(static_element)
    177        hidden = expected.element_not_displayed(By.TAG_NAME, "p")(self.marionette)
    178        self.assertFalse(hidden)
    179 
    180    def test_element_not_displayed_when_stale_element(self):
    181        self.marionette.navigate(static_element)
    182        el = self.marionette.find_element(By.TAG_NAME, "p")
    183        self.marionette.execute_script("arguments[0].remove()", [el])
    184        missing = expected.element_not_displayed(el)(self.marionette)
    185        self.assertTrue(missing)
    186 
    187    def test_element_selected(self):
    188        self.marionette.navigate(selected_element)
    189        el = self.marionette.find_element(By.TAG_NAME, "option")
    190        selected = expected.element_selected(el)(self.marionette)
    191        self.assertTrue(selected)
    192 
    193    def test_element_selected_when_not_selected(self):
    194        self.marionette.navigate(unselected_element)
    195        el = self.marionette.find_element(By.TAG_NAME, "option")
    196        unselected = expected.element_selected(el)(self.marionette)
    197        self.assertFalse(unselected)
    198 
    199    def test_element_not_selected(self):
    200        self.marionette.navigate(unselected_element)
    201        el = self.marionette.find_element(By.TAG_NAME, "option")
    202        unselected = expected.element_not_selected(el)(self.marionette)
    203        self.assertTrue(unselected)
    204 
    205    def test_element_not_selected_when_selected(self):
    206        self.marionette.navigate(selected_element)
    207        el = self.marionette.find_element(By.TAG_NAME, "option")
    208        selected = expected.element_not_selected(el)(self.marionette)
    209        self.assertFalse(selected)
    210 
    211    def test_element_enabled(self):
    212        self.marionette.navigate(enabled_element)
    213        el = self.marionette.find_element(By.TAG_NAME, "input")
    214        enabled = expected.element_enabled(el)(self.marionette)
    215        self.assertTrue(enabled)
    216 
    217    def test_element_enabled_when_disabled(self):
    218        self.marionette.navigate(disabled_element)
    219        el = self.marionette.find_element(By.TAG_NAME, "input")
    220        disabled = expected.element_enabled(el)(self.marionette)
    221        self.assertFalse(disabled)
    222 
    223    def test_element_not_enabled(self):
    224        self.marionette.navigate(disabled_element)
    225        el = self.marionette.find_element(By.TAG_NAME, "input")
    226        disabled = expected.element_not_enabled(el)(self.marionette)
    227        self.assertTrue(disabled)
    228 
    229    def test_element_not_enabled_when_enabled(self):
    230        self.marionette.navigate(enabled_element)
    231        el = self.marionette.find_element(By.TAG_NAME, "input")
    232        enabled = expected.element_not_enabled(el)(self.marionette)
    233        self.assertFalse(enabled)