Skip to content

Commit 2259f63

Browse files
committed
[java] add pointer event properties test
1 parent d0a0df9 commit 2259f63

File tree

3 files changed

+75
-1
lines changed

3 files changed

+75
-1
lines changed

‎java/test/org/openqa/selenium/interactions/PenPointerTest.java

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717

1818
package org.openqa.selenium.interactions;
1919

20+
import org.assertj.core.api.Assertions;
2021
import org.junit.Test;
2122
import org.openqa.selenium.By;
2223
import org.openqa.selenium.Dimension;
2324
import org.openqa.selenium.JavascriptExecutor;
2425
import org.openqa.selenium.NoSuchElementException;
2526
import org.openqa.selenium.Point;
27+
import org.openqa.selenium.Rectangle;
2628
import org.openqa.selenium.WebDriver;
2729
import org.openqa.selenium.WebElement;
2830
import org.openqa.selenium.remote.RemoteWebDriver;
@@ -36,7 +38,11 @@
3638
import org.openqa.selenium.testing.SwitchToTopAfterTest;
3739

3840
import java.time.Duration;
41+
import java.util.Arrays;
3942
import java.util.Collections;
43+
import java.util.List;
44+
import java.util.Map;
45+
import java.util.stream.Collectors;
4046

4147
import static org.assertj.core.api.Assertions.assertThat;
4248
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -371,6 +377,70 @@ public void testCanMoveOverAndOutOfAnElement() {
371377
wait.until(attributeToBe(redbox, "background-color", Colors.GREEN.getColorValue().asRgba()));
372378
}
373379

380+
@Test
381+
@Ignore(value = FIREFOX, issue = "https://github.com/mozilla/geckodriver/issues/789")
382+
public void setPointerEventProperties() {
383+
driver.get(pages.pointerActionsPage);
384+
long start = System.currentTimeMillis();
385+
386+
WebElement pointerArea = driver.findElement(By.id("pointerArea"));
387+
PointerInput pen = new PointerInput(PointerInput.Kind.PEN, "default pen");
388+
PointerInput.PointerEventProperties eventProperties = PointerInput.eventProperties()
389+
.setTiltX(-72)
390+
.setTiltY(9)
391+
.setTwist(86);
392+
PointerInput.Origin origin = PointerInput.Origin.fromElement(pointerArea);
393+
394+
Sequence actionListPen = new Sequence(pen, 0)
395+
.addAction(pen.createPointerMove(Duration.ZERO, origin, 0, 0))
396+
.addAction(pen.createPointerDown(0))
397+
.addAction(pen.createPointerMove(Duration.ofMillis(800), origin, 2, 2, eventProperties))
398+
.addAction(pen.createPointerUp(0));
399+
400+
((RemoteWebDriver) driver).perform(List.of(actionListPen));
401+
402+
long duration = System.currentTimeMillis() - start;
403+
Assertions.assertThat(duration).isGreaterThan(2);
404+
405+
List<WebElement> moves = driver.findElements(By.className("pointermove"));
406+
Map<String, String> moveTo = properties(moves.get(0));
407+
Map<String, String> down = properties(driver.findElement(By.className("pointerdown")));
408+
Map<String, String> moveBy = properties(moves.get(1));
409+
Map<String, String> up = properties(driver.findElement(By.className("pointerup")));
410+
411+
Rectangle rect = pointerArea.getRect();
412+
413+
int centerX = (int) Math.floor(rect.width / 2 + rect.getX());
414+
int centerY = (int) Math.floor(rect.height / 2 + rect.getY());
415+
Assertions.assertThat(moveTo.get("button")).isEqualTo("-1");
416+
Assertions.assertThat(moveTo.get("pageX")).isEqualTo("" + centerX);
417+
Assertions.assertThat(moveTo.get("pageY")).isEqualTo("" + centerY);
418+
Assertions.assertThat(down.get("button")).isEqualTo("0");
419+
Assertions.assertThat(down.get("pageX")).isEqualTo("" + centerX);
420+
Assertions.assertThat(down.get("pageY")).isEqualTo("" + centerY);
421+
Assertions.assertThat(moveBy.get("button")).isEqualTo("-1");
422+
Assertions.assertThat(moveBy.get("pageX")).isEqualTo("" + (centerX + 2));
423+
Assertions.assertThat(moveBy.get("pageY")).isEqualTo("" + (centerY + 2));
424+
Assertions.assertThat(moveBy.get("tiltX")).isEqualTo("-72");
425+
Assertions.assertThat(moveBy.get("tiltY")).isEqualTo("9");
426+
Assertions.assertThat(moveBy.get("twist")).isEqualTo("86");
427+
Assertions.assertThat(up.get("button")).isEqualTo("0");
428+
Assertions.assertThat(up.get("pageX")).isEqualTo("" + (centerX + 2));
429+
Assertions.assertThat(up.get("pageY")).isEqualTo("" + (centerY + 2));
430+
}
431+
432+
private Map<String, String> properties(WebElement element) {
433+
String text = element.getText();
434+
text = text.substring(text.indexOf(' ') + 1);
435+
436+
return Arrays.stream(text.split(", "))
437+
.map(s -> s.split(": "))
438+
.collect(Collectors.toMap(
439+
a -> a[0], //key
440+
a -> a[1] //value
441+
));
442+
}
443+
374444
private boolean fuzzyPositionMatching(int expectedX, int expectedY, String locationTuple) {
375445
String[] splitString = locationTuple.split(",");
376446
int gotX = Integer.parseInt(splitString[0].trim());

‎java/test/org/openqa/selenium/interactions/PointerInputTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public void encodesWrappedElementInMoveOrigin() {
6363
@Test
6464
public void acceptsPointerEventProperties() {
6565
PointerInput pen = new PointerInput(PointerInput.Kind.PEN, "my pen");
66-
Interaction pointerDown = pen.createPointerDown(PointerInput.eventProperties().setHeight(12).setTiltX(30));
66+
Interaction pointerDown = pen.createPointerDown(0, PointerInput.eventProperties().setHeight(12).setTiltX(30));
6767

6868
Map<String, Object> encode = ((Encodable) pointerDown).encode();
6969

‎java/test/org/openqa/selenium/testing/Pages.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ public class Pages {
5454
public String mapVisibilityPage;
5555
public String metaRedirectPage;
5656
public String missedJsReferencePage;
57+
public String mouseInteractionPage;
5758
public String mouseOverPage;
5859
public String mouseTrackerPage;
5960
public String nestedPage;
61+
public String pointerActionsPage;
6062
public String printPage;
6163
public String readOnlyPage;
6264
public String rectanglesPage;
@@ -116,9 +118,11 @@ public Pages(AppServer appServer) {
116118
mapVisibilityPage = appServer.whereIs("map_visibility.html");
117119
metaRedirectPage = appServer.whereIs("meta-redirect.html");
118120
missedJsReferencePage = appServer.whereIs("missedJsReference.html");
121+
mouseInteractionPage = appServer.whereIs("mouse_interaction.html");
119122
mouseOverPage = appServer.whereIs("mouseOver.html");
120123
mouseTrackerPage = appServer.whereIs("mousePositionTracker.html");
121124
nestedPage = appServer.whereIs("nestedElements.html");
125+
pointerActionsPage = appServer.whereIs("pointerActionsPage.html");
122126
printPage = appServer.whereIs("printPage.html");
123127
readOnlyPage = appServer.whereIs("readOnlyPage.html");
124128
rectanglesPage = appServer.whereIs("rectangles.html");

0 commit comments

Comments
 (0)