tor-browser

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

test_actions_key.py (2621B)


      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.by import By
      8 from marionette_driver.keys import Keys
      9 from marionette_harness import MarionetteTestCase, WindowManagerMixin
     10 
     11 
     12 def inline(doc):
     13    return "data:text/html;charset=utf-8,{}".format(quote(doc))
     14 
     15 
     16 class TestKeyActions(WindowManagerMixin, MarionetteTestCase):
     17    def setUp(self):
     18        super(TestKeyActions, self).setUp()
     19        self.key_chain = self.marionette.actions.sequence("key", "keyboard_id")
     20 
     21        if self.marionette.session_capabilities["platformName"] == "mac":
     22            self.mod_key = Keys.META
     23        else:
     24            self.mod_key = Keys.CONTROL
     25 
     26        test_html = self.marionette.absolute_url("keyboard.html")
     27        self.marionette.navigate(test_html)
     28        self.reporter_element = self.marionette.find_element(By.ID, "keyReporter")
     29        self.reporter_element.click()
     30 
     31    def tearDown(self):
     32        self.marionette.actions.release()
     33 
     34        super(TestKeyActions, self).tearDown()
     35 
     36    @property
     37    def key_reporter_value(self):
     38        return self.reporter_element.get_property("value")
     39 
     40    def test_basic_input(self):
     41        self.key_chain.key_down("a").key_down("b").key_down("c").perform()
     42        self.assertEqual(self.key_reporter_value, "abc")
     43 
     44    def test_upcase_input(self):
     45        self.key_chain.key_down(Keys.SHIFT).key_down("a").key_up(Keys.SHIFT).key_down(
     46            "b"
     47        ).key_down("c").perform()
     48        self.assertEqual(self.key_reporter_value, "Abc")
     49 
     50    def test_replace_input(self):
     51        self.key_chain.key_down("a").key_down("b").key_down("c").perform()
     52        self.assertEqual(self.key_reporter_value, "abc")
     53 
     54        self.key_chain.key_down(self.mod_key).key_down("a").key_up(
     55            self.mod_key
     56        ).key_down("x").perform()
     57        self.assertEqual(self.key_reporter_value, "x")
     58 
     59    def test_clear_input(self):
     60        self.key_chain.key_down("a").key_down("b").key_down("c").perform()
     61        self.assertEqual(self.key_reporter_value, "abc")
     62 
     63        self.key_chain.key_down(self.mod_key).key_down("a").key_down("x").perform()
     64        self.assertEqual(self.key_reporter_value, "")
     65 
     66    def test_input_with_wait(self):
     67        self.key_chain.key_down("a").key_down("b").key_down("c").perform()
     68        self.key_chain.key_down(self.mod_key).key_down("a").pause(250).key_down(
     69            "x"
     70        ).perform()
     71        self.assertEqual(self.key_reporter_value, "")