From 49ea04a13c0d9a19c1d9ca041ff34574f910bb67 Mon Sep 17 00:00:00 2001 From: Anna Koskinen Date: Thu, 18 Mar 2021 14:35:55 +0200 Subject: [PATCH] Test fixes (#12244) --- ...ponsiveHover_ANY_Chrome__collapsedMenu.png | Bin 11779 -> 11767 bytes ...hIcons_ANY_Chrome__contextmenu-empty-1.png | Bin 0 -> 35851 bytes .../components/grid/GridWithoutRenderer.java | 5 ++ .../combobox/ComboboxMenuBarAutoopenTest.java | 31 +++++--- .../grid/GridDetailsUpdateItemsTest.java | 1 - .../grid/GridEditorMultiselectTest.java | 17 +++-- .../grid/GridResizeHiddenColumnTest.java | 1 + .../escalator/EscalatorSpacerTest.java | 15 ++++ .../ui/TextAreaEventPropagationTest.java | 70 ++++++++---------- .../tests/elements/menubar/MenuBarUITest.java | 27 +++++-- .../components/grid/GridClientRenderers.java | 2 +- .../grid/GridWithoutRendererTest.java | 15 +++- .../tree/TreeItemDoubleClickTest.java | 18 ++++- 13 files changed, 130 insertions(+), 72 deletions(-) create mode 100644 uitest/reference-screenshots/chrome/TableContextMenuAndIconsTest-tableContextMenuWithIcons_ANY_Chrome__contextmenu-empty-1.png diff --git a/uitest/reference-screenshots/chrome/ResponsiveStylesTest-testValoMenuResponsiveHover_ANY_Chrome__collapsedMenu.png b/uitest/reference-screenshots/chrome/ResponsiveStylesTest-testValoMenuResponsiveHover_ANY_Chrome__collapsedMenu.png index 9070133c4c4af092b159822ad5b884e7655ab5d2..d5cb48ca14e738611c6ba593628d6ac1ed6d8745 100755 GIT binary patch literal 11767 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 literal 11779 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 literal 0 HcmV?d00001 diff --git a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridWithoutRenderer.java b/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridWithoutRenderer.java index 5b64996c52..1dfb807478 100644 --- a/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridWithoutRenderer.java +++ b/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridWithoutRenderer.java @@ -1,10 +1,13 @@ package com.vaadin.v7.tests.components.grid; +import com.vaadin.server.UserError; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractTestUI; import com.vaadin.tests.util.PersonContainer; +import com.vaadin.ui.Button; import com.vaadin.v7.ui.Grid; +@SuppressWarnings("deprecation") public class GridWithoutRenderer extends AbstractTestUI { @Override @@ -12,6 +15,8 @@ public class GridWithoutRenderer extends AbstractTestUI { Grid grid = new Grid(); grid.setContainerDataSource(PersonContainer.createWithTestData()); addComponent(grid); + addComponent(new Button("Add error", + e -> grid.setComponentError(new UserError("fail")))); } } diff --git a/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboboxMenuBarAutoopenTest.java b/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboboxMenuBarAutoopenTest.java index 99b1c9652b..4d4d8fb175 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboboxMenuBarAutoopenTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboboxMenuBarAutoopenTest.java @@ -10,6 +10,7 @@ import org.openqa.selenium.interactions.Actions; import com.vaadin.testbench.elements.ComboBoxElement; import com.vaadin.testbench.elements.MenuBarElement; import com.vaadin.tests.tb3.MultiBrowserTest; +import com.vaadin.ui.Notification.Type; /** * Test that checks whether Combobox popup is closed on click to autoopen @@ -21,7 +22,6 @@ public class ComboboxMenuBarAutoopenTest extends MultiBrowserTest { @Test public void closeComboboxPopupOnClickToMenuBar() { - setDebug(true); openTestURL(); openPopup(); @@ -29,15 +29,24 @@ public class ComboboxMenuBarAutoopenTest extends MultiBrowserTest { menuBar.click(); assertFalse("Combobox popup items are visible", isElementPresent(By.className("gwt-MenuItem"))); + } + + @Test + public void closeComboboxPopupOnClickToMenuBarItem() { + openTestURL(); openPopup(); - menuBar = selectMenuBar(); + // hover over menubar to open WebElement menuBarItem = findElement( By.className("v-menubar-menuitem-caption")); - Actions actions = new Actions(getDriver()); - actions.moveToElement(menuBarItem).build().perform(); - menuBar.click(); + moveToElement(menuBarItem); + + // click submenu item + findElements(By.className("v-menubar-menuitem-caption")).get(1).click(); + assertElementPresent(By.className( + "v-Notification-" + Type.HUMANIZED_MESSAGE.getStyle())); + assertFalse("Combobox popup items are visible", isElementPresent(By.className("gwt-MenuItem"))); } @@ -46,20 +55,20 @@ public class ComboboxMenuBarAutoopenTest extends MultiBrowserTest { ComboBoxElement combobox = $(ComboBoxElement.class).first(); combobox.openPopup(); - Actions actions = new Actions(getDriver()); - actions.moveToElement( - getDriver().findElement(By.className("gwt-MenuItem"))).build() - .perform(); + moveToElement(findElement(By.className("gwt-MenuItem"))); } private MenuBarElement selectMenuBar() { MenuBarElement menuBar = $(MenuBarElement.class).first(); menuBar.focus(); - Actions actions = new Actions(getDriver()); - actions.moveToElement(menuBar).build().perform(); + moveToElement(menuBar); return menuBar; } + private void moveToElement(WebElement target) { + Actions actions = new Actions(driver); + actions.moveToElement(target).build().perform(); + } } diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/GridDetailsUpdateItemsTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridDetailsUpdateItemsTest.java index 3f690ca7cd..22c7da0c02 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/grid/GridDetailsUpdateItemsTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridDetailsUpdateItemsTest.java @@ -21,7 +21,6 @@ public class GridDetailsUpdateItemsTest extends MultiBrowserTest { ButtonElement button = $(ButtonElement.class).first(); String details0 = grid.getDetails(0).getText(); - System.out.println("details: " + details0); // change the contents button.click(); diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/GridEditorMultiselectTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridEditorMultiselectTest.java index 53a3ab0c33..4a2d3988ae 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/grid/GridEditorMultiselectTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridEditorMultiselectTest.java @@ -1,5 +1,8 @@ package com.vaadin.tests.components.grid; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + import java.util.List; import org.junit.Test; @@ -10,9 +13,6 @@ import com.vaadin.testbench.elements.GridElement; import com.vaadin.testbench.parallel.TestCategory; import com.vaadin.tests.tb3.MultiBrowserTest; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - @TestCategory("grid") public class GridEditorMultiselectTest extends MultiBrowserTest { @@ -27,7 +27,9 @@ public class GridEditorMultiselectTest extends MultiBrowserTest { public void testSelectCheckboxesEnabledBackOnSave() { openTestURL(); GridElement grid = openEditor(); - grid.getEditor().save(); + waitForElementPresent(By.className("v-grid-editor-save")); + sleep(100); // wait for repositioning + findElement(By.className("v-grid-editor-save")).click(); waitForElementNotPresent(By.className("v-grid-editor-cells")); assertCheckboxesEnabled(grid, true); } @@ -36,14 +38,17 @@ public class GridEditorMultiselectTest extends MultiBrowserTest { public void testSelectCheckboxesEnabledBackOnCancel() { openTestURL(); GridElement grid = openEditor(); - grid.getEditor().cancel(); - sleep(100); + waitForElementPresent(By.className("v-grid-editor-cancel")); + sleep(100); // wait for repositioning + findElement(By.className("v-grid-editor-cancel")).click(); + waitForElementNotPresent(By.className("v-grid-editor-cells")); assertCheckboxesEnabled(grid, true); } private GridElement openEditor() { GridElement grid = $(GridElement.class).first(); grid.getRow(0).doubleClick(); + waitForElementPresent(By.className("v-grid-editor-cells")); assertTrue("Grid editor should be displayed.", grid.getEditor().isDisplayed()); return grid; diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/GridResizeHiddenColumnTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridResizeHiddenColumnTest.java index dfe2158519..bdaaf56d4c 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/grid/GridResizeHiddenColumnTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridResizeHiddenColumnTest.java @@ -62,6 +62,7 @@ public class GridResizeHiddenColumnTest extends MultiBrowserTest { // Click on "Last Name" menu item action.click(visibilityToggle).perform(); waitUntilLoadingIndicatorNotVisible(); + sleep(100); // wait for layouting // Check if column "Last Name" is visible headerCells = grid.getHeaderCells(0); diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/basicfeatures/escalator/EscalatorSpacerTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/basicfeatures/escalator/EscalatorSpacerTest.java index 45e08f9683..a84e5c1eae 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/grid/basicfeatures/escalator/EscalatorSpacerTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/grid/basicfeatures/escalator/EscalatorSpacerTest.java @@ -97,12 +97,15 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { assertFalse("No spacers should be shown at the start", spacersAreFoundInDom()); selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); assertNotNull("Spacer should be shown after setting it", getSpacer(1)); } @Test public void closeVisibleSpacer() { selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); + assertNotNull("Unexpectedly missing spacer from row 1", getSpacer(1)); selectMenuPath(FEATURES, SPACERS, ROW_1, REMOVE); assertNull("Spacer should not exist after removing it", getSpacer(1)); } @@ -111,6 +114,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { public void spacerPushesVisibleRowsDown() { double oldTop = getElementTop(getBodyRow(2)); selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); double newTop = getElementTop(getBodyRow(2)); assertGreater("Row below a spacer was not pushed down", newTop, oldTop); @@ -123,6 +127,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { selectMenuPath(COLUMNS_AND_ROWS, BODY_ROWS, ADD_ONE_ROW_TO_BEGINNING); selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); double oldTop = getElementTop(getSpacer(1)); selectMenuPath(COLUMNS_AND_ROWS, BODY_ROWS, ADD_ONE_ROW_TO_BEGINNING); double newTop = getElementTop(getSpacer(2)); @@ -138,6 +143,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { selectMenuPath(COLUMNS_AND_ROWS, BODY_ROWS, ADD_ONE_ROW_TO_BEGINNING); selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); double oldTop = getElementTop(getSpacer(1)); selectMenuPath(COLUMNS_AND_ROWS, BODY_ROWS, ADD_ONE_ROW_TO_END); double newTop = getElementTop(getSpacer(1)); @@ -153,6 +159,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { selectMenuPath(COLUMNS_AND_ROWS, BODY_ROWS, ADD_ONE_ROW_TO_BEGINNING); selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); double spacerTop = getElementTop(getSpacer(1)); selectMenuPath(COLUMNS_AND_ROWS, BODY_ROWS, ADD_ONE_ROW_TO_END); double rowTop = getElementTop(getBodyRow(2)); @@ -175,6 +182,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { scrollVerticallyTo(999999); long oldBottomScrollTop = getScrollTop(); selectMenuPath(FEATURES, SPACERS, ROW_99, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); assertEquals( "Adding a spacer underneath the current viewport should " @@ -194,6 +202,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { @Test public void removingRowAboveSpacerMovesSpacerUp() { selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); WebElement spacer = getSpacer(1); double originalElementTop = getElementTop(spacer); @@ -225,6 +234,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { public void spacersAreFixedInViewport_firstFreezeThenScroll() { selectMenuPath(FEATURES, FROZEN_COLUMNS, FREEZE_1_COLUMN); selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); assertEquals( "Spacer's left position should've been 0 at the " + "beginning", 0d, getElementLeft(getSpacer(1)), WidgetUtil.PIXEL_EPSILON); @@ -244,6 +254,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { int scrollTo = 10; scrollHorizontallyTo(scrollTo); selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); assertEquals( "Spacer's left position should've been " + scrollTo + " after scrolling " + scrollTo + "px", @@ -384,6 +395,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { selectMenuPath(FEATURES, SPACERS, FOCUSABLE_UPDATER); selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); WebElement inputElement = getEscalator() .findElement(By.tagName("input")); @@ -401,6 +413,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { @Test public void spacersAreInsertedInCorrectDomPosition() { selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); WebElement tbody = getEscalator().findElement(By.tagName("tbody")); WebElement spacer = getChild(tbody, 2); @@ -414,6 +427,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { public void spacersAreInCorrectDomPositionAfterScroll() throws InterruptedException { selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); scrollVerticallyTo(40); // roughly two rows' worth @@ -483,6 +497,7 @@ public class EscalatorSpacerTest extends EscalatorBasicClientFeaturesTest { public void spacerOpenedInViewGetsFocus() { selectMenuPath(FEATURES, SPACERS, FOCUSABLE_UPDATER); selectMenuPath(FEATURES, SPACERS, ROW_1, SET_100PX); + waitForElementPresent(By.className("v-escalator-spacer")); tryToTabIntoFocusUpdaterElement(); WebElement focusedElement = getFocusedElement(); assertEquals("input", focusedElement.getTagName()); diff --git a/uitest/src/test/java/com/vaadin/tests/components/ui/TextAreaEventPropagationTest.java b/uitest/src/test/java/com/vaadin/tests/components/ui/TextAreaEventPropagationTest.java index ea33122541..4bc34801dd 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/ui/TextAreaEventPropagationTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/ui/TextAreaEventPropagationTest.java @@ -1,10 +1,11 @@ package com.vaadin.tests.components.ui; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import org.junit.Test; import org.openqa.selenium.Keys; -import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import com.vaadin.testbench.elements.TextAreaElement; @@ -21,23 +22,17 @@ public class TextAreaEventPropagationTest extends MultiBrowserTest { @Test public void textAreaEnterEventPropagation() throws InterruptedException { openTestURL(); - WebElement textArea = $(TextAreaElement.class).first(); + TextAreaElement textArea = $(TextAreaElement.class).first(); Actions builder = new Actions(driver); builder.click(textArea); - builder.sendKeys(textArea, "first line asdf"); + builder.sendKeys(textArea, "first line asdf", Keys.ENTER, + "second line jkl;"); builder.perform(); waitUntilLoadingIndicatorNotVisible(); - builder.sendKeys(Keys.ENTER); - builder.perform(); - waitUntilLoadingIndicatorNotVisible(); - - builder.sendKeys(textArea, "second line jkl;"); - builder.perform(); - waitUntilLoadingIndicatorNotVisible(); - - builder.perform(); - + String text = textArea.getValue(); + assertEquals("Unexpected text area content,", + "first line asdf\nsecond line jkl;", text); // Should not have triggered shortcut assertEquals(" ", getLogRow(0)); } @@ -46,62 +41,55 @@ public class TextAreaEventPropagationTest extends MultiBrowserTest { public void testTextAreaEscapeEventPropagation() throws InterruptedException { openTestURL(); - WebElement textArea = $(TextAreaElement.class).first(); + TextAreaElement textArea = $(TextAreaElement.class).first(); Actions builder = new Actions(driver); builder.click(textArea); - builder.sendKeys(textArea, "first line asdf"); - builder.perform(); - waitUntilLoadingIndicatorNotVisible(); - - builder.sendKeys(Keys.ESCAPE); - builder.perform(); - waitUntilLoadingIndicatorNotVisible(); - - builder.sendKeys(textArea, "second line jkl;"); + builder.sendKeys(textArea, "first line asdf", Keys.ESCAPE, + "second line jkl;"); builder.perform(); waitUntilLoadingIndicatorNotVisible(); + String text = textArea.getValue(); + // sendKeys is erratic and can eat some letters after escape, so only + // test that beginning and end are present + assertTrue("Unexpected text area content: " + text, + text.startsWith("first line asdf")); + assertTrue("Unexpected text area content: " + text, + text.endsWith("nd line jkl;")); + assertFalse("Unexpected text area content: " + text, + text.contains("\n")); assertEquals("1. Escape button pressed", getLogRow(0)); } @Test public void testTextFieldEscapeEventPropagation() { openTestURL(); - WebElement textField = $(TextFieldElement.class).first(); + TextFieldElement textField = $(TextFieldElement.class).first(); Actions builder2 = new Actions(driver); builder2.click(textField); - builder2.sendKeys("third line"); - builder2.perform(); - waitUntilLoadingIndicatorNotVisible(); - - builder2.sendKeys(Keys.ENTER); - builder2.perform(); - waitUntilLoadingIndicatorNotVisible(); - - builder2.sendKeys(Keys.ESCAPE); + builder2.sendKeys(textField, "third line", Keys.ESCAPE); builder2.perform(); waitUntilLoadingIndicatorNotVisible(); - assertEquals("1. Enter button pressed", getLogRow(1)); - assertEquals("2. Escape button pressed", getLogRow(0)); + String text = textField.getValue(); + assertEquals("Unexpected text field content,", "third line", text); + assertEquals("1. Escape button pressed", getLogRow(0)); } @Test public void testTextFieldEnterEventPropagation() { openTestURL(); - WebElement textField = $(TextFieldElement.class).first(); + TextFieldElement textField = $(TextFieldElement.class).first(); Actions builder2 = new Actions(driver); builder2.click(textField); - builder2.sendKeys("third line"); - builder2.perform(); - waitUntilLoadingIndicatorNotVisible(); - - builder2.sendKeys(Keys.ENTER); + builder2.sendKeys(textField, "third line", Keys.ENTER); builder2.perform(); waitUntilLoadingIndicatorNotVisible(); + String text = textField.getValue(); + assertEquals("Unexpected text field content,", "third line", text); assertEquals("1. Enter button pressed", getLogRow(0)); } } diff --git a/uitest/src/test/java/com/vaadin/tests/elements/menubar/MenuBarUITest.java b/uitest/src/test/java/com/vaadin/tests/elements/menubar/MenuBarUITest.java index 8969928ce8..4902a27dee 100644 --- a/uitest/src/test/java/com/vaadin/tests/elements/menubar/MenuBarUITest.java +++ b/uitest/src/test/java/com/vaadin/tests/elements/menubar/MenuBarUITest.java @@ -1,5 +1,9 @@ package com.vaadin.tests.elements.menubar; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + import java.util.List; import org.junit.Before; @@ -11,10 +15,6 @@ import org.openqa.selenium.WebElement; import com.vaadin.testbench.elements.MenuBarElement; import com.vaadin.tests.tb3.MultiBrowserTest; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - public class MenuBarUITest extends MultiBrowserTest { @Override @@ -33,12 +33,15 @@ public class MenuBarUITest extends MultiBrowserTest { MenuBarElement menuBar = $(MenuBarElement.class).first(); menuBar.clickItem("File"); + waitForElementPresent(By.className("v-menubar-popup")); assertTrue(isItemVisible("Export..")); menuBar.clickItem("Export.."); + sleep(100); assertTrue(isItemVisible("As PDF...")); menuBar.clickItem("File"); + sleep(100); assertFalse(isItemVisible("Export..")); } @@ -50,34 +53,41 @@ public class MenuBarUITest extends MultiBrowserTest { MenuBarElement menuBar = $(MenuBarElement.class).first(); menuBar.clickItem("File"); + waitForElementPresent(By.className("v-menubar-popup")); assertTrue(isItemVisible("Save As..")); menuBar.clickItem("Export.."); + sleep(100); assertTrue(isItemVisible("As PDF...")); // The Edit menu will be opened by moving the mouse over the item (done // by clickItem). The first click then actually closes the menu. menuBar.clickItem("Edit"); - sleep(100); + waitForElementNotPresent(By.className("v-menubar-popup")); menuBar.clickItem("Edit"); + waitForElementPresent(By.className("v-menubar-popup")); assertFalse(isItemVisible("Save As..")); assertTrue(isItemVisible("Paste")); menuBar.clickItem("Edit"); + sleep(100); assertFalse(isItemVisible("Save As..")); assertFalse(isItemVisible("Paste")); menuBar.clickItem("Edit"); + sleep(100); assertFalse(isItemVisible("Save As..")); assertTrue(isItemVisible("Paste")); // Menu does not contain a submenu, no need to click twice. menuBar.clickItem("Help"); + sleep(100); assertFalse(isItemVisible("Save As..")); assertFalse(isItemVisible("Paste")); // No submenu is open, so click only once to open the File menu. menuBar.clickItem("File"); + sleep(100); assertTrue(isItemVisible("Save As..")); } @@ -88,6 +98,7 @@ public class MenuBarUITest extends MultiBrowserTest { public void testMenuBarClickPath() { MenuBarElement menuBar = $(MenuBarElement.class).first(); menuBar.clickItem("File", "Export.."); + waitForElementPresent(By.className("v-menubar-popup")); assertTrue(isItemVisible("As Doc...")); } @@ -99,17 +110,22 @@ public class MenuBarUITest extends MultiBrowserTest { MenuBarElement menuBar = $(MenuBarElement.class).get(2); menuBar.clickItem("File"); + waitForElementPresent(By.className("v-menubar-popup")); assertTrue(isItemVisible("Open2")); // Close the menu item menuBar.clickItem("File"); + waitForElementNotPresent(By.className("v-menubar-popup")); menuBar = $(MenuBarElement.class).get(1); menuBar.clickItem("Edit2"); + waitForElementPresent(By.className("v-menubar-popup")); assertTrue(isItemVisible("Cut")); menuBar.clickItem("Edit2"); + waitForElementNotPresent(By.className("v-menubar-popup")); menuBar = $(MenuBarElement.class).first(); menuBar.clickItem("File"); + waitForElementPresent(By.className("v-menubar-popup")); assertTrue(isItemVisible("Open")); } @@ -117,6 +133,7 @@ public class MenuBarUITest extends MultiBrowserTest { public void testMenuItemTooltips() { MenuBarElement first = $(MenuBarElement.class).first(); first.clickItem("File"); + waitForElementPresent(By.className("v-menubar-popup")); assertTooltip("Open", "Preformatted\ndescription"); assertTooltip("Save", "plain description, HTML is visible"); assertTooltip("Exit", "HTML\ndescription"); diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridClientRenderers.java b/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridClientRenderers.java index d818db5cb4..3e53fab2e9 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridClientRenderers.java +++ b/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridClientRenderers.java @@ -49,7 +49,7 @@ public class GridClientRenderers extends MultiBrowserTest { return path; } - @ServerClass("com.vaadin.tests.widgetset.server.grid.GridClientColumnRenderers.GridController") + @ServerClass("com.vaadin.tests.widgetset.server.v7.grid.GridClientColumnRenderers.GridController") public static class MyClientGridElement extends GridElement { } diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridWithoutRendererTest.java b/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridWithoutRendererTest.java index 0fe4a7f911..ad86fb7232 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridWithoutRendererTest.java +++ b/uitest/src/test/java/com/vaadin/v7/tests/components/grid/GridWithoutRendererTest.java @@ -1,5 +1,6 @@ package com.vaadin.v7.tests.components.grid; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.List; @@ -8,6 +9,7 @@ import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; +import com.vaadin.testbench.elements.ButtonElement; import com.vaadin.testbench.parallel.TestCategory; import com.vaadin.tests.tb3.SingleBrowserTest; @@ -17,13 +19,18 @@ public class GridWithoutRendererTest extends SingleBrowserTest { @Test public void ensureNoError() { openTestURL(); - // WebElement errorIndicator = findElement(By - // .cssSelector("v-error-indicator")); - // System.out.println(errorIndicator); + waitForElementPresent(By.className("v-grid")); List errorIndicator = findElements( - By.xpath("//span[@class='v-errorindicator']")); + By.className("v-errorindicator")); assertTrue("There should not be an error indicator", errorIndicator.isEmpty()); + + // add an error to ensure that the check is correct + $(ButtonElement.class).first().click(); + + errorIndicator = findElements(By.className("v-errorindicator")); + assertFalse("There should be an error indicator", + errorIndicator.isEmpty()); } } diff --git a/uitest/src/test/java/com/vaadin/v7/tests/components/tree/TreeItemDoubleClickTest.java b/uitest/src/test/java/com/vaadin/v7/tests/components/tree/TreeItemDoubleClickTest.java index fb2abe8ca0..4b3a48c47f 100644 --- a/uitest/src/test/java/com/vaadin/v7/tests/components/tree/TreeItemDoubleClickTest.java +++ b/uitest/src/test/java/com/vaadin/v7/tests/components/tree/TreeItemDoubleClickTest.java @@ -17,13 +17,25 @@ public class TreeItemDoubleClickTest extends MultiBrowserTest { openTestURL(); String caption = "Tree Item 2"; doubleClick(getTreeNodeByCaption(caption)); - assertLogText("Double Click " + caption); + try { + assertLogText("Double Click " + caption); + } catch (AssertionError e) { + // double click is flaky, try again + doubleClick(getTreeNodeByCaption(caption)); + assertLogText("Double Click " + caption); + } changeImmediate(); caption = "Tree Item 3"; doubleClick(getTreeNodeByCaption(caption)); - assertLogText("Double Click " + caption); + try { + assertLogText("Double Click " + caption); + } catch (AssertionError e) { + // double click is flaky, try again + doubleClick(getTreeNodeByCaption(caption)); + assertLogText("Double Click " + caption); + } } private void changeImmediate() { @@ -38,7 +50,7 @@ public class TreeItemDoubleClickTest extends MultiBrowserTest { private void doubleClick(WebElement element) { new Actions(getDriver()).doubleClick(element).build().perform(); - + sleep(100); } private void assertLogText(String text) { -- 2.39.5