summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Ahlroos <john@vaadin.com>2014-01-14 16:52:12 +0200
committerVaadin Code Review <review@vaadin.com>2014-01-15 11:01:00 +0000
commitbebf6ad77db394f987b9bb15b770ab304961530e (patch)
treeb3e5da2f0357f80efe115c9f2e30ac2737e80902
parentd2874fde4b8c6afa24f0f6535e0d6fcabc489f51 (diff)
downloadvaadin-framework-bebf6ad77db394f987b9bb15b770ab304961530e.tar.gz
vaadin-framework-bebf6ad77db394f987b9bb15b770ab304961530e.zip
Fixed always failing TooltipInWindowTest
Test was failing due the TB2 returning different pixel values depending on which browser the test was run. Converted test to TB3 and made the test a bit more lenient to browser differences while still testing the essentials of tooltip handling in sub windows. Change-Id: Ib236094f20366eb79150ce4590252b51b9373587
-rw-r--r--uitest/src/com/vaadin/tests/components/window/TooltipInWindow.html86
-rw-r--r--uitest/src/com/vaadin/tests/components/window/TooltipInWindow.java7
-rw-r--r--uitest/src/com/vaadin/tests/components/window/TooltipInWindowTest.java98
3 files changed, 102 insertions, 89 deletions
diff --git a/uitest/src/com/vaadin/tests/components/window/TooltipInWindow.html b/uitest/src/com/vaadin/tests/components/window/TooltipInWindow.html
deleted file mode 100644
index 575eb652b7..0000000000
--- a/uitest/src/com/vaadin/tests/components/window/TooltipInWindow.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head profile="http://selenium-ide.openqa.org/profiles/test-case">
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<link rel="selenium.base" href="" />
-<title>TooltipInWindow</title>
-</head>
-<body>
-<table cellpadding="1" cellspacing="1" border="1">
-<thead>
-<tr><td rowspan="1" colspan="3">TooltipInWindow</td></tr>
-</thead><tbody>
-<tr>
- <td>open</td>
- <td>/run/com.vaadin.tests.components.window.TooltipInWindow?restartApplication</td>
- <td></td>
-</tr>
-<!--Show tooltip in Root-->
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::/VVerticalLayout[0]/VVerticalLayout[0]/VTextField[0]</td>
- <td>5,5</td>
-</tr>
-<tr>
- <td>pause</td>
- <td>1000</td>
- <td></td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td>
- <td>My tooltip</td>
-</tr>
-<!--Hide the tooltip-->
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::/VVerticalLayout[0]</td>
- <td>0,0</td>
-</tr>
-<tr>
- <td>pause</td>
- <td>1000</td>
- <td></td>
-</tr>
-<tr>
- <td>assertElementPositionLeft</td>
- <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::Root/VTooltip[0]</td>
- <td>-1000</td>
-</tr>
-<!--Show tooltip in Window-->
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VTextField[0]</td>
- <td>5,5</td>
-</tr>
-<tr>
- <td>pause</td>
- <td>1000</td>
- <td></td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td>
- <td>My tooltip</td>
-</tr>
-<!-- Hide tooltip in Window -->
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]</td>
- <td>0,0</td>
-</tr>
-<tr>
- <td>pause</td>
- <td>1000</td>
- <td></td>
-</tr>
-<tr>
- <td>assertElementPositionLeft</td>
- <td>vaadin=runcomvaadintestscomponentswindowTooltipInWindow::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td>
- <td>-1000</td>
-</tr>
-
-</tbody></table>
-</body>
-</html>
diff --git a/uitest/src/com/vaadin/tests/components/window/TooltipInWindow.java b/uitest/src/com/vaadin/tests/components/window/TooltipInWindow.java
index d3c7a616cd..02ec0c047b 100644
--- a/uitest/src/com/vaadin/tests/components/window/TooltipInWindow.java
+++ b/uitest/src/com/vaadin/tests/components/window/TooltipInWindow.java
@@ -31,15 +31,16 @@ public class TooltipInWindow extends AbstractTestUI {
Window window = new Window("Window", layout);
layout.setSizeUndefined();
window.center();
- layout.addComponent(createTextField());
+ layout.addComponent(createTextField("tf1"));
addWindow(window);
- addComponent(createTextField());
+ addComponent(createTextField("tf2"));
}
- private TextField createTextField() {
+ private TextField createTextField(String id) {
TextField tf = new TextField("TextField with a tooltip");
tf.setDescription("My tooltip");
+ tf.setId(id);
return tf;
}
diff --git a/uitest/src/com/vaadin/tests/components/window/TooltipInWindowTest.java b/uitest/src/com/vaadin/tests/components/window/TooltipInWindowTest.java
new file mode 100644
index 0000000000..8f9538db7a
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/window/TooltipInWindowTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.components.window;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.HasInputDevices;
+import org.openqa.selenium.interactions.Mouse;
+import org.openqa.selenium.interactions.internal.Coordinates;
+import org.openqa.selenium.internal.Locatable;
+
+import com.vaadin.testbench.By;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+/**
+ *
+ * @since
+ * @author Vaadin Ltd
+ */
+public class TooltipInWindowTest extends MultiBrowserTest {
+
+ @Test
+ public void testTooltipsInSubWindow() {
+ openTestURL();
+
+ WebElement textfield = vaadinElementById("tf1");
+ Coordinates textfieldCoordinates = ((Locatable) textfield)
+ .getCoordinates();
+
+ Mouse mouse = ((HasInputDevices) getDriver()).getMouse();
+
+ // Show tooltip
+ mouse.mouseMove(textfieldCoordinates, 10, 10);
+ sleep(1000);
+
+ ensureVisibleTooltipPositionedCorrectly();
+ assertEquals("My tooltip", getTooltipElement().getText());
+
+ // Hide tooltip
+ mouse.mouseMove(textfieldCoordinates, -100, -100);
+ sleep(1000);
+
+ ensureHiddenTooltipPositionedCorrectly();
+ assertEquals("", getTooltipElement().getText());
+
+ // Show tooltip again
+ mouse.mouseMove(textfieldCoordinates, 10, 10);
+ sleep(1000);
+
+ ensureVisibleTooltipPositionedCorrectly();
+ assertEquals("My tooltip", getTooltipElement().getText());
+
+ // Hide tooltip
+ mouse.mouseMove(textfieldCoordinates, -100, -100);
+ sleep(1000);
+
+ ensureHiddenTooltipPositionedCorrectly();
+ assertEquals("", getTooltipElement().getText());
+ }
+
+ private WebElement getTooltipElement() {
+ return getDriver().findElement(By.className("v-tooltip-text"));
+ }
+
+ private WebElement getTooltipContainerElement() {
+ return getDriver().findElement(By.className("v-tooltip"));
+ }
+
+ private void ensureVisibleTooltipPositionedCorrectly() {
+ WebElement textfield = vaadinElementById("tf1");
+ int tooltipX = getTooltipContainerElement().getLocation().getX();
+ int textfieldX = textfield.getLocation().getX();
+ assertGreaterOrEqual("Tooltip should be positioned on the textfield ("
+ + tooltipX + " < " + textfieldX + ")", tooltipX, textfieldX);
+ }
+
+ private void ensureHiddenTooltipPositionedCorrectly() {
+ int tooltipX = getTooltipContainerElement().getLocation().getX();
+ assertLessThanOrEqual(
+ "Tooltip should be positioned outside of viewport (was at "
+ + tooltipX + ")", tooltipX, -1000);
+ }
+}