- Based on TB4 Parallel testing.
- Browser setup no longer uses static capabilities.
- Some code cleanup here and there.
Change-Id: I5c419316cd36f4f5041eaa8da8fda3d8b46596c4
<modules>
<module organisation="com.vaadin" name="vaadin-testbench"
resolver="vaadin-addons" />
+ <module organisation="com.vaadin" name="vaadin-testbench-core"
+ resolver="vaadin-addons" />
+ <module organisation="com.vaadin" name="vaadin-testbench-api"
+ resolver="vaadin-addons" />
<module organisation="com.vaadin" name="vaadin-buildhelpers"
resolver="build-temp" />
<module organisation="com.vaadin" name="vaadin-shared"
<!-- Base url where the testable application is deployed -->
<property name="deployment.url" value="http://${test.integration.server}:8080" />
+ <!-- TestBench license parameter -->
+ <property name="vaadin.testbench.developer.license" value="" />
<property name="report.dir" location="${integration_test.dir}/result/reports-integration" />
<jvmarg value="-Dserver-name=${server-name}" />
<jvmarg value="-Djava.awt.headless=true" />
<jvmarg value="-Ddemo.war=${demo.war}" />
+ <jvmarg value="-Dvaadin.testbench.developer.license=${vaadin.testbench.developer.license}" />
<test name="${junit.test.suite}" todir="${server.report.dir}" />
</junit>
</target>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ivy-module [
- <!ENTITY jetty.version "8.1.9.v20130131">
+ <!ENTITY jetty.version "8.1.12.v20130726">
]>
<ivy-module version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<dependency org="javax.validation" name="validation-api"
rev="1.0.0.GA" conf="build,ide -> default,sources" />
<dependency org="org.hibernate" name="hibernate-validator"
- rev="4.2.0.Final" conf="build,ide -> default" />
+ rev="4.2.0.Final" conf="build,ide -> default" />
<!-- Google App Engine -->
<dependency org="com.google.appengine" name="appengine-api-1.0-sdk"
rev="1.2.1" conf="build-provided,ide -> default" />
</dependency>
<!-- jetty-servlets needed by ProxyTest, but not by jetty-runner -->
<dependency org="org.eclipse.jetty" name="jetty-servlets"
- rev="&jetty.version;" conf="ide, build-provided, jetty-run->default" />
+ rev="&jetty.version;" conf="ide, build-provided, jetty-run->default">
+ <exclude org="org.eclipse.jetty.orbit"></exclude>
+ </dependency>
<dependency org="org.eclipse.jetty" name="jetty-websocket"
- rev="&jetty.version;" conf="ide, jetty-run->default" />
+ rev="&jetty.version;" conf="ide, jetty-run->default">
+ <exclude org="org.eclipse.jetty.orbit"></exclude>
+ </dependency>
<dependency org="org.eclipse.jetty" name="jetty-webapp"
- rev="&jetty.version;" conf="ide, build-provided, jetty-run->default" />
+ rev="&jetty.version;" conf="ide, build-provided, jetty-run->default">
+ <exclude org="org.eclipse.jetty.orbit"></exclude>
+ </dependency>
<dependency org="org.mortbay.jetty" name="jetty-runner"
rev="&jetty.version;" conf="ide, jetty-run->default">
<exclude org="org.eclipse.jetty.orbit"></exclude>
<dependency org="junit" name="junit" rev="4.11"
conf="build,ide -> default" />
- <dependency org="org.hamcrest" name="hamcrest-all" rev="1.3"
- conf="build,ide->default" />
+ <dependency org="org.hamcrest" name="hamcrest-all"
+ rev="1.3" conf="build,ide->default" />
<dependency org="com.jcraft" name="jsch" rev="0.1.50"
conf="ide, build->default" />
<dependency org="commons-codec" name="commons-codec"
rev="1.5" conf="build,ide->default" />
- <dependency org="commons-io" name="commons-io" rev="${commons-io.version}"
- conf="build,ide->default" />
+ <dependency org="commons-io" name="commons-io"
+ rev="${commons-io.version}" conf="build,ide->default" />
<!-- Mainly for SQLContainer tests -->
<dependency org="org.hsqldb" name="hsqldb" rev="2.2.6"
conf="build,ide -> default" />
<dependency org="com.vaadin" name="vaadin-testbench"
- rev="4.0.0.alpha1" conf="build-provided,ide -> default" />
+ rev="4.0.2" conf="build-provided,ide -> default" />
<!-- This should be removed once tests have been updated to use lang3 -->
<dependency org="commons-lang" name="commons-lang"
rev="2.6" conf="build,ide -> default" />
- <dependency org="com.vaadin" name="vaadin-sass-compiler"
+ <dependency org="com.vaadin" name="vaadin-sass-compiler"
rev="${vaadin.sass.version}" conf="compile-theme->default" />
<dependency org="com.vaadin" name="vaadin-buildhelpers"
- rev="${vaadin.version}" conf="compile-theme->build" />
+ rev="${vaadin.version}" conf="compile-theme->build" />
- <dependency org="org.eclipse.jgit" name="org.eclipse.jgit"
- rev="3.5.1.201410131835-r" conf="ide,build->default" />
+ <dependency org="org.eclipse.jgit" name="org.eclipse.jgit"
+ rev="3.5.1.201410131835-r" conf="ide,build->default">
+ <exclude org="org.apache.httpcomponents"></exclude>
+ </dependency>
</dependencies>
import com.vaadin.testbench.By;
import com.vaadin.testbench.TestBenchElement;
+import com.vaadin.testbench.elementsbase.AbstractElement;
+import com.vaadin.testbench.elementsbase.ServerClass;
/**
* TestBench Element API for Grid
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import java.util.HashMap;
-import java.util.Map;
-
import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class VerifyBrowserVersionTest extends MultiBrowserTest {
- private Map<DesiredCapabilities, String> expectedUserAgent = new HashMap<DesiredCapabilities, String>();
-
- {
- expectedUserAgent.put(Browser.FIREFOX.getDesiredCapabilities(), "Firefox/");
- expectedUserAgent.put(Browser.IE8.getDesiredCapabilities(), "MSIE ");
- expectedUserAgent.put(Browser.IE9.getDesiredCapabilities(), "MSIE ");
- expectedUserAgent.put(Browser.IE10.getDesiredCapabilities(), "MSIE ");
- expectedUserAgent.put(Browser.IE11.getDesiredCapabilities(), "Trident/7.0; rv:");
- expectedUserAgent.put(Browser.CHROME.getDesiredCapabilities(), "Chrome/");
- expectedUserAgent.put(Browser.PHANTOMJS.getDesiredCapabilities(), "PhantomJS/");
- }
-
@Test
public void verifyUserAgent() {
openTestURL();
DesiredCapabilities desiredCapabilities = getDesiredCapabilities();
assertThat(vaadinElementById("userAgent").getText(),
- containsString(expectedUserAgent.get(desiredCapabilities)
- + desiredCapabilities.getVersion()));
+ containsString(getExpectedUserAgentString(desiredCapabilities)
+ + desiredCapabilities.getVersion()));
assertThat(vaadinElementById("touchDevice").getText(),
- is("Touch device? No"));
+ is("Touch device? No"));
+ }
+
+ private String getExpectedUserAgentString(DesiredCapabilities dCap) {
+ if (BrowserUtil.isIE(dCap)) {
+ if (!BrowserUtil.isIE(dCap, 11)) {
+ // IE8-10
+ return "MSIE ";
+ } else {
+ // IE11
+ return "Trident/7.0; rv:";
+ }
+ } else if (BrowserUtil.isFirefox(dCap)) {
+ return "Firefox/";
+ } else if (BrowserUtil.isChrome(dCap)) {
+ return "Chrome/";
+ } else if (BrowserUtil.isPhantomJS(dCap)) {
+ return "PhantomJS/";
+ }
+ throw new UnsupportedOperationException(
+ "Test is being run on unknown browser.");
}
}
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class ActionsOnInvisibleComponentsTest extends MultiBrowserTest {
// This method should be removed once #12785 is fixed
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsers = super.getBrowsersToTest();
- // Send Keys does not function correctly on these browsers.
- browsers.remove(Browser.CHROME.getDesiredCapabilities());
- browsers.remove(Browser.FIREFOX.getDesiredCapabilities());
- browsers.remove(Browser.IE8.getDesiredCapabilities());
- return browsers;
+ return getBrowserCapabilities(Browser.IE9, Browser.IE10, Browser.IE11,
+ Browser.PHANTOMJS);
}
@Test
+++ /dev/null
-/*
- * Copyright 2000-2014 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.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-@Inherited
-public @interface TestCategory {
-
- String value();
-
-}
*/
package com.vaadin.tests.applicationservlet;
-import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class NoApplicationClassTest extends MultiBrowserTest {
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- return Collections.singletonList(Browser.CHROME
- .getDesiredCapabilities());
+ return getBrowserCapabilities(Browser.CHROME);
}
@Override
import org.openqa.selenium.WebElement;
import com.vaadin.testbench.By;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
*/
package com.vaadin.tests.components;
-import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class SaneErrorsTest extends MultiBrowserTest {
*/
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- return Collections.singletonList(DesiredCapabilities.firefox());
+ return getBrowserCapabilities(Browser.FIREFOX);
}
@Test
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebElement;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
import com.vaadin.testbench.By;
import com.vaadin.testbench.commands.TestBenchElementCommands;
import com.vaadin.testbench.elements.ComboBoxElement;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
*/
package com.vaadin.tests.components.combobox;
-import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- return Collections.singletonList(Browser.IE8.getDesiredCapabilities());
+ return getBrowserCapabilities(Browser.IE8);
}
}
package com.vaadin.tests.components.datefield;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsers = new ArrayList<DesiredCapabilities>();
- for (DesiredCapabilities browser : super.getBrowsersToTest()) {
- if (BrowserUtil.isIE(browser)) {
- browsers.add(browser);
- }
- }
- return browsers;
+ return getIEBrowsersOnly();
}
@Test
import org.junit.Test;
import org.openqa.selenium.By;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class LocaleChangeTest extends MultiBrowserTest {
import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.DateFieldElement;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
new Actions(driver).keyUp(Keys.SHIFT).perform();
// TODO: remove this once #14406 has been fixed
- if (!getBrowsersExcludingIE().contains(getDesiredCapabilities())
- && !Browser.IE8.getDesiredCapabilities().equals(
- getDesiredCapabilities())) {
+ if (BrowserUtil.isIE(getDesiredCapabilities())
+ && !BrowserUtil.isIE8(getDesiredCapabilities())) {
popup.findElement(
By.className("v-datefield-calendarpanel-prevmonth"))
.findElement(By.tagName("button")).click();
.size());
// TODO: remove this check once #14406 has been fixed -- clicking the
// button instead of navigating with arrow keys steals the focus
- if (getBrowsersExcludingIE().contains(getDesiredCapabilities())
- || Browser.IE8.getDesiredCapabilities().equals(
- getDesiredCapabilities())) {
+ if (!BrowserUtil.isIE(getDesiredCapabilities())
+ || BrowserUtil.isIE8(getDesiredCapabilities())) {
assertEquals(
"unexpected focus",
"16",
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import org.junit.Before;
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.EmbeddedElement;
import com.vaadin.testbench.elements.ImageElement;
-import com.vaadin.tests.tb3.MultiBrowserTest;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.SingleBrowserTest;
import com.vaadin.ui.Embedded;
+import com.vaadin.ui.Image;
/**
* Tests that {@link Embedded} uses correct theme when the theme is set with
public List<DesiredCapabilities> getBrowsersToTest() {
// Seems like stylesheet onload is not fired on PhantomJS
// https://github.com/ariya/phantomjs/issues/12332
- return Arrays.asList(MultiBrowserTest.Browser.FIREFOX
+ return Collections.singletonList(Browser.FIREFOX
.getDesiredCapabilities());
}
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.BrowserUtil;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@SuppressWarnings("boxing")
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.LabelElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.GridElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.GridElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
import com.vaadin.testbench.elements.LabelElement;
import com.vaadin.testbench.elements.NativeButtonElement;
import com.vaadin.testbench.elements.NativeSelectElement;
-import com.vaadin.testbench.elements.ServerClass;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.elementsbase.ServerClass;
+import com.vaadin.testbench.parallel.BrowserUtil;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
import com.vaadin.tests.widgetset.client.grid.GridClientColumnRendererConnector.Renderers;
import com.vaadin.tests.widgetset.server.grid.GridClientColumnRenderers;
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.GridElement.GridCellElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
*/
package com.vaadin.tests.components.grid;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
@TestCategory("grid")
public class GridColumnAutoWidthClientTest extends
*/
package com.vaadin.tests.components.grid;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
@TestCategory("grid")
public class GridColumnAutoWidthServerTest extends
import com.vaadin.testbench.elements.GridElement.GridCellElement;
import com.vaadin.testbench.elements.NotificationElement;
import com.vaadin.testbench.elements.PasswordFieldElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.GridElement.GridCellElement;
import com.vaadin.testbench.elements.NotificationElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.GridElement.GridCellElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.SingleBrowserTest;
@TestCategory("grid")
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.NotificationElement;
import com.vaadin.testbench.elements.TabSheetElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.GridElement.GridCellElement;
import com.vaadin.testbench.elements.NotificationElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.SingleBrowserTest;
@TestCategory("grid")
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.NotificationElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
*/
package com.vaadin.tests.components.grid;
-import com.vaadin.testbench.By;
-import com.vaadin.testbench.elements.ButtonElement;
-import com.vaadin.testbench.elements.GridElement;
-import com.vaadin.testbench.elements.GridElement.GridCellElement;
-import com.vaadin.testbench.elements.NotificationElement;
-import com.vaadin.tests.annotations.TestCategory;
-import com.vaadin.tests.tb3.MultiBrowserTest;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedCondition;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
+import com.vaadin.testbench.By;
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.GridElement;
+import com.vaadin.testbench.elements.GridElement.GridCellElement;
+import com.vaadin.testbench.elements.NotificationElement;
+import com.vaadin.testbench.parallel.TestCategory;
+import com.vaadin.tests.tb3.MultiBrowserTest;
/**
* TB tests for the various builtin widget-based renderers.
waitUntilmageSrcEndsWith(image, "window/img/maximize.png");
}
- private void waitUntilmageSrcEndsWith(final WebElement image, final String expectedText) {
+ private void waitUntilmageSrcEndsWith(final WebElement image,
+ final String expectedText) {
waitUntil(new ExpectedCondition<Boolean>() {
@Override
@Override
public String toString() {
// Timed out after 10 seconds waiting for ...
- return String.format("image source to update. Supposed to end with '%s' (was: '%s').",
- expectedText, image.getAttribute("src"));
+ return String
+ .format("image source to update. Supposed to end with '%s' (was: '%s').",
+ expectedText, image.getAttribute("src"));
}
});
}
import org.openqa.selenium.interactions.Actions;
import com.vaadin.testbench.TestBenchElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("escalator")
import com.vaadin.testbench.elements.GridElement;
/**
- * Variant of GridBasicFeaturesTest to be used with GridBasicClientFeatures.
+ * GridBasicClientFeatures.
*
* @since
* @author Vaadin Ltd
if (composite) {
// Composite requires the basic client features widget for subparts
return ((TestBenchElement) findElement(By
- .vaadin("//TestWidgetComponent")))
- .wrap(GridElement.class);
+ .vaadin("//TestWidgetComponent"))).wrap(GridElement.class);
} else {
return super.getGridElement();
}
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
-import org.openqa.selenium.remote.DesiredCapabilities;
import com.vaadin.testbench.TestBenchElement;
import com.vaadin.testbench.elements.GridElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
public abstract class GridBasicFeaturesTest extends MultiBrowserTest {
@Override
- protected DesiredCapabilities getDesiredCapabilities() {
- DesiredCapabilities dCap = super.getDesiredCapabilities();
- if (BrowserUtil.isIE(dCap)) {
- dCap.setCapability("requireWindowFocus", true);
- }
- return super.getDesiredCapabilities();
+ protected boolean requireWindowFocusForIE() {
+ return true;
}
@Override
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
import org.junit.Test;
import org.openqa.selenium.By;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@SuppressWarnings("all")
import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.NotificationElement;
-import com.vaadin.testbench.elements.ServerClass;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.elementsbase.ServerClass;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
import org.junit.Test;
import com.vaadin.testbench.elements.GridElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@SuppressWarnings("all")
import org.junit.Test;
import com.vaadin.testbench.elements.ButtonElement;
-import com.vaadin.tests.annotations.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
-@TestCategory("grid")
public class GridSortingIndicatorsTest extends MultiBrowserTest {
@Test
compareScreen("reversedSort");
}
-
}
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsersToTest = super.getBrowsersToTest();
- /* FireFox and PhantomJS don't know how to press Shift key... */
- browsersToTest.remove(Browser.FIREFOX.getDesiredCapabilities());
- browsersToTest.remove(Browser.PHANTOMJS.getDesiredCapabilities());
- return browsersToTest;
+ return super.getBrowsersSupportingShiftClick();
}
@Test
import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.GridElement.GridCellElement;
-import com.vaadin.tests.annotations.TestCategory;
import com.vaadin.tests.components.grid.basicfeatures.GridBasicFeatures;
import com.vaadin.tests.components.grid.basicfeatures.GridBasicFeaturesTest;
-@TestCategory("grid")
public class GridSortingTest extends GridBasicFeaturesTest {
private static class SortInfo {
import com.vaadin.testbench.elements.CheckBoxElement;
import com.vaadin.testbench.elements.CssLayoutElement;
import com.vaadin.testbench.elements.GridLayoutElement;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class GridLayoutExtraSpacingTest extends MultiBrowserTest {
import com.vaadin.tests.tb3.MultiBrowserTest;
-/**
- *
- * @since
- * @author Vaadin Ltd
- */
public class JavaScriptPreloadingTest extends MultiBrowserTest {
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.tests.tb3.MultiBrowserTest#getBrowsersToTest()
- */
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsers = super.getBrowsersToTest();
- browsers.remove(Browser.PHANTOMJS.getDesiredCapabilities());
- return browsers;
+ return getBrowsersExcludingPhantomJS();
}
@Test
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- // Tooltip tests work unreliably on IE due to an issue with the
- // WebDriver (see #13854)
- List<DesiredCapabilities> browsers = super.getBrowsersToTest();
- browsers.remove(Browser.IE8.getDesiredCapabilities());
- return browsers;
+ // Tooltip test is unreliable on IE8
+ return getBrowsersExcludingIE8();
};
@Test
WebElement tooltip = getTooltipElement();
assertThat(tooltip.getLocation().x, is(lessThan(menuLocation.onPage().x
- tooltip.getSize().getWidth())));
-
}
}
*/
package com.vaadin.tests.components.nativeselect;
-import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
-/**
- *
- * @since
- * @author Vaadin Ltd
- */
public class NativeSelectsAndChromeKeyboardNavigationTest extends
MultiBrowserTest {
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.tests.tb3.MultiBrowserTest#getBrowsersToTest()
- */
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- return Collections.singletonList(Browser.CHROME
- .getDesiredCapabilities());
+ return getBrowserCapabilities(Browser.CHROME);
}
@Test
}
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.tests.tb3.AbstractTB3Test#getUIClass()
- */
@Override
protected Class<?> getUIClass() {
return NativeSelects.class;
}
- /**
- * @since
- * @param string
- */
private void menuSub(String string) {
getDriver().findElement(By.xpath("//span[text() = '" + string + "']"))
.click();
new Actions(getDriver()).moveByOffset(100, 0).build().perform();
}
- /**
- * @since
- * @param string
- */
private void menu(String string) {
getDriver().findElement(By.xpath("//span[text() = '" + string + "']"))
.click();
import org.openqa.selenium.interactions.Actions;
import com.vaadin.testbench.elements.NativeSelectElement;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class NativeSelectsFocusAndBlurListenerTests extends MultiBrowserTest {
/**
* Unit test class for Notification ARIA (Accessible Rich Internet Applications)
* roles.
- *
+ *
* @since 7.2
* @author Vaadin Ltd
*/
/**
* Checks if the ARIA roles are correctly applied to Notification.
- *
+ *
* @since 7.2
* @throws Exception
*/
Assert.assertTrue("Expected '- press ESC to close', found " + text,
text.equals("- press ESC to close"));
- try {
- notification.closeNotification();
- } catch (Exception e) {
- }
+ notification.close();
type.selectByText(StringToEnumConverter.enumToString(
NotificationRole.STATUS, null));
Assert.assertTrue("Expected attribute 'role' to equal 'status', found "
+ text, text.equals("status"));
- try {
- notification.closeNotification();
- } catch (Exception e) {
- }
+ notification.close();
prefix.clear();
postfix.clear();
import org.openqa.selenium.By;
import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class CaptionLeakTest extends MultiBrowserTest {
import org.openqa.selenium.remote.DesiredCapabilities;
import com.vaadin.testbench.By;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class VerticalLayoutFocusWithDOMChangesTest extends MultiBrowserTest {
Assert.assertEquals("Just a button", activeElement.getText());
DesiredCapabilities capabilities = getDesiredCapabilities();
- if (capabilities.equals(BrowserUtil.ie(8))
- || capabilities.equals(BrowserUtil.ie(9))) {
+ if (BrowserUtil.isIE8(capabilities)
+ || BrowserUtil.isIE(capabilities, 9)) {
// IE8 and IE9 insert cursor in the start of input instead of end.
Assert.assertEquals(incrementalText + initialText,
tf1.getAttribute("value"));
new Actions(getDriver()).sendKeys(secondText).build().perform();
DesiredCapabilities capabilities = getDesiredCapabilities();
- if (capabilities.equals(BrowserUtil.ie(8))
- || capabilities.equals(BrowserUtil.ie(9))) {
+ if (BrowserUtil.isIE8(capabilities)
+ || BrowserUtil.isIE(capabilities, 9)) {
// IE8 and IE9 insert cursor in the start of input instead of end.
Assert.assertEquals(secondText + firstText,
tf2.getAttribute("value"));
tf2.getAttribute("value"));
}
}
-
}
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.lessThan;
-import java.util.Collections;
import java.util.List;
import org.junit.Test;
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.PopupViewElement;
import com.vaadin.testbench.elements.VerticalLayoutElement;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- return Collections.singletonList(Browser.IE8.getDesiredCapabilities());
+ return getBrowserCapabilities(Browser.IE8);
}
}
package com.vaadin.tests.components.table;
import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import org.openqa.selenium.remote.DesiredCapabilities;
import com.vaadin.testbench.By;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class AddSelectionToRemovedRangeTest extends MultiBrowserTest {
@Override
- public List<DesiredCapabilities> getBrowsersToTest() {
- return Collections.unmodifiableList(Arrays.asList(Browser.CHROME
- .getDesiredCapabilities()));
+ protected boolean requireWindowFocusForIE() {
+ return true;
}
@Override
- protected DesiredCapabilities getDesiredCapabilities() {
- DesiredCapabilities cap = new DesiredCapabilities(
- super.getDesiredCapabilities());
- cap.setCapability("requireWindowFocus", true);
- return cap;
+ public List<DesiredCapabilities> getBrowsersToTest() {
+ return getBrowserCapabilities(Browser.CHROME);
}
@Test
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.lessThan;
-import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
* Test for context menu position and size.
- *
+ *
* @author Vaadin Ltd
*/
public class ContextMenuSizeTest extends MultiBrowserTest {
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsers = new ArrayList<DesiredCapabilities>(
- getAllBrowsers());
-
// context menu doesn't work in phantom JS and works weirdly with IE8
// and selenium.
- browsers.remove(Browser.PHANTOMJS.getDesiredCapabilities());
- browsers.remove(Browser.IE8.getDesiredCapabilities());
- return browsers;
+ return getBrowserCapabilities(Browser.IE9, Browser.IE10, Browser.IE11,
+ Browser.FIREFOX, Browser.CHROME);
}
@Override
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsers = super.getBrowsersToTest();
- // Shift + click doesn't select all rows correctly on these browsers
- browsers.remove(Browser.FIREFOX.getDesiredCapabilities());
- browsers.remove(Browser.PHANTOMJS.getDesiredCapabilities());
-
- return browsers;
+ return getBrowsersSupportingShiftClick();
}
@Override
public class DisabledSortingTableTest extends MultiBrowserTest {
+ Class<?> uiClass;
+
@Override
- protected void closeApplication() {
- // need to close manually to use the correct ui class.
- }
+ protected java.lang.Class<?> getUIClass() {
+ return uiClass;
+ };
@Test
public void sortingByEmptyArrayShouldClearSortingIndicator() {
- openTestURL(DisabledSortingTable.class);
+ uiClass = DisabledSortingTable.class;
+ openTestURL();
assertThatFirstCellHasText("0");
sortByEmptyArray();
assertThatFirstCellHasText("4");
-
- openTestURL(DisabledSortingTable.class, "closeApplication");
}
@Test
public void emptySortingClearsIndicatorAndResetsSortingWithSQLContainer() {
- openTestURL(DisabledSortingTableSqlContainer.class);
+ uiClass = DisabledSortingTableSqlContainer.class;
+ openTestURL();
assertThatFirstCellHasText("1");
sortByEmptyArray();
assertThatFirstCellHasText("1");
-
- openTestURL(DisabledSortingTableSqlContainer.class, "closeApplication");
}
private void sortFirstColumnAscending() {
@Override
public String toString() {
// Timed out after 10 seconds waiting for ...
- return String.format("header to get class name '%s'",
- className);
+ return String
+ .format("header to get class name '%s'", className);
}
});
}
import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.TableElement;
-import com.vaadin.tests.tb3.AbstractTB3Test.RunLocally;
import com.vaadin.tests.tb3.MultiBrowserTest;
-import com.vaadin.tests.tb3.MultiBrowserTest.Browser;
/**
* Test case creating and deleting table component in a loop, testing memory
* lead in Table component. This test should not be used in auto testing.
- *
+ *
* To test memory consuption. Run test in debug mode. Take memory snapshot in
* Profiler in browser before and after the loop. Compare memory consuption.
- *
+ *
* @since
* @author Vaadin Ltd
*/
-@RunLocally(Browser.CHROME)
public class MemoryLeakTableTest extends MultiBrowserTest {
/**
import static com.vaadin.tests.components.table.SelectAllRows.TOTAL_NUMBER_OF_ROWS;
import static org.junit.Assert.assertEquals;
-import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- // Pressing Shift modifier key does not work with Firefox and PhantomJS
- ArrayList<DesiredCapabilities> browsers = new ArrayList<DesiredCapabilities>(
- super.getBrowsersToTest());
- browsers.remove(Browser.FIREFOX.getDesiredCapabilities());
- browsers.remove(Browser.PHANTOMJS.getDesiredCapabilities());
- return browsers;
+ return getBrowsersSupportingShiftClick();
}
@Test
package com.vaadin.tests.components.table;
-import com.vaadin.testbench.elements.ButtonElement;
-import com.vaadin.testbench.elements.TableElement;
-import com.vaadin.tests.tb3.MultiBrowserTest;
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.TableElement;
+import com.vaadin.testbench.parallel.Browser;
+import com.vaadin.tests.tb3.MultiBrowserTest;
public class TableColumnResizeContentsWidthIE8Test extends MultiBrowserTest {
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsersToTest = new ArrayList<DesiredCapabilities>();
-
- browsersToTest.add(Browser.IE8.getDesiredCapabilities());
-
- return browsersToTest;
+ return getBrowserCapabilities(Browser.IE8);
}
@Override
*/
package com.vaadin.tests.components.table;
-import com.vaadin.testbench.elements.ButtonElement;
-import com.vaadin.testbench.elements.TableElement;
-import com.vaadin.tests.tb3.MultiBrowserTest;
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedCondition;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.TableElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
/**
* Tests that components within table cells get resized when their column gets
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsersToTest = super.getBrowsersToTest();
-
- // Can't get IE8 to hit the resizer, extracted IE8 to it's own test
- // class.
- browsersToTest.remove(Browser.IE8.getDesiredCapabilities());
-
- return browsersToTest;
+ return getBrowsersExcludingIE8();
}
@Test
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
-import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.openqa.selenium.support.ui.ExpectedCondition;
import com.vaadin.testbench.elements.TableElement;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
private WebElement wrapper;
-
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
// Sending PageDown has no effect on PhantomJS. On IE focus
// in Table is often lost, so default scrolling happens on PageDown.
- List<DesiredCapabilities> browsers = new ArrayList<DesiredCapabilities>(
- getBrowsersExcludingIE());
- browsers.remove(Browser.PHANTOMJS.getDesiredCapabilities());
- return browsers;
+ return getBrowserCapabilities(Browser.FIREFOX, Browser.CHROME);
}
@Override
}
private void sendKeyUntilEndIsReached(Keys key) {
- while(true) {
+ while (true) {
int lastVisibleRowNumber = getLastVisibleRowNumber();
sendKey(key);
@Test
public void navigatePageDown() {
- // Scroll to a point where you can reach the bottom with a couple of page downs.
+ // Scroll to a point where you can reach the bottom with a couple of
+ // page downs.
// Can't use v-table-body height because lower rows haven't been
// fetched yet.
testBenchElement(wrapper).scroll(
@Test
public void navigatePageUp() {
- // Scroll to a point where you can reach the top with a couple of page ups.
+ // Scroll to a point where you can reach the top with a couple of page
+ // ups.
testBenchElement(wrapper).scroll((int) (2.8 * pageHeight));
waitForScrollToFinish();
import com.vaadin.testbench.screenshot.ReferenceNameGenerator;
import com.vaadin.tests.tb3.MultiBrowserTest;
-/**
- *
- * @author Vaadin Ltd
- */
public class TableScrollAfterAddRowTest extends MultiBrowserTest {
@Before
@Test
public void testJumpToFirstRow() throws InterruptedException {
jumpToFifteenthRow();
+ sleep(300);
jumpToFirstRow();
assertEquals("0", getCurrentPageFirstItemIndex());
}
// Selenium has issues with drag-and-drop on IE8 making it impossible to
// drag a target as small as the table resizer. So we'll just have to
// ignore IE8 completely.
- List<DesiredCapabilities> browsers = super.getBrowsersToTest();
- browsers.remove(Browser.IE8.getDesiredCapabilities());
- return browsers;
+ return getBrowsersExcludingIE8();
}
}
import com.vaadin.testbench.By;
import com.vaadin.testbench.commands.TestBenchCommandExecutor;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class UnnecessaryScrollbarWhenZoomingTest extends MultiBrowserTest {
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsers = super.getBrowsersToTest();
// PhantomJS doesn't send Focus / Blur events when clicking or
// navigating with keyboard
- browsers.remove(Browser.PHANTOMJS.getDesiredCapabilities());
- return browsers;
+ return getBrowsersExcludingPhantomJS();
}
@Override
*/
package com.vaadin.tests.components.ui;
-import java.util.Arrays;
import java.util.List;
import org.junit.Assert;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class DynamicViewportEmptyTest extends MultiBrowserTest {
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- return Arrays.asList(Browser.CHROME.getDesiredCapabilities());
+ return getBrowserCapabilities(Browser.CHROME);
}
@Test
import org.openqa.selenium.remote.DesiredCapabilities;
import com.vaadin.testbench.elements.TextAreaElement;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class TextAreaEventPropagationModifierKeysTest extends MultiBrowserTest {
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsers = super.getBrowsersToTest();
- // Can't handle ctrl
- browsers.remove(Browser.IE8.getDesiredCapabilities());
- browsers.remove(Browser.FIREFOX.getDesiredCapabilities());
-
- // Can't handle shift or ctrl
- browsers.remove(Browser.IE9.getDesiredCapabilities());
- browsers.remove(Browser.IE10.getDesiredCapabilities());
- browsers.remove(Browser.IE11.getDesiredCapabilities());
- return browsers;
-
+ // IE8 and Firefox can't handle ctrl.
+ // IE9-11 has issues with shift and ctrl
+ return getBrowserCapabilities(Browser.CHROME, Browser.PHANTOMJS);
}
@Override
import org.junit.Test;
import org.openqa.selenium.By;
-import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebElement;
import com.vaadin.testbench.elements.ButtonElement;
notification.findElement(By.tagName("h1")).getText());
// attempt to close the notification
- try {
- notification.closeNotification();
- } catch (StaleElementReferenceException e) {
- }
+ notification.close();
WebElement ui = findElement(By.className("v-ui"));
testBenchElement(ui).scroll(1020);
assertEquals("Scrolled to 1020 px",
notification.findElement(By.tagName("h1")).getText());
- try {
- notification.closeNotification();
- } catch (StaleElementReferenceException e) {
- }
+ notification.close();
+
}
}
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
// PhantomJS fails to upload files for unknown reasons
- List<DesiredCapabilities> b = super.getBrowsersToTest();
- b.remove(Browser.PHANTOMJS.getDesiredCapabilities());
- return b;
+ return getBrowsersExcludingPhantomJS();
}
@Test
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.interactions.Actions;
+import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedCondition;
import com.vaadin.testbench.elements.CheckBoxElement;
import com.vaadin.testbench.elements.TextFieldElement;
import com.vaadin.testbench.elements.WindowElement;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
public void testOtherWithAll() {
attemptOtherShortcut();
// TODO: remove this check once #14902 has been fixed
- if (!Browser.IE8.getDesiredCapabilities().equals(
- getDesiredCapabilities())
- && !Browser.FIREFOX.getDesiredCapabilities().equals(
- getDesiredCapabilities())
- && !Browser.CHROME.getDesiredCapabilities().equals(
- getDesiredCapabilities())) {
+ DesiredCapabilities cap = getDesiredCapabilities();
+ if ((BrowserUtil.isIE(cap) && !BrowserUtil.isIE8(cap))
+ || BrowserUtil.isPhantomJS(cap)) {
ensureWindowClosed();
}
}
public void testCtrlWithAll() {
attemptCtrlShortcut();
// TODO: remove this check once #14902 has been fixed
- if (Browser.PHANTOMJS.getDesiredCapabilities().equals(
- getDesiredCapabilities())) {
+ if (BrowserUtil.isPhantomJS(getDesiredCapabilities())) {
ensureWindowClosed();
}
}
public void testShiftWithAll() {
attemptShiftShortcut();
// TODO: remove this check once #14902 has been fixed
- if (getBrowsersExcludingIE().contains(getDesiredCapabilities())
- || Browser.IE8.getDesiredCapabilities().equals(
- getDesiredCapabilities())) {
+ DesiredCapabilities capabilities = getDesiredCapabilities();
+ if (!BrowserUtil.isIE(capabilities) || BrowserUtil.isIE8(capabilities)) {
ensureWindowClosed();
}
}
*/
package com.vaadin.tests.components.window;
-import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
return SubWindows.class;
}
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.tests.tb3.MultiBrowserTest#getBrowsersToTest()
- */
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- ArrayList<DesiredCapabilities> list = new ArrayList<DesiredCapabilities>();
- list.add(BrowserUtil.ie(9));
- list.add(BrowserUtil.ie(10));
- list.add(BrowserUtil.ie(11));
- return list;
+ return getBrowserCapabilities(Browser.IE9, Browser.IE10, Browser.IE11);
}
@Test
import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities;
-import com.vaadin.tests.tb3.MultiBrowserTest;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.SingleBrowserTest;
public class WindowBGColorChameleonIE8Test extends SingleBrowserTest {
*/
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
-
- return Arrays.asList(MultiBrowserTest.Browser.IE8
- .getDesiredCapabilities());
+ return Arrays.asList(Browser.IE8.getDesiredCapabilities());
}
@Test
import java.awt.AWTException;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
// ignore this browser in testing
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsers = new ArrayList<DesiredCapabilities>(
- getAllBrowsers());
- browsers.remove(Browser.IE8.getDesiredCapabilities());
- return browsers;
+ return getBrowsersExcludingIE8();
}
}
\ No newline at end of file
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
public List<DesiredCapabilities> getBrowsersToTest() {
// Seems like stylesheet onload is not fired on PhantomJS
// https://github.com/ariya/phantomjs/issues/12332
- return super.getBrowsersExcludingPhantomJS();
+ return getBrowsersExcludingPhantomJS();
}
@Test
import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.GridElement.GridCellElement;
import com.vaadin.testbench.elements.GridElement.GridEditorElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("grid")
*/
package com.vaadin.tests.integration;
+import com.vaadin.testbench.parallel.TestNameSuffix;
import com.vaadin.tests.tb3.PrivateTB3Configuration;
-import com.vaadin.tests.tb3.TestNameSuffix;
/**
* Base class for integration tests. Integration tests use the
*/
package com.vaadin.tests.layouts;
-import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class IE8MeasuredSizeMemoryLeakTest extends MultiBrowserTest {
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- return Collections.singletonList(Browser.IE8.getDesiredCapabilities());
+ return getBrowserCapabilities(Browser.IE8);
}
}
import org.junit.Test;
import org.openqa.selenium.WebElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("push")
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedCondition;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.AbstractTB3Test;
import com.vaadin.tests.tb3.MultiBrowserTest;
import org.junit.Test;
import org.openqa.selenium.WebElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("push")
import org.junit.Assert;
import org.junit.Test;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("push")
import org.openqa.selenium.support.ui.ExpectedCondition;
import com.vaadin.testbench.elements.NativeSelectElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("push")
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
-
- List<DesiredCapabilities> browsers = super.getBrowsersToTest();
- browsers.remove(Browser.IE8.getDesiredCapabilities());
- browsers.remove(Browser.IE9.getDesiredCapabilities());
- browsers.remove(Browser.PHANTOMJS.getDesiredCapabilities());
-
- return browsers;
+ return getBrowsersSupportingWebSocket();
}
@Test
import org.openqa.selenium.WebElement;
import com.vaadin.testbench.elements.LabelElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.BrowserUtil;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("push")
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("push")
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("push")
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("push")
import java.util.List;
-import com.vaadin.tests.annotations.TestCategory;
import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
-import com.vaadin.tests.tb3.WebsocketTest;
@TestCategory("push")
public class RefreshCloseConnectionTest extends MultiBrowserTest {
package com.vaadin.tests.push;
+import org.junit.Test;
+
import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.TextAreaElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
-import org.junit.Test;
@TestCategory("push")
public abstract class SendMultibyteCharactersTest extends MultiBrowserTest {
import org.junit.Test;
import org.openqa.selenium.WebElement;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("push")
import org.junit.Assert;
import org.junit.Test;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest;
@TestCategory("push")
package com.vaadin.tests.tb3;
-import static com.vaadin.tests.tb3.TB3Runner.localWebDriverIsUsed;
-
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
import java.lang.reflect.Field;
import java.net.URL;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHttpEntityEnclosingRequest;
-import org.junit.After;
-import org.junit.Before;
import org.junit.Rule;
import org.junit.runner.RunWith;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
-import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
-import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.interactions.HasInputDevices;
import org.openqa.selenium.interactions.Keyboard;
import org.openqa.selenium.interactions.Mouse;
import org.openqa.selenium.interactions.internal.Coordinates;
import org.openqa.selenium.internal.Locatable;
-import org.openqa.selenium.remote.BrowserType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.HttpCommandExecutor;
import org.openqa.selenium.remote.RemoteWebDriver;
import com.thoughtworks.selenium.webdriven.WebDriverBackedSelenium;
import com.vaadin.server.LegacyApplication;
import com.vaadin.server.UIProvider;
-import com.vaadin.testbench.TestBench;
import com.vaadin.testbench.TestBenchDriverProxy;
import com.vaadin.testbench.TestBenchElement;
-import com.vaadin.testbench.TestBenchTestCase;
-import com.vaadin.testbench.elements.AbstractElement;
+import com.vaadin.testbench.annotations.BrowserConfiguration;
import com.vaadin.testbench.elements.CheckBoxElement;
import com.vaadin.testbench.elements.LabelElement;
import com.vaadin.testbench.elements.TableElement;
import com.vaadin.testbench.elements.VerticalLayoutElement;
+import com.vaadin.testbench.parallel.Browser;
+import com.vaadin.testbench.parallel.BrowserUtil;
+import com.vaadin.testbench.parallel.ParallelTest;
import com.vaadin.tests.components.AbstractTestUIWithLog;
-import com.vaadin.tests.tb3.MultiBrowserTest.Browser;
import com.vaadin.ui.UI;
import elemental.json.JsonObject;
*
* @author Vaadin Ltd
*/
-@RunWith(value = TB3Runner.class)
-public abstract class AbstractTB3Test extends TestBenchTestCase {
+@RunWith(TB3Runner.class)
+public abstract class AbstractTB3Test extends ParallelTest {
@Rule
public RetryOnFail retry = new RetryOnFail();
*/
private static final int BROWSER_TIMEOUT_IN_MS = 30 * 1000;
- private static final int BROWSER_INIT_ATTEMPTS = 5;
-
- private DesiredCapabilities desiredCapabilities;
-
private boolean debug = false;
private boolean push = false;
- {
- // Default browser to run on unless setDesiredCapabilities is called
- desiredCapabilities = Browser.FIREFOX.getDesiredCapabilities();
- }
static {
com.vaadin.testbench.Parameters
*
* @throws Exception
*/
- @Before
+ @Override
public void setup() throws Exception {
- setupDriver();
- }
-
- /**
- * Creates and configure the web driver to be used for the test. By default
- * creates a remote web driver which connects to {@link #getHubURL()} and
- * selects a browser based on {@link #getDesiredCapabilities()}.
- *
- * This method MUST call {@link #setDriver(WebDriver)} with the newly
- * generated driver.
- *
- * @throws Exception
- * If something goes wrong
- */
- protected void setupDriver() throws Exception {
- DesiredCapabilities capabilities;
-
- Browser runLocallyBrowser = getRunLocallyBrowser();
- if (runLocallyBrowser != null) {
- if (System.getenv().containsKey("TEAMCITY_VERSION")) {
- throw new RuntimeException(
- "@RunLocally is not supported for tests run on the build server");
- }
- capabilities = runLocallyBrowser.getDesiredCapabilities();
- setupLocalDriver(capabilities);
- } else {
- capabilities = getDesiredCapabilities();
-
- for (int i = 1; i <= BROWSER_INIT_ATTEMPTS; i++) {
- try {
- if (localWebDriverIsUsed()) {
- setupLocalDriver(capabilities);
- } else {
- setupRemoteDriver(capabilities);
- }
- break;
- } catch (Exception e) {
- System.err
- .println("Browser startup for " + capabilities
- + " failed on attempt " + i + ": "
- + e.getMessage());
- if (i == BROWSER_INIT_ATTEMPTS) {
- throw e;
- }
- }
- }
-
- }
+ super.setup();
int w = SCREENSHOT_WIDTH;
int h = SCREENSHOT_HEIGHT;
- if (BrowserUtil.isIE8(capabilities)) {
+ if (BrowserUtil.isIE8(super.getDesiredCapabilities())) {
// IE8 gets size wrong, who would have guessed...
w += 4;
h += 4;
}
- protected Browser getRunLocallyBrowser() {
- RunLocally runLocally = getClass().getAnnotation(RunLocally.class);
- if (runLocally != null) {
- return runLocally.value();
- } else {
- return null;
+ /**
+ * Method for closing the tested application.
+ */
+ protected void closeApplication() {
+ if (driver != null) {
+ try {
+ openTestURL("closeApplication");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
waitUntilRowIsVisible(table, rowToWait);
}
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.TYPE)
- public @interface RunLocally {
- public Browser value() default Browser.FIREFOX;
- }
-
- /**
- * 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(
- DesiredCapabilities desiredCapabilities);
-
- /**
- * Creates a {@link WebDriver} instance used for running the test remotely.
- *
- * @since
- * @param capabilities
- * the type of browser needed
- * @throws Exception
- */
- private void setupRemoteDriver(DesiredCapabilities capabilities)
- throws Exception {
- if (BrowserUtil.isIE(capabilities)) {
- if (requireWindowFocusForIE()) {
- capabilities.setCapability(
- InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true);
- }
- if (!usePersistentHoverForIE()) {
- capabilities.setCapability(
- InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING,
- false);
- }
- }
-
- WebDriver dr = TestBench.createDriver(new RemoteWebDriver(new URL(
- getHubURL()), capabilities));
- setDriver(dr);
- }
-
/**
* Opens the given test (defined by {@link #getTestUrl()}, optionally with
* debug window and/or push (depending on {@link #isDebug()} and
protected void openTestURL(Class<?> uiClass, String... parameters) {
String url = getTestURL(uiClass);
- if(parameters.length > 0) {
+ if (parameters.length > 0) {
url += "?" + Joiner.on("&").join(parameters);
}
/**
* Returns the full URL to be used for the test for the provided UI class.
- *
+ *
* @return the full URL for the test
*/
protected String getTestURL(Class<?> uiClass) {
- return StringUtils.strip(getBaseURL(), "/") + getDeploymentPath(uiClass);
+ return StringUtils.strip(getBaseURL(), "/")
+ + getDeploymentPath(uiClass);
}
- /**
- *
- * @return the location (URL) of the TB hub
- */
- protected String getHubURL() {
- return "http://" + getHubHostname() + ":4444/wd/hub";
- }
-
- /**
- * Used for building the hub URL to use for the test
- *
- * @return the host name of the TestBench hub
- */
- protected abstract String getHubHostname();
-
/**
* Used to determine what URL to initially open for the test
*
*
* @return The browsers to run the test on
*/
+ @BrowserConfiguration
public List<DesiredCapabilities> getBrowsersToTest() {
return Collections.singletonList(Browser.FIREFOX
.getDesiredCapabilities());
}
- /**
- * Used to determine which capabilities should be used when setting up a
- * {@link WebDriver} for this test. Typically set by a test runner or left
- * at its default (Firefox 24). If you want to run a test on a single
- * browser other than Firefox 24 you can override this method.
- *
- * @return the requested browser capabilities
- */
- protected DesiredCapabilities getDesiredCapabilities() {
- return desiredCapabilities;
- }
-
- /**
- * Sets the requested browser capabilities (typically browser name and
- * version)
- *
- * @param desiredCapabilities
- */
- public void setDesiredCapabilities(DesiredCapabilities desiredCapabilities) {
- // Make a copy as the desired capabilities can come from a shared,
- // static resource. This will cause all kinds of problems if some test
- // modifies the capabilities
- this.desiredCapabilities = new DesiredCapabilities(desiredCapabilities);
- }
-
- /**
- * Shuts down the driver after the test has been completed
- *
- * @throws Exception
- */
- @After
- public void tearDown() throws Exception {
- if (driver != null) {
- try {
- closeApplication();
- } catch (Exception e) {
- e.printStackTrace();
- }
- driver.quit();
- }
- driver = null;
- }
-
- protected void closeApplication() {
- openTestURL("closeApplication");
- }
-
/**
* Finds an element based on the part of a TB2 style locator following the
* :: (e.g. vaadin=runLabelModes::PID_Scheckboxaction-Enabled/domChild[0] ->
}
}
- /**
- * Provides helper method for selecting the browser to run on
- *
- * @author Vaadin Ltd
- */
- public static class BrowserUtil {
- /**
- * Gets the capabilities for Safari of the given version
- *
- * @param version
- * the major version
- * @return an object describing the capabilities required for running a
- * test on the given Safari version
- */
- public static DesiredCapabilities safari(int version) {
- DesiredCapabilities c = DesiredCapabilities.safari();
- c.setPlatform(Platform.MAC);
- c.setVersion("" + version);
- return c;
- }
-
- /**
- * Gets the capabilities for Chrome of the given version
- *
- * @param version
- * the major version
- * @return an object describing the capabilities required for running a
- * test on the given Chrome version
- */
- public static DesiredCapabilities chrome(int version) {
- DesiredCapabilities c = DesiredCapabilities.chrome();
- c.setVersion("" + version);
- c.setPlatform(Platform.VISTA);
- return c;
- }
-
- /**
- * Gets the capabilities for Opera of the given version
- *
- * @param version
- * the major version
- * @return an object describing the capabilities required for running a
- * test on the given Opera version
- */
- public static DesiredCapabilities opera(int version) {
- DesiredCapabilities c = DesiredCapabilities.opera();
- c.setVersion("" + version);
- c.setPlatform(Platform.XP);
- return c;
- }
-
- /**
- * Gets the capabilities for Firefox of the given version
- *
- * @param version
- * the major version
- * @return an object describing the capabilities required for running a
- * test on the given Firefox version
- */
- public static DesiredCapabilities firefox(int version) {
- DesiredCapabilities c = DesiredCapabilities.firefox();
- c.setVersion("" + version);
- c.setPlatform(Platform.XP);
- return c;
- }
-
- /**
- * Gets the capabilities for Internet Explorer of the given version
- *
- * @param version
- * the major version
- * @return an object describing the capabilities required for running a
- * test on the given Internet Explorer version
- */
- public static DesiredCapabilities ie(int version) {
- DesiredCapabilities c = DesiredCapabilities.internetExplorer();
- c.setVersion("" + version);
- c.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION,
- true);
- return c;
- }
-
- /**
- * Gets the capabilities for PhantomJS of the given version
- *
- * @param version
- * the major version
- * @return an object describing the capabilities required for running a
- * test on the given PhantomJS version
- */
- public static DesiredCapabilities phantomJS(int version) {
- DesiredCapabilities c = DesiredCapabilities.phantomjs();
- c.setPlatform(Platform.LINUX);
- c.setVersion("" + version);
- return c;
- }
-
- /**
- * Checks if the given capabilities refer to Internet Explorer 8
- *
- * @param capabilities
- * @param version
- * @return true if the capabilities refer to IE8, false otherwise
- */
- public static boolean isIE8(DesiredCapabilities capabilities) {
- return isIE(8, capabilities);
- }
-
- /**
- * Checks if the given capabilities refer to Internet Explorer of the
- * given version
- *
- * @param capabilities
- * @param version
- * @return true if the capabilities refer to IE of the given version,
- * false otherwise
- */
- public static boolean isIE(int version, DesiredCapabilities capabilities) {
- return isIE(capabilities)
- && ("" + version).equals(capabilities.getVersion());
- }
-
- /**
- * @param capabilities
- * The capabilities to check
- * @return true if the capabilities refer to Internet Explorer, false
- * otherwise
- */
- public static boolean isIE(DesiredCapabilities capabilities) {
- return BrowserType.IE.equals(capabilities.getBrowserName());
- }
-
- /**
- * @param capabilities
- * The capabilities to check
- * @return true if the capabilities refer to Chrome, false otherwise
- */
- public static boolean isChrome(DesiredCapabilities capabilities) {
- return BrowserType.CHROME.equals(capabilities.getBrowserName());
- }
-
- /**
- * @param capabilities
- * The capabilities to check
- * @return true if the capabilities refer to Opera, false otherwise
- */
- public static boolean isOpera(DesiredCapabilities capabilities) {
- return BrowserType.OPERA.equals(capabilities.getBrowserName());
- }
-
- /**
- * @param capabilities
- * The capabilities to check
- * @return true if the capabilities refer to Safari, false otherwise
- */
- public static boolean isSafari(DesiredCapabilities capabilities) {
- return BrowserType.SAFARI.equals(capabilities.getBrowserName());
- }
-
- /**
- * @param capabilities
- * The capabilities to check
- * @return true if the capabilities refer to Firefox, false otherwise
- */
- public static boolean isFirefox(DesiredCapabilities capabilities) {
- return BrowserType.FIREFOX.equals(capabilities.getBrowserName());
- }
-
- /**
- * @param capabilities
- * The capabilities to check
- * @return true if the capabilities refer to PhantomJS, false otherwise
- */
- public static boolean isPhantomJS(DesiredCapabilities capabilities) {
- return BrowserType.PHANTOMJS.equals(capabilities.getBrowserName());
- }
-
- /**
- * Returns a human readable identifier of the given browser. Used for
- * test naming and screenshots
- *
- * @param capabilities
- * @return a human readable string describing the capabilities
- */
- public static String getBrowserIdentifier(
- DesiredCapabilities capabilities) {
- if (isIE(capabilities)) {
- return "InternetExplorer";
- } else if (isFirefox(capabilities)) {
- return "Firefox";
- } else if (isChrome(capabilities)) {
- return "Chrome";
- } else if (isSafari(capabilities)) {
- return "Safari";
- } else if (isOpera(capabilities)) {
- return "Opera";
- } else if (isPhantomJS(capabilities)) {
- return "PhantomJS";
- }
-
- return capabilities.getBrowserName();
- }
-
- /**
- * Returns a human readable identifier of the platform described by the
- * given capabilities. Used mainly for screenshots
- *
- * @param capabilities
- * @return a human readable string describing the platform
- */
- public static String getPlatform(DesiredCapabilities capabilities) {
- if (capabilities.getPlatform() == Platform.WIN8
- || capabilities.getPlatform() == Platform.WINDOWS
- || capabilities.getPlatform() == Platform.VISTA
- || capabilities.getPlatform() == Platform.XP) {
- return "Windows";
- } else if (capabilities.getPlatform() == Platform.MAC) {
- return "Mac";
- }
- return capabilities.getPlatform().toString();
- }
-
- /**
- * Returns a string which uniquely (enough) identifies this browser.
- * Used mainly in screenshot names.
- *
- * @param capabilities
- *
- * @return a unique string for each browser
- */
- public static String getUniqueIdentifier(
- DesiredCapabilities capabilities) {
- return getUniqueIdentifier(getPlatform(capabilities),
- getBrowserIdentifier(capabilities),
- capabilities.getVersion());
- }
-
- /**
- * Returns a string which uniquely (enough) identifies this browser.
- * Used mainly in screenshot names.
- *
- * @param capabilities
- *
- * @return a unique string for each browser
- */
- public static String getUniqueIdentifier(
- DesiredCapabilities capabilities, String versionOverride) {
- return getUniqueIdentifier(getPlatform(capabilities),
- getBrowserIdentifier(capabilities), versionOverride);
- }
-
- private static String getUniqueIdentifier(String platform,
- String browser, String version) {
- return platform + "_" + browser + "_" + version;
- }
-
- }
-
/**
* Called by the test runner whenever there is an exception in the test that
* will cause termination of the test
protected void click(CheckBoxElement checkbox) {
checkbox.findElement(By.xpath("input")).click();
}
-
- @Override
- public boolean isElementPresent(Class<? extends AbstractElement> clazz) {
- // This is a bug in TB4 as isElementPresent(..) should just return true
- // or false but can also throw exceptions. The problem is possibly if
- // this is run when the Vaadin app is not initialized yet
- try {
- return super.isElementPresent(clazz);
- } catch (NoSuchElementException e) {
- return false;
- }
- }
-
}
package com.vaadin.tests.tb3;
+import java.io.IOException;
+
import org.junit.runner.RunWith;
import org.junit.runners.model.InitializationError;
public static class AffectedTB3TestSuite extends TB3TestSuite {
- public AffectedTB3TestSuite(Class<?> klass) throws InitializationError {
+ public AffectedTB3TestSuite(Class<?> klass) throws InitializationError,
+ IOException {
super(klass, AbstractTB3Test.class, "com.vaadin.tests",
new String[] { "com.vaadin.tests.integration" },
new AffectedTB3TestLocator());
package com.vaadin.tests.tb3;
+import java.io.IOException;
+
import org.junit.runner.RunWith;
import org.junit.runners.model.InitializationError;
public static class AllTB3TestsSuite extends TB3TestSuite {
- public AllTB3TestsSuite(Class<?> klass) throws InitializationError {
+ public AllTB3TestsSuite(Class<?> klass) throws InitializationError,
+ IOException {
super(klass, AbstractTB3Test.class, "com.vaadin.tests",
new String[] { "com.vaadin.tests.integration" });
}
*/
package com.vaadin.tests.tb3;
+import java.io.IOException;
+
import org.junit.runner.RunWith;
import org.junit.runners.model.InitializationError;
@RunWith(ChangedTB3TestsSuite.class)
public class ChangedTB3Tests {
public static class ChangedTB3TestsSuite extends TB3TestSuite {
- public ChangedTB3TestsSuite(Class<?> klass) throws InitializationError {
+ public ChangedTB3TestsSuite(Class<?> klass) throws InitializationError,
+ IOException {
super(klass, AbstractTB3Test.class, "com.vaadin.tests",
new String[] { "com.vaadin.tests.integration" },
new ChangedTB3TestLocator());
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
+import com.vaadin.testbench.parallel.BrowserUtil;
+
/**
* Base class for TestBench 3+ tests that use DnD. This class contains utility
* methods for DnD operations.
package com.vaadin.tests.tb3;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
+import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
+import com.vaadin.testbench.parallel.BrowserUtil;
+
/**
* Base class for tests which should be run on all supported browsers. The test
* is automatically launched for multiple browsers in parallel by the test
public abstract class MultiBrowserTest extends PrivateTB3Configuration {
protected List<DesiredCapabilities> getBrowsersSupportingWebSocket() {
- List<DesiredCapabilities> browsers = new ArrayList<DesiredCapabilities>(
- getAllBrowsers());
-
- browsers.remove(Browser.IE8.getDesiredCapabilities());
- browsers.remove(Browser.IE9.getDesiredCapabilities());
- browsers.remove(Browser.PHANTOMJS.getDesiredCapabilities());
-
- return browsers;
+ // No WebSocket support in IE8-9 and PhantomJS
+ return getBrowserCapabilities(Browser.IE10, Browser.IE11,
+ Browser.FIREFOX, Browser.CHROME);
}
protected List<DesiredCapabilities> getBrowsersExcludingPhantomJS() {
- List<DesiredCapabilities> browsers = new ArrayList<DesiredCapabilities>(
- getAllBrowsers());
-
- browsers.remove(Browser.PHANTOMJS.getDesiredCapabilities());
-
- return browsers;
+ return getBrowserCapabilities(Browser.IE8, Browser.IE9, Browser.IE10,
+ Browser.IE11, Browser.CHROME, Browser.FIREFOX);
}
protected List<DesiredCapabilities> getBrowsersExcludingIE() {
- List<DesiredCapabilities> browsers = new ArrayList<DesiredCapabilities>(
- getAllBrowsers());
- browsers.remove(Browser.IE8.getDesiredCapabilities());
- browsers.remove(Browser.IE9.getDesiredCapabilities());
- browsers.remove(Browser.IE10.getDesiredCapabilities());
- browsers.remove(Browser.IE11.getDesiredCapabilities());
+ return getBrowserCapabilities(Browser.FIREFOX, Browser.CHROME,
+ Browser.PHANTOMJS);
+ }
- return browsers;
+ protected List<DesiredCapabilities> getBrowsersExcludingIE8() {
+ return getBrowserCapabilities(Browser.IE9, Browser.IE10, Browser.IE11,
+ Browser.FIREFOX, Browser.CHROME, Browser.PHANTOMJS);
}
protected List<DesiredCapabilities> getBrowsersSupportingShiftClick() {
- List<DesiredCapabilities> browsers = new ArrayList<DesiredCapabilities>(
- getAllBrowsers());
-
- // IE supports shift click only when require window focus is true
- browsers.remove(Browser.FIREFOX.getDesiredCapabilities());
- browsers.remove(Browser.PHANTOMJS.getDesiredCapabilities());
-
- return browsers;
+ return getBrowserCapabilities(Browser.IE8, Browser.IE9, Browser.IE10,
+ Browser.IE11, Browser.CHROME);
}
protected List<DesiredCapabilities> getIEBrowsersOnly() {
- List<DesiredCapabilities> browsers = new ArrayList<DesiredCapabilities>();
- browsers.add(Browser.IE8.getDesiredCapabilities());
- browsers.add(Browser.IE9.getDesiredCapabilities());
- browsers.add(Browser.IE10.getDesiredCapabilities());
- browsers.add(Browser.IE11.getDesiredCapabilities());
-
- return browsers;
+ return getBrowserCapabilities(Browser.IE8, Browser.IE9, Browser.IE10,
+ Browser.IE11);
}
- public enum Browser {
- FIREFOX(BrowserUtil.firefox(24)), CHROME(BrowserUtil.chrome(40)), SAFARI(
- BrowserUtil.safari(7)), IE8(BrowserUtil.ie(8)), IE9(BrowserUtil
- .ie(9)), IE10(BrowserUtil.ie(10)), IE11(BrowserUtil.ie(11)), OPERA(
- BrowserUtil.opera(17)), PHANTOMJS(BrowserUtil.phantomJS(1));
- private DesiredCapabilities desiredCapabilities;
-
- private Browser(DesiredCapabilities desiredCapabilities) {
- this.desiredCapabilities = desiredCapabilities;
- }
-
- public DesiredCapabilities getDesiredCapabilities() {
- return desiredCapabilities;
+ @Override
+ public void setDesiredCapabilities(DesiredCapabilities desiredCapabilities) {
+ if (BrowserUtil.isIE(desiredCapabilities)) {
+ if (requireWindowFocusForIE()) {
+ desiredCapabilities.setCapability(
+ InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true);
+ }
+ if (!usePersistentHoverForIE()) {
+ desiredCapabilities.setCapability(
+ InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING,
+ false);
+ }
}
- }
- static List<DesiredCapabilities> allBrowsers = new ArrayList<DesiredCapabilities>();
- static {
- allBrowsers.add(Browser.IE8.getDesiredCapabilities());
- allBrowsers.add(Browser.IE9.getDesiredCapabilities());
- allBrowsers.add(Browser.IE10.getDesiredCapabilities());
- allBrowsers.add(Browser.IE11.getDesiredCapabilities());
- allBrowsers.add(Browser.FIREFOX.getDesiredCapabilities());
- // Uncomment once we have the capability to run on Safari 6
- // allBrowsers.add(SAFARI);
- allBrowsers.add(Browser.CHROME.getDesiredCapabilities());
- allBrowsers.add(Browser.PHANTOMJS.getDesiredCapabilities());
- // Re-enable this when it is possible to run on a modern Opera version
- // allBrowsers.add(Browser.OPERA.getDesiredCapabilities());
- }
-
- /**
- * @return all supported browsers which are actively tested
- */
- public static List<DesiredCapabilities> getAllBrowsers() {
- return Collections.unmodifiableList(allBrowsers);
+ super.setDesiredCapabilities(desiredCapabilities);
}
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- // Return a copy so sub classes can do
- // super.getBrowseresToTest().remove(something)
- return new ArrayList<DesiredCapabilities>(getAllBrowsers());
+ // Uncomment Safari and Opera if those become tested browsers again.
+ return getBrowserCapabilities(Browser.IE8, Browser.IE9, Browser.IE10,
+ Browser.IE11, Browser.FIREFOX, Browser.CHROME,
+ Browser.PHANTOMJS /* , Browser.SAFARI, Browser.OPERA */);
}
+ protected List<DesiredCapabilities> getBrowserCapabilities(
+ Browser... browsers) {
+ List<DesiredCapabilities> capabilities = new ArrayList<DesiredCapabilities>();
+ for (Browser browser : browsers) {
+ capabilities.add(browser.getDesiredCapabilities());
+ }
+ return capabilities;
+ }
}
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
-import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.testbench.parallel.TestCategory;
@TestCategory("push")
public abstract class MultiBrowserTestWithProxy extends MultiBrowserTest {
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
-import java.util.Arrays;
import java.util.Enumeration;
import java.util.Properties;
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.chrome.ChromeDriver;
-import org.openqa.selenium.chrome.ChromeOptions;
-import org.openqa.selenium.firefox.FirefoxBinary;
-import org.openqa.selenium.firefox.FirefoxDriver;
-import org.openqa.selenium.phantomjs.PhantomJSDriver;
-import org.openqa.selenium.remote.DesiredCapabilities;
-import org.openqa.selenium.safari.SafariDriver;
-
-import com.vaadin.testbench.TestBench;
-import com.vaadin.tests.tb3.MultiBrowserTest.Browser;
+import com.vaadin.testbench.annotations.BrowserFactory;
+import com.vaadin.testbench.annotations.RunOnHub;
/**
* Provides values for parameters which depend on where the test is run.
*
* @author Vaadin Ltd
*/
+@RunOnHub("tb3-hub.intra.itmill.com")
+@BrowserFactory(VaadinBrowserFactory.class)
public abstract class PrivateTB3Configuration extends ScreenshotTB3Test {
/**
*
@Override
protected String getHubURL() {
String hubUrl = getProperty(HUB_URL);
- if(hubUrl == null || hubUrl.trim().isEmpty()) {
+ if (hubUrl == null || hubUrl.trim().isEmpty()) {
return super.getHubURL();
}
return hubUrl;
}
- @Override
- protected String getHubHostname() {
- return "tb3-hub.intra.itmill.com";
- }
-
@Override
protected String getBaseURL() {
String url = getProperty(DEPLOYMENT_PROPERTY);
throw new RuntimeException(
"No compatible (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) ip address found.");
}
-
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.tests.tb3.AbstractTB3Test#setupLocalDriver()
- */
- @Override
- protected void setupLocalDriver(DesiredCapabilities desiredCapabilities) {
- WebDriver driver;
- if (BrowserUtil.isFirefox(desiredCapabilities)) {
- String firefoxPath = getProperty("firefox.path");
- if (firefoxPath != null) {
- driver = new FirefoxDriver(new FirefoxBinary(new File(
- firefoxPath)), null);
- } else {
- driver = new FirefoxDriver();
- }
- } else if (BrowserUtil.isChrome(desiredCapabilities)) {
- String propertyName = "chrome.driver.path";
- String chromeDriverPath = getProperty(propertyName);
- if (chromeDriverPath == null) {
- throw new RuntimeException(
- "You need to install ChromeDriver to use @"
- + RunLocally.class.getSimpleName()
- + " with Chrome."
- + "\nFirst install it from https://code.google.com/p/selenium/wiki/ChromeDriver."
- + "\nThen update "
- + propertiesFile.getAbsolutePath()
- + " to define a property named "
- + propertyName
- + " containing the path of your local ChromeDriver installation.");
- }
- System.setProperty("webdriver.chrome.driver", chromeDriverPath);
-
- // Tells chrome not to show warning
- // "You are using an unsupported command-line flag: --ignore-certifcate-errors".
- // #14319
- ChromeOptions options = new ChromeOptions();
- options.addArguments("--test-type ");
- driver = new ChromeDriver(options);
- } else if (BrowserUtil.isSafari(desiredCapabilities)) {
- driver = new SafariDriver();
- } else if (BrowserUtil.isPhantomJS(desiredCapabilities)) {
- driver = new PhantomJSDriver();
- } else {
- throw new RuntimeException(
- "Not implemented support for running locally on "
- + BrowserUtil
- .getBrowserIdentifier(desiredCapabilities));
- }
- setDriver(TestBench.createDriver(driver));
- setDesiredCapabilities(desiredCapabilities);
- }
-
- @Override
- protected Browser getRunLocallyBrowser() {
- Browser runLocallyBrowser = super.getRunLocallyBrowser();
- if (runLocallyBrowser != null) {
- // Always use annotation value if present
- return runLocallyBrowser;
- }
-
- String runLocallyValue = getProperty(RUN_LOCALLY_PROPERTY);
- if (runLocallyValue == null || runLocallyValue.trim().isEmpty()) {
- return null;
- }
-
- String browserName = runLocallyValue.trim().toUpperCase();
- try {
- return Browser.valueOf(browserName);
- } catch (IllegalArgumentException e) {
- throw new RuntimeException("Invalid " + RUN_LOCALLY_PROPERTY
- + " property from " + getSource(RUN_LOCALLY_PROPERTY)
- + ": " + runLocallyValue + ". Expected one of "
- + Arrays.toString(Browser.values()));
- }
- }
}
package com.vaadin.tests.tb3;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileFilter;
-import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import javax.imageio.ImageIO;
-
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.rules.TestRule;
import org.junit.rules.TestWatcher;
-import org.openqa.selenium.OutputType;
-import org.openqa.selenium.TakesScreenshot;
+import org.junit.runner.Description;
import org.openqa.selenium.remote.DesiredCapabilities;
import com.vaadin.testbench.Parameters;
-import com.vaadin.testbench.commands.TestBenchCommands;
+import com.vaadin.testbench.ScreenshotOnFailureRule;
+import com.vaadin.testbench.parallel.BrowserUtil;
+import com.vaadin.testbench.screenshot.ImageFileUtil;
/**
* Base class which provides functionality for tests which use the automatic
*/
public abstract class ScreenshotTB3Test extends AbstractTB3Test {
+ @Rule
+ public ScreenshotOnFailureRule screenshotOnFailure = new ScreenshotOnFailureRule(
+ this, true) {
+
+ @Override
+ protected void failed(Throwable throwable, Description description) {
+ super.failed(throwable, description);
+ closeApplication();
+ }
+
+ @Override
+ protected void succeeded(Description description) {
+ super.succeeded(description);
+ closeApplication();
+ }
+
+ @Override
+ protected File getErrorScreenshotFile(Description description) {
+ return ImageFileUtil
+ .getErrorScreenshotFile(getScreenshotFailureName());
+ };
+ };
+
private String screenshotBaseName;
@Rule
}
- /*
- * (non-Javadoc)
- *
- * @see
- * com.vaadin.tests.tb3.AbstractTB3Test#onUncaughtException(java.lang.Throwable
- * )
- */
- @Override
- public void onUncaughtException(Throwable cause) {
- super.onUncaughtException(cause);
- // Grab a "failure" screenshot and store in the errors folder for later
- // analysis
- try {
- TestBenchCommands testBench = testBench();
- if (testBench != null) {
- testBench.disableWaitForVaadin();
- }
- } catch (Throwable t) {
- t.printStackTrace();
- }
- try {
- if (driver != null) {
- BufferedImage screenshotImage = ImageIO
- .read(new ByteArrayInputStream(
- ((TakesScreenshot) driver)
- .getScreenshotAs(OutputType.BYTES)));
- ImageIO.write(screenshotImage, "png", new File(
- getScreenshotFailureName()));
- }
- } catch (Throwable t) {
- t.printStackTrace();
- }
-
- }
-
/**
* @return the name of a "failure" image which is stored in the folder
* defined by {@link #getScreenshotErrorDirectory()} when the test
* fails
*/
private String getScreenshotFailureName() {
- return getScreenshotErrorBaseName() + "-failure.png";
+ return getScreenshotBaseName() + "_"
+ + getUniqueIdentifier(getDesiredCapabilities())
+ + "-failure.png";
}
/**
Integer versionOverride) {
String uniqueBrowserIdentifier;
if (versionOverride == null) {
- uniqueBrowserIdentifier = BrowserUtil
- .getUniqueIdentifier(getDesiredCapabilities());
+ uniqueBrowserIdentifier = getUniqueIdentifier(getDesiredCapabilities());
} else {
- uniqueBrowserIdentifier = BrowserUtil.getUniqueIdentifier(
+ uniqueBrowserIdentifier = getUniqueIdentifier(
getDesiredCapabilities(), "" + versionOverride);
}
+ identifier + ".png";
}
+ /**
+ * Returns a string which uniquely (enough) identifies this browser. Used
+ * mainly in screenshot names.
+ *
+ * @param capabilities
+ * @param versionOverride
+ *
+ * @return a unique string for each browser
+ */
+ private String getUniqueIdentifier(DesiredCapabilities capabilities,
+ String versionOverride) {
+ return getUniqueIdentifier(BrowserUtil.getPlatform(capabilities),
+ BrowserUtil.getBrowserIdentifier(capabilities), versionOverride);
+ }
+
+ /**
+ * Returns a string which uniquely (enough) identifies this browser. Used
+ * mainly in screenshot names.
+ *
+ * @param capabilities
+ *
+ * @return a unique string for each browser
+ */
+ private String getUniqueIdentifier(DesiredCapabilities capabilities) {
+ return getUniqueIdentifier(BrowserUtil.getPlatform(capabilities),
+ BrowserUtil.getBrowserIdentifier(capabilities),
+ capabilities.getVersion());
+ }
+
+ private String getUniqueIdentifier(String platform, String browser,
+ String version) {
+ return platform + "_" + browser + "_" + version;
+ }
+
/**
* Returns the base name of the screenshot in the error directory. This is a
* name so that all files matching {@link #getScreenshotErrorBaseName()}*
package com.vaadin.tests.tb3;
+import java.io.IOException;
+
import org.junit.runner.RunWith;
import org.junit.runners.model.InitializationError;
public static class ServletIntegrationTestSuite extends TB3TestSuite {
public ServletIntegrationTestSuite(Class<?> klass)
- throws InitializationError {
+ throws InitializationError, IOException {
super(klass, AbstractServletIntegrationTest.class,
"com.vaadin.tests.integration", new String[] {});
}
import org.openqa.selenium.remote.DesiredCapabilities;
+import com.vaadin.testbench.parallel.Browser;
+
public abstract class SingleBrowserTest extends PrivateTB3Configuration {
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- return Collections.unmodifiableList(Collections
- .singletonList(MultiBrowserTest.Browser.PHANTOMJS
- .getDesiredCapabilities()));
+ return Collections.singletonList(Browser.PHANTOMJS
+ .getDesiredCapabilities());
}
-
}
package com.vaadin.tests.tb3;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runners.BlockJUnit4ClassRunner;
+import org.apache.http.client.HttpClient;
import org.junit.runners.Parameterized;
-import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.InitializationError;
-import org.junit.runners.model.Statement;
-import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.HttpCommandExecutor;
import org.openqa.selenium.remote.internal.HttpClientFactory;
-import com.vaadin.tests.annotations.TestCategory;
-import com.vaadin.tests.tb3.AbstractTB3Test.BrowserUtil;
-import com.vaadin.tests.tb3.MultiBrowserTest.Browser;
+import com.vaadin.testbench.parallel.ParallelRunner;
/**
* This runner is loosely based on FactoryTestRunner by Ted Young
*
* @since 7.1
*/
-public class TB3Runner extends BlockJUnit4ClassRunner {
+public class TB3Runner extends ParallelRunner {
/**
* Socket timeout for HTTP connections to the grid hub. The connection is
*/
private static final int SOCKET_TIMEOUT = 30 * 60 * 1000;
- /**
- * This is the total limit of actual JUnit test instances run in parallel
- */
- private static final int MAX_CONCURRENT_TESTS;
-
- /**
- * This is static so it is shared by all tests running concurrently on the
- * same machine and thus can limit the number of threads in use.
- */
- private static final ExecutorService service;
-
static {
- if (localWebDriverIsUsed()) {
- MAX_CONCURRENT_TESTS = 10;
- } else {
- MAX_CONCURRENT_TESTS = 50;
- }
- service = Executors.newFixedThreadPool(MAX_CONCURRENT_TESTS);
// reduce socket timeout to avoid tests hanging for three hours
try {
field.setAccessible(true);
field.set(null, new HttpClientFactory() {
@Override
- public HttpParams getHttpParams() {
- HttpParams params = super.getHttpParams();
- // fifteen minute timeout
- HttpConnectionParams.setSoTimeout(params, SOCKET_TIMEOUT);
- return params;
+ public HttpClient getGridHttpClient(int connection_timeout,
+ int socket_timeout) {
+
+ if (socket_timeout == 0 || socket_timeout > SOCKET_TIMEOUT) {
+ return super.getGridHttpClient(connection_timeout,
+ SOCKET_TIMEOUT);
+ }
+
+ return super.getGridHttpClient(connection_timeout,
+ socket_timeout);
}
});
} catch (Exception e) {
}
}
- protected static boolean localWebDriverIsUsed() {
- String useLocalWebDriver = System.getProperty("useLocalWebDriver");
-
- return useLocalWebDriver != null
- && useLocalWebDriver.toLowerCase().equals("true");
- }
-
public TB3Runner(Class<?> klass) throws InitializationError {
super(klass);
- setScheduler(new ParallelScheduler(service));
- }
-
- @Override
- protected List<FrameworkMethod> computeTestMethods() {
- List<FrameworkMethod> tests = new LinkedList<FrameworkMethod>();
-
- if (!AbstractTB3Test.class.isAssignableFrom(getTestClass()
- .getJavaClass())) {
- throw new RuntimeException(getClass().getName() + " only supports "
- + AbstractTB3Test.class.getName());
- }
-
- try {
- AbstractTB3Test testClassInstance = getTestClassInstance();
- Collection<DesiredCapabilities> desiredCapabilities = getDesiredCapabilities(testClassInstance);
-
- TestNameSuffix testNameSuffixProperty = findAnnotation(
- testClassInstance.getClass(), TestNameSuffix.class);
-
- for (FrameworkMethod m : getTestMethods()) {
- // No browsers available for this test, so we need to
- // wrap the test method inside IgnoredTestMethod.
- // This will add @Ignore annotation to it.
- if (desiredCapabilities.size() <= 0
- || categoryIsExcludedOrNotExcplicitlyIncluded()) {
- tests.add(new IgnoredTestMethod(m.getMethod()));
- } else {
- for (DesiredCapabilities capabilities : desiredCapabilities) {
- TB3Method method = new TB3Method(m.getMethod(),
- capabilities);
- if (testNameSuffixProperty != null) {
- method.setTestNameSuffix("-"
- + System.getProperty(testNameSuffixProperty
- .property()));
- }
- tests.add(method);
- }
- }
- }
- } catch (Exception e) {
- throw new RuntimeException("Error retrieving browsers to run on", e);
- }
-
- return tests;
- }
-
- private boolean categoryIsExcludedOrNotExcplicitlyIncluded() {
- Class<?> c = getTestClass().getJavaClass();
-
- if (categoryIsExcluded(c)) {
- return true;
- }
-
- if (explicitInclusionIsUsed()) {
- return !categoryIsIncluded(c);
- }
-
- return false;
- }
-
- private boolean categoryIsIncluded(Class<?> c) {
- String include = System.getProperty("categories.include");
- if (include != null && include.trim().length() > 0) {
- return hasCategoryFor(c, include.toLowerCase().trim());
- }
-
- return false;
- }
-
- private static boolean explicitInclusionIsUsed() {
- String include = System.getProperty("categories.include");
-
- return include != null && include.trim().length() > 0;
- }
-
- private static boolean categoryIsExcluded(Class<?> c) {
- String exclude = System.getProperty("categories.exclude");
- if (exclude != null && exclude.trim().length() > 0) {
- return hasCategoryFor(c, exclude.toLowerCase().trim());
- }
-
- return false;
- }
-
- private static boolean hasCategoryFor(Class<?> c, String searchString) {
- if (hasCategory(c)) {
- return searchString.contains(getCategory(c).toLowerCase());
- }
-
- return false;
- }
-
- private static boolean hasCategory(Class<?> c) {
- return c.getAnnotation(TestCategory.class) != null;
- }
-
- private static String getCategory(Class<?> c) {
- return c.getAnnotation(TestCategory.class).value();
- }
-
- private List<FrameworkMethod> getTestMethods() {
- return getTestClass().getAnnotatedMethods(Test.class);
- }
-
- /*
- * Returns a list of desired browser capabilities according to browsers
- * defined in the test class, filtered by possible filter parameters. Use
- * {@code @RunLocally} annotation or com.vaadin.testbench.runLocally
- * property to override all capabilities.
- */
- private Collection<DesiredCapabilities> getDesiredCapabilities(
- AbstractTB3Test testClassInstance) {
- Collection<DesiredCapabilities> desiredCapabilites = getFilteredCapabilities(testClassInstance);
-
- Browser runLocallyBrowser = testClassInstance.getRunLocallyBrowser();
- if (runLocallyBrowser != null) {
- desiredCapabilites = new ArrayList<DesiredCapabilities>();
- desiredCapabilites.add(runLocallyBrowser.getDesiredCapabilities());
- }
-
- return desiredCapabilites;
- }
-
- /*
- * Takes the desired browser capabilities defined in the test class and
- * returns a list of browser capabilities filtered browsers.include and
- * browsers.exclude system properties. (if present)
- */
- private Collection<DesiredCapabilities> getFilteredCapabilities(
- AbstractTB3Test testClassInstance) {
- Collection<DesiredCapabilities> desiredCapabilites = testClassInstance
- .getBrowsersToTest();
-
- ArrayList<DesiredCapabilities> filteredCapabilities = new ArrayList<DesiredCapabilities>();
-
- String include = System.getProperty("browsers.include");
- String exclude = System.getProperty("browsers.exclude");
-
- for (DesiredCapabilities d : desiredCapabilites) {
- String browserName = (d.getBrowserName() + d.getVersion())
- .toLowerCase();
- if (include != null && include.trim().length() > 0) {
- if (include.trim().toLowerCase().contains(browserName)) {
- filteredCapabilities.add(d);
- }
- } else {
- filteredCapabilities.add(d);
- }
-
- if (exclude != null && exclude.trim().length() > 0) {
- if (exclude.trim().toLowerCase().contains(browserName)) {
- filteredCapabilities.remove(d);
- }
- }
-
- }
- return filteredCapabilities;
- }
-
- private AbstractTB3Test getTestClassInstance()
- throws InstantiationException, IllegalAccessException,
- InvocationTargetException {
- AbstractTB3Test testClassInstance = (AbstractTB3Test) getTestClass()
- .getOnlyConstructor().newInstance();
- return testClassInstance;
- }
-
- // This is a FrameworkMethod class that will always
- // return @Ignore and @Test annotations for the wrapped method.
- private class IgnoredTestMethod extends FrameworkMethod {
-
- private class IgnoreTestAnnotations {
-
- // We use this method to easily get our hands on
- // the Annotation instances for @Ignore and @Test
- @Ignore
- @Test
- public void ignoredTest() {
- }
- }
-
- public IgnoredTestMethod(Method method) {
- super(method);
- }
-
- @Override
- public Annotation[] getAnnotations() {
- return getIgnoredTestMethod().getAnnotations();
- }
-
- private Method getIgnoredTestMethod() {
- try {
- return IgnoreTestAnnotations.class.getMethod("ignoredTest",
- null);
- } catch (Exception e) {
- return null;
- }
-
- }
-
- @Override
- public <T extends Annotation> T getAnnotation(Class<T> annotationType) {
- return getIgnoredTestMethod().getAnnotation(annotationType);
- }
- }
-
- /**
- * Finds the given annotation in the given class or one of its super
- * classes. Return the first found annotation
- *
- * @param searchClass
- * @param annotationClass
- * @return
- */
- private <T extends Annotation> T findAnnotation(Class<?> searchClass,
- Class<T> annotationClass) {
- if (searchClass == Object.class) {
- return null;
- }
-
- if (searchClass.getAnnotation(annotationClass) != null) {
- return searchClass.getAnnotation(annotationClass);
- }
-
- return findAnnotation(searchClass.getSuperclass(), annotationClass);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.junit.runners.BlockJUnit4ClassRunner#withBefores(org.junit.runners
- * .model.FrameworkMethod, java.lang.Object,
- * org.junit.runners.model.Statement)
- */
- @Override
- protected Statement withBefores(final FrameworkMethod method,
- final Object target, Statement statement) {
- if (!(method instanceof TB3Method)) {
- throw new RuntimeException("Unexpected method type "
- + method.getClass().getName() + ", expected TB3Method");
- }
- final TB3Method tb3method = (TB3Method) method;
-
- // setDesiredCapabilities before running the real @Befores (which use
- // capabilities)
-
- final Statement realBefores = super.withBefores(method, target,
- statement);
- return new Statement() {
-
- @Override
- public void evaluate() throws Throwable {
- ((AbstractTB3Test) target)
- .setDesiredCapabilities(tb3method.capabilities);
- try {
- realBefores.evaluate();
- } catch (Throwable t) {
- // Give the test a chance to e.g. produce an error
- // screenshot before failing the test by re-throwing the
- // exception
- ((AbstractTB3Test) target).onUncaughtException(t);
- throw t;
- }
- }
- };
- }
-
- private static class TB3Method extends FrameworkMethod {
- private DesiredCapabilities capabilities;
- private String testNameSuffix = "";
-
- public TB3Method(Method method, DesiredCapabilities capabilities) {
- super(method);
- this.capabilities = capabilities;
- }
-
- public void setTestNameSuffix(String testNameSuffix) {
- this.testNameSuffix = testNameSuffix;
- }
-
- @Override
- public Object invokeExplosively(final Object target, Object... params)
- throws Throwable {
- // Executes the test method with the supplied parameters
- return super.invokeExplosively(target);
- }
-
- @Override
- public String getName() {
- return String.format("%s[%s]", getMethod().getName()
- + testNameSuffix,
- BrowserUtil.getUniqueIdentifier(capabilities));
- }
-
}
}
package com.vaadin.tests.tb3;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
+import java.io.IOException;
-import org.junit.runners.Suite;
import org.junit.runners.model.InitializationError;
+import com.vaadin.testbench.parallel.ParallelTestSuite;
+
/**
* Test suite which consists of all the TB3 tests passed in the constructor.
* Runs the tests in parallel using a {@link ParallelScheduler}
*
* @author Vaadin Ltd
*/
-public class TB3TestSuite extends Suite {
-
- /**
- * This only restricts the number of test suites running concurrently. The
- * number of tests to run concurrently are configured in {@link TB3Runner}.
- */
- private static final int MAX_CONCURRENT_TEST_SUITES = 20;
-
- /**
- * This is static so it is shared by all test suites running concurrently on
- * the same machine and thus can limit the number of threads in use.
- */
- private final ExecutorService service = Executors
- .newFixedThreadPool(MAX_CONCURRENT_TEST_SUITES);
+public class TB3TestSuite extends ParallelTestSuite {
public TB3TestSuite(Class<?> klass,
Class<? extends AbstractTB3Test> baseClass, String basePackage,
- String[] ignorePackages) throws InitializationError {
+ String[] ignorePackages) throws InitializationError, IOException {
this(klass, baseClass, basePackage, ignorePackages,
new TB3TestLocator());
}
public TB3TestSuite(Class<?> klass,
Class<? extends AbstractTB3Test> baseClass, String basePackage,
- String[] ignorePackages, TB3TestLocator testLocator)
- throws InitializationError {
- super(klass, testLocator.findTests(baseClass, basePackage,
- ignorePackages));
- setScheduler(new ParallelScheduler(service));
+ String[] ignorePackages, TB3TestLocator locator)
+ throws InitializationError, IOException {
+ super(klass, locator
+ .findClasses(baseClass, basePackage, ignorePackages).toArray(
+ new Class<?>[] {}));
}
}
+++ /dev/null
-/*
- * Copyright 2000-2014 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 java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * Defines a system property to be used as part of the test name
- */
-@Retention(RetentionPolicy.RUNTIME)
-public @interface TestNameSuffix {
-
- String property();
-
-}
--- /dev/null
+/*
+ * Copyright 2000-2014 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.openqa.selenium.Platform;
+import org.openqa.selenium.ie.InternetExplorerDriver;
+import org.openqa.selenium.remote.DesiredCapabilities;
+
+import com.vaadin.testbench.parallel.Browser;
+import com.vaadin.testbench.parallel.DefaultBrowserFactory;
+
+public class VaadinBrowserFactory extends DefaultBrowserFactory {
+
+ @Override
+ public DesiredCapabilities create(Browser browser) {
+ switch (browser) {
+ case IE8:
+ return createIE(browser, "8");
+ case IE9:
+ return createIE(browser, "9");
+ case IE10:
+ return createIE(browser, "10");
+ case IE11:
+ return createIE(browser, "11");
+ case PHANTOMJS:
+ return create(browser, "1", Platform.LINUX);
+ case CHROME:
+ return create(browser, "40", Platform.VISTA);
+ case FIREFOX:
+ default:
+ return create(browser, "24", Platform.XP);
+ }
+ }
+
+ private DesiredCapabilities createIE(Browser browser, String version) {
+ DesiredCapabilities capabilities = create(browser, version,
+ Platform.WINDOWS);
+ capabilities.setCapability(
+ InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
+ return capabilities;
+ }
+
+ @Override
+ public DesiredCapabilities create(Browser browser, String version) {
+ return create(browser);
+ }
+}
*/
package com.vaadin.tests.tb3;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import org.openqa.selenium.remote.DesiredCapabilities;
-import com.vaadin.tests.annotations.TestCategory;
-import com.vaadin.tests.tb3.MultiBrowserTest.Browser;
+import com.vaadin.testbench.parallel.TestCategory;
/**
* A {@link MultiBrowserTest} which restricts the tests to the browsers which
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- return new ArrayList<DesiredCapabilities>(
- getBrowsersSupportingWebSocket());
+ return getBrowsersSupportingWebSocket();
}
}
import org.openqa.selenium.WebElement;
import com.vaadin.testbench.By;
-import com.vaadin.testbench.elements.ServerClass;
+import com.vaadin.testbench.elementsbase.ServerClass;
@ServerClass("com.vaadin.ui.Calendar")
public class CalendarElement extends
import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.NotificationElement;
-import com.vaadin.testbench.elements.ServerClass;
+import com.vaadin.testbench.elementsbase.ServerClass;
@ServerClass("com.vaadin.ui.Notification")
public class FixedNotificationElement extends NotificationElement {
+ @Override
public String getCaption() {
WebElement popup = findElement(By.className("popupContent"));
WebElement caption = popup.findElement(By.tagName("h1"));
return caption.getText();
}
+ @Override
public void close() {
click();
WebDriverWait wait = new WebDriverWait(getDriver(), 10);
import org.openqa.selenium.interactions.Actions;
import com.vaadin.testbench.By;
-import com.vaadin.testbench.elements.ServerClass;
+import com.vaadin.testbench.elementsbase.ServerClass;
/*
Suggestions for new elemental api for Window
/**
* @return the caption of the window
*/
+ @Override
public String getCaption() {
return findElement(By.className("v-window-header")).getText();
}
*/
package com.vaadin.tests.themes;
-import com.vaadin.testbench.elements.ButtonElement;
-import com.vaadin.tests.tb3.MultiBrowserTest;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+import java.io.IOException;
+import java.util.List;
+
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedCondition;
-import java.io.IOException;
-import java.util.List;
-
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.MatcherAssert.assertThat;
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
public class ThemeChangeOnTheFlyTest extends MultiBrowserTest {
public List<DesiredCapabilities> getBrowsersToTest() {
// Seems like stylesheet onload is not fired on PhantomJS
// https://github.com/ariya/phantomjs/issues/12332
- List<DesiredCapabilities> l = super.getBrowsersToTest();
- l.remove(Browser.PHANTOMJS.getDesiredCapabilities());
- return l;
+ return getBrowsersExcludingPhantomJS();
}
@Test
import static org.junit.Assert.assertThat;
import java.io.IOException;
-import java.util.List;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
-import org.openqa.selenium.remote.DesiredCapabilities;
import com.vaadin.testbench.elements.UploadElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
*/
public class ImmediateUploadTest extends MultiBrowserTest {
- @Override
- public List<DesiredCapabilities> getBrowsersToTest() {
- return getAllBrowsers();
- }
-
@Override
public void setup() throws Exception {
super.setup();
@Override
public List<DesiredCapabilities> getBrowsersToTest() {
- List<DesiredCapabilities> browsers = super.getBrowsersToTest();
-
- // IE8 doesn't support box-shadow.
- browsers.remove(Browser.IE8.getDesiredCapabilities());
-
- return browsers;
+ return getBrowsersExcludingIE8();
}
@Test
import com.vaadin.testbench.elements.CssLayoutElement;
import com.vaadin.testbench.elements.LabelElement;
import com.vaadin.testbench.elements.TreeElement;
+import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class ValoThemeUITest extends MultiBrowserTest {
<property name="useLocalWebDriver" value="false" />
<property name="com.vaadin.testbench.max.retries" value="0" />
<property name="com.vaadin.testbench.hub.url" value="" />
+ <property name="vaadin.testbench.developer.license" value="" />
<property name="junit.test.suite" value="com.vaadin.tests.tb3.AllTB3Tests" />
<ivy:resolve file="${tb3test.dir}/ivy.xml" conf="build, build-provided" />
<path location="${tb3test.dir}/result/classes" />
</path>
- <target name="run-all-tb3-tests" unless="tests.tb3.skip" description="Run all the TB3 tests (except server tests) in the project">
+ <target name="run-all-tb3-tests" unless="tests.tb3.skip"
+ description="Run all the TB3 tests (except server tests) in the project">
<antcall target="run-tb3-suite" />
</target>
<jvmarg value="-DuseLocalWebDriver=${useLocalWebDriver}" />
<jvmarg value="-Dcom.vaadin.testbench.max.retries=${com.vaadin.testbench.max.retries}" />
<jvmarg value="-Dcom.vaadin.testbench.hub.url=${com.vaadin.testbench.hub.url}" />
+ <jvmarg value="-Dvaadin.testbench.developer.license=${vaadin.testbench.developer.license}" />
<test name="${junit.test.suite}" todir="${report.dir}" />
</junit>