Bug 1432105 - Stop pointer action tests from restarting Firefox; r=whimboo

MozReview-Commit-ID: 29P3Uit7U7V

--HG--
extra : rebase_source : 91bed0fa38cf5330d4058b0fe03829f33ec73a3c
This commit is contained in:
Maja Frydrychowicz 2018-02-12 10:48:31 -05:00
parent 23c32a1748
commit b3bb56d8ba
3 changed files with 23 additions and 85 deletions

View File

@ -384935,9 +384935,7 @@
"webdriver/tests/actions/modifier_click.py": [ "webdriver/tests/actions/modifier_click.py": [
[ [
"/webdriver/tests/actions/modifier_click.py", "/webdriver/tests/actions/modifier_click.py",
{ {}
"timeout": "long"
}
] ]
], ],
"webdriver/tests/actions/mouse.py": [ "webdriver/tests/actions/mouse.py": [
@ -485294,7 +485292,7 @@
"support" "support"
], ],
"css/css-fonts/font-feature-settings-serialization-001.html": [ "css/css-fonts/font-feature-settings-serialization-001.html": [
"d1032e08aee1e9a7d1309ad94bd5633535ce9315", "bf557e7f93663a36dab3ea358401b16c2e88811a",
"testharness" "testharness"
], ],
"css/css-fonts/font-features-across-space-1-ref.html": [ "css/css-fonts/font-features-across-space-1-ref.html": [
@ -563110,7 +563108,7 @@
"support" "support"
], ],
"interfaces/dom.idl": [ "interfaces/dom.idl": [
"52236516620dac45213fa06dc169f0c02e63a0c5", "773c449a2f9a6bd9e35d0dd8a4c2e1eaa0266150",
"support" "support"
], ],
"interfaces/fullscreen.idl": [ "interfaces/fullscreen.idl": [
@ -592274,7 +592272,7 @@
"wdspec" "wdspec"
], ],
"webdriver/tests/actions/modifier_click.py": [ "webdriver/tests/actions/modifier_click.py": [
"88a384182fdd9df1515b9d8cfda8f56aed138ec7", "f0ed71cbb6550ef496096541531f3b4fa3f4c6e2",
"wdspec" "wdspec"
], ],
"webdriver/tests/actions/mouse.py": [ "webdriver/tests/actions/mouse.py": [
@ -592282,7 +592280,7 @@
"wdspec" "wdspec"
], ],
"webdriver/tests/actions/mouse_dblclick.py": [ "webdriver/tests/actions/mouse_dblclick.py": [
"f6afcb8c0fa017d58a9fcdd3cc474e0c8fd52db5", "9ab61ed4fd678c04bdcc929466b4a867e5a2048e",
"wdspec" "wdspec"
], ],
"webdriver/tests/actions/pointer_origin.py": [ "webdriver/tests/actions/pointer_origin.py": [

View File

@ -1,39 +1,9 @@
# META: timeout=long
import pytest import pytest
from tests.actions.support.refine import filter_dict, get_events from tests.actions.support.refine import filter_dict, get_events
from tests.actions.support.keys import Keys from tests.actions.support.keys import Keys
# Using local fixtures because we want to start a new session between
# each test, otherwise the clicks in each test interfere with each other.
@pytest.fixture(autouse=True)
def release_actions(mod_click_session, request):
request.addfinalizer(mod_click_session.actions.release)
@pytest.fixture
def mod_click_session(new_session, url, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}})
session.url = url("/webdriver/tests/actions/support/test_actions_wdspec.html")
return session
@pytest.fixture
def key_chain(mod_click_session):
return mod_click_session.actions.sequence("key", "keyboard_id")
@pytest.fixture
def mouse_chain(mod_click_session):
return mod_click_session.actions.sequence(
"pointer",
"pointer_id",
{"pointerType": "mouse"})
@pytest.mark.parametrize("modifier, prop", [ @pytest.mark.parametrize("modifier, prop", [
(Keys.ALT, "altKey"), (Keys.ALT, "altKey"),
(Keys.R_ALT, "altKey"), (Keys.R_ALT, "altKey"),
@ -42,19 +12,15 @@ def mouse_chain(mod_click_session):
(Keys.SHIFT, "shiftKey"), (Keys.SHIFT, "shiftKey"),
(Keys.R_SHIFT, "shiftKey"), (Keys.R_SHIFT, "shiftKey"),
]) ])
def test_modifier_click(mod_click_session, def test_modifier_click(session, test_actions_page, key_chain, mouse_chain, modifier, prop):
key_chain,
mouse_chain,
modifier,
prop):
key_chain \ key_chain \
.pause(200) \ .pause(200) \
.key_down(modifier) \ .key_down(modifier) \
.pause(200) \ .pause(200) \
.key_up(modifier) .key_up(modifier)
outer = mod_click_session.find.css("#outer", all=False) outer = session.find.css("#outer", all=False)
mouse_chain.click(element=outer) mouse_chain.click(element=outer)
mod_click_session.actions.perform([key_chain.dict, mouse_chain.dict]) session.actions.perform([key_chain.dict, mouse_chain.dict])
expected = [ expected = [
{"type": "mousemove"}, {"type": "mousemove"},
{"type": "mousedown"}, {"type": "mousedown"},
@ -71,12 +37,12 @@ def test_modifier_click(mod_click_session,
e.update(defaults) e.update(defaults)
if e["type"] != "mousemove": if e["type"] != "mousemove":
e[prop] = True e[prop] = True
filtered_events = [filter_dict(e, expected[0]) for e in get_events(mod_click_session)] filtered_events = [filter_dict(e, expected[0]) for e in get_events(session)]
assert expected == filtered_events assert expected == filtered_events
def test_many_modifiers_click(mod_click_session, key_chain, mouse_chain): def test_many_modifiers_click(session, test_actions_page, key_chain, mouse_chain):
outer = mod_click_session.find.css("#outer", all=False) outer = session.find.css("#outer", all=False)
key_chain \ key_chain \
.pause(0) \ .pause(0) \
.key_down(Keys.CONTROL) \ .key_down(Keys.CONTROL) \
@ -92,7 +58,7 @@ def test_many_modifiers_click(mod_click_session, key_chain, mouse_chain):
.pause(0) \ .pause(0) \
.pause(0) \ .pause(0) \
.pointer_down() .pointer_down()
mod_click_session.actions.perform([key_chain.dict, mouse_chain.dict]) session.actions.perform([key_chain.dict, mouse_chain.dict])
expected = [ expected = [
{"type": "mousemove"}, {"type": "mousemove"},
# shift and ctrl presses # shift and ctrl presses
@ -113,5 +79,5 @@ def test_many_modifiers_click(mod_click_session, key_chain, mouse_chain):
for e in expected[1:4]: for e in expected[1:4]:
e["shiftKey"] = True e["shiftKey"] = True
e["ctrlKey"] = True e["ctrlKey"] = True
events = [filter_dict(e, expected[0]) for e in get_events(mod_click_session)] events = [filter_dict(e, expected[0]) for e in get_events(session)]
assert events == expected assert events == expected

View File

@ -4,37 +4,11 @@ from tests.actions.support.mouse import get_inview_center, get_viewport_rect
from tests.actions.support.refine import get_events, filter_dict from tests.actions.support.refine import get_events, filter_dict
from tests.support.asserts import assert_move_to_coordinates from tests.support.asserts import assert_move_to_coordinates
_DBLCLICK_INTERVAL = 640 _DBLCLICK_INTERVAL = 640
# Using local fixtures because we want to start a new session between
# each test, otherwise the clicks in each test interfere with each other.
@pytest.fixture(autouse=True)
def release_actions(dblclick_session, request):
# release all actions after each test
# equivalent to a teardown_function, but with access to session fixture
request.addfinalizer(dblclick_session.actions.release)
@pytest.fixture
def dblclick_session(new_session, url, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}})
session.url = url("/webdriver/tests/actions/support/test_actions_wdspec.html")
return session
@pytest.fixture
def mouse_chain(dblclick_session):
return dblclick_session.actions.sequence(
"pointer",
"pointer_id",
{"pointerType": "mouse"})
@pytest.mark.parametrize("click_pause", [0, 200]) @pytest.mark.parametrize("click_pause", [0, 200])
def test_dblclick_at_coordinates(dblclick_session, mouse_chain, click_pause): def test_dblclick_at_coordinates(session, test_actions_page, mouse_chain, click_pause):
div_point = { div_point = {
"x": 82, "x": 82,
"y": 187, "y": 187,
@ -45,7 +19,7 @@ def test_dblclick_at_coordinates(dblclick_session, mouse_chain, click_pause):
.pause(click_pause) \ .pause(click_pause) \
.click() \ .click() \
.perform() .perform()
events = get_events(dblclick_session) events = get_events(session)
assert_move_to_coordinates(div_point, "outer", events) assert_move_to_coordinates(div_point, "outer", events)
expected = [ expected = [
{"type": "mousedown", "button": 0}, {"type": "mousedown", "button": 0},
@ -61,9 +35,9 @@ def test_dblclick_at_coordinates(dblclick_session, mouse_chain, click_pause):
assert expected == filtered_events[1:] assert expected == filtered_events[1:]
def test_dblclick_with_pause_after_second_pointerdown(dblclick_session, mouse_chain): def test_dblclick_with_pause_after_second_pointerdown(session, test_actions_page, mouse_chain):
outer = dblclick_session.find.css("#outer", all=False) outer = session.find.css("#outer", all=False)
center = get_inview_center(outer.rect, get_viewport_rect(dblclick_session)) center = get_inview_center(outer.rect, get_viewport_rect(session))
mouse_chain \ mouse_chain \
.pointer_move(int(center["x"]), int(center["y"])) \ .pointer_move(int(center["x"]), int(center["y"])) \
.click() \ .click() \
@ -71,7 +45,7 @@ def test_dblclick_with_pause_after_second_pointerdown(dblclick_session, mouse_ch
.pause(_DBLCLICK_INTERVAL + 10) \ .pause(_DBLCLICK_INTERVAL + 10) \
.pointer_up() \ .pointer_up() \
.perform() .perform()
events = get_events(dblclick_session) events = get_events(session)
expected = [ expected = [
{"type": "mousedown", "button": 0}, {"type": "mousedown", "button": 0},
{"type": "mouseup", "button": 0}, {"type": "mouseup", "button": 0},
@ -86,16 +60,16 @@ def test_dblclick_with_pause_after_second_pointerdown(dblclick_session, mouse_ch
assert expected == filtered_events[1:] assert expected == filtered_events[1:]
def test_no_dblclick(dblclick_session, mouse_chain): def test_no_dblclick(session, test_actions_page, mouse_chain):
outer = dblclick_session.find.css("#outer", all=False) outer = session.find.css("#outer", all=False)
center = get_inview_center(outer.rect, get_viewport_rect(dblclick_session)) center = get_inview_center(outer.rect, get_viewport_rect(session))
mouse_chain \ mouse_chain \
.pointer_move(int(center["x"]), int(center["y"])) \ .pointer_move(int(center["x"]), int(center["y"])) \
.click() \ .click() \
.pause(_DBLCLICK_INTERVAL + 10) \ .pause(_DBLCLICK_INTERVAL + 10) \
.click() \ .click() \
.perform() .perform()
events = get_events(dblclick_session) events = get_events(session)
expected = [ expected = [
{"type": "mousedown", "button": 0}, {"type": "mousedown", "button": 0},
{"type": "mouseup", "button": 0}, {"type": "mouseup", "button": 0},