diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2015-06-02 17:42:28 +0300 |
---|---|---|
committer | Teemu Suo-Anttila <teemusa@vaadin.com> | 2015-06-02 17:44:01 +0300 |
commit | f861a2dfe4a64e696fe5f70fc7ae4c7c1b1612ef (patch) | |
tree | 45cd6decaaf958aaf94d50b7a6279c174d523007 /uitest/src | |
parent | ec54a601dc882333687bcef2b4fa59c02e6c4ede (diff) | |
parent | 4724d89af9228edcb9bbff987255122841c6d33e (diff) | |
download | vaadin-framework-f861a2dfe4a64e696fe5f70fc7ae4c7c1b1612ef.tar.gz vaadin-framework-f861a2dfe4a64e696fe5f70fc7ae4c7c1b1612ef.zip |
Merge remote-tracking branch 'origin/master' into grid-unbuffered-editor
Change-Id: I0a2ed5629eb0598d4049d4cf5ea6e55fe3092c99
Diffstat (limited to 'uitest/src')
12 files changed, 217 insertions, 119 deletions
diff --git a/uitest/src/com/vaadin/tests/components/accordion/AccordionClipsContentTest.java b/uitest/src/com/vaadin/tests/components/accordion/AccordionClipsContentTest.java index 25e40e5ed3..b6fa82aa41 100644 --- a/uitest/src/com/vaadin/tests/components/accordion/AccordionClipsContentTest.java +++ b/uitest/src/com/vaadin/tests/components/accordion/AccordionClipsContentTest.java @@ -15,9 +15,10 @@ */ package com.vaadin.tests.components.accordion; +import org.junit.Test; + import com.vaadin.testbench.elements.NativeButtonElement; import com.vaadin.tests.tb3.MultiBrowserTest; -import org.junit.Test; public class AccordionClipsContentTest extends MultiBrowserTest { @Override @@ -29,21 +30,8 @@ public class AccordionClipsContentTest extends MultiBrowserTest { public void testAccordionClipsContent() throws Exception { openTestURL(); - /* - * MenuBarElement doesn't have any API, so this part is ugly until - * #13364 is fixed - */ - - // Component - vaadinElement("PID_Smenu#item0").click(); - // Component container features - clickAt("Root/VOverlay[0]/VMenuBar[0]#item3", 136, 8); - // Add component - clickAt("Root/VOverlay[1]/VMenuBar[0]#item0", 65, 4); - // NativeButton - clickAt("Root/VOverlay[2]/VMenuBar[0]#item1", 86, 2); - // autoxauto - vaadinElement("Root/VOverlay[3]/VMenuBar[0]#item0").click(); + selectMenuPath("Component", "Component container features", + "Add component", "NativeButton", "auto x auto"); $(NativeButtonElement.class).first().click(); @@ -54,8 +42,4 @@ public class AccordionClipsContentTest extends MultiBrowserTest { compareScreen("button-clicked"); } - - private void clickAt(String vaadinLocator, int x, int y) { - testBenchElement(vaadinElement(vaadinLocator)).click(x, y); - } } 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 c1b8028cbf..517f657c62 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java @@ -22,10 +22,8 @@ import static org.junit.Assert.fail; import java.util.List; import org.openqa.selenium.By; -import org.openqa.selenium.Dimension; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebElement; -import org.openqa.selenium.interactions.Actions; import com.vaadin.testbench.TestBenchElement; import com.vaadin.testbench.parallel.TestCategory; @@ -204,29 +202,16 @@ public abstract class EscalatorBasicClientFeaturesTest extends MultiBrowserTest return null; } + @Override protected void selectMenu(String menuCaption) { - TestBenchElement menuElement = getMenuElement(menuCaption); - Dimension size = menuElement.getSize(); - new Actions(getDriver()).moveToElement(menuElement, size.width - 10, - size.height / 2).perform(); - } - - private TestBenchElement getMenuElement(String menuCaption) { - return (TestBenchElement) findElement(By.xpath("//td[text() = '" - + menuCaption + "']")); + // GWT menu does not need to be clicked. + selectMenu(menuCaption, false); } - protected void selectMenuPath(String... menuCaptions) { - new Actions(getDriver()).moveToElement(getMenuElement(menuCaptions[0])) - .click().perform(); - for (int i = 1; i < menuCaptions.length - 1; ++i) { - selectMenu(menuCaptions[i]); - new Actions(getDriver()).moveByOffset(20, 0).perform(); - } - new Actions(getDriver()) - .moveToElement( - getMenuElement(menuCaptions[menuCaptions.length - 1])) - .click().perform(); + @Override + protected WebElement getMenuElement(String menuCaption) { + return getDriver().findElement( + By.xpath("//td[text() = '" + menuCaption + "']")); } protected void assertLogContains(String substring) { 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 aea2892e3e..a0eb8dfefe 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeaturesTest.java @@ -22,7 +22,6 @@ import java.util.ArrayList; import java.util.List; import org.openqa.selenium.By; -import org.openqa.selenium.Dimension; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -51,34 +50,6 @@ public abstract class GridBasicFeaturesTest extends MultiBrowserTest { return GridBasicFeatures.class; } - protected void selectMenu(String menuCaption) { - selectMenu(menuCaption, true); - } - - protected void selectMenu(String menuCaption, boolean click) { - WebElement menuElement = getMenuElement(menuCaption); - Dimension size = menuElement.getSize(); - new Actions(getDriver()).moveToElement(menuElement, size.width - 10, - size.height / 2).perform(); - if (click) { - new Actions(getDriver()).click().perform(); - } - } - - protected WebElement getMenuElement(String menuCaption) { - return getDriver().findElement( - By.xpath("//span[text() = '" + menuCaption + "']")); - } - - protected void selectMenuPath(String... menuCaptions) { - selectMenu(menuCaptions[0], true); - for (int i = 1; i < menuCaptions.length - 1; i++) { - selectMenu(menuCaptions[i]); - new Actions(getDriver()).moveByOffset(40, 0).build().perform(); - } - selectMenu(menuCaptions[menuCaptions.length - 1], true); - } - protected CustomGridElement getGridElement() { return ((TestBenchElement) findElement(By.id("testComponent"))) .wrap(CustomGridElement.class); 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 fb12178c9b..c406f85c0c 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridClientDataSourcesTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridClientDataSourcesTest.java @@ -21,11 +21,9 @@ import static org.junit.Assert.assertNull; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; -import org.openqa.selenium.Dimension; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.interactions.Actions; import com.vaadin.testbench.parallel.TestCategory; import com.vaadin.tests.tb3.MultiBrowserTest; @@ -152,29 +150,16 @@ public class GridClientDataSourcesTest extends MultiBrowserTest { + "\"v-grid-scroller-vertical\")]")); } - private void selectMenu(String menuCaption) { - WebElement menuElement = getMenuElement(menuCaption); - Dimension size = menuElement.getSize(); - new Actions(getDriver()).moveToElement(menuElement, size.width - 10, - size.height / 2).perform(); + @Override + protected void selectMenu(String menuCaption) { + // GWT menu does not need to be clicked. + selectMenu(menuCaption, false); } - private WebElement getMenuElement(String menuCaption) { + @Override + protected WebElement getMenuElement(String menuCaption) { return getDriver().findElement( By.xpath("//td[text() = '" + menuCaption + "']")); } - private void selectMenuPath(String... menuCaptions) { - new Actions(getDriver()).moveToElement(getMenuElement(menuCaptions[0])) - .click().perform(); - for (int i = 1; i < menuCaptions.length - 1; ++i) { - selectMenu(menuCaptions[i]); - new Actions(getDriver()).moveByOffset(20, 0).perform(); - } - new Actions(getDriver()) - .moveToElement( - getMenuElement(menuCaptions[menuCaptions.length - 1])) - .click().perform(); - } - } diff --git a/uitest/src/com/vaadin/tests/components/table/TableDragColumnTest.java b/uitest/src/com/vaadin/tests/components/table/TableDragColumnTest.java index cb7c6a070e..bd2d2ad28b 100644 --- a/uitest/src/com/vaadin/tests/components/table/TableDragColumnTest.java +++ b/uitest/src/com/vaadin/tests/components/table/TableDragColumnTest.java @@ -102,21 +102,4 @@ public class TableDragColumnTest extends MultiBrowserTest { new Actions(getDriver()).release().perform(); } - - protected void selectSubMenu(String menuCaption) { - selectMenu(menuCaption); - new Actions(getDriver()).moveByOffset(100, 0).build().perform(); - } - - protected void selectMenu(String menuCaption) { - getDriver().findElement( - By.xpath("//span[text() = '" + menuCaption + "']")).click(); - } - - protected void selectMenuPath(String... menuCaptions) { - selectMenu(menuCaptions[0]); - for (int i = 1; i < menuCaptions.length; i++) { - selectSubMenu(menuCaptions[i]); - } - } } diff --git a/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java b/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java index c88047e414..0405ea2e10 100644 --- a/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java +++ b/uitest/src/com/vaadin/tests/fieldgroup/AbstractBasicCrud.java @@ -128,6 +128,19 @@ public abstract class AbstractBasicCrud extends AbstractTestUIWithLog { gender.setNullRepresentation(""); age.setNullRepresentation(""); address_country.setNullRepresentation(""); + + // Last name editing is disabled through property readonly. + // Postal code editing is disabled through disabling field. + /* + * Currently only sets the initial state because of + * https://dev.vaadin.com/ticket/17847 + * + * Must set lastName state initially as BeanFieldGroup can't tell it + * should be read-only before setting an item data source + */ + lastName.setReadOnly(true); + address_postalCode.setEnabled(false); + birthDate.setNullRepresentation(""); age.addValidator(new IntegerRangeValidator( @@ -184,7 +197,21 @@ public abstract class AbstractBasicCrud extends AbstractTestUIWithLog { protected Button cancel = new Button("Cancel"); protected BeanFieldGroup<ComplexPerson> fieldGroup = new BeanFieldGroup<ComplexPerson>( - ComplexPerson.class); + ComplexPerson.class) { + @Override + protected void configureField(com.vaadin.ui.Field<?> field) { + super.configureField(field); + if (field.getCaption().equals("Postal code")) { + // Last name editing is disabled through property. + // Postal code editing is disabled through field. + /* + * This is needed because of + * https://dev.vaadin.com/ticket/17847 + */ + field.setEnabled(false); + } + }; + }; public AbstractForm() { super(5, 1); diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridTest.java b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridTest.java new file mode 100644 index 0000000000..12bccdd065 --- /dev/null +++ b/uitest/src/com/vaadin/tests/fieldgroup/BasicCrudGridTest.java @@ -0,0 +1,69 @@ +/* + * 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.fieldgroup; + +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; + +import com.vaadin.testbench.AbstractHasTestBenchCommandExecutor; +import com.vaadin.testbench.elements.AbstractComponentElement; +import com.vaadin.testbench.elements.GridElement; +import com.vaadin.testbench.elements.TextFieldElement; +import com.vaadin.tests.tb3.SingleBrowserTestPhantomJS2; + +public class BasicCrudGridTest extends SingleBrowserTestPhantomJS2 { + + @Test + public void fieldsInitiallyEmpty() { + openTestURL(); + List<TextFieldElement> textFields = getFieldsLayout().$( + TextFieldElement.class).all(); + + for (TextFieldElement e : textFields) { + Assert.assertEquals("TextField should be empty", "", e.getValue()); + } + } + + private AbstractHasTestBenchCommandExecutor getFieldsLayout() { + return $(AbstractComponentElement.class).id("form"); + } + + @Test + public void fieldsClearedOnDeselect() { + openTestURL(); + + // Select row + $(GridElement.class).first().getCell(2, 2).click(); + + List<TextFieldElement> textFields = getFieldsLayout().$( + TextFieldElement.class).all(); + + for (TextFieldElement e : textFields) { + Assert.assertNotEquals("TextField should not be empty", "", + e.getValue()); + } + + // Deselect row + $(GridElement.class).first().getCell(2, 2).click(); + + for (TextFieldElement e : textFields) { + Assert.assertEquals("TextField should be empty", "", e.getValue()); + } + + } +} diff --git a/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java b/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java index 2fb7c2ac04..bb4fe89575 100644 --- a/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java +++ b/uitest/src/com/vaadin/tests/fieldgroup/ComplexPerson.java @@ -29,10 +29,6 @@ public class ComplexPerson { return lastName; } - public void setLastName(String lastName) { - this.lastName = lastName; - } - public Integer getAge() { return age; } @@ -97,7 +93,7 @@ public class ComplexPerson { public static ComplexPerson create(Random r) { ComplexPerson cp = new ComplexPerson(); cp.setFirstName(TestDataGenerator.getFirstName(r)); - cp.setLastName(TestDataGenerator.getLastName(r)); + cp.lastName = TestDataGenerator.getLastName(r); cp.setAlive(r.nextBoolean()); cp.setBirthDate(TestDataGenerator.getBirthDate(r)); cp.setAge((int) ((new Date(2014 - 1900, 1, 1).getTime() - cp diff --git a/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java b/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java index ddf90b080b..7b77aaf817 100644 --- a/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java +++ b/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java @@ -26,7 +26,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; -import java.util.NoSuchElementException; import java.util.Set; import java.util.logging.Level; @@ -40,9 +39,12 @@ import org.junit.Assert; import org.junit.Rule; import org.junit.runner.RunWith; import org.openqa.selenium.By; +import org.openqa.selenium.Dimension; import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.interactions.HasInputDevices; import org.openqa.selenium.interactions.Keyboard; import org.openqa.selenium.interactions.Mouse; @@ -976,4 +978,64 @@ public abstract class AbstractTB3Test extends ParallelTest { } }); } + + /** + * Selects a menu item. By default, this will click on the menu item. + * + * @param menuCaption + * caption of the menu item + */ + protected void selectMenu(String menuCaption) { + selectMenu(menuCaption, true); + } + + /** + * Selects a menu item. + * + * @param menuCaption + * caption of the menu item + * @param click + * <code>true</code> if should click the menu item; + * <code>false</code> if not + */ + protected void selectMenu(String menuCaption, boolean click) { + WebElement menuElement = getMenuElement(menuCaption); + Dimension size = menuElement.getSize(); + new Actions(getDriver()).moveToElement(menuElement, size.width - 10, + size.height / 2).perform(); + if (click) { + new Actions(getDriver()).click().perform(); + } + } + + /** + * Finds the menu item from the DOM based on menu item caption. + * + * @param menuCaption + * caption of the menu item + * @return the found menu item + * @throws NoSuchElementException + * if menu item is not found + */ + protected WebElement getMenuElement(String menuCaption) + throws NoSuchElementException { + return getDriver().findElement( + By.xpath("//span[text() = '" + menuCaption + "']")); + } + + /** + * Selects a submenu described by a path of menus from the first MenuBar in + * the UI. + * + * @param menuCaptions + * array of menu captions + */ + protected void selectMenuPath(String... menuCaptions) { + selectMenu(menuCaptions[0], true); + for (int i = 1; i < menuCaptions.length - 1; i++) { + selectMenu(menuCaptions[i]); + new Actions(getDriver()).moveByOffset(40, 0).build().perform(); + } + selectMenu(menuCaptions[menuCaptions.length - 1], true); + } } diff --git a/uitest/src/com/vaadin/tests/tb3/SingleBrowserTestPhantomJS2.java b/uitest/src/com/vaadin/tests/tb3/SingleBrowserTestPhantomJS2.java new file mode 100644 index 0000000000..a5afe3afce --- /dev/null +++ b/uitest/src/com/vaadin/tests/tb3/SingleBrowserTestPhantomJS2.java @@ -0,0 +1,33 @@ +/* + * 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.util.Collections; +import java.util.List; + +import org.openqa.selenium.remote.DesiredCapabilities; + +import com.vaadin.testbench.parallel.Browser; + +public abstract class SingleBrowserTestPhantomJS2 extends + PrivateTB3Configuration { + @Override + public List<DesiredCapabilities> getBrowsersToTest() { + DesiredCapabilities p2 = Browser.PHANTOMJS.getDesiredCapabilities(); + p2.setVersion("2"); + return Collections.singletonList(p2); + } +} diff --git a/uitest/src/com/vaadin/tests/themes/base/DisabledMenuBarItem.java b/uitest/src/com/vaadin/tests/themes/base/DisabledMenuBarItem.java index 825f267ad3..16a822789a 100644 --- a/uitest/src/com/vaadin/tests/themes/base/DisabledMenuBarItem.java +++ b/uitest/src/com/vaadin/tests/themes/base/DisabledMenuBarItem.java @@ -12,7 +12,7 @@ public class DisabledMenuBarItem extends AbstractTestUI { MenuBar.MenuItem item = menubar.addItem("Item", null); item.setEnabled(false); - item.setIcon(new ThemeResource("just_a_placeholder.png")); + item.setIcon(new ThemeResource("common/icons/error.png")); addComponent(menubar); } diff --git a/uitest/src/com/vaadin/tests/themes/base/DisabledMenuBarItemTest.java b/uitest/src/com/vaadin/tests/themes/base/DisabledMenuBarItemTest.java index 0a10a7f38b..bec28d7929 100644 --- a/uitest/src/com/vaadin/tests/themes/base/DisabledMenuBarItemTest.java +++ b/uitest/src/com/vaadin/tests/themes/base/DisabledMenuBarItemTest.java @@ -3,6 +3,8 @@ package com.vaadin.tests.themes.base; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; +import java.io.IOException; + import org.junit.Test; import org.openqa.selenium.WebElement; @@ -13,7 +15,7 @@ import com.vaadin.tests.tb3.MultiBrowserTest; public class DisabledMenuBarItemTest extends MultiBrowserTest { @Test - public void disabledMenuItemShouldHaveOpacity() { + public void disabledMenuItemShouldHaveOpacity() throws IOException { openTestURL(); WebElement element = driver.findElement(By @@ -23,8 +25,9 @@ public class DisabledMenuBarItemTest extends MultiBrowserTest { if (browserIsIE8or9()) { assertThat(element.getCssValue("filter"), is("alpha(opacity=50)")); - } + + compareScreen("transparent"); } private boolean browserIsIE8or9() { |