]> source.dussan.org Git - vaadin-framework.git/blob
9b06a0e6d8ded7b6926be15485443dc2a8f31349
[vaadin-framework.git] /
1 package com.vaadin.tests.components.embedded;
2
3 import org.junit.Assert;
4 import org.junit.Before;
5 import org.junit.Test;
6 import org.openqa.selenium.By;
7
8 import com.vaadin.testbench.elements.EmbeddedElement;
9 import com.vaadin.testbench.elements.LabelElement;
10 import com.vaadin.testbench.parallel.BrowserUtil;
11 import com.vaadin.tests.tb3.MultiBrowserTest;
12
13 public class EmbeddedClickListenerRelativeCoordinatesTest
14         extends MultiBrowserTest {
15
16     @Before
17     @Override
18     public void setup() throws Exception {
19         super.setup();
20         openTestURL();
21         waitForElementPresent(By.className("v-embedded"));
22     }
23
24     @Test
25     public void testRelativeClick() {
26         clickAt(41, 22);
27         checkLocation(41, 22);
28
29         clickAt(0, 0);
30         checkLocation(0, 0);
31     }
32
33     private void clickAt(int x, int y) {
34         EmbeddedElement embedded = $(EmbeddedElement.class).first();
35
36         // IE8 consistently clicks two pixels left and above of the given
37         // position
38         if (isIE8()) {
39             x += 2;
40             y += 2;
41         }
42         embedded.click(x, y);
43     }
44
45     private void checkLocation(int expectedX, int expectedY) {
46         LabelElement xLabel = $(LabelElement.class).id("x");
47         LabelElement yLabel = $(LabelElement.class).id("y");
48
49         int x = Integer.parseInt(xLabel.getText());
50         int y = Integer.parseInt(yLabel.getText());
51
52         Assert.assertEquals(
53                 "Reported X-coordinate from Embedded does not match click location",
54                 expectedX, x);
55
56         // IE10 and IE11 sometimes click one pixel below the given position
57         int tolerance = isIE() ? 1 : 0;
58         Assert.assertTrue(
59                 "Reported Y-coordinate from Embedded does not match click location",
60                 Math.abs(expectedY - y) <= tolerance);
61     }
62
63     private boolean isIE() {
64         return BrowserUtil.isIE(getDesiredCapabilities());
65     }
66
67     private boolean isIE8() {
68         return BrowserUtil.isIE8(getDesiredCapabilities());
69     }
70
71 }