diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2015-02-12 14:57:13 +0200 |
---|---|---|
committer | Teemu Suo-Anttila <teemusa@vaadin.com> | 2015-02-19 15:19:46 +0200 |
commit | fd8078d691f6b6eec407882280730104f5027e3d (patch) | |
tree | 1e9e3dac572d9951a55d6d00e935167c6056eb27 /uitest/src/com/vaadin | |
parent | f4e002e36be983b16c6324255780fd7e74710d68 (diff) | |
download | vaadin-framework-fd8078d691f6b6eec407882280730104f5027e3d.tar.gz vaadin-framework-fd8078d691f6b6eec407882280730104f5027e3d.zip |
Use TestBench-4.0.2
- Based on TB4 Parallel testing.
- Browser setup no longer uses static capabilities.
- Some code cleanup here and there.
Change-Id: I5c419316cd36f4f5041eaa8da8fda3d8b46596c4
Diffstat (limited to 'uitest/src/com/vaadin')
112 files changed, 475 insertions, 1487 deletions
diff --git a/uitest/src/com/vaadin/testbench/elements/GridElement.java b/uitest/src/com/vaadin/testbench/elements/GridElement.java index 3753696855..68ddfc878e 100644 --- a/uitest/src/com/vaadin/testbench/elements/GridElement.java +++ b/uitest/src/com/vaadin/testbench/elements/GridElement.java @@ -23,6 +23,8 @@ import org.openqa.selenium.WebElement; 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 diff --git a/uitest/src/com/vaadin/tests/VerifyBrowserVersionTest.java b/uitest/src/com/vaadin/tests/VerifyBrowserVersionTest.java index 38c94dda7d..5b4f4df788 100644 --- a/uitest/src/com/vaadin/tests/VerifyBrowserVersionTest.java +++ b/uitest/src/com/vaadin/tests/VerifyBrowserVersionTest.java @@ -19,28 +19,14 @@ import static org.hamcrest.CoreMatchers.containsString; 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(); @@ -48,11 +34,31 @@ public class VerifyBrowserVersionTest extends MultiBrowserTest { 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."); } } diff --git a/uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponentsTest.java b/uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponentsTest.java index 8dfcf52b75..1231b0036e 100644 --- a/uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponentsTest.java +++ b/uitest/src/com/vaadin/tests/actions/ActionsOnInvisibleComponentsTest.java @@ -7,6 +7,7 @@ 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; public class ActionsOnInvisibleComponentsTest extends MultiBrowserTest { @@ -15,12 +16,8 @@ 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 diff --git a/uitest/src/com/vaadin/tests/annotations/TestCategory.java b/uitest/src/com/vaadin/tests/annotations/TestCategory.java deleted file mode 100644 index 5ba6cc3faa..0000000000 --- a/uitest/src/com/vaadin/tests/annotations/TestCategory.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * 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(); - -} diff --git a/uitest/src/com/vaadin/tests/applicationservlet/NoApplicationClassTest.java b/uitest/src/com/vaadin/tests/applicationservlet/NoApplicationClassTest.java index 5a815fb40c..8020870bdc 100644 --- a/uitest/src/com/vaadin/tests/applicationservlet/NoApplicationClassTest.java +++ b/uitest/src/com/vaadin/tests/applicationservlet/NoApplicationClassTest.java @@ -15,7 +15,6 @@ */ package com.vaadin.tests.applicationservlet; -import java.util.Collections; import java.util.List; import org.junit.Assert; @@ -23,6 +22,7 @@ import org.junit.Test; 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 { @@ -38,8 +38,7 @@ public class NoApplicationClassTest extends MultiBrowserTest { @Override public List<DesiredCapabilities> getBrowsersToTest() { - return Collections.singletonList(Browser.CHROME - .getDesiredCapabilities()); + return getBrowserCapabilities(Browser.CHROME); } @Override diff --git a/uitest/src/com/vaadin/tests/components/AbstractOrderedLayoutWithCaptionsTest.java b/uitest/src/com/vaadin/tests/components/AbstractOrderedLayoutWithCaptionsTest.java index 4f5c16218e..69e4aaa06c 100644 --- a/uitest/src/com/vaadin/tests/components/AbstractOrderedLayoutWithCaptionsTest.java +++ b/uitest/src/com/vaadin/tests/components/AbstractOrderedLayoutWithCaptionsTest.java @@ -25,6 +25,7 @@ import org.junit.Test; import org.openqa.selenium.WebElement; import com.vaadin.testbench.By; +import com.vaadin.testbench.parallel.BrowserUtil; import com.vaadin.tests.tb3.MultiBrowserTest; /** diff --git a/uitest/src/com/vaadin/tests/components/SaneErrorsTest.java b/uitest/src/com/vaadin/tests/components/SaneErrorsTest.java index bf84695c3b..a43db58fd0 100644 --- a/uitest/src/com/vaadin/tests/components/SaneErrorsTest.java +++ b/uitest/src/com/vaadin/tests/components/SaneErrorsTest.java @@ -15,7 +15,6 @@ */ package com.vaadin.tests.components; -import java.util.Collections; import java.util.List; import org.junit.Assert; @@ -24,6 +23,7 @@ import org.openqa.selenium.By; 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 { @@ -35,7 +35,7 @@ public class SaneErrorsTest extends MultiBrowserTest { */ @Override public List<DesiredCapabilities> getBrowsersToTest() { - return Collections.singletonList(DesiredCapabilities.firefox()); + return getBrowserCapabilities(Browser.FIREFOX); } @Test diff --git a/uitest/src/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDayTest.java b/uitest/src/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDayTest.java index e18163227e..a41fb8360a 100644 --- a/uitest/src/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDayTest.java +++ b/uitest/src/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDayTest.java @@ -23,6 +23,7 @@ import org.openqa.selenium.By; import org.openqa.selenium.StaleElementReferenceException; import org.openqa.selenium.WebElement; +import com.vaadin.testbench.parallel.BrowserUtil; import com.vaadin.tests.tb3.MultiBrowserTest; /** diff --git a/uitest/src/com/vaadin/tests/components/combobox/ComboBoxSetNullWhenNewItemsAllowedTest.java b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxSetNullWhenNewItemsAllowedTest.java index 7951187fa7..ce8e614e10 100644 --- a/uitest/src/com/vaadin/tests/components/combobox/ComboBoxSetNullWhenNewItemsAllowedTest.java +++ b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxSetNullWhenNewItemsAllowedTest.java @@ -25,6 +25,7 @@ import org.openqa.selenium.interactions.Actions; 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; /** diff --git a/uitest/src/com/vaadin/tests/components/combobox/ComboboxPageLengthZeroScrollTest.java b/uitest/src/com/vaadin/tests/components/combobox/ComboboxPageLengthZeroScrollTest.java index 948acc5fe6..e88dd2eb85 100644 --- a/uitest/src/com/vaadin/tests/components/combobox/ComboboxPageLengthZeroScrollTest.java +++ b/uitest/src/com/vaadin/tests/components/combobox/ComboboxPageLengthZeroScrollTest.java @@ -15,7 +15,6 @@ */ package com.vaadin.tests.components.combobox; -import java.util.Collections; import java.util.List; import org.junit.Assert; @@ -26,6 +25,7 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.remote.DesiredCapabilities; +import com.vaadin.testbench.parallel.Browser; import com.vaadin.tests.tb3.MultiBrowserTest; /** @@ -67,6 +67,6 @@ public class ComboboxPageLengthZeroScrollTest extends MultiBrowserTest { @Override public List<DesiredCapabilities> getBrowsersToTest() { - return Collections.singletonList(Browser.IE8.getDesiredCapabilities()); + return getBrowserCapabilities(Browser.IE8); } } diff --git a/uitest/src/com/vaadin/tests/components/datefield/DisabledDateFieldPopupTest.java b/uitest/src/com/vaadin/tests/components/datefield/DisabledDateFieldPopupTest.java index a57017746a..4775441af2 100644 --- a/uitest/src/com/vaadin/tests/components/datefield/DisabledDateFieldPopupTest.java +++ b/uitest/src/com/vaadin/tests/components/datefield/DisabledDateFieldPopupTest.java @@ -16,7 +16,6 @@ package com.vaadin.tests.components.datefield; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import org.junit.Assert; @@ -33,13 +32,7 @@ public class DisabledDateFieldPopupTest extends MultiBrowserTest { @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 diff --git a/uitest/src/com/vaadin/tests/components/datefield/LocaleChangeTest.java b/uitest/src/com/vaadin/tests/components/datefield/LocaleChangeTest.java index c80a74599d..38e4b7e0b8 100644 --- a/uitest/src/com/vaadin/tests/components/datefield/LocaleChangeTest.java +++ b/uitest/src/com/vaadin/tests/components/datefield/LocaleChangeTest.java @@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals; 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 { diff --git a/uitest/src/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRangeTest.java b/uitest/src/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRangeTest.java index 6d22048d32..a4c7248d69 100644 --- a/uitest/src/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRangeTest.java +++ b/uitest/src/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRangeTest.java @@ -31,6 +31,7 @@ import org.openqa.selenium.interactions.Actions; 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; /** @@ -405,9 +406,8 @@ public class PopupDateFieldExtendedRangeTest extends 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(); @@ -435,9 +435,8 @@ public class PopupDateFieldExtendedRangeTest extends MultiBrowserTest { .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", diff --git a/uitest/src/com/vaadin/tests/components/embedded/EmbeddedThemeResourceTest.java b/uitest/src/com/vaadin/tests/components/embedded/EmbeddedThemeResourceTest.java index f3dca71cad..dc4dd341f4 100644 --- a/uitest/src/com/vaadin/tests/components/embedded/EmbeddedThemeResourceTest.java +++ b/uitest/src/com/vaadin/tests/components/embedded/EmbeddedThemeResourceTest.java @@ -20,7 +20,7 @@ import static org.hamcrest.Matchers.is; 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; @@ -33,9 +33,10 @@ import org.openqa.selenium.support.ui.ExpectedCondition; 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 @@ -50,7 +51,7 @@ public class EmbeddedThemeResourceTest extends SingleBrowserTest { 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()); } diff --git a/uitest/src/com/vaadin/tests/components/grid/AbstractGridColumnAutoWidthTest.java b/uitest/src/com/vaadin/tests/components/grid/AbstractGridColumnAutoWidthTest.java index cc5be455cd..a9e0b03932 100644 --- a/uitest/src/com/vaadin/tests/components/grid/AbstractGridColumnAutoWidthTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/AbstractGridColumnAutoWidthTest.java @@ -24,7 +24,8 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/CustomRendererTest.java b/uitest/src/com/vaadin/tests/components/grid/CustomRendererTest.java index 1c00574f9c..b17416df2a 100644 --- a/uitest/src/com/vaadin/tests/components/grid/CustomRendererTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/CustomRendererTest.java @@ -23,7 +23,7 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/GridAddAndRemoveDataOnInitTest.java b/uitest/src/com/vaadin/tests/components/grid/GridAddAndRemoveDataOnInitTest.java index ceaceb661d..42327ebd80 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridAddAndRemoveDataOnInitTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridAddAndRemoveDataOnInitTest.java @@ -20,7 +20,7 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/GridAddRowTest.java b/uitest/src/com/vaadin/tests/components/grid/GridAddRowTest.java index 46f085686d..8c601db9aa 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridAddRowTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridAddRowTest.java @@ -20,7 +20,7 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/GridClientRenderers.java b/uitest/src/com/vaadin/tests/components/grid/GridClientRenderers.java index 953e2a24c7..2ef1600f91 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridClientRenderers.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridClientRenderers.java @@ -33,8 +33,9 @@ import com.vaadin.testbench.elements.GridElement.GridCellElement; 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; diff --git a/uitest/src/com/vaadin/tests/components/grid/GridColspansTest.java b/uitest/src/com/vaadin/tests/components/grid/GridColspansTest.java index 6b50b64732..d99272d506 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridColspansTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridColspansTest.java @@ -25,7 +25,7 @@ import org.openqa.selenium.By; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/GridColumnAutoWidthClientTest.java b/uitest/src/com/vaadin/tests/components/grid/GridColumnAutoWidthClientTest.java index dcc14a967d..999f72682e 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridColumnAutoWidthClientTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridColumnAutoWidthClientTest.java @@ -15,7 +15,7 @@ */ package com.vaadin.tests.components.grid; -import com.vaadin.tests.annotations.TestCategory; +import com.vaadin.testbench.parallel.TestCategory; @TestCategory("grid") public class GridColumnAutoWidthClientTest extends diff --git a/uitest/src/com/vaadin/tests/components/grid/GridColumnAutoWidthServerTest.java b/uitest/src/com/vaadin/tests/components/grid/GridColumnAutoWidthServerTest.java index 2f42b89eb1..3a4e2bfc72 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridColumnAutoWidthServerTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridColumnAutoWidthServerTest.java @@ -15,7 +15,7 @@ */ package com.vaadin.tests.components.grid; -import com.vaadin.tests.annotations.TestCategory; +import com.vaadin.testbench.parallel.TestCategory; @TestCategory("grid") public class GridColumnAutoWidthServerTest extends diff --git a/uitest/src/com/vaadin/tests/components/grid/GridEditorUITest.java b/uitest/src/com/vaadin/tests/components/grid/GridEditorUITest.java index 6c386eec03..47dc90e33a 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridEditorUITest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridEditorUITest.java @@ -26,7 +26,7 @@ import com.vaadin.testbench.elements.GridElement; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/GridGeneratedPropertiesTest.java b/uitest/src/com/vaadin/tests/components/grid/GridGeneratedPropertiesTest.java index ffcd4c448f..d50879e65e 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridGeneratedPropertiesTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridGeneratedPropertiesTest.java @@ -24,7 +24,7 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/GridHeaderStyleNamesTest.java b/uitest/src/com/vaadin/tests/components/grid/GridHeaderStyleNamesTest.java index 0f70d66ad4..8b3a81e660 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridHeaderStyleNamesTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridHeaderStyleNamesTest.java @@ -23,7 +23,7 @@ import org.openqa.selenium.WebElement; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/GridInTabSheetTest.java b/uitest/src/com/vaadin/tests/components/grid/GridInTabSheetTest.java index 168496e9df..f9f8d1309b 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridInTabSheetTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridInTabSheetTest.java @@ -24,7 +24,7 @@ import com.vaadin.testbench.elements.ButtonElement; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/GridSingleColumnTest.java b/uitest/src/com/vaadin/tests/components/grid/GridSingleColumnTest.java index 42eb2197bf..a3fbb00cf2 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridSingleColumnTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridSingleColumnTest.java @@ -21,7 +21,7 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/GridWithoutRendererTest.java b/uitest/src/com/vaadin/tests/components/grid/GridWithoutRendererTest.java index 5d6ffbd8a7..fc93e99188 100644 --- a/uitest/src/com/vaadin/tests/components/grid/GridWithoutRendererTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/GridWithoutRendererTest.java @@ -22,7 +22,7 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/InitialFrozenColumnsTest.java b/uitest/src/com/vaadin/tests/components/grid/InitialFrozenColumnsTest.java index 7a6d37d089..b4414a3f38 100644 --- a/uitest/src/com/vaadin/tests/components/grid/InitialFrozenColumnsTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/InitialFrozenColumnsTest.java @@ -23,7 +23,7 @@ import org.openqa.selenium.WebElement; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/WidgetRenderersTest.java b/uitest/src/com/vaadin/tests/components/grid/WidgetRenderersTest.java index 854d7fe3f2..063d05b735 100644 --- a/uitest/src/com/vaadin/tests/components/grid/WidgetRenderersTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/WidgetRenderersTest.java @@ -15,22 +15,23 @@ */ 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. @@ -97,7 +98,8 @@ public class WidgetRenderersTest extends MultiBrowserTest { 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 @@ -108,8 +110,9 @@ public class WidgetRenderersTest extends MultiBrowserTest { @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")); } }); } diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java index 92c7f3e6a6..3f0c9dc70b 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java @@ -26,7 +26,7 @@ import org.openqa.selenium.WebElement; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicClientFeaturesTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicClientFeaturesTest.java index d0e076fd3b..ad3e1fe5eb 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicClientFeaturesTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicClientFeaturesTest.java @@ -24,7 +24,7 @@ import com.vaadin.testbench.TestBenchElement; import com.vaadin.testbench.elements.GridElement; /** - * Variant of GridBasicFeaturesTest to be used with GridBasicClientFeatures. + * GridBasicClientFeatures. * * @since * @author Vaadin Ltd @@ -83,8 +83,7 @@ public abstract class GridBasicClientFeaturesTest extends GridBasicFeaturesTest 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(); } diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java index 0e339ec0ae..e22fcc422b 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java @@ -23,23 +23,18 @@ import org.openqa.selenium.JavascriptExecutor; 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 diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridClientDataSourcesTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridClientDataSourcesTest.java index 30d6541344..fb12178c9b 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridClientDataSourcesTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridClientDataSourcesTest.java @@ -27,7 +27,7 @@ import org.openqa.selenium.WebDriver; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridClientHeightByRowOnInitTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridClientHeightByRowOnInitTest.java index dadaff0eaa..86686225d0 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridClientHeightByRowOnInitTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridClientHeightByRowOnInitTest.java @@ -3,7 +3,7 @@ package com.vaadin.tests.components.grid.basicfeatures; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridDefaultTextRendererTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridDefaultTextRendererTest.java index 79eadd03d8..ae9a8fe381 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridDefaultTextRendererTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridDefaultTextRendererTest.java @@ -25,8 +25,8 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeightByRowOnInitTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeightByRowOnInitTest.java index 15a1cd6c85..651cd3a763 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeightByRowOnInitTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridHeightByRowOnInitTest.java @@ -3,7 +3,7 @@ package com.vaadin.tests.components.grid.basicfeatures; 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") diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridSortingIndicatorsTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridSortingIndicatorsTest.java index 6a5360f152..66c937aa81 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridSortingIndicatorsTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridSortingIndicatorsTest.java @@ -20,10 +20,8 @@ import java.io.IOException; 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 @@ -35,5 +33,4 @@ public class GridSortingIndicatorsTest extends MultiBrowserTest { compareScreen("reversedSort"); } - } diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridMultiSortingTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridMultiSortingTest.java index a61ed33029..1c0af8921b 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridMultiSortingTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridMultiSortingTest.java @@ -32,11 +32,7 @@ public class GridMultiSortingTest extends GridBasicFeaturesTest { @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 diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSortingTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSortingTest.java index 7e805595c6..2d6f7acffd 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSortingTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSortingTest.java @@ -33,11 +33,9 @@ import com.vaadin.shared.data.sort.SortDirection; 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 { diff --git a/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExtraSpacingTest.java b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExtraSpacingTest.java index 64b9997dcc..22c9c0d4e3 100644 --- a/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExtraSpacingTest.java +++ b/uitest/src/com/vaadin/tests/components/gridlayout/GridLayoutExtraSpacingTest.java @@ -25,6 +25,7 @@ import org.openqa.selenium.WebElement; 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 { diff --git a/uitest/src/com/vaadin/tests/components/javascriptcomponent/JavaScriptPreloadingTest.java b/uitest/src/com/vaadin/tests/components/javascriptcomponent/JavaScriptPreloadingTest.java index a9e7a1bca7..4009365814 100644 --- a/uitest/src/com/vaadin/tests/components/javascriptcomponent/JavaScriptPreloadingTest.java +++ b/uitest/src/com/vaadin/tests/components/javascriptcomponent/JavaScriptPreloadingTest.java @@ -29,23 +29,11 @@ import org.openqa.selenium.support.ui.WebDriverWait; 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 diff --git a/uitest/src/com/vaadin/tests/components/menubar/MenuBarTooltipsNearEdgeTest.java b/uitest/src/com/vaadin/tests/components/menubar/MenuBarTooltipsNearEdgeTest.java index 3cfe30a991..a460290ee0 100644 --- a/uitest/src/com/vaadin/tests/components/menubar/MenuBarTooltipsNearEdgeTest.java +++ b/uitest/src/com/vaadin/tests/components/menubar/MenuBarTooltipsNearEdgeTest.java @@ -41,11 +41,8 @@ public class MenuBarTooltipsNearEdgeTest extends MultiBrowserTest { @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 @@ -59,6 +56,5 @@ public class MenuBarTooltipsNearEdgeTest extends MultiBrowserTest { WebElement tooltip = getTooltipElement(); assertThat(tooltip.getLocation().x, is(lessThan(menuLocation.onPage().x - tooltip.getSize().getWidth()))); - } } diff --git a/uitest/src/com/vaadin/tests/components/nativeselect/NativeSelectsAndChromeKeyboardNavigationTest.java b/uitest/src/com/vaadin/tests/components/nativeselect/NativeSelectsAndChromeKeyboardNavigationTest.java index eb838c135e..4e23db8eb7 100644 --- a/uitest/src/com/vaadin/tests/components/nativeselect/NativeSelectsAndChromeKeyboardNavigationTest.java +++ b/uitest/src/com/vaadin/tests/components/nativeselect/NativeSelectsAndChromeKeyboardNavigationTest.java @@ -15,7 +15,6 @@ */ package com.vaadin.tests.components.nativeselect; -import java.util.Collections; import java.util.List; import org.junit.Assert; @@ -26,25 +25,15 @@ import org.openqa.selenium.WebElement; 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 @@ -72,30 +61,17 @@ public class NativeSelectsAndChromeKeyboardNavigationTest extends } - /* - * (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(); diff --git a/uitest/src/com/vaadin/tests/components/nativeselect/NativeSelectsFocusAndBlurListenerTests.java b/uitest/src/com/vaadin/tests/components/nativeselect/NativeSelectsFocusAndBlurListenerTests.java index bf81ca4390..194b1bb64b 100644 --- a/uitest/src/com/vaadin/tests/components/nativeselect/NativeSelectsFocusAndBlurListenerTests.java +++ b/uitest/src/com/vaadin/tests/components/nativeselect/NativeSelectsFocusAndBlurListenerTests.java @@ -21,6 +21,7 @@ import org.openqa.selenium.By; 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 { diff --git a/uitest/src/com/vaadin/tests/components/notification/NotificationsWaiAriaTest.java b/uitest/src/com/vaadin/tests/components/notification/NotificationsWaiAriaTest.java index 252efe2824..33ba8d1df0 100644 --- a/uitest/src/com/vaadin/tests/components/notification/NotificationsWaiAriaTest.java +++ b/uitest/src/com/vaadin/tests/components/notification/NotificationsWaiAriaTest.java @@ -31,7 +31,7 @@ import com.vaadin.tests.tb3.MultiBrowserTest; /** * Unit test class for Notification ARIA (Accessible Rich Internet Applications) * roles. - * + * * @since 7.2 * @author Vaadin Ltd */ @@ -39,7 +39,7 @@ public class NotificationsWaiAriaTest extends MultiBrowserTest { /** * Checks if the ARIA roles are correctly applied to Notification. - * + * * @since 7.2 * @throws Exception */ @@ -80,10 +80,7 @@ public class NotificationsWaiAriaTest extends MultiBrowserTest { 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)); @@ -97,10 +94,7 @@ public class NotificationsWaiAriaTest extends MultiBrowserTest { 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(); diff --git a/uitest/src/com/vaadin/tests/components/orderedlayout/CaptionLeakTest.java b/uitest/src/com/vaadin/tests/components/orderedlayout/CaptionLeakTest.java index a95ceca22b..9bb53d8742 100644 --- a/uitest/src/com/vaadin/tests/components/orderedlayout/CaptionLeakTest.java +++ b/uitest/src/com/vaadin/tests/components/orderedlayout/CaptionLeakTest.java @@ -19,6 +19,7 @@ import org.junit.Test; 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 { diff --git a/uitest/src/com/vaadin/tests/components/orderedlayout/VerticalLayoutFocusWithDOMChangesTest.java b/uitest/src/com/vaadin/tests/components/orderedlayout/VerticalLayoutFocusWithDOMChangesTest.java index 1afcabec1d..0890414fea 100644 --- a/uitest/src/com/vaadin/tests/components/orderedlayout/VerticalLayoutFocusWithDOMChangesTest.java +++ b/uitest/src/com/vaadin/tests/components/orderedlayout/VerticalLayoutFocusWithDOMChangesTest.java @@ -24,6 +24,7 @@ import org.openqa.selenium.interactions.Actions; 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 { @@ -54,8 +55,8 @@ 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")); @@ -86,8 +87,8 @@ public class VerticalLayoutFocusWithDOMChangesTest extends MultiBrowserTest { 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")); @@ -96,5 +97,4 @@ public class VerticalLayoutFocusWithDOMChangesTest extends MultiBrowserTest { tf2.getAttribute("value")); } } - } diff --git a/uitest/src/com/vaadin/tests/components/popupview/PopupViewResizeWhileOpenTest.java b/uitest/src/com/vaadin/tests/components/popupview/PopupViewResizeWhileOpenTest.java index ce528df373..aafd310b70 100644 --- a/uitest/src/com/vaadin/tests/components/popupview/PopupViewResizeWhileOpenTest.java +++ b/uitest/src/com/vaadin/tests/components/popupview/PopupViewResizeWhileOpenTest.java @@ -20,7 +20,6 @@ import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.lessThan; -import java.util.Collections; import java.util.List; import org.junit.Test; @@ -32,6 +31,7 @@ import org.openqa.selenium.remote.DesiredCapabilities; 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; /** @@ -75,6 +75,6 @@ public class PopupViewResizeWhileOpenTest extends MultiBrowserTest { @Override public List<DesiredCapabilities> getBrowsersToTest() { - return Collections.singletonList(Browser.IE8.getDesiredCapabilities()); + return getBrowserCapabilities(Browser.IE8); } } diff --git a/uitest/src/com/vaadin/tests/components/table/AddSelectionToRemovedRangeTest.java b/uitest/src/com/vaadin/tests/components/table/AddSelectionToRemovedRangeTest.java index 897511e41a..68b3748472 100644 --- a/uitest/src/com/vaadin/tests/components/table/AddSelectionToRemovedRangeTest.java +++ b/uitest/src/com/vaadin/tests/components/table/AddSelectionToRemovedRangeTest.java @@ -16,8 +16,6 @@ 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; @@ -29,22 +27,19 @@ import org.openqa.selenium.interactions.Actions; 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 diff --git a/uitest/src/com/vaadin/tests/components/table/ContextMenuSizeTest.java b/uitest/src/com/vaadin/tests/components/table/ContextMenuSizeTest.java index ac4c4cb558..e6b3ca2af4 100644 --- a/uitest/src/com/vaadin/tests/components/table/ContextMenuSizeTest.java +++ b/uitest/src/com/vaadin/tests/components/table/ContextMenuSizeTest.java @@ -19,7 +19,6 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.lessThan; -import java.util.ArrayList; import java.util.List; import org.junit.Test; @@ -28,25 +27,22 @@ import org.openqa.selenium.WebElement; 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 diff --git a/uitest/src/com/vaadin/tests/components/table/CtrlShiftMultiselectTest.java b/uitest/src/com/vaadin/tests/components/table/CtrlShiftMultiselectTest.java index 026d672044..add7db93f2 100644 --- a/uitest/src/com/vaadin/tests/components/table/CtrlShiftMultiselectTest.java +++ b/uitest/src/com/vaadin/tests/components/table/CtrlShiftMultiselectTest.java @@ -31,12 +31,7 @@ public class CtrlShiftMultiselectTest extends MultiBrowserTest { @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 diff --git a/uitest/src/com/vaadin/tests/components/table/DisabledSortingTableTest.java b/uitest/src/com/vaadin/tests/components/table/DisabledSortingTableTest.java index ed0cc631b1..bb15301eee 100644 --- a/uitest/src/com/vaadin/tests/components/table/DisabledSortingTableTest.java +++ b/uitest/src/com/vaadin/tests/components/table/DisabledSortingTableTest.java @@ -14,14 +14,17 @@ import com.vaadin.tests.tb3.MultiBrowserTest; 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"); @@ -32,13 +35,12 @@ public class DisabledSortingTableTest extends MultiBrowserTest { sortByEmptyArray(); assertThatFirstCellHasText("4"); - - openTestURL(DisabledSortingTable.class, "closeApplication"); } @Test public void emptySortingClearsIndicatorAndResetsSortingWithSQLContainer() { - openTestURL(DisabledSortingTableSqlContainer.class); + uiClass = DisabledSortingTableSqlContainer.class; + openTestURL(); assertThatFirstCellHasText("1"); @@ -49,8 +51,6 @@ public class DisabledSortingTableTest extends MultiBrowserTest { sortByEmptyArray(); assertThatFirstCellHasText("1"); - - openTestURL(DisabledSortingTableSqlContainer.class, "closeApplication"); } private void sortFirstColumnAscending() { @@ -91,8 +91,8 @@ public class DisabledSortingTableTest extends MultiBrowserTest { @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); } }); } diff --git a/uitest/src/com/vaadin/tests/components/table/MemoryLeakTableTest.java b/uitest/src/com/vaadin/tests/components/table/MemoryLeakTableTest.java index b4b8d93fbe..b254d27b58 100644 --- a/uitest/src/com/vaadin/tests/components/table/MemoryLeakTableTest.java +++ b/uitest/src/com/vaadin/tests/components/table/MemoryLeakTableTest.java @@ -26,21 +26,18 @@ import org.openqa.selenium.WebElement; 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 { /** diff --git a/uitest/src/com/vaadin/tests/components/table/SelectAllRowsTest.java b/uitest/src/com/vaadin/tests/components/table/SelectAllRowsTest.java index f6c6ca3ddc..175cbac9d5 100644 --- a/uitest/src/com/vaadin/tests/components/table/SelectAllRowsTest.java +++ b/uitest/src/com/vaadin/tests/components/table/SelectAllRowsTest.java @@ -18,7 +18,6 @@ package com.vaadin.tests.components.table; 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; @@ -51,12 +50,7 @@ public class SelectAllRowsTest extends MultiBrowserTest { @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 diff --git a/uitest/src/com/vaadin/tests/components/table/TableColumnResizeContentsWidthIE8Test.java b/uitest/src/com/vaadin/tests/components/table/TableColumnResizeContentsWidthIE8Test.java index 8bace7e23a..3de2ceb200 100644 --- a/uitest/src/com/vaadin/tests/components/table/TableColumnResizeContentsWidthIE8Test.java +++ b/uitest/src/com/vaadin/tests/components/table/TableColumnResizeContentsWidthIE8Test.java @@ -1,26 +1,23 @@ 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 diff --git a/uitest/src/com/vaadin/tests/components/table/TableColumnResizeContentsWidthTest.java b/uitest/src/com/vaadin/tests/components/table/TableColumnResizeContentsWidthTest.java index 5faee3cc59..9072d13263 100644 --- a/uitest/src/com/vaadin/tests/components/table/TableColumnResizeContentsWidthTest.java +++ b/uitest/src/com/vaadin/tests/components/table/TableColumnResizeContentsWidthTest.java @@ -15,9 +15,10 @@ */ 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; @@ -26,9 +27,9 @@ import org.openqa.selenium.interactions.Actions; 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 @@ -40,13 +41,7 @@ public class TableColumnResizeContentsWidthTest extends MultiBrowserTest { @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 diff --git a/uitest/src/com/vaadin/tests/components/table/TableNavigationPageDownTest.java b/uitest/src/com/vaadin/tests/components/table/TableNavigationPageDownTest.java index fc3fd2610c..4ab42a5f94 100644 --- a/uitest/src/com/vaadin/tests/components/table/TableNavigationPageDownTest.java +++ b/uitest/src/com/vaadin/tests/components/table/TableNavigationPageDownTest.java @@ -18,7 +18,6 @@ package com.vaadin.tests.components.table; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; -import java.util.ArrayList; import java.util.List; import org.junit.Test; @@ -31,6 +30,7 @@ import org.openqa.selenium.remote.DesiredCapabilities; 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; /** @@ -47,15 +47,11 @@ public class TableNavigationPageDownTest extends 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 @@ -73,7 +69,7 @@ public class TableNavigationPageDownTest extends MultiBrowserTest { } private void sendKeyUntilEndIsReached(Keys key) { - while(true) { + while (true) { int lastVisibleRowNumber = getLastVisibleRowNumber(); sendKey(key); @@ -116,7 +112,8 @@ public class TableNavigationPageDownTest extends MultiBrowserTest { @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( @@ -132,7 +129,8 @@ public class TableNavigationPageDownTest extends MultiBrowserTest { @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(); diff --git a/uitest/src/com/vaadin/tests/components/table/TableScrollAfterAddRowTest.java b/uitest/src/com/vaadin/tests/components/table/TableScrollAfterAddRowTest.java index 9242bae3d8..d390b57823 100644 --- a/uitest/src/com/vaadin/tests/components/table/TableScrollAfterAddRowTest.java +++ b/uitest/src/com/vaadin/tests/components/table/TableScrollAfterAddRowTest.java @@ -31,10 +31,6 @@ import com.vaadin.testbench.screenshot.ImageComparison; import com.vaadin.testbench.screenshot.ReferenceNameGenerator; import com.vaadin.tests.tb3.MultiBrowserTest; -/** - * - * @author Vaadin Ltd - */ public class TableScrollAfterAddRowTest extends MultiBrowserTest { @Before @@ -45,6 +41,7 @@ public class TableScrollAfterAddRowTest extends MultiBrowserTest { @Test public void testJumpToFirstRow() throws InterruptedException { jumpToFifteenthRow(); + sleep(300); jumpToFirstRow(); assertEquals("0", getCurrentPageFirstItemIndex()); } diff --git a/uitest/src/com/vaadin/tests/components/table/TableWithPollingTest.java b/uitest/src/com/vaadin/tests/components/table/TableWithPollingTest.java index 3e12333a6d..14994f8b02 100644 --- a/uitest/src/com/vaadin/tests/components/table/TableWithPollingTest.java +++ b/uitest/src/com/vaadin/tests/components/table/TableWithPollingTest.java @@ -88,8 +88,6 @@ public class TableWithPollingTest extends MultiBrowserTest { // 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(); } } diff --git a/uitest/src/com/vaadin/tests/components/table/UnnecessaryScrollbarWhenZoomingTest.java b/uitest/src/com/vaadin/tests/components/table/UnnecessaryScrollbarWhenZoomingTest.java index df01800180..f0325ed77b 100644 --- a/uitest/src/com/vaadin/tests/components/table/UnnecessaryScrollbarWhenZoomingTest.java +++ b/uitest/src/com/vaadin/tests/components/table/UnnecessaryScrollbarWhenZoomingTest.java @@ -34,6 +34,7 @@ import org.openqa.selenium.support.ui.WebDriverWait; 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 { diff --git a/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetFocusedTabTest.java b/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetFocusedTabTest.java index 12ae03080b..52003bbac9 100644 --- a/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetFocusedTabTest.java +++ b/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetFocusedTabTest.java @@ -33,11 +33,9 @@ public class TabSheetFocusedTabTest 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 diff --git a/uitest/src/com/vaadin/tests/components/ui/DynamicViewportEmptyTest.java b/uitest/src/com/vaadin/tests/components/ui/DynamicViewportEmptyTest.java index 40ec937c1c..55466130ad 100644 --- a/uitest/src/com/vaadin/tests/components/ui/DynamicViewportEmptyTest.java +++ b/uitest/src/com/vaadin/tests/components/ui/DynamicViewportEmptyTest.java @@ -15,7 +15,6 @@ */ package com.vaadin.tests.components.ui; -import java.util.Arrays; import java.util.List; import org.junit.Assert; @@ -24,6 +23,7 @@ import org.openqa.selenium.By; 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 { @@ -35,7 +35,7 @@ public class DynamicViewportEmptyTest extends MultiBrowserTest { @Override public List<DesiredCapabilities> getBrowsersToTest() { - return Arrays.asList(Browser.CHROME.getDesiredCapabilities()); + return getBrowserCapabilities(Browser.CHROME); } @Test diff --git a/uitest/src/com/vaadin/tests/components/ui/TextAreaEventPropagationModifierKeysTest.java b/uitest/src/com/vaadin/tests/components/ui/TextAreaEventPropagationModifierKeysTest.java index fca312ba7e..43422feb58 100644 --- a/uitest/src/com/vaadin/tests/components/ui/TextAreaEventPropagationModifierKeysTest.java +++ b/uitest/src/com/vaadin/tests/components/ui/TextAreaEventPropagationModifierKeysTest.java @@ -25,6 +25,7 @@ import org.openqa.selenium.interactions.Actions; 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 { @@ -67,17 +68,9 @@ 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 diff --git a/uitest/src/com/vaadin/tests/components/uitest/UIScrollingTest.java b/uitest/src/com/vaadin/tests/components/uitest/UIScrollingTest.java index 46d79a2ce5..cf6a6ac821 100644 --- a/uitest/src/com/vaadin/tests/components/uitest/UIScrollingTest.java +++ b/uitest/src/com/vaadin/tests/components/uitest/UIScrollingTest.java @@ -22,7 +22,6 @@ import java.util.List; 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; @@ -58,10 +57,7 @@ public class UIScrollingTest extends MultiBrowserTest { 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); @@ -74,9 +70,7 @@ public class UIScrollingTest extends MultiBrowserTest { assertEquals("Scrolled to 1020 px", notification.findElement(By.tagName("h1")).getText()); - try { - notification.closeNotification(); - } catch (StaleElementReferenceException e) { - } + notification.close(); + } } diff --git a/uitest/src/com/vaadin/tests/components/upload/TestFileUploadTest.java b/uitest/src/com/vaadin/tests/components/upload/TestFileUploadTest.java index ae966a5b07..f1d5432344 100644 --- a/uitest/src/com/vaadin/tests/components/upload/TestFileUploadTest.java +++ b/uitest/src/com/vaadin/tests/components/upload/TestFileUploadTest.java @@ -41,9 +41,7 @@ public class TestFileUploadTest extends MultiBrowserTest { @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 diff --git a/uitest/src/com/vaadin/tests/components/window/CloseShortcutTest.java b/uitest/src/com/vaadin/tests/components/window/CloseShortcutTest.java index 7cca2ce4d0..df7b7cad0c 100644 --- a/uitest/src/com/vaadin/tests/components/window/CloseShortcutTest.java +++ b/uitest/src/com/vaadin/tests/components/window/CloseShortcutTest.java @@ -24,11 +24,13 @@ import org.openqa.selenium.By; 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; /** @@ -101,12 +103,9 @@ public class CloseShortcutTest extends 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(); } } @@ -123,8 +122,7 @@ public class CloseShortcutTest extends MultiBrowserTest { public void testCtrlWithAll() { attemptCtrlShortcut(); // TODO: remove this check once #14902 has been fixed - if (Browser.PHANTOMJS.getDesiredCapabilities().equals( - getDesiredCapabilities())) { + if (BrowserUtil.isPhantomJS(getDesiredCapabilities())) { ensureWindowClosed(); } } @@ -141,9 +139,8 @@ public class CloseShortcutTest extends MultiBrowserTest { 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(); } } diff --git a/uitest/src/com/vaadin/tests/components/window/SubWindowsTextSelectionTest.java b/uitest/src/com/vaadin/tests/components/window/SubWindowsTextSelectionTest.java index 335590437d..e0cc240d6d 100644 --- a/uitest/src/com/vaadin/tests/components/window/SubWindowsTextSelectionTest.java +++ b/uitest/src/com/vaadin/tests/components/window/SubWindowsTextSelectionTest.java @@ -15,7 +15,6 @@ */ package com.vaadin.tests.components.window; -import java.util.ArrayList; import java.util.List; import org.junit.Assert; @@ -27,6 +26,7 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.remote.DesiredCapabilities; +import com.vaadin.testbench.parallel.Browser; import com.vaadin.tests.tb3.MultiBrowserTest; /** @@ -48,18 +48,9 @@ public class SubWindowsTextSelectionTest extends 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 diff --git a/uitest/src/com/vaadin/tests/components/window/WindowBGColorChameleonIE8Test.java b/uitest/src/com/vaadin/tests/components/window/WindowBGColorChameleonIE8Test.java index 18cb012cb2..4e9bffe3e8 100644 --- a/uitest/src/com/vaadin/tests/components/window/WindowBGColorChameleonIE8Test.java +++ b/uitest/src/com/vaadin/tests/components/window/WindowBGColorChameleonIE8Test.java @@ -7,7 +7,7 @@ import java.util.List; 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 { @@ -19,9 +19,7 @@ public class WindowBGColorChameleonIE8Test extends SingleBrowserTest { */ @Override public List<DesiredCapabilities> getBrowsersToTest() { - - return Arrays.asList(MultiBrowserTest.Browser.IE8 - .getDesiredCapabilities()); + return Arrays.asList(Browser.IE8.getDesiredCapabilities()); } @Test diff --git a/uitest/src/com/vaadin/tests/components/window/WindowShadowTest.java b/uitest/src/com/vaadin/tests/components/window/WindowShadowTest.java index 0bd6c9fa44..3cc310eeb4 100644 --- a/uitest/src/com/vaadin/tests/components/window/WindowShadowTest.java +++ b/uitest/src/com/vaadin/tests/components/window/WindowShadowTest.java @@ -17,7 +17,6 @@ package com.vaadin.tests.components.window; import java.awt.AWTException; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import org.junit.Test; @@ -61,9 +60,6 @@ public class WindowShadowTest extends MultiBrowserTest { // 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 diff --git a/uitest/src/com/vaadin/tests/debug/PushVersionInfoTest.java b/uitest/src/com/vaadin/tests/debug/PushVersionInfoTest.java index 90ea645ab8..d0eee99009 100644 --- a/uitest/src/com/vaadin/tests/debug/PushVersionInfoTest.java +++ b/uitest/src/com/vaadin/tests/debug/PushVersionInfoTest.java @@ -24,7 +24,7 @@ import org.openqa.selenium.Keys; 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; /** diff --git a/uitest/src/com/vaadin/tests/extensions/SetThemeAndResponsiveLayoutTest.java b/uitest/src/com/vaadin/tests/extensions/SetThemeAndResponsiveLayoutTest.java index 8a1fbde245..0d0b388541 100644 --- a/uitest/src/com/vaadin/tests/extensions/SetThemeAndResponsiveLayoutTest.java +++ b/uitest/src/com/vaadin/tests/extensions/SetThemeAndResponsiveLayoutTest.java @@ -43,7 +43,7 @@ public class SetThemeAndResponsiveLayoutTest extends 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 diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRowTest.java b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRowTest.java index bdf8603c48..7b18053052 100644 --- a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRowTest.java +++ b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRowTest.java @@ -27,7 +27,7 @@ import com.vaadin.testbench.elements.DateFieldElement; 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") diff --git a/uitest/src/com/vaadin/tests/integration/AbstractIntegrationTest.java b/uitest/src/com/vaadin/tests/integration/AbstractIntegrationTest.java index 073975a509..5dd59a8245 100644 --- a/uitest/src/com/vaadin/tests/integration/AbstractIntegrationTest.java +++ b/uitest/src/com/vaadin/tests/integration/AbstractIntegrationTest.java @@ -15,8 +15,8 @@ */ 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 diff --git a/uitest/src/com/vaadin/tests/layouts/IE8MeasuredSizeMemoryLeakTest.java b/uitest/src/com/vaadin/tests/layouts/IE8MeasuredSizeMemoryLeakTest.java index bfe38b8865..33adb622c0 100644 --- a/uitest/src/com/vaadin/tests/layouts/IE8MeasuredSizeMemoryLeakTest.java +++ b/uitest/src/com/vaadin/tests/layouts/IE8MeasuredSizeMemoryLeakTest.java @@ -15,7 +15,6 @@ */ package com.vaadin.tests.layouts; -import java.util.Collections; import java.util.List; import org.junit.Assert; @@ -23,6 +22,7 @@ import org.junit.Test; 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 { @@ -49,6 +49,6 @@ public class IE8MeasuredSizeMemoryLeakTest extends MultiBrowserTest { @Override public List<DesiredCapabilities> getBrowsersToTest() { - return Collections.singletonList(Browser.IE8.getDesiredCapabilities()); + return getBrowserCapabilities(Browser.IE8); } } diff --git a/uitest/src/com/vaadin/tests/push/BarInUIDLTest.java b/uitest/src/com/vaadin/tests/push/BarInUIDLTest.java index 4013494c49..7bd1de5803 100644 --- a/uitest/src/com/vaadin/tests/push/BarInUIDLTest.java +++ b/uitest/src/com/vaadin/tests/push/BarInUIDLTest.java @@ -19,7 +19,7 @@ import org.junit.Assert; 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") diff --git a/uitest/src/com/vaadin/tests/push/BasicPushTest.java b/uitest/src/com/vaadin/tests/push/BasicPushTest.java index fd34a1f192..5bac54f0f7 100644 --- a/uitest/src/com/vaadin/tests/push/BasicPushTest.java +++ b/uitest/src/com/vaadin/tests/push/BasicPushTest.java @@ -20,7 +20,7 @@ import org.openqa.selenium.WebDriver; 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; diff --git a/uitest/src/com/vaadin/tests/push/EnableDisablePushTest.java b/uitest/src/com/vaadin/tests/push/EnableDisablePushTest.java index 03b34655a1..654108f8f9 100644 --- a/uitest/src/com/vaadin/tests/push/EnableDisablePushTest.java +++ b/uitest/src/com/vaadin/tests/push/EnableDisablePushTest.java @@ -20,7 +20,7 @@ import static org.junit.Assert.assertEquals; 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") diff --git a/uitest/src/com/vaadin/tests/push/IdlePushChannelTest.java b/uitest/src/com/vaadin/tests/push/IdlePushChannelTest.java index 4b142500f7..344f551f00 100644 --- a/uitest/src/com/vaadin/tests/push/IdlePushChannelTest.java +++ b/uitest/src/com/vaadin/tests/push/IdlePushChannelTest.java @@ -18,7 +18,7 @@ package com.vaadin.tests.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") diff --git a/uitest/src/com/vaadin/tests/push/PushConfigurationTest.java b/uitest/src/com/vaadin/tests/push/PushConfigurationTest.java index 396160cc7d..d42352161e 100644 --- a/uitest/src/com/vaadin/tests/push/PushConfigurationTest.java +++ b/uitest/src/com/vaadin/tests/push/PushConfigurationTest.java @@ -22,7 +22,7 @@ import org.openqa.selenium.WebElement; 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") diff --git a/uitest/src/com/vaadin/tests/push/PushConfigurationWebSocketTest.java b/uitest/src/com/vaadin/tests/push/PushConfigurationWebSocketTest.java index 475fa2165f..501d946fcc 100644 --- a/uitest/src/com/vaadin/tests/push/PushConfigurationWebSocketTest.java +++ b/uitest/src/com/vaadin/tests/push/PushConfigurationWebSocketTest.java @@ -28,13 +28,7 @@ public class PushConfigurationWebSocketTest extends PushConfigurationTest { @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 diff --git a/uitest/src/com/vaadin/tests/push/PushErrorHandlingTest.java b/uitest/src/com/vaadin/tests/push/PushErrorHandlingTest.java index 1f6e181c89..2683868db5 100644 --- a/uitest/src/com/vaadin/tests/push/PushErrorHandlingTest.java +++ b/uitest/src/com/vaadin/tests/push/PushErrorHandlingTest.java @@ -21,7 +21,8 @@ import org.openqa.selenium.By; 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") diff --git a/uitest/src/com/vaadin/tests/push/PushFromInitTest.java b/uitest/src/com/vaadin/tests/push/PushFromInitTest.java index a285d91e92..fe7ebebef1 100644 --- a/uitest/src/com/vaadin/tests/push/PushFromInitTest.java +++ b/uitest/src/com/vaadin/tests/push/PushFromInitTest.java @@ -19,7 +19,7 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/push/PushLargeDataLongPollingTest.java b/uitest/src/com/vaadin/tests/push/PushLargeDataLongPollingTest.java index e37bd32832..23255aadea 100644 --- a/uitest/src/com/vaadin/tests/push/PushLargeDataLongPollingTest.java +++ b/uitest/src/com/vaadin/tests/push/PushLargeDataLongPollingTest.java @@ -19,7 +19,7 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/push/PushLargeDataStreamingTest.java b/uitest/src/com/vaadin/tests/push/PushLargeDataStreamingTest.java index 058ac6cc92..0c00cf116f 100644 --- a/uitest/src/com/vaadin/tests/push/PushLargeDataStreamingTest.java +++ b/uitest/src/com/vaadin/tests/push/PushLargeDataStreamingTest.java @@ -19,7 +19,7 @@ import org.junit.Test; 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") diff --git a/uitest/src/com/vaadin/tests/push/RefreshCloseConnectionTest.java b/uitest/src/com/vaadin/tests/push/RefreshCloseConnectionTest.java index 42babb00d0..47773b87b6 100644 --- a/uitest/src/com/vaadin/tests/push/RefreshCloseConnectionTest.java +++ b/uitest/src/com/vaadin/tests/push/RefreshCloseConnectionTest.java @@ -17,13 +17,12 @@ package com.vaadin.tests.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 { diff --git a/uitest/src/com/vaadin/tests/push/SendMultibyteCharactersTest.java b/uitest/src/com/vaadin/tests/push/SendMultibyteCharactersTest.java index a639f7dbe3..69e5de960a 100644 --- a/uitest/src/com/vaadin/tests/push/SendMultibyteCharactersTest.java +++ b/uitest/src/com/vaadin/tests/push/SendMultibyteCharactersTest.java @@ -1,10 +1,11 @@ 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 { diff --git a/uitest/src/com/vaadin/tests/push/TogglePushTest.java b/uitest/src/com/vaadin/tests/push/TogglePushTest.java index 3ca12fdd84..d93802125c 100644 --- a/uitest/src/com/vaadin/tests/push/TogglePushTest.java +++ b/uitest/src/com/vaadin/tests/push/TogglePushTest.java @@ -19,7 +19,7 @@ import org.junit.Assert; 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") diff --git a/uitest/src/com/vaadin/tests/push/TrackMessageSizeUITest.java b/uitest/src/com/vaadin/tests/push/TrackMessageSizeUITest.java index b4af11b864..35d0f0ad5f 100644 --- a/uitest/src/com/vaadin/tests/push/TrackMessageSizeUITest.java +++ b/uitest/src/com/vaadin/tests/push/TrackMessageSizeUITest.java @@ -18,7 +18,7 @@ package com.vaadin.tests.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") diff --git a/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java b/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java index 3cec3a7bd5..99ae88805a 100644 --- a/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java +++ b/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java @@ -16,15 +16,9 @@ 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; @@ -38,22 +32,17 @@ import org.apache.http.HttpHost; 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; @@ -65,17 +54,17 @@ import com.google.gwt.thirdparty.guava.common.base.Joiner; 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; @@ -97,8 +86,8 @@ import elemental.json.impl.JsonUtil; * * @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(); @@ -118,17 +107,9 @@ public abstract class AbstractTB3Test extends TestBenchTestCase { */ 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 @@ -141,61 +122,14 @@ public abstract class AbstractTB3Test extends TestBenchTestCase { * * @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; @@ -208,12 +142,16 @@ public abstract class AbstractTB3Test extends TestBenchTestCase { } - 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(); + } } } @@ -276,47 +214,6 @@ public abstract class AbstractTB3Test extends TestBenchTestCase { 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 @@ -334,7 +231,7 @@ public abstract class AbstractTB3Test extends TestBenchTestCase { protected void openTestURL(Class<?> uiClass, String... parameters) { String url = getTestURL(uiClass); - if(parameters.length > 0) { + if (parameters.length > 0) { url += "?" + Joiner.on("&").join(parameters); } @@ -352,29 +249,15 @@ public abstract class AbstractTB3Test extends TestBenchTestCase { /** * 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 host name of development server @@ -401,59 +284,13 @@ public abstract class AbstractTB3Test extends TestBenchTestCase { * * @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] -> * PID_Scheckboxaction-Enabled/domChild[0]). @@ -913,264 +750,6 @@ public abstract class AbstractTB3Test extends TestBenchTestCase { } /** - * 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 * @@ -1342,17 +921,4 @@ public abstract class AbstractTB3Test extends TestBenchTestCase { 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; - } - } - } diff --git a/uitest/src/com/vaadin/tests/tb3/AffectedTB3Tests.java b/uitest/src/com/vaadin/tests/tb3/AffectedTB3Tests.java index 6736bc3990..128214de1e 100644 --- a/uitest/src/com/vaadin/tests/tb3/AffectedTB3Tests.java +++ b/uitest/src/com/vaadin/tests/tb3/AffectedTB3Tests.java @@ -1,5 +1,7 @@ package com.vaadin.tests.tb3; +import java.io.IOException; + import org.junit.runner.RunWith; import org.junit.runners.model.InitializationError; @@ -18,7 +20,8 @@ public class AffectedTB3Tests { 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()); diff --git a/uitest/src/com/vaadin/tests/tb3/AllTB3Tests.java b/uitest/src/com/vaadin/tests/tb3/AllTB3Tests.java index b7cc8284d1..338855ba1c 100644 --- a/uitest/src/com/vaadin/tests/tb3/AllTB3Tests.java +++ b/uitest/src/com/vaadin/tests/tb3/AllTB3Tests.java @@ -16,6 +16,8 @@ package com.vaadin.tests.tb3; +import java.io.IOException; + import org.junit.runner.RunWith; import org.junit.runners.model.InitializationError; @@ -32,7 +34,8 @@ public class AllTB3Tests { 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" }); } diff --git a/uitest/src/com/vaadin/tests/tb3/ChangedTB3Tests.java b/uitest/src/com/vaadin/tests/tb3/ChangedTB3Tests.java index 2200566b84..3c7030b1e9 100644 --- a/uitest/src/com/vaadin/tests/tb3/ChangedTB3Tests.java +++ b/uitest/src/com/vaadin/tests/tb3/ChangedTB3Tests.java @@ -15,6 +15,8 @@ */ package com.vaadin.tests.tb3; +import java.io.IOException; + import org.junit.runner.RunWith; import org.junit.runners.model.InitializationError; @@ -31,7 +33,8 @@ import com.vaadin.tests.tb3.ChangedTB3Tests.ChangedTB3TestsSuite; @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()); diff --git a/uitest/src/com/vaadin/tests/tb3/DndActionsTest.java b/uitest/src/com/vaadin/tests/tb3/DndActionsTest.java index 96a2280323..71d6b6fab4 100644 --- a/uitest/src/com/vaadin/tests/tb3/DndActionsTest.java +++ b/uitest/src/com/vaadin/tests/tb3/DndActionsTest.java @@ -19,6 +19,8 @@ import org.junit.Ignore; 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. diff --git a/uitest/src/com/vaadin/tests/tb3/MultiBrowserTest.java b/uitest/src/com/vaadin/tests/tb3/MultiBrowserTest.java index 19f62d69ee..acf9d7a815 100644 --- a/uitest/src/com/vaadin/tests/tb3/MultiBrowserTest.java +++ b/uitest/src/com/vaadin/tests/tb3/MultiBrowserTest.java @@ -17,11 +17,14 @@ 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 @@ -41,100 +44,67 @@ import org.openqa.selenium.remote.DesiredCapabilities; 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; + } } diff --git a/uitest/src/com/vaadin/tests/tb3/MultiBrowserTestWithProxy.java b/uitest/src/com/vaadin/tests/tb3/MultiBrowserTestWithProxy.java index 921fa080cd..f8b01fb11b 100755 --- a/uitest/src/com/vaadin/tests/tb3/MultiBrowserTestWithProxy.java +++ b/uitest/src/com/vaadin/tests/tb3/MultiBrowserTestWithProxy.java @@ -23,7 +23,7 @@ import org.junit.After; 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 { diff --git a/uitest/src/com/vaadin/tests/tb3/PrivateTB3Configuration.java b/uitest/src/com/vaadin/tests/tb3/PrivateTB3Configuration.java index a4645262a5..8f8e446ce3 100644 --- a/uitest/src/com/vaadin/tests/tb3/PrivateTB3Configuration.java +++ b/uitest/src/com/vaadin/tests/tb3/PrivateTB3Configuration.java @@ -22,21 +22,11 @@ import java.io.IOException; 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. @@ -45,6 +35,8 @@ import com.vaadin.tests.tb3.MultiBrowserTest.Browser; * * @author Vaadin Ltd */ +@RunOnHub("tb3-hub.intra.itmill.com") +@BrowserFactory(VaadinBrowserFactory.class) public abstract class PrivateTB3Configuration extends ScreenshotTB3Test { /** * @@ -101,7 +93,7 @@ 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(); } @@ -109,11 +101,6 @@ public abstract class PrivateTB3Configuration extends ScreenshotTB3Test { } @Override - protected String getHubHostname() { - return "tb3-hub.intra.itmill.com"; - } - - @Override protected String getBaseURL() { String url = getProperty(DEPLOYMENT_PROPERTY); if (url == null || url.trim().isEmpty()) { @@ -203,81 +190,4 @@ public abstract class PrivateTB3Configuration extends ScreenshotTB3Test { 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())); - } - } } diff --git a/uitest/src/com/vaadin/tests/tb3/ScreenshotTB3Test.java b/uitest/src/com/vaadin/tests/tb3/ScreenshotTB3Test.java index 4a4354d67c..f401e0613b 100644 --- a/uitest/src/com/vaadin/tests/tb3/ScreenshotTB3Test.java +++ b/uitest/src/com/vaadin/tests/tb3/ScreenshotTB3Test.java @@ -16,32 +16,26 @@ 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 @@ -51,6 +45,29 @@ import com.vaadin.testbench.commands.TestBenchCommands; */ 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 @@ -331,48 +348,15 @@ public abstract class ScreenshotTB3Test extends AbstractTB3Test { } - /* - * (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"; } /** @@ -409,10 +393,9 @@ public abstract class ScreenshotTB3Test extends AbstractTB3Test { Integer versionOverride) { String uniqueBrowserIdentifier; if (versionOverride == null) { - uniqueBrowserIdentifier = BrowserUtil - .getUniqueIdentifier(getDesiredCapabilities()); + uniqueBrowserIdentifier = getUniqueIdentifier(getDesiredCapabilities()); } else { - uniqueBrowserIdentifier = BrowserUtil.getUniqueIdentifier( + uniqueBrowserIdentifier = getUniqueIdentifier( getDesiredCapabilities(), "" + versionOverride); } @@ -423,6 +406,40 @@ public abstract class ScreenshotTB3Test extends AbstractTB3Test { } /** + * 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()}* * are owned by this test instance (taking into account diff --git a/uitest/src/com/vaadin/tests/tb3/ServletIntegrationTests.java b/uitest/src/com/vaadin/tests/tb3/ServletIntegrationTests.java index 294d012be5..77c5676215 100644 --- a/uitest/src/com/vaadin/tests/tb3/ServletIntegrationTests.java +++ b/uitest/src/com/vaadin/tests/tb3/ServletIntegrationTests.java @@ -16,6 +16,8 @@ package com.vaadin.tests.tb3; +import java.io.IOException; + import org.junit.runner.RunWith; import org.junit.runners.model.InitializationError; @@ -27,7 +29,7 @@ public class ServletIntegrationTests { 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[] {}); } diff --git a/uitest/src/com/vaadin/tests/tb3/SingleBrowserTest.java b/uitest/src/com/vaadin/tests/tb3/SingleBrowserTest.java index f5dc337138..960d6b8777 100644 --- a/uitest/src/com/vaadin/tests/tb3/SingleBrowserTest.java +++ b/uitest/src/com/vaadin/tests/tb3/SingleBrowserTest.java @@ -20,12 +20,12 @@ import java.util.List; 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()); } - } diff --git a/uitest/src/com/vaadin/tests/tb3/TB3Runner.java b/uitest/src/com/vaadin/tests/tb3/TB3Runner.java index 0d540644bf..acdef54492 100644 --- a/uitest/src/com/vaadin/tests/tb3/TB3Runner.java +++ b/uitest/src/com/vaadin/tests/tb3/TB3Runner.java @@ -16,34 +16,16 @@ 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 @@ -53,7 +35,7 @@ import com.vaadin.tests.tb3.MultiBrowserTest.Browser; * * @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 @@ -62,24 +44,7 @@ public class TB3Runner extends BlockJUnit4ClassRunner { */ 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 { @@ -89,11 +54,16 @@ public class TB3Runner extends BlockJUnit4ClassRunner { 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) { @@ -103,311 +73,8 @@ public class TB3Runner extends BlockJUnit4ClassRunner { } } - 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)); - } - } } diff --git a/uitest/src/com/vaadin/tests/tb3/TB3TestSuite.java b/uitest/src/com/vaadin/tests/tb3/TB3TestSuite.java index b0554ce0f6..c68d59a4eb 100644 --- a/uitest/src/com/vaadin/tests/tb3/TB3TestSuite.java +++ b/uitest/src/com/vaadin/tests/tb3/TB3TestSuite.java @@ -16,46 +16,33 @@ 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<?>[] {})); } } diff --git a/uitest/src/com/vaadin/tests/tb3/TestNameSuffix.java b/uitest/src/com/vaadin/tests/tb3/TestNameSuffix.java deleted file mode 100644 index 615cd8d5b7..0000000000 --- a/uitest/src/com/vaadin/tests/tb3/TestNameSuffix.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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(); - -} diff --git a/uitest/src/com/vaadin/tests/tb3/VaadinBrowserFactory.java b/uitest/src/com/vaadin/tests/tb3/VaadinBrowserFactory.java new file mode 100644 index 0000000000..f55b434ee0 --- /dev/null +++ b/uitest/src/com/vaadin/tests/tb3/VaadinBrowserFactory.java @@ -0,0 +1,60 @@ +/* + * 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); + } +} diff --git a/uitest/src/com/vaadin/tests/tb3/WebsocketTest.java b/uitest/src/com/vaadin/tests/tb3/WebsocketTest.java index 7f65357a65..ee8cab22fd 100644 --- a/uitest/src/com/vaadin/tests/tb3/WebsocketTest.java +++ b/uitest/src/com/vaadin/tests/tb3/WebsocketTest.java @@ -19,14 +19,11 @@ */ 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 @@ -39,7 +36,6 @@ public abstract class WebsocketTest extends MultiBrowserTest { @Override public List<DesiredCapabilities> getBrowsersToTest() { - return new ArrayList<DesiredCapabilities>( - getBrowsersSupportingWebSocket()); + return getBrowsersSupportingWebSocket(); } } diff --git a/uitest/src/com/vaadin/tests/tb3/newelements/CalendarElement.java b/uitest/src/com/vaadin/tests/tb3/newelements/CalendarElement.java index e5213b21b5..40475afd3c 100644 --- a/uitest/src/com/vaadin/tests/tb3/newelements/CalendarElement.java +++ b/uitest/src/com/vaadin/tests/tb3/newelements/CalendarElement.java @@ -5,7 +5,7 @@ import java.util.List; 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 diff --git a/uitest/src/com/vaadin/tests/tb3/newelements/FixedNotificationElement.java b/uitest/src/com/vaadin/tests/tb3/newelements/FixedNotificationElement.java index ff7715e281..a3eb952ea7 100644 --- a/uitest/src/com/vaadin/tests/tb3/newelements/FixedNotificationElement.java +++ b/uitest/src/com/vaadin/tests/tb3/newelements/FixedNotificationElement.java @@ -6,16 +6,18 @@ import org.openqa.selenium.support.ui.WebDriverWait; 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); diff --git a/uitest/src/com/vaadin/tests/tb3/newelements/WindowElement.java b/uitest/src/com/vaadin/tests/tb3/newelements/WindowElement.java index 9e3433f1af..34344324d0 100644 --- a/uitest/src/com/vaadin/tests/tb3/newelements/WindowElement.java +++ b/uitest/src/com/vaadin/tests/tb3/newelements/WindowElement.java @@ -4,7 +4,7 @@ import org.openqa.selenium.WebElement; 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 @@ -59,6 +59,7 @@ public class WindowElement extends com.vaadin.testbench.elements.WindowElement { /** * @return the caption of the window */ + @Override public String getCaption() { return findElement(By.className("v-window-header")).getText(); } diff --git a/uitest/src/com/vaadin/tests/themes/ThemeChangeOnTheFlyTest.java b/uitest/src/com/vaadin/tests/themes/ThemeChangeOnTheFlyTest.java index a5657c4eec..79da9f902d 100644 --- a/uitest/src/com/vaadin/tests/themes/ThemeChangeOnTheFlyTest.java +++ b/uitest/src/com/vaadin/tests/themes/ThemeChangeOnTheFlyTest.java @@ -15,8 +15,12 @@ */ 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; @@ -24,11 +28,8 @@ import org.openqa.selenium.WebElement; 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 { @@ -36,9 +37,7 @@ 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 diff --git a/uitest/src/com/vaadin/tests/themes/valo/ImmediateUploadTest.java b/uitest/src/com/vaadin/tests/themes/valo/ImmediateUploadTest.java index 87827b1358..137b845e52 100644 --- a/uitest/src/com/vaadin/tests/themes/valo/ImmediateUploadTest.java +++ b/uitest/src/com/vaadin/tests/themes/valo/ImmediateUploadTest.java @@ -19,12 +19,10 @@ import static org.hamcrest.CoreMatchers.is; 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; @@ -37,11 +35,6 @@ 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(); openTestURL(); diff --git a/uitest/src/com/vaadin/tests/themes/valo/TextFieldBevelTest.java b/uitest/src/com/vaadin/tests/themes/valo/TextFieldBevelTest.java index 9159b71961..efe194d28a 100644 --- a/uitest/src/com/vaadin/tests/themes/valo/TextFieldBevelTest.java +++ b/uitest/src/com/vaadin/tests/themes/valo/TextFieldBevelTest.java @@ -36,12 +36,7 @@ public class TextFieldBevelTest extends MultiBrowserTest { @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 diff --git a/uitest/src/com/vaadin/tests/themes/valo/ValoThemeUITest.java b/uitest/src/com/vaadin/tests/themes/valo/ValoThemeUITest.java index 13b0c7144c..3ab224f105 100644 --- a/uitest/src/com/vaadin/tests/themes/valo/ValoThemeUITest.java +++ b/uitest/src/com/vaadin/tests/themes/valo/ValoThemeUITest.java @@ -24,6 +24,7 @@ import com.vaadin.testbench.elements.CheckBoxElement; 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 { |