summaryrefslogtreecommitdiffstats
path: root/testing/marionette/harness/marionette_harness/tests/unit/single_finger_functions.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/marionette/harness/marionette_harness/tests/unit/single_finger_functions.py')
-rw-r--r--testing/marionette/harness/marionette_harness/tests/unit/single_finger_functions.py131
1 files changed, 131 insertions, 0 deletions
diff --git a/testing/marionette/harness/marionette_harness/tests/unit/single_finger_functions.py b/testing/marionette/harness/marionette_harness/tests/unit/single_finger_functions.py
new file mode 100644
index 000000000..c2daf9d54
--- /dev/null
+++ b/testing/marionette/harness/marionette_harness/tests/unit/single_finger_functions.py
@@ -0,0 +1,131 @@
+from marionette_driver.marionette import Actions
+from marionette_driver.errors import TimeoutException
+from marionette_driver.by import By
+
+
+def wait_for_condition_else_raise(marionette, wait_for_condition, expected, script):
+ try:
+ wait_for_condition(lambda m: expected in m.execute_script(script))
+ except TimeoutException as e:
+ raise TimeoutException("{0} got {1} instead of {2}".format(
+ e.message, marionette.execute_script(script), expected))
+
+def press_release(marionette, times, wait_for_condition, expected):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ action = Actions(marionette)
+ button = marionette.find_element(By.ID, "button1")
+ action.press(button).release()
+ # Insert wait between each press and release chain.
+ for _ in range(times-1):
+ action.wait(0.1)
+ action.press(button).release()
+ action.perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected, "return document.getElementById('button1').innerHTML;")
+
+def move_element(marionette, wait_for_condition, expected1, expected2):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ ele = marionette.find_element(By.ID, "button1")
+ drop = marionette.find_element(By.ID, "button2")
+ action = Actions(marionette)
+ action.press(ele).move(drop).release()
+ action.perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected1, "return document.getElementById('button1').innerHTML;")
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected2, "return document.getElementById('button2').innerHTML;")
+
+def move_element_offset(marionette, wait_for_condition, expected1, expected2):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ ele = marionette.find_element(By.ID, "button1")
+ action = Actions(marionette)
+ action.press(ele).move_by_offset(0,150).move_by_offset(0, 150).release()
+ action.perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected1, "return document.getElementById('button1').innerHTML;")
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected2, "return document.getElementById('button2').innerHTML;")
+
+def chain(marionette, wait_for_condition, expected1, expected2):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ marionette.timeout.implicit = 15
+ action = Actions(marionette)
+ button1 = marionette.find_element(By.ID, "button1")
+ action.press(button1).perform()
+ button2 = marionette.find_element(By.ID, "delayed")
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected1, "return document.getElementById('button1').innerHTML;")
+ action.move(button2).release().perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected2, "return document.getElementById('delayed').innerHTML;")
+
+def chain_flick(marionette, wait_for_condition, expected1, expected2):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ button = marionette.find_element(By.ID, "button1")
+ action = Actions(marionette)
+ action.flick(button, 0, 0, 0, 200).perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected1,"return document.getElementById('button1').innerHTML;")
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected2,"return document.getElementById('buttonFlick').innerHTML;")
+
+
+def wait(marionette, wait_for_condition, expected):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ action = Actions(marionette)
+ button = marionette.find_element(By.ID, "button1")
+ action.press(button).wait().release().perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected, "return document.getElementById('button1').innerHTML;")
+
+def wait_with_value(marionette, wait_for_condition, expected):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ button = marionette.find_element(By.ID, "button1")
+ action = Actions(marionette)
+ action.press(button).wait(0.01).release()
+ action.perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected, "return document.getElementById('button1').innerHTML;")
+
+def context_menu(marionette, wait_for_condition, expected1, expected2):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ button = marionette.find_element(By.ID, "button1")
+ action = Actions(marionette)
+ action.press(button).wait(5).perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected1, "return document.getElementById('button1').innerHTML;")
+ action.release().perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected2, "return document.getElementById('button1').innerHTML;")
+
+def long_press_action(marionette, wait_for_condition, expected):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ button = marionette.find_element(By.ID, "button1")
+ action = Actions(marionette)
+ action.long_press(button, 5).perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected, "return document.getElementById('button1').innerHTML;")
+
+def long_press_on_xy_action(marionette, wait_for_condition, expected):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ html = marionette.find_element(By.TAG_NAME, "html")
+ button = marionette.find_element(By.ID, "button1")
+ action = Actions(marionette)
+
+ # Press the center of the button with respect to html.
+ x = button.rect['x'] + button.rect['width'] / 2.0
+ y = button.rect['y'] + button.rect['height'] / 2.0
+ action.long_press(html, 5, x, y).perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected, "return document.getElementById('button1').innerHTML;")
+
+def single_tap(marionette, wait_for_condition, expected):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ button = marionette.find_element(By.ID, "button1")
+ action = Actions(marionette)
+ action.tap(button).perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected, "return document.getElementById('button1').innerHTML;")
+
+def double_tap(marionette, wait_for_condition, expected):
+ testAction = marionette.absolute_url("testAction.html")
+ marionette.navigate(testAction)
+ button = marionette.find_element(By.ID, "button1")
+ action = Actions(marionette)
+ action.double_tap(button).perform()
+ wait_for_condition_else_raise(marionette, wait_for_condition, expected, "return document.getElementById('button1').innerHTML;")