pointer attributes
diff --git a/webdriver/tests/perform_actions/conftest.py b/webdriver/tests/perform_actions/conftest.py index 970f7b7..210bbf3 100644 --- a/webdriver/tests/perform_actions/conftest.py +++ b/webdriver/tests/perform_actions/conftest.py
@@ -33,6 +33,14 @@ @pytest.fixture +def pen_chain(session): + return session.actions.sequence( + "pointer", + "pointer_id", + {"pointerType": "pen"}) + + +@pytest.fixture def none_chain(session): return session.actions.sequence("none", "none_id")
diff --git a/webdriver/tests/perform_actions/pointer.py b/webdriver/tests/perform_actions/pointer.py index ad54692..8b4ecc3 100644 --- a/webdriver/tests/perform_actions/pointer.py +++ b/webdriver/tests/perform_actions/pointer.py
@@ -115,6 +115,31 @@ Poll(session, message=error_message).until(lambda s: s.url == destination) +def test_pointer_attributes(session, test_actions_page, pen_chain): + pointerArea = session.find.css("#pointerArea", all=False) + center = get_inview_center(pointerArea.rect, get_viewport_rect(session)) + pen_chain.pointer_move(0, 0, origin=pointerArea) \ + .pointer_down(pressure=0.3, twist=80) \ + .pointer_move(10, 10, origin=pointerArea, pressure=0.6, twist=50) \ + .pointer_up() \ + .pointer_move(80, 50, origin=pointerArea) \ + .perform() + events = get_events(session) + assert len(events) == 13 + event_types = [e["type"] for e in events] + assert ["pointerover", "pointerenter", "pointermove", "mousemove", + "pointerdown", "pointerover", "pointerenter", "pointermove", + "pointerup", "pointerout", "pointerleave", "pointerout", + "pointerleave"] == event_types + for e in events: + if e["type"] == "pointerdown": + assert e["pageX"] == pytest.approx(center["x"], abs=1.0) + assert e["pageY"] == pytest.approx(center["y"], abs=1.0) + assert e["target"] == "pointerArea" + assert e["pressure"] == 0.3 + assert e["twist"] == 80 + + @pytest.mark.parametrize("drag_duration", [0, 300, 800]) @pytest.mark.parametrize("dx, dy", [ (20, 0), (0, 15), (10, 15), (-20, 0), (10, -15), (-10, -15)
diff --git a/webdriver/tests/perform_actions/support/test_actions_wdspec.html b/webdriver/tests/perform_actions/support/test_actions_wdspec.html index 0253add..7761fcf 100644 --- a/webdriver/tests/perform_actions/support/test_actions_wdspec.html +++ b/webdriver/tests/perform_actions/support/test_actions_wdspec.html
@@ -162,6 +162,15 @@ outer.addEventListener("mouseup", recordPointerEvent); outer.addEventListener("contextmenu", recordPointerEvent); + var pointerArea = document.getElementById("pointerArea"); + pointerArea.addEventListener("pointerdown", recordPointerEvent); + pointerArea.addEventListener("pointermove", recordPointerEvent); + pointerArea.addEventListener("pointerup", recordPointerEvent); + pointerArea.addEventListener("pointerover", recordPointerEvent); + pointerArea.addEventListener("pointerenter", recordPointerEvent); + pointerArea.addEventListener("pointerout", recordPointerEvent); + pointerArea.addEventListener("pointerleave", recordPointerEvent); + window.addEventListener("mousemove", recordFirstPointerMove); //visual cue for mousemove var pointer = document.getElementById("trackPointer"); @@ -196,6 +205,11 @@ </div> </div> <div> + <h2>PointerReporter</h2> + <div id="pointerArea" class="area"> + </div> + </div> + <div> <h2>DragReporter</h2> <div id="dragArea" class="area"> <div id="dragTarget" class="block"></div>