summaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorLeif Åstrand <leif@vaadin.com>2013-10-22 09:12:59 +0300
committerLeif Åstrand <leif@vaadin.com>2013-10-22 09:12:59 +0300
commitd70961ff2539aabe99eea22683a8ae77efdc81e5 (patch)
treec3876e2266ace7e90d8dc82e35f22631e2ce29e5 /uitest
parenta48370a761a6d0b6c54196da0defdb30b47a5bb1 (diff)
parentee809e5985d7a438e031c40bed160ac78ae8d0bc (diff)
downloadvaadin-framework-d70961ff2539aabe99eea22683a8ae77efdc81e5.tar.gz
vaadin-framework-d70961ff2539aabe99eea22683a8ae77efdc81e5.zip
Merge changes from origin/7.1
c7ae45c Validate that the connector is enabled before triggering actions for it (#12743) ce89a75 Created constants for tested browser versions (#12786) f9ea9b3 Allow running tests locally by overriding runLocally() (#12786) e70ba25 Added liferay module for building liferay.zip #12748 7c12694 Add sub directory support to sass test scanner (#12790) 39fdf66 Handle numbers in the same way if they do not have a unit (#12732) 6155d61 Disable fallback in a way compatible with Atmosphere JS 2.0.3 (#12241) f401595 Test for pushing large chunks of data (#12567) d41967d Skip compilation of TB2 tests if tests.tb2.skip is set 6c1ba81 Reverted button click() logic check (#12743) 779c8a0 Disable automated testing on Opera until issues are resolved (#12487, #12367, #12800) 962c1c3 Fix compilation error 7ee11a7 Remove unused test super class (#12786) a4211dc Resolve concurrency issue in running TB3 tests 20c28aa Fixed javadoc 0d36896 Add more hax to make test work with new Atmosphere JS (#12241) ed50200 Fix serialization issue (#12703) dd51b7f Added more exception handling to PushHandler (#12578, #11882) 6f76840 Sass variables can now start with underscore (#12716) ab5b20c Ticket #12727 - Panels get unnecessary scroll bars in WebKit when content is 100% wide. 361ad17 Fixed focus issue in TableMoveFocusWithSelectionTest (#12540) ee809e5 Revert broken fix and test (#12446) Change-Id: I71b6e3c2dc6b02845794df0934ba807d7ccac784
Diffstat (limited to 'uitest')
-rw-r--r--uitest/src/com/vaadin/tests/VerifyBrowserVersionTest.java12
-rw-r--r--uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponents.java76
-rw-r--r--uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponentsTest.java46
-rw-r--r--uitest/src/com/vaadin/tests/components/AbstractTestUI.java16
-rw-r--r--uitest/src/com/vaadin/tests/components/panel/WebkitScrollbarTest.html27
-rw-r--r--uitest/src/com/vaadin/tests/components/panel/WebkitScrollbarTest.java63
-rw-r--r--uitest/src/com/vaadin/tests/components/table/TableMoveFocusWithSelectionTest.java22
-rw-r--r--uitest/src/com/vaadin/tests/integration/AbstractIntegrationTest.java7
-rw-r--r--uitest/src/com/vaadin/tests/integration/ServletIntegrationWebsocketUI.java5
-rw-r--r--uitest/src/com/vaadin/tests/push/BasicPushWebsocket.java4
-rw-r--r--uitest/src/com/vaadin/tests/push/BasicPushWebsocketTest.java4
-rw-r--r--uitest/src/com/vaadin/tests/push/PushErrorHandling.html41
-rw-r--r--uitest/src/com/vaadin/tests/push/PushErrorHandling.java93
-rw-r--r--uitest/src/com/vaadin/tests/push/PushLargeData.java138
-rw-r--r--uitest/src/com/vaadin/tests/push/PushLargeDataStreaming.java29
-rw-r--r--uitest/src/com/vaadin/tests/push/PushLargeDataStreamingTest.java55
-rw-r--r--uitest/src/com/vaadin/tests/push/PushLargeDataWebsocket.java32
-rw-r--r--uitest/src/com/vaadin/tests/push/PushLargeDataWebsocketTest.java56
-rw-r--r--uitest/src/com/vaadin/tests/push/TrackMessageSizeUI.java8
-rw-r--r--uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java38
-rw-r--r--uitest/src/com/vaadin/tests/tb3/MultiBrowserTest.java25
-rw-r--r--uitest/src/com/vaadin/tests/tb3/PrivateTB3Configuration.java25
-rw-r--r--uitest/src/com/vaadin/tests/tb3/SimpleMultiBrowserTest.java50
-rw-r--r--uitest/src/com/vaadin/tests/tb3/TB3Runner.java12
-rw-r--r--uitest/src/com/vaadin/tests/tb3/WebsocketTest.java9
-rw-r--r--uitest/src/com/vaadin/tests/tickets/Ticket12727.java51
-rw-r--r--uitest/src/com/vaadin/tests/util/LoremIpsum.java9
-rw-r--r--uitest/test.xml4
28 files changed, 855 insertions, 102 deletions
diff --git a/uitest/src/com/vaadin/tests/VerifyBrowserVersionTest.java b/uitest/src/com/vaadin/tests/VerifyBrowserVersionTest.java
index 6704f55226..ae5806af56 100644
--- a/uitest/src/com/vaadin/tests/VerifyBrowserVersionTest.java
+++ b/uitest/src/com/vaadin/tests/VerifyBrowserVersionTest.java
@@ -23,7 +23,6 @@ import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities;
import com.vaadin.tests.tb3.MultiBrowserTest;
-import com.vaadin.tests.tb3.AbstractTB3Test.BrowserUtil;
public class VerifyBrowserVersionTest extends MultiBrowserTest {
@@ -31,7 +30,8 @@ public class VerifyBrowserVersionTest extends MultiBrowserTest {
{
expectedUserAgent
- .put(BrowserUtil.firefox(24),
+ .put(BrowserUtil
+ .firefox(MultiBrowserTest.TESTED_FIREFOX_VERSION),
"Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0");
expectedUserAgent
.put(BrowserUtil.ie(8),
@@ -46,19 +46,15 @@ public class VerifyBrowserVersionTest extends MultiBrowserTest {
.put(BrowserUtil.ie(11),
"Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko");
expectedUserAgent
- .put(BrowserUtil.chrome(29),
+ .put(BrowserUtil.chrome(MultiBrowserTest.TESTED_CHROME_VERSION),
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36");
- expectedUserAgent
- .put(BrowserUtil.opera(12),
- "Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.15");
}
@Test
public void verifyUserAgent() {
openTestURL();
- Assert.assertEquals(
- expectedUserAgent.get(getDesiredCapabilities()),
+ Assert.assertEquals(expectedUserAgent.get(getDesiredCapabilities()),
vaadinElementById("userAgent").getText());
Assert.assertEquals("Touch device? No",
vaadinElementById("touchDevice").getText());
diff --git a/uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponents.java b/uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponents.java
new file mode 100644
index 0000000000..0f4c179cee
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponents.java
@@ -0,0 +1,76 @@
+package com.vaadin.tests.actions;
+
+import com.vaadin.event.ShortcutAction.KeyCode;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUIWithLog;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+
+public class ActionsOnInvisibleComponents extends AbstractTestUIWithLog {
+
+ private static final long serialVersionUID = -5993467736906948993L;
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ getContent().setId("test-root");
+ log("'A' triggers a click on an invisible button");
+ log("'B' triggers a click on a disabled button");
+ log("'C' triggers a click on a visible and enabled button");
+
+ Button invisibleButton = new Button("Invisible button with shortcut");
+ invisibleButton.setClickShortcut(KeyCode.A);
+ invisibleButton.addClickListener(new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ log("Click event for invisible button");
+ }
+ });
+
+ invisibleButton.setVisible(false);
+ addComponent(invisibleButton);
+
+ Button disabledButton = new Button("Disabled button with shortcut");
+ disabledButton.setClickShortcut(KeyCode.B);
+ disabledButton.addClickListener(new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ log("Click event for disabled button");
+ }
+ });
+
+ disabledButton.setEnabled(false);
+ addComponent(disabledButton);
+
+ Button enabledButton = new Button("Enabled button with shortcut");
+ enabledButton.setClickShortcut(KeyCode.C);
+ enabledButton.addClickListener(new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ log("Click event for enabled button");
+ }
+ });
+
+ addComponent(enabledButton);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.tests.components.AbstractTestUI#getTestDescription()
+ */
+ @Override
+ protected String getTestDescription() {
+ return "Test to ensure actions are not performed on disabled/invisible components";
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.tests.components.AbstractTestUI#getTicketNumber()
+ */
+ @Override
+ protected Integer getTicketNumber() {
+ return 12743;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponentsTest.java b/uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponentsTest.java
new file mode 100644
index 0000000000..ca00c998a6
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponentsTest.java
@@ -0,0 +1,46 @@
+package com.vaadin.tests.actions;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.remote.DesiredCapabilities;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class ActionsOnInvisibleComponentsTest extends MultiBrowserTest {
+
+ private static final String LAST_INIT_LOG = "3. 'C' triggers a click on a visible and enabled button";
+
+ // This method should be removed once #12785 is fixed
+ @Override
+ public List<DesiredCapabilities> getBrowsersToTest() {
+ List<DesiredCapabilities> browsers = super.getBrowsersToTest();
+ // sendKeys does nothing on these browsers
+ browsers.remove(BrowserUtil.firefox(24));
+ browsers.remove(BrowserUtil.ie(8));
+ browsers.remove(BrowserUtil.opera(12));
+
+ // Causes 'cannot focus element'
+ browsers.remove(BrowserUtil.chrome(29));
+ return browsers;
+ }
+
+ @Test
+ public void testShortcutsOnInvisibleDisabledButtons() {
+ openTestURL();
+ Assert.assertEquals(LAST_INIT_LOG, getLogRow(0));
+ invokeShortcut("A");
+ Assert.assertEquals(LAST_INIT_LOG, getLogRow(0));
+ invokeShortcut("B");
+ Assert.assertEquals(LAST_INIT_LOG, getLogRow(0));
+ invokeShortcut("C");
+ Assert.assertEquals("4. Click event for enabled button", getLogRow(0));
+ }
+
+ private void invokeShortcut(CharSequence key) {
+ WebElement shortcutTarget = vaadinElementById("test-root");
+ shortcutTarget.sendKeys(key);
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/AbstractTestUI.java b/uitest/src/com/vaadin/tests/components/AbstractTestUI.java
index f567106d60..8f92ff3118 100644
--- a/uitest/src/com/vaadin/tests/components/AbstractTestUI.java
+++ b/uitest/src/com/vaadin/tests/components/AbstractTestUI.java
@@ -9,6 +9,7 @@ import com.vaadin.server.WebBrowser;
import com.vaadin.shared.communication.PushMode;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.shared.ui.ui.Transport;
+import com.vaadin.shared.ui.ui.UIState.PushConfigurationState;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
import com.vaadin.ui.Notification;
@@ -100,6 +101,15 @@ public abstract class AbstractTestUI extends UI {
}
}
+ /**
+ * Sets the push transport according to the transport= URL parameter if such
+ * is given. Supports transport=xhr (disables push), transport=websocket
+ * (forces websocket into use), transport=streaming (forces streaming into
+ * use). Using ?transport=xyz disables the fallback transport.
+ *
+ * @param request
+ * The UI init request
+ */
protected void setTransport(VaadinRequest request) {
String transport = request.getParameter("transport");
PushConfiguration config = getPushConfiguration();
@@ -112,11 +122,17 @@ public abstract class AbstractTestUI extends UI {
config.setPushMode(PushMode.AUTOMATIC);
}
config.setTransport(Transport.WEBSOCKET);
+ // Ensure no fallback is used
+ getPushConfiguration().setParameter(
+ PushConfigurationState.FALLBACK_TRANSPORT_PARAM, "none");
} else if ("streaming".equals(transport)) {
if (!mode.isEnabled()) {
config.setPushMode(PushMode.AUTOMATIC);
}
config.setTransport(Transport.STREAMING);
+ // Ensure no fallback is used
+ getPushConfiguration().setParameter(
+ PushConfigurationState.FALLBACK_TRANSPORT_PARAM, "none");
}
}
diff --git a/uitest/src/com/vaadin/tests/components/panel/WebkitScrollbarTest.html b/uitest/src/com/vaadin/tests/components/panel/WebkitScrollbarTest.html
new file mode 100644
index 0000000000..ee33ee2bf0
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/panel/WebkitScrollbarTest.html
@@ -0,0 +1,27 @@
+<?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>New Test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">New Test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.components.panel.WebkitScrollbarTest?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>panelShouldNotHaveScrollbars</td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/panel/WebkitScrollbarTest.java b/uitest/src/com/vaadin/tests/components/panel/WebkitScrollbarTest.java
new file mode 100644
index 0000000000..8981f52f12
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/panel/WebkitScrollbarTest.java
@@ -0,0 +1,63 @@
+/*
+ * 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.panel;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.ListSelect;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.VerticalLayout;
+
+@SuppressWarnings("serial")
+public class WebkitScrollbarTest extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ Panel panel = new Panel();
+
+ VerticalLayout content = new VerticalLayout();
+ panel.setContent(content);
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.setHeight(null);
+ gridLayout.setWidth(100, Unit.PERCENTAGE);
+ content.addComponent(gridLayout);
+
+ ListSelect listSelect = new ListSelect();
+
+ listSelect.setWidth(100, Unit.PERCENTAGE);
+ listSelect.setHeight(300, Unit.PIXELS);
+
+ gridLayout.addComponent(listSelect);
+
+ gridLayout.setMargin(true);
+
+ setContent(panel);
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "When opening the window, it should NOT contain a horizontal";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 12727;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/table/TableMoveFocusWithSelectionTest.java b/uitest/src/com/vaadin/tests/components/table/TableMoveFocusWithSelectionTest.java
index b38705eeb6..5075e22f1b 100644
--- a/uitest/src/com/vaadin/tests/components/table/TableMoveFocusWithSelectionTest.java
+++ b/uitest/src/com/vaadin/tests/components/table/TableMoveFocusWithSelectionTest.java
@@ -57,19 +57,25 @@ public class TableMoveFocusWithSelectionTest extends MultiBrowserTest {
// Click on row 7
getDriver().findElement(By.id("row-7")).click();
+ // Clicking a row should get the row focus
+ WebElement row7TableRow = getDriver().findElement(
+ By.xpath("//div[@id='row-7']/../../.."));
+ String row7StyleName = row7TableRow.getAttribute("class");
+ assertTrue(row7StyleName.contains("v-table-focus"));
+
// Select row 5-10 server side
getDriver().findElement(By.id("select-510")).click();
+ /*
+ * Focus the table again (some browsers steal focus when performing
+ * button click, other don't)
+ */
+ getDriver().findElement(By.id("test-table")).click();
+
// Ensure row 7 is still focused
- WebElement row7TableRow = getDriver().findElement(
+ row7TableRow = getDriver().findElement(
By.xpath("//div[@id='row-7']/../../.."));
- String row7StyleName = row7TableRow.getAttribute("class");
+ row7StyleName = row7TableRow.getAttribute("class");
assertTrue(row7StyleName.contains("v-table-focus"));
}
-
- @Override
- protected Class<?> getUIClass() {
- // FIXME Remove when this is done automatically
- return TableMoveFocusWithSelection.class;
- }
}
diff --git a/uitest/src/com/vaadin/tests/integration/AbstractIntegrationTest.java b/uitest/src/com/vaadin/tests/integration/AbstractIntegrationTest.java
index 5f4ae41361..ddaf84b3e1 100644
--- a/uitest/src/com/vaadin/tests/integration/AbstractIntegrationTest.java
+++ b/uitest/src/com/vaadin/tests/integration/AbstractIntegrationTest.java
@@ -22,6 +22,7 @@ import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.tests.tb3.MultiBrowserTest;
import com.vaadin.tests.tb3.PrivateTB3Configuration;
/**
@@ -32,8 +33,7 @@ import com.vaadin.tests.tb3.PrivateTB3Configuration;
* @author Vaadin Ltd
*/
@RunWith(IntegrationTestRunner.class)
-public abstract class AbstractIntegrationTest extends
- PrivateTB3Configuration {
+public abstract class AbstractIntegrationTest extends PrivateTB3Configuration {
@Override
protected String getBaseURL() {
String deploymentUrl = System.getProperty("deployment.url");
@@ -47,7 +47,8 @@ public abstract class AbstractIntegrationTest extends
@Parameters
public static Collection<DesiredCapabilities> getBrowsersForTest() {
- return Collections.singleton(BrowserUtil.firefox(17));
+ return Collections.singleton(BrowserUtil
+ .firefox(MultiBrowserTest.TESTED_FIREFOX_VERSION));
}
}
diff --git a/uitest/src/com/vaadin/tests/integration/ServletIntegrationWebsocketUI.java b/uitest/src/com/vaadin/tests/integration/ServletIntegrationWebsocketUI.java
index 905b80fd85..d7c525f202 100644
--- a/uitest/src/com/vaadin/tests/integration/ServletIntegrationWebsocketUI.java
+++ b/uitest/src/com/vaadin/tests/integration/ServletIntegrationWebsocketUI.java
@@ -18,6 +18,7 @@ package com.vaadin.tests.integration;
import com.vaadin.annotations.Push;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.ui.Transport;
+import com.vaadin.shared.ui.ui.UIState.PushConfigurationState;
/**
* Server test which uses websockets
@@ -39,7 +40,9 @@ public class ServletIntegrationWebsocketUI extends ServletIntegrationUI {
protected void init(VaadinRequest request) {
super.init(request);
// Ensure no fallback is used
- getPushConfiguration().setFallbackTransport(Transport.WEBSOCKET);
+ getPushConfiguration().setParameter(
+ PushConfigurationState.FALLBACK_TRANSPORT_PARAM, "none");
+
}
}
diff --git a/uitest/src/com/vaadin/tests/push/BasicPushWebsocket.java b/uitest/src/com/vaadin/tests/push/BasicPushWebsocket.java
index 96793a90f8..465caf0165 100644
--- a/uitest/src/com/vaadin/tests/push/BasicPushWebsocket.java
+++ b/uitest/src/com/vaadin/tests/push/BasicPushWebsocket.java
@@ -18,6 +18,7 @@ package com.vaadin.tests.push;
import com.vaadin.annotations.Push;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.ui.Transport;
+import com.vaadin.shared.ui.ui.UIState.PushConfigurationState;
@Push(transport = Transport.WEBSOCKET)
public class BasicPushWebsocket extends BasicPush {
@@ -26,7 +27,8 @@ public class BasicPushWebsocket extends BasicPush {
public void init(VaadinRequest request) {
super.init(request);
// Don't use fallback so we can easier detect if websocket fails
- getPushConfiguration().setFallbackTransport(Transport.WEBSOCKET);
+ getPushConfiguration().setParameter(
+ PushConfigurationState.FALLBACK_TRANSPORT_PARAM, "none");
}
}
diff --git a/uitest/src/com/vaadin/tests/push/BasicPushWebsocketTest.java b/uitest/src/com/vaadin/tests/push/BasicPushWebsocketTest.java
index ae4e64ad6b..dd0a147d99 100644
--- a/uitest/src/com/vaadin/tests/push/BasicPushWebsocketTest.java
+++ b/uitest/src/com/vaadin/tests/push/BasicPushWebsocketTest.java
@@ -15,7 +15,7 @@
*/
package com.vaadin.tests.push;
-import java.util.Collection;
+import java.util.List;
import org.openqa.selenium.remote.DesiredCapabilities;
@@ -23,7 +23,7 @@ import com.vaadin.tests.tb3.WebsocketTest;
public class BasicPushWebsocketTest extends BasicPushTest {
@Override
- public Collection<DesiredCapabilities> getBrowsersToTest() {
+ public List<DesiredCapabilities> getBrowsersToTest() {
return WebsocketTest.getWebsocketBrowsers();
}
} \ No newline at end of file
diff --git a/uitest/src/com/vaadin/tests/push/PushErrorHandling.html b/uitest/src/com/vaadin/tests/push/PushErrorHandling.html
new file mode 100644
index 0000000000..afd3e70771
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/PushErrorHandling.html
@@ -0,0 +1,41 @@
+<?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="http://localhost:8888/" />
+<title>PushErrorHandling</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">PushErrorHandling</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/PushErrorHandling?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>vaadin=runPushErrorHandling::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>vaadin=runPushErrorHandling::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[2]/VLabel[0]</td>
+ <td>An error! Unable to invoke method click in com.vaadin.shared.ui.button.ButtonServerRpc</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runPushErrorHandling::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[1]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[0]/domChild[0]</td>
+ <td>26,7</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>vaadin=runPushErrorHandling::Root/VNotification[0]/HTML[0]/domChild[0]</td>
+ <td>Internal error</td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/push/PushErrorHandling.java b/uitest/src/com/vaadin/tests/push/PushErrorHandling.java
new file mode 100644
index 0000000000..3074bd3851
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/PushErrorHandling.java
@@ -0,0 +1,93 @@
+package com.vaadin.tests.push;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import com.vaadin.data.util.AbstractInMemoryContainer;
+import com.vaadin.data.util.BeanContainer;
+import com.vaadin.event.ItemClickEvent;
+import com.vaadin.event.ItemClickEvent.ItemClickListener;
+import com.vaadin.server.ErrorHandler;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.server.VaadinSession;
+import com.vaadin.shared.communication.PushMode;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Table;
+
+public class PushErrorHandling extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ getPushConfiguration().setPushMode(PushMode.AUTOMATIC);
+
+ VaadinSession.getCurrent().setErrorHandler(new ErrorHandler() {
+
+ @Override
+ public void error(com.vaadin.server.ErrorEvent event) {
+ addComponent(new Label("An error! "
+ + event.getThrowable().getMessage()));
+ System.err.println("An error! "
+ + event.getThrowable().getMessage());
+ }
+ });
+
+ final Button button = new Button("Click for NPE!",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ ((String) null).length(); // Null-pointer exception
+ }
+ });
+ addComponent(button);
+
+ final Table view = new Table("testtable");
+ view.setSelectable(true);
+ view.setMultiSelect(false);
+ view.setImmediate(true);
+ view.setSizeFull();
+
+ view.addItemClickListener(new ItemClickListener() {
+
+ @Override
+ public void itemClick(ItemClickEvent event) {
+ BeanContainer<String, AbstractInMemoryContainer> metaContainer = new BeanContainer<String, AbstractInMemoryContainer>(
+ AbstractInMemoryContainer.class) {
+ @Override
+ public Collection<String> getContainerPropertyIds() {
+ List<String> cpropIds = new ArrayList<String>(super
+ .getContainerPropertyIds());
+ cpropIds.add("testid");
+ return cpropIds;
+ }
+
+ @Override
+ public Class<?> getType(Object propertyId) {
+ ((Object) null).hashCode();
+ return super.getType(propertyId);
+ }
+ };
+ view.setContainerDataSource(metaContainer);
+
+ }
+ });
+ view.addContainerProperty("Column", String.class, "Click for NPE");
+ view.addItem(new Object());
+
+ addComponent(view);
+
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Error handling should still work w/ push enabled. (Button can be handled properly, table causes internal error)";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 11882;
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/push/PushLargeData.java b/uitest/src/com/vaadin/tests/push/PushLargeData.java
new file mode 100644
index 0000000000..8ad005df81
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/PushLargeData.java
@@ -0,0 +1,138 @@
+/*
+ * 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.push;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUIWithLog;
+import com.vaadin.tests.util.LoremIpsum;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.UI;
+
+public abstract class PushLargeData extends AbstractTestUIWithLog {
+
+ private Label dataLabel = new Label();
+
+ private final ExecutorService executor = Executors
+ .newSingleThreadExecutor();
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ dataLabel.setSizeUndefined();
+ final TextField dataSize = new TextField("Data size");
+ dataSize.setConverter(Integer.class);
+ final TextField interval = new TextField("Interval (ms)");
+ interval.setConverter(Integer.class);
+ final TextField duration = new TextField("Duration (ms)");
+ duration.setConverter(Integer.class);
+
+ dataSize.setValue((1000 * 1000) + "");
+ interval.setValue(2000 + "");
+ duration.setValue(40 * 1000 + "");
+
+ addComponent(dataSize);
+ addComponent(interval);
+ addComponent(duration);
+
+ Button b = new Button("Start pushing");
+ b.setId("startButton");
+ b.addClickListener(new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ Integer pushSize = (Integer) dataSize.getConvertedValue();
+ Integer pushInterval = (Integer) interval.getConvertedValue();
+ Integer pushDuration = (Integer) duration.getConvertedValue();
+ PushRunnable r = new PushRunnable(pushSize, pushInterval,
+ pushDuration);
+ executor.execute(r);
+ log.log("Starting push, size: " + pushSize + ", interval: "
+ + pushInterval + "ms, duration: " + pushDuration + "ms");
+ }
+ });
+ addComponent(b);
+ addComponent(dataLabel);
+ }
+
+ public Label getDataLabel() {
+ return dataLabel;
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Tests that pushing large amounts of data do not cause problems";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 12567;
+ }
+
+ public static class PushRunnable implements Runnable {
+
+ private Integer size;
+ private Integer interval;
+ private Integer duration;
+
+ public PushRunnable(Integer size, Integer interval, Integer duration) {
+ this.size = size;
+ this.interval = interval;
+ this.duration = duration;
+ }
+
+ @Override
+ public void run() {
+ final long endTime = System.currentTimeMillis() + duration;
+ final String data = LoremIpsum.get(size);
+ int packageIndex = 1;
+ while (System.currentTimeMillis() < endTime) {
+ final int idx = packageIndex++;
+ UI.getCurrent().access(new Runnable() {
+ @Override
+ public void run() {
+ PushLargeData ui = (PushLargeData) UI.getCurrent();
+ ui.getDataLabel().setValue(
+ System.currentTimeMillis() + ": " + data);
+ ui.log("Package " + idx + " pushed");
+ }
+ });
+ try {
+ Thread.sleep(interval);
+ } catch (InterruptedException e) {
+ return;
+ }
+ }
+ UI.getCurrent().access(new Runnable() {
+ @Override
+ public void run() {
+ PushLargeData ui = (PushLargeData) UI.getCurrent();
+ ui.log("Push complete");
+ }
+ });
+
+ }
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/push/PushLargeDataStreaming.java b/uitest/src/com/vaadin/tests/push/PushLargeDataStreaming.java
new file mode 100644
index 0000000000..464cbcc757
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/PushLargeDataStreaming.java
@@ -0,0 +1,29 @@
+/*
+ * 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.push;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.shared.ui.ui.Transport;
+
+public class PushLargeDataStreaming extends PushLargeData {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ super.setup(request);
+ getPushConfiguration().setTransport(Transport.STREAMING);
+ getPushConfiguration().setFallbackTransport(Transport.STREAMING);
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/push/PushLargeDataStreamingTest.java b/uitest/src/com/vaadin/tests/push/PushLargeDataStreamingTest.java
new file mode 100644
index 0000000000..c716a6fc7e
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/PushLargeDataStreamingTest.java
@@ -0,0 +1,55 @@
+/*
+ * 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.push;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+
+import com.vaadin.tests.tb3.WebsocketTest;
+
+public class PushLargeDataStreamingTest extends WebsocketTest {
+
+ @Test
+ public void testWebsocketLargeData() {
+ openTestURL();
+
+ // Without this there is a large chance that we will wait for all pushes
+ // to complete before moving on
+ testBench(driver).disableWaitForVaadin();
+
+ push();
+ // Push complete. Browser will reconnect now as > 10MB has been sent
+ // Push again to ensure push still works
+ push();
+
+ }
+
+ private void push() {
+ String logRow0Id = "Log_row_0";
+ By logRow0 = vaadinLocatorById(logRow0Id);
+
+ vaadinElementById("startButton").click();
+ waitUntil(ExpectedConditions.not(ExpectedConditions
+ .textToBePresentInElement(logRow0, "Push complete")));
+
+ // Pushes each 2000ms for 40s
+ sleep(40000);
+
+ waitUntil(ExpectedConditions.textToBePresentInElement(logRow0,
+ "Push complete"));
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/push/PushLargeDataWebsocket.java b/uitest/src/com/vaadin/tests/push/PushLargeDataWebsocket.java
new file mode 100644
index 0000000000..974dc880f9
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/PushLargeDataWebsocket.java
@@ -0,0 +1,32 @@
+/*
+ * 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.push;
+
+import com.vaadin.annotations.Push;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.shared.ui.ui.Transport;
+
+@Push
+public class PushLargeDataWebsocket extends PushLargeData {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ super.setup(request);
+ getPushConfiguration().setTransport(Transport.WEBSOCKET);
+ getPushConfiguration().setFallbackTransport(Transport.WEBSOCKET);
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/push/PushLargeDataWebsocketTest.java b/uitest/src/com/vaadin/tests/push/PushLargeDataWebsocketTest.java
new file mode 100644
index 0000000000..83f9efc8dd
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/PushLargeDataWebsocketTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.push;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+
+import com.vaadin.tests.tb3.WebsocketTest;
+
+public class PushLargeDataWebsocketTest extends WebsocketTest {
+
+ @Test
+ public void testWebsocketLargeData() {
+ openTestURL();
+
+ // Without this timing will be completly off as pushing "start" can
+ // remain waiting for all pushes to complete
+ testBench(driver).disableWaitForVaadin();
+
+ push();
+ // Push complete. Browser will reconnect now as > 10MB has been sent
+ // Push again to ensure push still works
+ push();
+
+ }
+
+ private void push() {
+ String logRow0Id = "Log_row_0";
+ By logRow0 = vaadinLocatorById(logRow0Id);
+
+ testBench(driver).waitForVaadin();
+ vaadinElementById("startButton").click();
+ waitUntil(ExpectedConditions.not(ExpectedConditions
+ .textToBePresentInElement(logRow0, "Push complete")));
+
+ // Pushes each 2000ms for 40s
+ sleep(40000);
+
+ waitUntil(ExpectedConditions.textToBePresentInElement(logRow0,
+ "Push complete"));
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/push/TrackMessageSizeUI.java b/uitest/src/com/vaadin/tests/push/TrackMessageSizeUI.java
index 67715339da..23702564f9 100644
--- a/uitest/src/com/vaadin/tests/push/TrackMessageSizeUI.java
+++ b/uitest/src/com/vaadin/tests/push/TrackMessageSizeUI.java
@@ -34,11 +34,13 @@ import com.vaadin.tests.components.AbstractTestUIWithLog;
import com.vaadin.ui.JavaScriptFunction;
// Load vaadinPush.js so that jQueryVaadin is defined
-@JavaScript("vaadin://vaadinPush.js")
+@JavaScript("vaadin://vaadinPush.debug.js")
public class TrackMessageSizeUI extends AbstractTestUIWithLog {
private String testMethod = "function testSequence(expected, data) {\n"
+ " var request = {trackMessageLength: true, messageDelimiter: '|'};\n"
+ + " _request = {trackMessageLength: true, messageDelimiter: '|'};\n"
+ + " _handleProtocol = function(a,b) {return true;};"
+ " var response = {partialMessage: ''};\n"
+ " var messages = [];\n"
+ " for(var i = 0; i < data.length; i++) {\n"
@@ -85,7 +87,7 @@ public class TrackMessageSizeUI extends AbstractTestUIWithLog {
}
private String findMethodImplementation() {
- String filename = "/VAADIN/jquery.atmosphere.js";
+ String filename = "/VAADIN/vaadinPush.debug.js";
URL resourceURL = findResourceURL(filename,
(VaadinServletService) VaadinService.getCurrent());
if (resourceURL == null) {
@@ -141,7 +143,7 @@ public class TrackMessageSizeUI extends AbstractTestUIWithLog {
@Override
protected String getTestDescription() {
- return "Unit tests for _trackMessageSize in jquery.atmosphere.js. Implemented with testbench and a full Vaadin server side since the testing requires some file mangling.";
+ return "Unit tests for _trackMessageSize in vaadinPush.debug.js. Implemented with testbench and a full Vaadin server side since the testing requires some file mangling.";
}
@Override
diff --git a/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java b/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java
index 1967891a7a..712ef94397 100644
--- a/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java
+++ b/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java
@@ -17,8 +17,8 @@
package com.vaadin.tests.tb3;
import java.net.URL;
-import java.util.Collection;
import java.util.Collections;
+import java.util.List;
import java.util.logging.Logger;
import org.junit.After;
@@ -77,7 +77,8 @@ public abstract class AbstractTB3Test extends TestBenchTestCase {
private boolean push = false;
{
// Default browser to run on unless setDesiredCapabilities is called
- desiredCapabilities = BrowserUtil.firefox(24);
+ desiredCapabilities = BrowserUtil
+ .firefox(MultiBrowserTest.TESTED_FIREFOX_VERSION);
}
/**
@@ -103,6 +104,10 @@ public abstract class AbstractTB3Test extends TestBenchTestCase {
* If something goes wrong
*/
protected void setupDriver() throws Exception {
+ if (runLocally()) {
+ setupLocalDriver();
+ return;
+ }
DesiredCapabilities capabilities = getDesiredCapabilities();
WebDriver dr = TestBench.createDriver(new RemoteWebDriver(new URL(
@@ -126,11 +131,26 @@ public abstract class AbstractTB3Test extends TestBenchTestCase {
}
/**
- * Opens the given test (defined by {@link #getTestUrl(boolean, boolean)},
- * optionally with debug window and/or push
+ * Override and return true to run the test locally. This method is only to
+ * be used for developing tests.
*
- * @param debug
- * @param push
+ * @return true to run the test on a local browser, false to use the hub
+ */
+ public boolean runLocally() {
+ return false;
+ }
+
+ /**
+ * Creates a {@link WebDriver} instance used for running the test locally
+ * for debug purposes. Used only when {@link #runLocally()} is overridden to
+ * return true;
+ */
+ protected abstract void setupLocalDriver();
+
+ /**
+ * Opens the given test (defined by {@link #getTestUrl()}, optionally with
+ * debug window and/or push (depending on {@link #isDebug()} and
+ * {@link #isPush()}.
*/
protected void openTestURL() {
driver.get(getTestUrl());
@@ -192,8 +212,9 @@ public abstract class AbstractTB3Test extends TestBenchTestCase {
*
* @return The browsers to run the test on
*/
- public Collection<DesiredCapabilities> getBrowsersToTest() {
- return Collections.singleton(BrowserUtil.firefox(17));
+ public List<DesiredCapabilities> getBrowsersToTest() {
+ return Collections.singletonList(BrowserUtil
+ .firefox(MultiBrowserTest.TESTED_FIREFOX_VERSION));
}
@@ -790,4 +811,5 @@ public abstract class AbstractTB3Test extends TestBenchTestCase {
// Do nothing by default
}
+
}
diff --git a/uitest/src/com/vaadin/tests/tb3/MultiBrowserTest.java b/uitest/src/com/vaadin/tests/tb3/MultiBrowserTest.java
index 3553954ec0..040d0156a3 100644
--- a/uitest/src/com/vaadin/tests/tb3/MultiBrowserTest.java
+++ b/uitest/src/com/vaadin/tests/tb3/MultiBrowserTest.java
@@ -17,7 +17,7 @@
package com.vaadin.tests.tb3;
import java.util.ArrayList;
-import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import org.openqa.selenium.remote.DesiredCapabilities;
@@ -40,30 +40,37 @@ import org.openqa.selenium.remote.DesiredCapabilities;
*/
public abstract class MultiBrowserTest extends PrivateTB3Configuration {
+ public static final int TESTED_SAFARI_VERSION = 6;
+ public static final int TESTED_CHROME_VERSION = 29;
+ public static final int TESTED_FIREFOX_VERSION = 24;
+
static List<DesiredCapabilities> allBrowsers = new ArrayList<DesiredCapabilities>();
static {
allBrowsers.add(BrowserUtil.ie(8));
allBrowsers.add(BrowserUtil.ie(9));
allBrowsers.add(BrowserUtil.ie(10));
allBrowsers.add(BrowserUtil.ie(11));
- allBrowsers.add(BrowserUtil.firefox(24));
+ allBrowsers.add(BrowserUtil.firefox(TESTED_FIREFOX_VERSION));
// Uncomment once we have the capability to run on Safari 6
- // allBrowsers.add(safari(6));
- allBrowsers.add(BrowserUtil.chrome(29));
- allBrowsers.add(BrowserUtil.opera(12));
-
+ // allBrowsers.add(safari(TESTED_SAFARI_VERSION));
+ allBrowsers.add(BrowserUtil.chrome(TESTED_CHROME_VERSION));
+ // Re-enable this when it is possible to run on a modern Opera version
+ // (15+)
+ // allBrowsers.add(BrowserUtil.opera(15));
}
/**
* @return all supported browsers which are actively tested
*/
public static List<DesiredCapabilities> getAllBrowsers() {
- return allBrowsers;
+ return Collections.unmodifiableList(allBrowsers);
}
@Override
- public Collection<DesiredCapabilities> getBrowsersToTest() {
- return allBrowsers;
+ public List<DesiredCapabilities> getBrowsersToTest() {
+ // Return a copy so sub classes can do
+ // super.getBrowseresToTest().remove(something)
+ return new ArrayList<DesiredCapabilities>(getAllBrowsers());
}
}
diff --git a/uitest/src/com/vaadin/tests/tb3/PrivateTB3Configuration.java b/uitest/src/com/vaadin/tests/tb3/PrivateTB3Configuration.java
index 09615f0b2e..a2922af28f 100644
--- a/uitest/src/com/vaadin/tests/tb3/PrivateTB3Configuration.java
+++ b/uitest/src/com/vaadin/tests/tb3/PrivateTB3Configuration.java
@@ -25,6 +25,12 @@ import java.net.SocketException;
import java.util.Enumeration;
import java.util.Properties;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.firefox.FirefoxBinary;
+import org.openqa.selenium.firefox.FirefoxDriver;
+
+import com.vaadin.testbench.TestBench;
+
/**
* Provides values for parameters which depend on where the test is run.
* Parameters should be configured in work/eclipse-run-selected-test.properties.
@@ -132,4 +138,23 @@ public abstract class PrivateTB3Configuration extends ScreenshotTB3Test {
"No compatible (192.168.*) ip address found.");
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.tests.tb3.AbstractTB3Test#setupLocalDriver()
+ */
+ @Override
+ protected void setupLocalDriver() {
+ String firefoxPath = getProperty("firefox.path");
+ WebDriver driver;
+ if (firefoxPath != null) {
+ driver = new FirefoxDriver(
+ new FirefoxBinary(new File(firefoxPath)), null);
+ } else {
+ driver = new FirefoxDriver();
+ }
+ setDriver(TestBench.createDriver(driver));
+ setDesiredCapabilities(BrowserUtil
+ .firefox(MultiBrowserTest.TESTED_FIREFOX_VERSION));
+ }
}
diff --git a/uitest/src/com/vaadin/tests/tb3/SimpleMultiBrowserTest.java b/uitest/src/com/vaadin/tests/tb3/SimpleMultiBrowserTest.java
deleted file mode 100644
index aeeed4198c..0000000000
--- a/uitest/src/com/vaadin/tests/tb3/SimpleMultiBrowserTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.tb3;
-
-import org.junit.Test;
-
-/**
- * A simple version of {@link MultiBrowserTest} which allows only one test
- * method ({@link #test()}). Uses only the enclosing class name as test
- * identifier (i.e. excludes "-test").
- *
- * This class is only provided as a helper for converting existing TB2 tests
- * without renaming all screenshots. All new TB3+ tests should extend
- * {@link MultiBrowserTest} directly instead of this.
- *
- * @author Vaadin Ltd
- */
-@Deprecated
-public abstract class SimpleMultiBrowserTest extends MultiBrowserTest {
-
- @Test
- public abstract void test() throws Exception;
-
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.tests.tb3.ScreenshotTB3Test#getScreenshotBaseName()
- */
- @Override
- public String getScreenshotBaseName() {
- return super.getScreenshotBaseName().replaceFirst("-test$", "");
- }
-}
diff --git a/uitest/src/com/vaadin/tests/tb3/TB3Runner.java b/uitest/src/com/vaadin/tests/tb3/TB3Runner.java
index b612b17caa..4e084ab0ed 100644
--- a/uitest/src/com/vaadin/tests/tb3/TB3Runner.java
+++ b/uitest/src/com/vaadin/tests/tb3/TB3Runner.java
@@ -17,6 +17,8 @@
package com.vaadin.tests.tb3;
import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.ExecutorService;
@@ -72,8 +74,14 @@ public class TB3Runner extends BlockJUnit4ClassRunner {
try {
AbstractTB3Test testClassInstance = (AbstractTB3Test) getTestClass()
.getOnlyConstructor().newInstance();
- for (DesiredCapabilities capabilities : testClassInstance
- .getBrowsersToTest()) {
+ Collection<DesiredCapabilities> desiredCapabilites = testClassInstance
+ .getBrowsersToTest();
+ if (testClassInstance.runLocally()) {
+ desiredCapabilites = new ArrayList<DesiredCapabilities>();
+ desiredCapabilites.add(BrowserUtil
+ .firefox(MultiBrowserTest.TESTED_FIREFOX_VERSION));
+ }
+ for (DesiredCapabilities capabilities : desiredCapabilites) {
// Find any methods marked with @Test.
for (FrameworkMethod m : getTestClass().getAnnotatedMethods(
diff --git a/uitest/src/com/vaadin/tests/tb3/WebsocketTest.java b/uitest/src/com/vaadin/tests/tb3/WebsocketTest.java
index 5c6ea329f5..26fef667cd 100644
--- a/uitest/src/com/vaadin/tests/tb3/WebsocketTest.java
+++ b/uitest/src/com/vaadin/tests/tb3/WebsocketTest.java
@@ -20,7 +20,6 @@
package com.vaadin.tests.tb3;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -44,8 +43,8 @@ public abstract class WebsocketTest extends PrivateTB3Configuration {
* @return All supported browsers which are actively tested and support
* websockets
*/
- public static Collection<DesiredCapabilities> getWebsocketBrowsers() {
- return Collections.unmodifiableCollection(websocketBrowsers);
+ public static List<DesiredCapabilities> getWebsocketBrowsers() {
+ return Collections.unmodifiableList(websocketBrowsers);
}
/*
@@ -54,7 +53,7 @@ public abstract class WebsocketTest extends PrivateTB3Configuration {
* @see com.vaadin.tests.tb3.AbstractTB3Test#getBrowserToRunOn()
*/
@Override
- public Collection<DesiredCapabilities> getBrowsersToTest() {
- return getWebsocketBrowsers();
+ public List<DesiredCapabilities> getBrowsersToTest() {
+ return new ArrayList<DesiredCapabilities>(getWebsocketBrowsers());
}
}
diff --git a/uitest/src/com/vaadin/tests/tickets/Ticket12727.java b/uitest/src/com/vaadin/tests/tickets/Ticket12727.java
new file mode 100644
index 0000000000..40711c6b7f
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/tickets/Ticket12727.java
@@ -0,0 +1,51 @@
+package com.vaadin.tests.tickets;
+
+import java.util.ArrayList;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.ListSelect;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * Test for #12727: Panels get unnecessary scroll bars in WebKit when content is
+ * 100% wide.
+ */
+@SuppressWarnings("serial")
+public class Ticket12727 extends UI {
+
+ @Override
+ protected void init(VaadinRequest request) {
+ Panel panel = new Panel();
+
+ VerticalLayout content = new VerticalLayout();
+ panel.setContent(content);
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.setHeight(null);
+ gridLayout.setWidth(100, Unit.PERCENTAGE);
+ content.addComponent(gridLayout);
+
+ ListSelect listSelect = new ListSelect();
+
+ listSelect.setWidth(100, Unit.PERCENTAGE);
+ listSelect.setHeight(500, Unit.PIXELS);
+
+ gridLayout.addComponent(listSelect);
+
+ ArrayList<String> values = new ArrayList<String>();
+ values.add("Value 1");
+ values.add("Value 2");
+ values.add("Value 3");
+
+ ComboBox comboBox = new ComboBox(null, values);
+ gridLayout.addComponent(comboBox);
+
+ gridLayout.setMargin(true);
+
+ setContent(panel);
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/util/LoremIpsum.java b/uitest/src/com/vaadin/tests/util/LoremIpsum.java
index 3dc775badf..c3eec32fd5 100644
--- a/uitest/src/com/vaadin/tests/util/LoremIpsum.java
+++ b/uitest/src/com/vaadin/tests/util/LoremIpsum.java
@@ -4,6 +4,15 @@ public class LoremIpsum {
private static final String LOREM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lacinia sollicitudin neque, vitae cursus eros scelerisque sit amet. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin sollicitudin tempus lorem, sed consectetur nibh ultrices nec. Ut tempus laoreet dolor non molestie. Quisque consectetur tellus ut tortor imperdiet semper. In tempor odio eu metus hendrerit pharetra. Aliquam erat volutpat. Aliquam erat volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec sit amet turpis facilisis ipsum cursus viverra ut vitae turpis. Integer tincidunt sem id sem tristique a laoreet eros euismod. Ut quis leo vel neque pellentesque ullamcorper. Aliquam at fermentum justo. Sed eget laoreet elit. Pellentesque commodo dui quis metus ornare bibendum. Ut tempus, ipsum in euismod scelerisque, augue ante lacinia sem, scelerisque imperdiet felis lectus rhoncus felis.Fusce vitae nisl lorem, id ultricies massa. Phasellus augue eros, dapibus vel fermentum non, sodales id mi. Nulla tincidunt diam a justo ultricies vestibulum nec sed tellus. Morbi faucibus leo et odio condimentum at porttitor diam auctor. Aenean volutpat lacinia mauris. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean malesuada ullamcorper elit ut eleifend. Etiam tempor, mauris id aliquet tempor, erat felis rutrum eros, a aliquam dolor nunc nec enim. Sed enim dolor, tristique ut tempus vitae, elementum at velit. Duis vulputate ultricies risus, ac gravida erat tincidunt posuere. Pellentesque dapibus tincidunt rhoncus. Phasellus eleifend molestie eros. Praesent id imperdiet urna. Etiam fermentum interdum quam, in tempus quam condimentum at.Curabitur eget ultrices augue. Suspendisse potenti. Nam hendrerit, dolor eget adipiscing lobortis, enim risus dignissim orci, a imperdiet tellus nulla id nibh. Praesent eu dui sit amet nulla interdum dignissim vel quis ante. Sed a lectus metus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus eget ultrices neque. Cras adipiscing condimentum justo adipiscing consequat. In accumsan mollis sapien ut euismod. Nulla sodales pulvinar leo, nec condimentum leo vestibulum ut. Phasellus risus metus, aliquet quis porta at, imperdiet vitae metus. Proin nec odio odio. Quisque nec elit id lacus iaculis ullamcorper sit amet vel ipsum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lacus sed libero euismod rhoncus. Suspendisse augue massa, ullamcorper at accumsan at, porttitor ac odio.Morbi imperdiet, lectus vehicula eleifend ornare, lectus arcu ullamcorper augue, a imperdiet eros augue id justo. Integer eget pretium lorem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras vehicula leo eget metus consectetur viverra. Nullam a mi nisl, in lacinia metus. Curabitur mollis eleifend augue, consectetur imperdiet velit sagittis aliquet. In tempor tempor orci eu faucibus. Mauris nisi neque, vulputate eu dignissim eget, aliquet sed nibh. Mauris rhoncus elit eget lectus dignissim bibendum. Phasellus sed nunc lacus, nec aliquet elit. Fusce blandit, sem vitae gravida elementum, sem orci porttitor eros, id porta tortor massa ut velit. Nulla pretium mi at tortor porttitor sollicitudin.Ut gravida est at lectus eleifend non ultrices ligula blandit. Sed purus lectus, adipiscing ut mollis vel, interdum quis diam. Phasellus eget nibh augue. Fusce justo felis, facilisis in auctor ut, cursus et enim. Praesent hendrerit venenatis elit, iaculis cursus ligula auctor in. Proin mollis malesuada dolor at elementum. Maecenas sit amet leo odio. Integer ac enim in justo eleifend dapibus. Pellentesque consequat, libero congue sagittis pulvinar, odio eros porta quam, et aliquet dolor turpis non lacus. Sed eu risus nunc. Aliquam tempus nulla a purus auctor mattis. Nullam adipiscing nisl nec purus porttitor rutrum. Sed pellentesque tincidunt posuere. Nulla varius cursus eros. Phasellus vel neque at metus tempus placerat laoreet ac dolor. Nulla faucibus leo nisi, vel placerat lectus.Donec non leo lacinia metus euismod dignissim suscipit ut neque. Donec iaculis, lacus ut luctus bibendum, mi libero tristique sem, vel consectetur risus ligula in turpis. Nulla lorem justo, porttitor non sollicitudin at, pharetra non ante. Phasellus tristique, purus at luctus auctor, nisl neque congue lacus, eget convallis mauris libero sit amet arcu. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tellus quam, lobortis vitae commodo id, ultrices a augue. Nam tellus erat, varius vel iaculis et, fermentum ut tellus. Donec id urna orci. Curabitur eleifend hendrerit libero, id tempor dolor faucibus eu. Quisque aliquam sapien a tortor mollis sollicitudin. Duis augue erat, sagittis eget consequat vel, volutpat et augue. Sed vehicula mattis nisi, non porta elit imperdiet vitae. Curabitur scelerisque mollis lectus, consequat suscipit est ultricies sit amet. Aenean in sem libero, id adipiscing urna. Aenean eleifend posuere lorem in aliquet. Praesent arcu est, tristique quis adipiscing ac, tincidunt nec dui. Nunc sed leo quis justo posuere suscipit. Fusce vitae lectus vitae urna sodales aliquam.Sed velit purus, ullamcorper non interdum quis, facilisis eget tortor. Etiam vestibulum venenatis aliquet. Fusce felis felis, venenatis id tincidunt at, vehicula et erat. Curabitur eu sagittis nisl. Curabitur nisi sapien, venenatis nec pulvinar ut, tempor id diam. Suspendisse metus libero, placerat in fermentum a, aliquam id arcu. Nulla quis accumsan massa. Curabitur consectetur pulvinar sapien non consequat. Etiam sem dolor, posuere id laoreet a, tempor vel nisl. Fusce eu lacus orci. Pellentesque tellus dui, pulvinar nec egestas vitae, adipiscing euismod nunc. Mauris consequat felis sit amet justo pellentesque venenatis. Donec dignissim porta dolor, eget pellentesque lorem porta eu. Donec eget enim eu leo mattis ornare in ut libero. Maecenas sit amet ante mauris.Praesent ultrices diam id lectus viverra sed lobortis risus adipiscing. Nulla in risus est. Proin vitae dolor ligula, a placerat enim. Integer hendrerit erat tincidunt leo malesuada sit amet tincidunt justo mattis. Morbi ut neque urna, ut blandit erat. Donec eleifend justo ac augue ultrices consectetur. In rutrum, leo ac porttitor volutpat, neque mi lacinia diam, id fermentum risus neque vitae risus. Suspendisse in justo libero, eget ultrices nisl. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In sollicitudin, arcu et convallis fermentum, est tellus pellentesque neque, ac faucibus tellus orci non purus. Ut aliquet facilisis ullamcorper. Cras justo ipsum, mollis vel ultricies non, consectetur a libero.Aliquam erat volutpat. Nunc ut mauris eu lorem consequat placerat. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse sapien nisi, pellentesque ut porttitor eget, auctor vitae massa. Fusce et euismod massa. In dolor enim, commodo vitae scelerisque sit amet, vulputate quis nibh. Donec ut mollis elit. Nullam placerat sem at urna euismod tempus vitae a mi. Curabitur ac sem non tortor dapibus euismod in et augue. Phasellus elit nisi, ornare eget aliquam et, convallis vitae eros. Vivamus vitae facilisis quam. Nullam a dolor sit amet ante sodales vulputate. Sed vel elit libero. Vestibulum vestibulum porttitor orci, a elementum risus congue in. Mauris ut justo sed dolor rhoncus viverra nec non eros. Phasellus dignissim, mi id laoreet venenatis, enim lacus pharetra arcu, sit amet consectetur velit elit hendrerit arcu. Integer hendrerit suscipit pretium. Proin orci quam, vehicula vel accumsan tempor, facilisis tempus tortor.Etiam et nunc id odio lobortis ornare ac eget lorem. Proin tristique iaculis felis, ut gravida lacus congue ut. Etiam nibh turpis, congue vel ornare ut, feugiat ut mi. Etiam id ante eget turpis laoreet dapibus. Vivamus accumsan sem at est lacinia sagittis vitae a erat. Etiam mollis justo et felis faucibus sodales. Etiam placerat felis sed ante sollicitudin dignissim. Nunc fringilla nunc in lacus ultricies rutrum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed venenatis porta turpis dignissim tempor. Etiam consequat vulputate elementum. Sed augue lacus, aliquam eu ornare vel, aliquam at turpis.Ut lacinia velit odio. Nulla sapien tellus, fringilla dignissim porta sed, elementum eget diam. Quisque pulvinar commodo massa, vitae lobortis velit iaculis id. Vestibulum id dolor vel mauris auctor commodo id at odio. Suspendisse consectetur consequat erat. Aliquam in purus at sem pretium ultricies. In urna elit, porttitor vel gravida at, varius non nisi. Nullam id eros at lorem posuere ullamcorper eget in dui. Sed sit amet mi vel quam vestibulum imperdiet. Ut ullamcorper purus nibh, a commodo tortor. Phasellus pretium, nulla ut venenatis euismod, augue arcu volutpat nulla, id semper est purus eget urna. Vivamus pharetra diam ac ante cursus tempus.Cras in rhoncus felis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In semper leo sit amet nisi rutrum et interdum odio fringilla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras sollicitudin dui non risus iaculis a lobortis odio consequat. Sed consectetur nisl eu nisi pulvinar fermentum. Etiam placerat tincidunt pellentesque. Etiam luctus auctor nulla ac pulvinar. Pellentesque sit amet eros est. Sed hendrerit sem rhoncus purus rhoncus ullamcorper. Integer vitae commodo sem. Donec orci lectus, gravida sit amet viverra ut, suscipit eu odio. Vivamus ac dolor sit amet augue porttitor imperdiet nec quis mauris. Etiam luctus pharetra lectus sed mattis. Proin tincidunt ultricies dolor, at sagittis ante tincidunt ac.Morbi sit amet sem ut leo ornare luctus at sed odio. Donec vestibulum consequat consectetur. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer sit amet leo eget ipsum eleifend commodo et vel sapien. Donec vulputate facilisis nisi in bibendum. Vestibulum justo magna, mollis in varius a, malesuada id nisl. Vestibulum fermentum leo at ipsum euismod scelerisque. Donec id diam eget sapien varius ultricies. Quisque mollis vehicula lorem, vitae suscipit lorem gravida vel. Cras ipsum odio, pellentesque vitae molestie at, facilisis eget felis. Morbi gravida velit eget ante posuere id pharetra dolor vehicula. Praesent lectus sem, pretium sit amet eleifend non, ultricies vitae eros.Etiam consequat felis quis elit semper sed lobortis risus faucibus. Quisque diam ante, gravida ut mollis tristique, auctor ac mauris. Phasellus vestibulum sapien et justo sagittis sed dignissim dui sollicitudin. Maecenas egestas quam et odio mattis eu posuere est sagittis. Nulla nec posuere turpis. In mauris sapien, pharetra et placerat eu, dictum quis justo. Curabitur sit amet varius nulla. Cras feugiat erat quis ante aliquam blandit. In ac libero id massa dapibus ultrices. Donec non massa orci.In gravida justo vitae eros ultrices fringilla. Sed mi quam, lobortis eu pharetra nec, pulvinar eu justo. Sed ornare diam sed nulla pellentesque at tincidunt lacus cursus. Donec vel neque et urna euismod suscipit. Proin in tortor eget felis euismod ultrices. Nunc ut orci elit, vitae pellentesque ligula. Vivamus in mi felis, at congue nulla. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi mattis, ligula id sollicitudin posuere, eros odio pellentesque felis, in auctor libero mi nec massa. Praesent fringilla pretium tempus. Sed quis leo nulla, a pretium mi. Sed malesuada quam eget lorem tristique eget accumsan libero auctor. Vestibulum metus nisl, rutrum vel ullamcorper scelerisque, ultrices cursus purus. Aliquam convallis sollicitudin elit at mattis. Phasellus vitae magna id quam laoreet gravida quis ac metus.Duis lobortis arcu a elit porta laoreet. Pellentesque at condimentum sapien. Maecenas rutrum eleifend quam, eu pellentesque quam tincidunt ac. Vivamus fermentum justo ac dui dapibus ut tempus massa congue. Phasellus fermentum placerat enim, et dignissim mi feugiat in. Etiam odio diam, mollis vitae viverra a, egestas eget arcu. Curabitur purus lectus, accumsan quis lobortis ut, faucibus ac magna. Vivamus consectetur, ligula sit amet convallis rhoncus, risus lorem scelerisque arcu, eu fermentum felis leo sit amet eros. In hac habitasse platea dictumst. Sed congue pretium erat, vel hendrerit velit dapibus ut. Aliquam porta porttitor nunc facilisis pretium. Aliquam tincidunt porttitor tincidunt. Sed at erat a arcu elementum dignissim nec et ipsum. In et magna erat. In hac habitasse platea dictumst. Nulla sit amet enim vitae magna ullamcorper auctor ac id lectus. Fusce id sapien massa.Fusce porta nisl non leo iaculis sed elementum purus viverra. Aenean vitae erat elit. Proin id tincidunt nibh. Fusce faucibus dignissim laoreet. Etiam volutpat ultricies magna in euismod. Quisque luctus malesuada massa, ac ullamcorper dui luctus quis. Mauris a felis ut urna blandit semper egestas vel dui. Nulla facilisi. Ut dapibus bibendum bibendum. Curabitur id facilisis tellus. Vestibulum arcu orci, pretium vestibulum accumsan ut, feugiat eget eros. Mauris dapibus sem a massa ornare id posuere purus ornare. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus mollis, orci ac eleifend pharetra, risus turpis euismod urna, ut congue neque nunc ut felis. Aliquam a nisi leo. Nulla consequat faucibus ligula consectetur tristique. Duis at lacus orci, eget pulvinar tortor.Aenean nisi justo, dictum ac sagittis a, mollis ut orci. Donec faucibus congue neque ut gravida. Nam interdum nunc vel ipsum molestie elementum. Aliquam a eros non mi accumsan lacinia ut eu justo. Donec id ipsum purus, sed congue nunc. Donec euismod ante quis metus interdum feugiat. Sed nec dictum neque. Vivamus sed felis non lorem placerat facilisis eu sit amet nisi. Morbi dolor dolor, malesuada eu congue at, sollicitudin ut metus. In sit amet ipsum purus, ut dignissim dolor. Pellentesque quis velit velit. Aenean dapibus ipsum eu felis placerat volutpat. Donec auctor dictum ligula ut facilisis. Aliquam vulputate nunc nec diam ultricies auctor dictum dui fringilla. Cras urna metus, porttitor et sodales eu, tempus non mauris. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.Etiam tempor, mi ut tempor adipiscing, nunc lorem gravida odio, scelerisque aliquet ante massa id nibh. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus eu nisl urna. Quisque vel leo in lorem bibendum bibendum ut eget massa. Morbi dictum, metus eu pellentesque lobortis, augue nisi facilisis velit, sit amet feugiat risus nunc vitae elit. Fusce blandit mi a augue gravida eu tristique sem consequat. Suspendisse non malesuada nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque commodo lorem id ipsum cursus posuere. Proin euismod facilisis est, vel imperdiet lectus commodo blandit. Proin luctus dapibus purus, id vulputate mauris tincidunt vel. Vestibulum volutpat molestie nulla faucibus malesuada. Aenean ut ornare lectus.Maecenas vel mauris in dolor imperdiet gravida eu nec mi. Vestibulum varius sem et nibh aliquet eu posuere tellus luctus. Fusce blandit, odio ut gravida semper, tellus lorem porta felis, vitae posuere mi lorem eget magna. Sed tristique nisi ut ipsum adipiscing molestie. Donec volutpat nunc eget neque posuere aliquam. Vivamus vel sem lectus. In volutpat dictum eros. Curabitur mollis pretium arcu ut rhoncus. Vivamus eros risus, sagittis posuere suscipit sit amet, consectetur eget elit. Mauris porttitor feugiat magna, sed lobortis ante porttitor at. Etiam non enim quam, nec tempus erat. Ut porta pharetra nibh vel laoreet. Sed euismod elit eget sem tempus non sodales massa cursus. Aliquam erat volutpat. Nulla a tortor ornare nibh feugiat venenatis. Mauris interdum mattis odio eget porta. Maecenas ac ullamcorper velit. Nulla id sagittis ligula. Aliquam pharetra, diam ut euismod pellentesque, sapien ligula sagittis nisi, sed dictum dolor purus sit amet elit.Aenean quis metus velit. In at fermentum nunc. Cras in magna sapien, sed vestibulum lacus. Sed pellentesque, massa sed malesuada tincidunt, erat tortor consectetur lacus, vel congue arcu enim id libero. Donec elit neque, egestas a faucibus ut, tempor nec diam. Donec turpis est, vulputate id venenatis vitae, vulputate sit amet elit. Ut semper nibh orci. Fusce nibh nisi, tristique eu dapibus id, faucibus nec augue. Sed sagittis malesuada leo, pretium porttitor ante lacinia in. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.Sed quis libero ante, ac consequat nisl. Cras nisl urna, ultrices eu dapibus sed, pretium quis diam. Curabitur aliquam, dolor et convallis viverra, purus orci commodo neque, a sagittis felis tellus quis mi. In mi orci, tempus ut sodales imperdiet, condimentum ac tortor. Phasellus ornare, tortor eget egestas ultricies, est risus ultricies lorem, ac tempus nibh ligula ac ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec fermentum nibh vitae tortor laoreet sed rutrum arcu suscipit. Fusce iaculis nisl in justo pretium a interdum ipsum dignissim. Sed sed semper metus. Aenean ante turpis, fermentum vestibulum dapibus eget, dictum id leo. Nam nec lorem erat.Cras dolor nulla, suscipit nec viverra ac, egestas vitae enim. Quisque vel laoreet sem. Sed non felis at nisl ultricies pharetra vitae a lorem. Suspendisse tempor arcu id massa laoreet congue. Nam eu turpis justo, nec adipiscing tortor. Etiam mattis lorem tincidunt diam molestie semper. Vivamus rutrum est in tortor egestas consequat. Sed vitae ultrices leo. Aenean pulvinar malesuada enim, eget elementum purus bibendum a. Vivamus sit amet mauris mauris, placerat varius lorem. Sed diam tortor, posuere non convallis molestie, dictum quis libero. Nulla quis tellus a nunc semper elementum vel sed odio. Cras ac mattis lectus. Proin placerat imperdiet sodales. Fusce quis magna dolor, eget porttitor lectus. Mauris elementum lorem vitae lectus porta scelerisque nec a sapien. Vivamus dapibus volutpat leo nec vehicula. Praesent ac diam ipsum.Pellentesque nec ullamcorper nulla. Nam lectus dolor, porttitor vitae varius sed, egestas a arcu. Suspendisse malesuada venenatis erat nec consequat. Morbi consequat magna a neque ultrices eget aliquet sapien ultrices. Aenean vel diam ipsum, ac scelerisque dui. Morbi quis arcu neque, eget auctor enim. Etiam pretium est sit amet nunc porta ornare vel quis sapien. Aliquam pulvinar pharetra risus, vel mollis mauris cursus sed. In sagittis nisl ac nunc placerat bibendum. Proin in risus lorem, sed fringilla eros.Proin luctus aliquam metus vitae euismod. Maecenas hendrerit sollicitudin hendrerit. Etiam magna elit, fringilla ut suscipit at, viverra eget ante. Morbi consequat, dui non tristique varius, eros ipsum vulputate sem, eu tristique nibh lacus vel felis. Maecenas eget eros a urna consectetur interdum. Integer est nibh, semper sed feugiat quis, lacinia eget diam. In ultricies mollis lectus sed imperdiet. Proin sed magna nec tortor blandit lacinia in sit amet nibh. Nullam ultrices tempor lacus, vel tincidunt eros vulputate euismod. Praesent justo nibh, convallis ut vehicula consequat, molestie posuere nulla. Mauris sollicitudin egestas vestibulum. Suspendisse auctor imperdiet eros, sit amet dignissim magna dapibus in. Praesent ultrices sem et risus interdum vel pharetra dolor tristique. Proin eleifend nunc eget risus venenatis posuere. Sed est nisi, interdum porta dapibus a, laoreet ac mi. Praesent sit amet varius lectus. Phasellus suscipit lacinia velit, sed tempus odio varius at. Fusce eleifend elementum aliquet. Proin ultricies libero at ipsum condimentum rhoncus.Quisque convallis, arcu at vehicula imperdiet, velit eros posuere sem, sit amet pulvinar purus massa a tellus. Maecenas cursus neque in dolor facilisis ac aliquam ligula eleifend. Fusce quis faucibus nisl. Fusce pulvinar magna vel enim scelerisque id cursus tortor faucibus. Nunc est turpis, iaculis ac sodales non, euismod vitae nunc. Fusce felis purus, iaculis dapibus mollis quis, condimentum consequat eros. Ut a lectus nec mi lacinia fringilla. Donec eget metus lectus, et rhoncus enim. Donec pharetra malesuada enim at rutrum. Vestibulum tincidunt gravida viverra. Vestibulum commodo sem nisl.Vivamus iaculis mollis arcu, quis dapibus risus semper quis. Quisque consectetur ullamcorper arcu id lacinia. Proin non tellus tellus. Nunc vehicula, arcu in pharetra feugiat, ante ante viverra urna, at convallis ligula odio id purus. Morbi quis orci non ante imperdiet luctus. Maecenas et ipsum est, at viverra sem. Morbi placerat ultrices imperdiet. Nullam id arcu at quam mollis hendrerit eu ac lectus. Etiam a neque sed turpis vestibulum posuere. Ut elementum tincidunt nulla at pellentesque. Integer nisl nunc, faucibus non sollicitudin eu, vestibulum ut nulla. In auctor est blandit purus rhoncus et sagittis eros convallis. Mauris sodales ultricies varius. Nulla facilisi. Donec ut nisl nunc, id accumsan erat. Praesent gravida molestie lobortis. In suscipit nisi sed elit sagittis tristique. Pellentesque vitae ante elit. Nullam diam est, ultrices vitae molestie at, tempus et magna. In hac habitasse platea dictumst.Vestibulum id tristique quam. Vivamus dui nulla, pretium eget elementum et, pulvinar a diam. Sed sed arcu sapien, et pharetra nisl. Nunc dignissim, lectus ac fringilla cursus, risus ante pretium justo, nec molestie sem urna id velit. Aenean tincidunt felis sed risus vestibulum ultricies. Aliquam lacinia scelerisque hendrerit. Morbi tincidunt molestie sapien sed faucibus. Vivamus et nisl velit, in semper libero. Duis elementum, dolor eget euismod porttitor, tortor eros tristique risus, eget posuere purus leo venenatis leo. Quisque in elit hendrerit felis accumsan gravida id sed sem.Sed massa turpis, interdum eget adipiscing a, tempor non enim. Vivamus sit amet purus tortor, quis tincidunt nunc. Nam vehicula dolor vitae est bibendum sed condimentum nisl pretium. Aenean pellentesque egestas lacinia. Vestibulum id felis sapien, vestibulum pharetra mauris. Donec quis ligula quis risus ultrices pharetra ac et quam. Nunc aliquam adipiscing mauris id euismod. Suspendisse potenti. Ut pharetra tristique pellentesque. Fusce tristique nisl vitae eros adipiscing lobortis. Ut porttitor porttitor est, vel euismod mi feugiat quis. Sed bibendum lacus vel sem hendrerit a ultricies sapien mattis.Vestibulum a tempus urna. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean tincidunt interdum dui, in accumsan ante placerat non. Aliquam suscipit eros eget quam ullamcorper consequat. Nulla facilisi. Phasellus porttitor interdum quam nec mattis. Etiam vitae diam vel est tempus aliquam eu et tellus. Phasellus lobortis porttitor mi, eu mollis augue tempus eu. Morbi a urna id nibh faucibus dictum. Sed hendrerit fringilla nunc vel elementum. Donec vel massa vitae nibh imperdiet vestibulum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vestibulum in velit lorem, eu posuere felis. Maecenas ornare posuere faucibus. Donec dignissim ante eu neque suscipit interdum. Pellentesque ultrices dictum quam, tempor tempus leo posuere eget. Vestibulum dictum interdum urna, at feugiat neque venenatis ac. Donec tempus dictum enim, nec tempor neque rhoncus vel.Sed mollis luctus leo sed mattis. Vestibulum tempor mattis vehicula. Duis id elementum libero. Integer condimentum tincidunt molestie. Aenean quam tortor, rutrum sit amet placerat sed, sollicitudin eget turpis. In hac habitasse platea dictumst. Mauris lacinia mollis rhoncus. Fusce nec tellus elementum magna congue ultricies. Nulla consequat, dui nec facilisis hendrerit, ligula sapien viverra velit, at tempor risus leo vestibulum risus. Cras volutpat molestie orci ullamcorper gravida. Nullam est nisi, tempus et tincidunt ut, dapibus vitae nibh. Nam scelerisque purus sit amet odio imperdiet mattis. Integer ut ultrices odio.Cras placerat turpis nisl. Quisque consectetur urna vel nunc faucibus dictum. Nunc ac varius mauris. In ut egestas purus. Sed arcu nibh, mollis vitae dapibus eget, consectetur sit amet eros. Curabitur tincidunt purus sagittis neque adipiscing pretium. Aliquam tempor ullamcorper lectus. Cras quis elit et sapien euismod dapibus vitae in urna. Aliquam adipiscing urna non elit suscipit hendrerit. Mauris euismod tincidunt tortor eu vestibulum. Praesent ac quam massa. Fusce vitae viverra justo. Phasellus vel posuere augue. Praesent sagittis auctor odio in cursus. Sed vel lacus velit, vitae eleifend leo. Donec dapibus ornare mauris ut imperdiet. Nullam a sem felis, in commodo ligula. Nunc sed justo id metus bibendum pretium. Fusce lacinia lorem at leo ultricies porta.Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi non ipsum nisi, at porta ipsum. Nulla dolor lacus, auctor eget tincidunt et, tempor in velit. Cras vel diam facilisis dolor sagittis sodales. In hac habitasse platea dictumst. Donec dignissim vulputate tempor. Fusce tristique vestibulum vehicula. Integer nec erat a risus semper ultrices nec ac eros. Phasellus egestas, risus eget suscipit iaculis, mi magna posuere urna, in sollicitudin odio leo nec lorem. Ut at enim nunc, eget pellentesque ipsum. Nam at ipsum et magna tempor gravida vestibulum ut diam. Aenean aliquam scelerisque blandit. Cras sapien sem, consectetur a laoreet at, mattis vel lorem. Maecenas enim mauris, hendrerit ac imperdiet in, hendrerit a justo. Vestibulum justo metus, adipiscing at pulvinar at, scelerisque at velit. Aliquam sodales feugiat tortor ullamcorper cursus. Quisque tortor felis, sodales eu bibendum in, pellentesque eget urna.Nullam ultricies congue nisi nec blandit. Nulla nisl mi, aliquet vel dictum in, pellentesque fringilla arcu. Nam vulputate iaculis pellentesque. Morbi faucibus, augue vitae aliquam fringilla, ipsum tellus lacinia ligula, a luctus mauris orci id nulla. Vestibulum commodo, diam eget tincidunt iaculis, leo ante suscipit ligula, convallis scelerisque quam augue quis libero. Pellentesque vulputate ultricies eros a porta. In hac habitasse platea dictumst. Quisque at sem vel nisl pellentesque pellentesque at imperdiet turpis. Sed quis sem non nulla pellentesque placerat. Etiam sed ultricies nisl. Nunc vel leo augue, vitae fringilla urna. Suspendisse eget dolor enim, sed interdum lorem. Etiam imperdiet, nunc a tempor elementum, ipsum ante sodales tortor, id dignissim arcu diam vitae metus.Sed tincidunt fringilla mauris a lobortis. Morbi mollis elementum purus ac auctor. Etiam malesuada sapien vehicula magna fringilla sit amet porta sem scelerisque. Vestibulum malesuada ante nunc. Curabitur laoreet commodo mauris eu tempor. Sed hendrerit, lorem vel scelerisque aliquam, metus ligula ultricies ante, at luctus neque risus ut nisi. Suspendisse lectus sapien, tempor eget volutpat non, tempor at orci. Aenean eu est metus, vel convallis augue. Integer aliquam turpis id neque posuere tincidunt. Morbi at ante felis, ac semper diam. Etiam iaculis sapien a mauris tempus semper. Nunc ut leo nec massa tincidunt sodales id sed justo. Fusce sed blandit turpis. Pellentesque scelerisque laoreet luctus.Integer lobortis sollicitudin sapien, vel consequat augue hendrerit ut. Quisque pretium, enim condimentum ornare viverra, est nisl convallis lacus, vel varius turpis mi a eros. Curabitur eget enim non quam condimentum lobortis id sit amet dolor. Aliquam in ligula ut nisi accumsan consectetur. Pellentesque blandit ultrices magna, eget posuere dui eleifend ut. Quisque ornare, ante eget iaculis rutrum, nisi dolor tincidunt diam, eget volutpat nibh sapien vel massa. Sed viverra pulvinar lectus et commodo. Sed lacus mauris, aliquet ut tristique at, feugiat sit amet lectus. Duis lacinia purus a lacus accumsan tristique. Donec felis nunc, egestas ut porttitor ac, vulputate at purus. Quisque euismod nibh sit amet metus ullamcorper a consequat ipsum luctus. Mauris vitae sapien tristique lorem mollis porta auctor vitae leo.Donec mauris nibh, elementum a tincidunt nec, volutpat vitae enim. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque at purus quis massa vulputate mollis ut eu risus. Cras libero diam, pharetra quis ultrices facilisis, tincidunt id arcu. Praesent at volutpat quam. Phasellus quis malesuada sapien. Nullam eu leo quam, bibendum sagittis turpis. Vestibulum sagittis accumsan enim ut tristique. Donec eu enim nisi. Curabitur mauris orci, fringilla et suscipit placerat, ullamcorper vel turpis. Mauris est arcu, gravida ac accumsan ac, tincidunt vel nibh. Mauris pulvinar massa tempor dui hendrerit vel elementum diam pulvinar. Sed felis leo, laoreet at laoreet nec, venenatis eu risus. Nunc a massa lacus. Vestibulum ut pellentesque sem. Donec consectetur, turpis consequat aliquam consectetur, leo nunc lobortis elit, at sagittis ipsum risus sed turpis. Vivamus at sollicitudin purus. Nulla facilisi.Morbi congue dignissim nibh ut commodo. Integer sed urna fermentum neque hendrerit aliquam ac et tortor. Phasellus massa sem, egestas sed tincidunt id, malesuada vel odio. Nulla arcu nisl, elementum at pretium interdum, pharetra at nulla. Vestibulum lectus ante, ultricies ac lacinia euismod, adipiscing at metus. Aliquam velit orci, posuere a dapibus dapibus, consectetur vitae est. Pellentesque suscipit pulvinar varius. Morbi sagittis blandit nulla, eu posuere arcu blandit eu. Nulla cursus nunc volutpat orci commodo aliquet. Quisque condimentum dui a mi facilisis tincidunt.Quisque ac nisi vitae ipsum condimentum luctus non quis erat. Pellentesque eget nunc sit amet ipsum pharetra vulputate ac in mi. Etiam consectetur nulla vitae risus pharetra a ornare ligula sagittis. Proin euismod mauris id lectus tincidunt luctus at sed ligula. Aenean porttitor hendrerit quam quis interdum. Suspendisse eu metus turpis, ut venenatis ipsum. Nulla ipsum orci, lacinia ac vestibulum ut, mattis quis eros. Pellentesque a velit et erat sodales ornare. Pellentesque pellentesque tortor eget magna facilisis accumsan. Praesent tincidunt posuere lacus sed sollicitudin. Praesent consectetur diam vel turpis elementum vehicula. Integer rutrum dignissim justo, ac dapibus quam fringilla non. Suspendisse porta elementum bibendum. Praesent at lorem at quam dignissim commodo. Etiam placerat euismod ipsum eu interdum. Aliquam in mi molestie justo varius venenatis eu aliquam quam. Integer feugiat, neque hendrerit egestas hendrerit, lectus ligula placerat enim, a faucibus ante ligula vitae mi. Praesent urna nunc, volutpat vitae scelerisque non, porta vel dolor. Aenean quam sem, dignissim at faucibus non, auctor sodales libero.Morbi justo elit, tempus ac cursus porta, eleifend nec odio. Ut nec quam velit. Duis elit nulla, placerat et rutrum quis, tempor non nisi. Quisque massa erat, pretium ut elementum sit amet, sodales vel metus. Phasellus sollicitudin sapien vel nisl faucibus ornare. Duis ut dolor arcu, vel semper felis. In quis orci mauris, id porttitor diam. Fusce ornare, dolor in posuere blandit, neque est mollis lacus, eu venenatis nisi orci vel diam. Etiam ornare sapien eu sapien tristique vitae consequat arcu consequat. Fusce a felis at dui sollicitudin pellentesque sit amet vel mi. Curabitur congue porttitor orci, eu auctor nibh mollis at. Nulla facilisi. Nam aliquet ullamcorper metus ac vulputate. Aenean feugiat purus vitae dui congue egestas. Curabitur sollicitudin leo eget nibh facilisis fermentum fermentum non nisi. Ut at libero eget est bibendum laoreet non eu ante. Proin pellentesque quam ut augue condimentum id suscipit risus tristique. Nunc laoreet risus elit.Suspendisse vel ante elit, eu feugiat diam. Etiam ultrices condimentum tempor. Donec eget porta lacus. Nunc in velit lacus, ut ultricies felis. Nulla id cursus metus. Praesent suscipit, orci a facilisis imperdiet, eros lectus eleifend nibh, sit amet auctor magna arcu ac enim. In malesuada volutpat felis a posuere. Aliquam mattis ipsum ut quam semper aliquet. Maecenas convallis consequat magna, blandit viverra nulla consectetur sit amet. Pellentesque id velit nec risus iaculis imperdiet ac accumsan metus. Suspendisse et sem massa. Vestibulum ac enim hendrerit est tincidunt ullamcorper.Curabitur placerat, libero id molestie vehicula, neque tortor vulputate sapien, ut blandit orci metus et nibh. Cras convallis justo a nibh iaculis ut convallis neque vestibulum. Duis gravida purus metus, nec viverra leo. In tincidunt elit sit amet orci lacinia non eleifend orci tincidunt. Praesent est metus, molestie a ullamcorper ultricies, cursus imperdiet augue. Sed vitae quam eu dui pellentesque dignissim. Curabitur convallis volutpat accumsan. Donec egestas malesuada est, vitae faucibus sem fermentum id. Donec porttitor rutrum vehicula. Nulla placerat risus in est egestas nec ultrices ligula auctor. Quisque erat lorem, ullamcorper vitae interdum sit amet, laoreet vel elit. Proin eu porta neque. Pellentesque eleifend, ipsum a sollicitudin ultrices, ligula nisl aliquet dui, eget fermentum quam mi vel.";
public static String get(int len) {
+ if (len > LOREM.length()) {
+ StringBuilder builder = new StringBuilder();
+ while (len > LOREM.length()) {
+ builder.append(LOREM);
+ len -= LOREM.length();
+ }
+ builder.append(LOREM.substring(0, len));
+ return builder.toString();
+ }
return LOREM.substring(0, len);
}
diff --git a/uitest/test.xml b/uitest/test.xml
index 326117fb8f..3bfeb66c05 100644
--- a/uitest/test.xml
+++ b/uitest/test.xml
@@ -83,7 +83,7 @@
<fail unless="com.vaadin.testbench.deployment.url" message="The 'com.vaadin.testbench.deployment.url' property must be defined." />
</target>
- <target name="run-tb2-tests" depends="check-parameters,compile-tests" unless="tests.tb2.skip">
+ <target name="run-tb2-tests" depends="check-parameters,compile-tests">
<fileset dir="${test-output-dir}" id="tests-fileset">
<include name="**/**.java" />
</fileset>
@@ -174,7 +174,7 @@
<target name="run-and-clean-up" depends="check-parameters,remove-error-screens,run-tb2-tests" />
<!-- Runs all TestBench 2 tests -->
- <target name="tb2-tests">
+ <target name="tb2-tests" unless="tests.tb2.skip">
<property name="test-output-dir" location="${test.xml.dir}/result/testbench-junit-classes" />
<property name="retries" value="2" />