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>