diff options
author | Artur Signell <artur@vaadin.com> | 2015-01-21 20:59:32 +0200 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2015-01-21 20:59:32 +0200 |
commit | c410fa7e85e0769369cee2cebd2cea538919af2b (patch) | |
tree | c7535bd48ae9c2b221a867e47f91515e1bbc2ffa /uitest | |
parent | 74976a7ffcdd4ea3c19e799d16bf5430c6975420 (diff) | |
parent | f818f7cb44fc77db7252e97c78608ae6c67d6ab6 (diff) | |
download | vaadin-framework-c410fa7e85e0769369cee2cebd2cea538919af2b.tar.gz vaadin-framework-c410fa7e85e0769369cee2cebd2cea538919af2b.zip |
Merge remote-tracking branch 'origin/master' into grid
Conflicts:
client/src/com/vaadin/client/ui/VScrollTable.java
Change-Id: I79e003b2087e8e0e5c8aa6d25bdeb890ce9a60c5
Diffstat (limited to 'uitest')
24 files changed, 1038 insertions, 104 deletions
diff --git a/uitest/src/com/vaadin/tests/components/embedded/EmbeddedThemeResource.java b/uitest/src/com/vaadin/tests/components/embedded/EmbeddedThemeResource.java new file mode 100644 index 0000000000..ecc746b858 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/embedded/EmbeddedThemeResource.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.components.embedded; + +import com.vaadin.server.ThemeResource; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Embedded; +import com.vaadin.ui.Image; +import com.vaadin.ui.themes.Reindeer; + +/** + * Tests that {@link Embedded} uses correct theme when the theme is set with + * {@link #setTheme(String)}, and also updates correctly if theme is changed + * later. {@link Image} is used as the baseline for correct behaviour. + * + * @author Vaadin Ltd + */ +public class EmbeddedThemeResource extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + setTheme("tests-components"); + + addButton("Toggle theme", new Button.ClickListener() { + + @Override + public void buttonClick(ClickEvent event) { + if (Reindeer.THEME_NAME.equals(getTheme())) { + setTheme("tests-components"); + } else { + setTheme(Reindeer.THEME_NAME); + } + } + }); + + // let's show a simple themeresource + ThemeResource logoResource = new ThemeResource("images/logo.png"); + Embedded embedded = new Embedded("embedded:", logoResource); + Image image = new Image("image:", logoResource); + + addComponents(embedded, image); + } + + @Override + protected String getTestDescription() { + return "Tests that Embedded updates correctly when using setTheme(String)"; + } + + @Override + protected Integer getTicketNumber() { + return 15194; + } +} diff --git a/uitest/src/com/vaadin/tests/components/embedded/EmbeddedThemeResourceTest.java b/uitest/src/com/vaadin/tests/components/embedded/EmbeddedThemeResourceTest.java new file mode 100644 index 0000000000..f3dca71cad --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/embedded/EmbeddedThemeResourceTest.java @@ -0,0 +1,109 @@ +/* + * 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.components.embedded; + +import static org.hamcrest.MatcherAssert.assertThat; +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.List; + +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.support.ui.ExpectedCondition; + +import 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.tests.tb3.SingleBrowserTest; +import com.vaadin.ui.Embedded; + +/** + * Tests that {@link Embedded} uses correct theme when the theme is set with + * {@link #setTheme(String)}, and also updates correctly if theme is changed + * later. {@link Image} is used as the baseline for correct behaviour. + * + * @author Vaadin Ltd + */ +public class EmbeddedThemeResourceTest extends SingleBrowserTest { + + @Override + 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 + .getDesiredCapabilities()); + } + + @Before + @Override + public void setup() throws Exception { + super.setup(); + openTestURL(); + waitForElementPresent(By.className("v-embedded")); + } + + @Test + public void testInitialTheme() { + EmbeddedElement embedded = $(EmbeddedElement.class).first(); + ImageElement image = $(ImageElement.class).first(); + final String initial = image.getAttribute("src"); + + assertFalse( + "ThemeResource image source uses default theme instead of set theme.", + initial.contains("/reindeer/")); + assertThat( + "Embedded and Image aren't using the same source for the image despite sharing the ThemeResource.", + embedded.findElement(By.tagName("img")).getAttribute("src"), + is(initial)); + } + + @Test + public void testUpdatedTheme() { + EmbeddedElement embedded = $(EmbeddedElement.class).first(); + final ImageElement image = $(ImageElement.class).first(); + final String initial = image.getAttribute("src"); + + // update theme + $(ButtonElement.class).first().click(); + + waitUntil(new ExpectedCondition<Boolean>() { + @Override + public Boolean apply(WebDriver input) { + return !initial.equals(image.getAttribute("src")); + } + + @Override + public String toString() { + // Timed out after 10 seconds waiting for ... + return "image source to be updated (was: " + initial + ")"; + } + }); + + assertTrue("ThemeResource image source didn't update correctly.", image + .getAttribute("src").contains("/reindeer/")); + assertThat( + "Embedded and Image aren't using the same source for the image despite sharing the ThemeResource.", + embedded.findElement(By.tagName("img")).getAttribute("src"), + is(image.getAttribute("src"))); + } +} diff --git a/uitest/src/com/vaadin/tests/components/notification/NotificationDelayTest.java b/uitest/src/com/vaadin/tests/components/notification/NotificationDelayTest.java index 219d44710c..903c3440cc 100644 --- a/uitest/src/com/vaadin/tests/components/notification/NotificationDelayTest.java +++ b/uitest/src/com/vaadin/tests/components/notification/NotificationDelayTest.java @@ -15,12 +15,13 @@ */ package com.vaadin.tests.components.notification; +import com.vaadin.tests.tb3.MultiBrowserTest; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; import org.openqa.selenium.interactions.Actions; - -import com.vaadin.tests.tb3.MultiBrowserTest; +import org.openqa.selenium.support.ui.ExpectedCondition; /** * Test to check notification delay. @@ -34,20 +35,16 @@ public class NotificationDelayTest extends MultiBrowserTest { openTestURL(); Assert.assertTrue("No notification found", hasNotification()); - Actions actions = new Actions(getDriver()); - actions.moveByOffset(10, 10).build().perform(); - long start = System.currentTimeMillis(); - boolean hidden = false; - while (System.currentTimeMillis() <= start + 5000) { - Thread.sleep(500); - hidden = !hasNotification(); - if (hidden) { - break; - } - } - Assert.assertTrue("Notification is still visible after 5 seconds", - hidden); + waitUntil(new ExpectedCondition<Boolean>() { + + @Override + public Boolean apply(WebDriver input) { + new Actions(getDriver()).moveByOffset(10, 10).perform(); + + return !hasNotification(); + } + }); } private boolean hasNotification() { diff --git a/uitest/src/com/vaadin/tests/components/table/UnnecessaryScrollbarWhenZooming.java b/uitest/src/com/vaadin/tests/components/table/UnnecessaryScrollbarWhenZooming.java new file mode 100644 index 0000000000..8d95261825 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/table/UnnecessaryScrollbarWhenZooming.java @@ -0,0 +1,51 @@ +/* + * 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.components.table; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Table; + +public class UnnecessaryScrollbarWhenZooming extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + Table table = new Table("A Table"); + table.setId("test-table"); + table.addContainerProperty("Text property 1", String.class, null); + table.addContainerProperty("Text property 2", String.class, null); + table.addContainerProperty("Text property 3", String.class, null); + table.addContainerProperty("Numeric property", Integer.class, null); + table.addItem(new Object[] { "Value 1 ", "Value 2", "Value 3", + new Integer(39) }, new Integer(1)); + table.addItem(new Object[] { "Value 1 ", "Value 2", "Value 3", + new Integer(39) }, new Integer(2)); + table.setWidth("100%"); + table.setPageLength(0); + addComponent(table); + } + + @Override + protected String getTestDescription() { + return "Test case for extra scrollbar being displayed in Table when browser window is zoomed (or page length is 0)"; + } + + @Override + protected Integer getTicketNumber() { + return 15164; + } + +} diff --git a/uitest/src/com/vaadin/tests/components/table/UnnecessaryScrollbarWhenZoomingTest.java b/uitest/src/com/vaadin/tests/components/table/UnnecessaryScrollbarWhenZoomingTest.java new file mode 100644 index 0000000000..df01800180 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/table/UnnecessaryScrollbarWhenZoomingTest.java @@ -0,0 +1,195 @@ +/* + * 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.components.table; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.Arrays; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import com.vaadin.testbench.By; +import com.vaadin.testbench.commands.TestBenchCommandExecutor; +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class UnnecessaryScrollbarWhenZoomingTest extends MultiBrowserTest { + + private ZoomLevelSetter zoomSetter; + private int zoomOutIterations = 3; + private int zoomInIterations = 3; + + @Before + public void init() { + testBench().resizeViewPortTo(995, 400); + DesiredCapabilities capabilities = getDesiredCapabilities(); + if (BrowserUtil.isChrome(capabilities) + || BrowserUtil.isPhantomJS(capabilities)) { + zoomSetter = new ChromeZoomLevelSetter(driver); + } else { + zoomSetter = new NonChromeZoomLevelSetter(driver); + } + zoomSetter.resetZoom(); + openTestURL(); + // IE sometimes has trouble waiting long enough. + new WebDriverWait(getDriver(), 30).until(ExpectedConditions + .presenceOfElementLocated(By + .cssSelector(".v-table-body-wrapper"))); + } + + @Test + public void testInitial() { + testExtraScrollbarsNotShown(); + } + + @Test + public void testZoomingIn() { + for (int i = 0; i < zoomInIterations; i++) { + zoomSetter.increaseZoom(); + testExtraScrollbarsNotShown(); + } + } + + @Test + public void testZoomingOut() throws InterruptedException { + for (int i = 0; i < zoomOutIterations; i++) { + zoomSetter.decreaseZoom(); + testExtraScrollbarsNotShown(); + } + } + + @After + public void resetZoomLevel() { + zoomSetter.resetZoom(); + } + + private void testExtraScrollbarsNotShown() { + // wait a bit for the layout + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + Assert.fail(); + } + WebElement element = findElement(By + .cssSelector(".v-table-body-wrapper")); + assertNotNull("There must be a table", element); + String overflow = element.getCssValue("overflow"); + // As long as the overflow is hidden, there will not be scroll bars. + if (!"hidden".equals(overflow)) { + // compare scroll width to offset width. True if scrolling. + String detectHorizontalScroll = "return arguments[0].scrollWidth > arguments[0].clientWidth"; + Boolean horizontal = (Boolean) ((TestBenchCommandExecutor) getDriver()) + .executeScript(detectHorizontalScroll, element); + assertEquals("there must be no horizontal scrollbar", false, + horizontal); + + String detectVerticalScroll = "return arguments[0].scrollHeight > arguments[0].clientHeight"; + Boolean vertical = (Boolean) ((TestBenchCommandExecutor) getDriver()) + .executeScript(detectVerticalScroll, element); + assertEquals("there must be no vertical scrollbar", false, vertical); + } + } + + interface ZoomLevelSetter { + public void increaseZoom(); + + public void decreaseZoom(); + + public void resetZoom(); + } + + /* + * A class for setting the zoom levels by sending keys such as ctrl and +. + */ + class NonChromeZoomLevelSetter implements ZoomLevelSetter { + private WebDriver driver; + + public NonChromeZoomLevelSetter(WebDriver driver) { + this.driver = driver; + } + + @Override + public void increaseZoom() { + getElement().sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD)); + } + + @Override + public void decreaseZoom() { + getElement().sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT)); + } + + @Override + public void resetZoom() { + getElement().sendKeys(Keys.chord(Keys.CONTROL, "0")); + } + + private WebElement getElement() { + return driver.findElement(By.tagName("html")); + } + } + + /* + * A class for setting the zoom levels using JavaScript. This setter is used + * for browsers for which the method of sending the keys ctrl and + does not + * work. + */ + class ChromeZoomLevelSetter implements ZoomLevelSetter { + private JavascriptExecutor js; + private int currentZoomIndex = 2; + private int[] zoomLevels = { 70, 80, 90, 100, 110, 120, 130 }; + + public ChromeZoomLevelSetter(WebDriver driver) { + js = (JavascriptExecutor) driver; + } + + @Override + public void increaseZoom() { + currentZoomIndex++; + if (currentZoomIndex >= zoomLevels.length) { + currentZoomIndex = zoomLevels.length - 1; + } + js.executeScript("document.body.style.zoom='" + + zoomLevels[currentZoomIndex] + "%'"); + } + + @Override + public void decreaseZoom() { + currentZoomIndex--; + if (currentZoomIndex < 0) { + currentZoomIndex = 0; + } + js.executeScript("document.body.style.zoom='" + + zoomLevels[currentZoomIndex] + "%'"); + } + + @Override + public void resetZoom() { + js.executeScript("document.body.style.zoom='100%'"); + currentZoomIndex = Arrays.binarySearch(zoomLevels, 100); + } + } + +} diff --git a/uitest/src/com/vaadin/tests/components/textfield/TextFieldEmptyingPrompt.java b/uitest/src/com/vaadin/tests/components/textfield/TextFieldEmptyingPrompt.java new file mode 100644 index 0000000000..9fe18f131b --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/textfield/TextFieldEmptyingPrompt.java @@ -0,0 +1,72 @@ +/* + * 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.components.textfield; + +import com.vaadin.event.FieldEvents; +import com.vaadin.event.FieldEvents.TextChangeEvent; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Label; +import com.vaadin.ui.TextField; + +@SuppressWarnings("serial") +public class TextFieldEmptyingPrompt extends AbstractTestUI { + + final TextField textField = new TextField(); + final Label label = new Label(); + final static String RANDOM_PROMPT = "Some prompt here"; + + @Override + public String getTestDescription() { + return "Type something, then erase it, then click on the button.<br>" + + "Input prompt should dissapear.<br>"; + } + + @Override + protected Integer getTicketNumber() { + return 15144; + } + + @Override + protected void setup(VaadinRequest request) { + + addComponent(label); + + textField.setInputPrompt(RANDOM_PROMPT); + textField.addTextChangeListener(new FieldEvents.TextChangeListener() { + + @Override + public void textChange(TextChangeEvent event) { + label.setValue("Textfield value: " + event.getText()); + } + }); + addComponent(textField); + + Button button = new Button("Click To Remove Prompt"); + button.addClickListener(new Button.ClickListener() { + + @Override + public void buttonClick(ClickEvent event) { + + textField.setInputPrompt(""); + } + }); + addComponent(button); + } +} diff --git a/uitest/src/com/vaadin/tests/components/textfield/TextFieldEmptyingPromptTest.java b/uitest/src/com/vaadin/tests/components/textfield/TextFieldEmptyingPromptTest.java new file mode 100644 index 0000000000..f4fa5d0dc5 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/textfield/TextFieldEmptyingPromptTest.java @@ -0,0 +1,104 @@ +/* + * 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.components.textfield; + +import org.junit.Test; +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.ui.ExpectedCondition; + +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.LabelElement; +import com.vaadin.testbench.elements.TextFieldElement; +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class TextFieldEmptyingPromptTest extends MultiBrowserTest { + + private String RANDOM_INPUT = "Some input here"; + + private TextFieldElement textfield; + private LabelElement label; + private ButtonElement button; + + @Test + public void testInputPrompt() throws InterruptedException { + openTestURL(); + + textfield = $(TextFieldElement.class).first(); + label = $(LabelElement.class).get(1); + button = $(ButtonElement.class).first(); + + // Write on the TextField + writeOnTextField(); + + // Make sure a complete server communication cycle happened + waitServerUpdate("Textfield value: " + RANDOM_INPUT); + + // Empty the TextField + emptyTextField(); + + // Click attempts to remove the prompt + button.click(); + + // Assert Prompt text disappeared + waitServerUpdateText(""); + } + + private void waitServerUpdate(final String expectedValue) { + waitUntil(new ExpectedCondition<Boolean>() { + + @Override + public Boolean apply(WebDriver input) { + return label.getText().equals(expectedValue); + } + + @Override + public String toString() { + // Timed out after 10 seconds waiting for ... + return "the server to get updated with the entered value: '" + + expectedValue + "' (was: '" + label.getText() + "')"; + } + }); + } + + private void waitServerUpdateText(final String expectedValue) { + waitUntil(new ExpectedCondition<Boolean>() { + + @Override + public Boolean apply(WebDriver input) { + return textfield.getValue().equals(expectedValue); + } + + @Override + public String toString() { + // Timed out after 10 seconds waiting for ... + return "the server to get updated with the entered value: '" + + expectedValue + "' (was: '" + textfield.getValue() + + "')"; + } + }); + } + + private void writeOnTextField() { + textfield.sendKeys(RANDOM_INPUT); + } + + private void emptyTextField() { + for (int i = 0; i < RANDOM_INPUT.length(); i++) { + textfield.sendKeys(Keys.BACK_SPACE); + } + } +} diff --git a/uitest/src/com/vaadin/tests/components/treetable/TreeTableContainerHierarchicalWrapper.java b/uitest/src/com/vaadin/tests/components/treetable/TreeTableContainerHierarchicalWrapper.java new file mode 100644 index 0000000000..95f8c54e9e --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/treetable/TreeTableContainerHierarchicalWrapper.java @@ -0,0 +1,82 @@ +package com.vaadin.tests.components.treetable; + +import com.vaadin.data.util.BeanItemContainer; +import com.vaadin.data.util.ContainerHierarchicalWrapper; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Tree.ExpandEvent; +import com.vaadin.ui.Tree.ExpandListener; +import com.vaadin.ui.TreeTable; + +@SuppressWarnings("serial") +public class TreeTableContainerHierarchicalWrapper extends AbstractTestUI { + + TreeTable treetable = new TreeTable(); + BeanItemContainer<Bean> beanContainer = new BeanItemContainer<Bean>( + Bean.class); + ContainerHierarchicalWrapper hierarchicalWrapper = new ContainerHierarchicalWrapper( + beanContainer); + + @Override + protected void setup(VaadinRequest request) { + treetable = new TreeTable(); + treetable.setImmediate(true); + treetable.setWidth("100%"); + treetable.setHeight(null); + treetable.setPageLength(0); + treetable.setContainerDataSource(hierarchicalWrapper); + + treetable.addExpandListener(new ExpandListener() { + @Override + public void nodeExpand(ExpandEvent event) { + Bean parent = ((Bean) event.getItemId()); + if (!hierarchicalWrapper.hasChildren(parent)) { + for (int i = 1; i <= 5; i++) { + Bean newChild = new Bean(parent.getId() + "-" + i); + beanContainer.addBean(newChild); + hierarchicalWrapper.setParent(newChild, parent); + } + } + + } + }); + + for (int i = 0; i < 3; i++) { + beanContainer.addBean(new Bean("Item " + i)); + } + + addComponent(treetable); + } + + public class Bean { + public static final String PROP_ID = "id"; + private String id; + + public Bean() { + // empty + } + + public Bean(String id) { + this.id = id; + } + + public void setId(String id) { + this.id = id; + } + + public String getId() { + return id; + } + } + + @Override + protected String getTestDescription() { + return "Tests that TreeTable with ContainerHierarchicalWrapper is updated correctly when the setParent() is called for the item just added"; + } + + @Override + protected Integer getTicketNumber() { + return 15421; + } + +} diff --git a/uitest/src/com/vaadin/tests/components/treetable/TreeTableContainerHierarchicalWrapperTest.java b/uitest/src/com/vaadin/tests/components/treetable/TreeTableContainerHierarchicalWrapperTest.java new file mode 100644 index 0000000000..f767e5fd52 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/treetable/TreeTableContainerHierarchicalWrapperTest.java @@ -0,0 +1,55 @@ +/* + * 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.components.treetable; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import com.vaadin.testbench.TestBenchElement; +import com.vaadin.testbench.elements.TreeTableElement; +import com.vaadin.tests.tb3.MultiBrowserTest; + +/** + * Tests that TreeTable with ContainerHierarchicalWrapper is updated correctly + * when the setParent() is called for the item just added + * + * @author Vaadin Ltd + */ +public class TreeTableContainerHierarchicalWrapperTest extends MultiBrowserTest { + + @Test + public void testStructure() throws InterruptedException { + openTestURL(); + + TreeTableElement treeTable = $(TreeTableElement.class).first(); + WebElement findElement = treeTable.getCell(0, 0).findElement( + By.className("v-treetable-treespacer")); + findElement.click(); + + TestBenchElement cell = treeTable.getCell(5, 0); + WebElement findElement2 = cell.findElement(By + .className("v-treetable-treespacer")); + assertEquals("Item 0-5", cell.getText()); + findElement2.click(); + + TestBenchElement cell2 = treeTable.getCell(10, 0); + assertEquals("Item 0-5-5", cell2.getText()); + } + +} diff --git a/uitest/src/com/vaadin/tests/components/window/MaximizedWindowOrder.java b/uitest/src/com/vaadin/tests/components/window/MaximizedWindowOrder.java new file mode 100644 index 0000000000..8fe6c0ce5a --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/window/MaximizedWindowOrder.java @@ -0,0 +1,49 @@ +package com.vaadin.tests.components.window; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.shared.ui.window.WindowMode; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Button.ClickListener; +import com.vaadin.ui.Label; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.Window; + +public class MaximizedWindowOrder extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + addButton("Open Maximized Window", new ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + openWindow(true); + } + }); + } + + private void openWindow(boolean maximized) { + Window window = new Window(); + VerticalLayout layout = new VerticalLayout(); + + Label label = new Label(maximized ? "Maximized" : "Normal"); + + layout.addComponent(label); + Button button = new Button("Open Normal Window"); + button.addClickListener(new ClickListener() { + + @Override + public void buttonClick(ClickEvent event) { + openWindow(false); + } + + }); + + layout.addComponent(button); + + window.setContent(layout); + window.setWindowMode(maximized ? WindowMode.MAXIMIZED : WindowMode.NORMAL); + + addWindow(window); + } +}
\ No newline at end of file diff --git a/uitest/src/com/vaadin/tests/components/window/MaximizedWindowOrderTest.java b/uitest/src/com/vaadin/tests/components/window/MaximizedWindowOrderTest.java new file mode 100644 index 0000000000..5063c84658 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/window/MaximizedWindowOrderTest.java @@ -0,0 +1,70 @@ +package com.vaadin.tests.components.window; + +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.tests.tb3.AbstractTB3Test; +import com.vaadin.tests.tb3.MultiBrowserTest; +import com.vaadin.tests.tb3.newelements.WindowElement; +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.Matchers.greaterThan; +import static org.junit.Assert.assertThat; + +public class MaximizedWindowOrderTest extends MultiBrowserTest { + + private WindowElement openAnotherWindow() { + WindowElement maximizedWindow = getMaximizedWindow(); + maximizedWindow.$(ButtonElement.class).first().click(); + + return getAnotherWindow(); + } + + private WindowElement getMaximizedWindow() { + return $(WindowElement.class).first(); + } + + private WindowElement getAnotherWindow() { + return $(WindowElement.class).get(1); + } + + private WindowElement openMaximizedWindow() { + $(ButtonElement.class).first().click(); + + return getMaximizedWindow(); + } + + @Override + public void setup() throws Exception { + super.setup(); + openTestURL(); + } + + @Test + public void newWindowOpensOnTopOfMaximizedWindow() { + WindowElement maximizedWindow = openMaximizedWindow(); + WindowElement anotherWindow = openAnotherWindow(); + + assertThat(anotherWindow.getCssValue("z-index"), + is(greaterThan(maximizedWindow.getCssValue("z-index")))); + + assertThat(getMaximizedWindow().getCssValue("z-index"), is("10000")); + assertThat(getAnotherWindow().getCssValue("z-index"), is("10001")); + } + + @Test + public void backgroundWindowIsBroughtOnTopWhenMaximized() { + WindowElement maximizedWindow = openMaximizedWindow(); + + maximizedWindow.restore(); + + // the new window is opened on top of the original. + WindowElement anotherWindow = openAnotherWindow(); + + // move the window to make the maximize button visible. + anotherWindow.move(10, 20); + maximizedWindow.maximize(); + + assertThat(maximizedWindow.getCssValue("z-index"), + is(greaterThan(anotherWindow.getCssValue("z-index")))); + } +}
\ No newline at end of file diff --git a/uitest/src/com/vaadin/tests/tb3/newelements/WindowElement.java b/uitest/src/com/vaadin/tests/tb3/newelements/WindowElement.java new file mode 100644 index 0000000000..dd7cb55d01 --- /dev/null +++ b/uitest/src/com/vaadin/tests/tb3/newelements/WindowElement.java @@ -0,0 +1,53 @@ +package com.vaadin.tests.tb3.newelements; + +import com.vaadin.testbench.By; +import com.vaadin.testbench.elements.ServerClass; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; + +/* + Suggestions for new elemental api for Window + */ +@ServerClass("com.vaadin.ui.Window") +public class WindowElement extends com.vaadin.testbench.elements.WindowElement { + + private final String restoreBoxClass = "v-window-restorebox"; + private final String maximizeBoxClass = "v-window-maximizebox"; + + public void restore() { + if(isMaximized()) { + getRestoreButton().click(); + } else { + throw new AssertionError("Window is not maximized, cannot be restored."); + } + } + + private boolean isMaximized() { + return isElementPresent(By.className(restoreBoxClass)); + } + + private WebElement getRestoreButton() { + return this.findElement(By.className("v-window-restorebox")); + } + + public void maximize() { + if(!isMaximized()) { + getMaximizeButton().click(); + } else { + throw new AssertionError("Window is already maximized, cannot maximize."); + } + } + + private WebElement getMaximizeButton() { + return this.findElement(By.className(maximizeBoxClass)); + } + + public void move(int xOffset, int yOffset) { + Actions action = new Actions(getDriver()); + action.moveToElement(this.findElement(org.openqa.selenium.By.className("v-window-wrap")), 5, 5); + action.clickAndHold(); + action.moveByOffset(xOffset, yOffset); + action.release(); + action.build().perform(); + } +} diff --git a/uitest/src/com/vaadin/tests/themes/valo/AlignTopIconInButtonTest.java b/uitest/src/com/vaadin/tests/themes/valo/AlignTopIconInButtonTest.java index 287e25d402..02ef886721 100644 --- a/uitest/src/com/vaadin/tests/themes/valo/AlignTopIconInButtonTest.java +++ b/uitest/src/com/vaadin/tests/themes/valo/AlignTopIconInButtonTest.java @@ -15,7 +15,10 @@ */ package com.vaadin.tests.themes.valo; -import org.junit.Assert; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.lessThanOrEqualTo; + import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; @@ -30,7 +33,7 @@ import com.vaadin.tests.tb3.MultiBrowserTest; public class AlignTopIconInButtonTest extends MultiBrowserTest { @Test - public void testIconPositioninButton() { + public void iconIsCenteredInsideButton() { openTestURL(); WebElement wrapper = findElement(By.className("v-button-wrap")); @@ -41,7 +44,6 @@ public class AlignTopIconInButtonTest extends MultiBrowserTest { + wrapper.getSize().getWidth() - icon.getLocation().getX() - icon.getSize().getWidth(); - Assert.assertTrue("Icon element is not centered inside button.", - Math.abs(rightSpace - leftSpace) <= 1); + assertThat(Math.abs(rightSpace - leftSpace), is(lessThanOrEqualTo(2))); } } diff --git a/uitest/src/com/vaadin/tests/themes/valo/ImmediateUploadTest.java b/uitest/src/com/vaadin/tests/themes/valo/ImmediateUploadTest.java index 044f76e335..87827b1358 100644 --- a/uitest/src/com/vaadin/tests/themes/valo/ImmediateUploadTest.java +++ b/uitest/src/com/vaadin/tests/themes/valo/ImmediateUploadTest.java @@ -15,9 +15,10 @@ */ package com.vaadin.tests.themes.valo; -import static org.hamcrest.Matchers.equalToIgnoringCase; +import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; +import java.io.IOException; import java.util.List; import org.junit.Test; @@ -40,34 +41,59 @@ public class ImmediateUploadTest extends MultiBrowserTest { return getAllBrowsers(); } - @Test - public void fileInputShouldNotBeVisibleInImmediate() - throws InterruptedException { + @Override + public void setup() throws Exception { + super.setup(); openTestURL(); + } + + private WebElement getUploadButton(String id) { + UploadElement normalUpload = $(UploadElement.class).id(id); + + return normalUpload.findElement(By.tagName("div")); + } + + private WebElement getUploadFileInput(String id) { + UploadElement normalUpload = $(UploadElement.class).id(id); + + return normalUpload.findElement(By.cssSelector("input[type='file']")); + } + + @Test + public void normalUploadButtonIsVisible() { + WebElement button = getUploadButton("upload"); - UploadElement normalUpload = $(UploadElement.class).id("upload"); - UploadElement immediateUpload = $(UploadElement.class).id( - "immediateupload"); + assertThat(button.getCssValue("display"), is("block")); + } + + @Test + public void fileInputIsVisibleForNormalUpload() { + WebElement input = getUploadFileInput("upload"); - WebElement normalUploadInput = normalUpload.findElement(By - .cssSelector("input[type='file']")); - WebElement immediateUploadInput = immediateUpload.findElement(By - .cssSelector("input[type='file']")); + assertThat(input.getCssValue("position"), is("static")); + } - WebElement normalUploadButton = normalUpload.findElement(By - .tagName("div")); - WebElement immediateUploadButton = immediateUpload.findElement(By - .tagName("div")); + @Test + public void immediateUploadButtonIsVisible() { + WebElement button = getUploadButton("immediateupload"); - assertThat(normalUploadButton.getCssValue("display"), - equalToIgnoringCase("block")); - assertThat(immediateUploadButton.getCssValue("display"), - equalToIgnoringCase("block")); + assertThat(button.getCssValue("display"), is("block")); + } - assertThat(normalUploadInput.getCssValue("position"), - equalToIgnoringCase("static")); - assertThat(immediateUploadInput.getCssValue("position"), - equalToIgnoringCase("absolute")); + @Test + public void fileInputIsNotVisibleForImmediateUpload() { + WebElement input = getUploadFileInput("immediateupload"); + + assertThat(input.getCssValue("position"), is("absolute")); + } + + @Test + public void fileInputIsNotClickableForImmediateUpload() throws IOException { + WebElement input = getUploadFileInput("immediateupload"); + // input.click() and then verifying if the upload window is opened + // would be better but couldn't figure a way to do that. screenshots + // don't show the upload window, not at least in firefox. + assertThat(input.getCssValue("z-index"), is("-1")); } } diff --git a/uitest/tb2/com/vaadin/tests/components/calendar/CalendarWeeklyViewNewEvents.html b/uitest/tb2/com/vaadin/tests/components/calendar/CalendarWeeklyViewNewEvents.html index 6add1deba5..f2702420f1 100644 --- a/uitest/tb2/com/vaadin/tests/components/calendar/CalendarWeeklyViewNewEvents.html +++ b/uitest/tb2/com/vaadin/tests/components/calendar/CalendarWeeklyViewNewEvents.html @@ -313,7 +313,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentscalendarCalendarTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runcomvaadintestscomponentscalendarCalendarTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>8,9</td> </tr> <!--Edit previously created events and change properties--> @@ -438,7 +438,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentscalendarCalendarTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runcomvaadintestscomponentscalendarCalendarTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>11,8</td> </tr> <tr> @@ -558,7 +558,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentscalendarCalendarTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runcomvaadintestscomponentscalendarCalendarTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>7,8</td> </tr> <tr> @@ -583,7 +583,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentscalendarCalendarTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runcomvaadintestscomponentscalendarCalendarTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>12,10</td> </tr> <!--Go to monthly view and assert inserted events--> diff --git a/uitest/tb2/com/vaadin/tests/components/uitest/base_theme_test.html b/uitest/tb2/com/vaadin/tests/components/uitest/base_theme_test.html index cdbcf8bacc..a87cba69ab 100644 --- a/uitest/tb2/com/vaadin/tests/components/uitest/base_theme_test.html +++ b/uitest/tb2/com/vaadin/tests/components/uitest/base_theme_test.html @@ -289,7 +289,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>9,8</td> </tr> <tr> @@ -304,7 +304,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>11,6</td> </tr> <tr> @@ -319,7 +319,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>8,5</td> </tr> <tr> @@ -334,7 +334,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>9,6</td> </tr> <tr> @@ -349,7 +349,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>10,7</td> </tr> <tr> diff --git a/uitest/tb2/com/vaadin/tests/components/uitest/chameleon_theme_test.html b/uitest/tb2/com/vaadin/tests/components/uitest/chameleon_theme_test.html index d5d70a62d2..3c3c229e97 100644 --- a/uitest/tb2/com/vaadin/tests/components/uitest/chameleon_theme_test.html +++ b/uitest/tb2/com/vaadin/tests/components/uitest/chameleon_theme_test.html @@ -289,7 +289,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>9,8</td> </tr> <tr> @@ -304,7 +304,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>11,6</td> </tr> <tr> @@ -319,7 +319,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>8,5</td> </tr> <tr> @@ -334,7 +334,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>9,6</td> </tr> <tr> @@ -349,7 +349,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>10,7</td> </tr> <tr> diff --git a/uitest/tb2/com/vaadin/tests/components/uitest/liferay_theme_test.html b/uitest/tb2/com/vaadin/tests/components/uitest/liferay_theme_test.html index 783784e993..3ed5836c86 100644 --- a/uitest/tb2/com/vaadin/tests/components/uitest/liferay_theme_test.html +++ b/uitest/tb2/com/vaadin/tests/components/uitest/liferay_theme_test.html @@ -289,7 +289,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>9,8</td> </tr> <tr> @@ -304,7 +304,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>11,6</td> </tr> <tr> @@ -319,7 +319,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>8,5</td> </tr> <tr> @@ -334,7 +334,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>9,6</td> </tr> <tr> @@ -349,7 +349,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>10,7</td> </tr> <tr> diff --git a/uitest/tb2/com/vaadin/tests/components/uitest/reindeer_theme_test.html b/uitest/tb2/com/vaadin/tests/components/uitest/reindeer_theme_test.html index 175def94d3..6d19f5c7a1 100644 --- a/uitest/tb2/com/vaadin/tests/components/uitest/reindeer_theme_test.html +++ b/uitest/tb2/com/vaadin/tests/components/uitest/reindeer_theme_test.html @@ -289,7 +289,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>9,8</td> </tr> <tr> @@ -304,7 +304,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>11,6</td> </tr> <tr> @@ -319,7 +319,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>8,5</td> </tr> <tr> @@ -334,7 +334,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>9,6</td> </tr> <tr> @@ -349,7 +349,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>10,7</td> </tr> <tr> diff --git a/uitest/tb2/com/vaadin/tests/components/uitest/runo_theme_test.html b/uitest/tb2/com/vaadin/tests/components/uitest/runo_theme_test.html index 0db6614a9c..183854102d 100644 --- a/uitest/tb2/com/vaadin/tests/components/uitest/runo_theme_test.html +++ b/uitest/tb2/com/vaadin/tests/components/uitest/runo_theme_test.html @@ -289,7 +289,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>9,8</td> </tr> <tr> @@ -304,7 +304,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>11,6</td> </tr> <tr> @@ -319,7 +319,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>8,5</td> </tr> <tr> @@ -334,7 +334,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>9,6</td> </tr> <tr> @@ -349,7 +349,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>10,7</td> </tr> <tr> diff --git a/uitest/tb2/com/vaadin/tests/components/window/CloseSubWindow.html b/uitest/tb2/com/vaadin/tests/components/window/CloseSubWindow.html index ae77628bff..de5a793909 100644 --- a/uitest/tb2/com/vaadin/tests/components/window/CloseSubWindow.html +++ b/uitest/tb2/com/vaadin/tests/components/window/CloseSubWindow.html @@ -40,7 +40,7 @@ <!--Click close in title bar--> <tr> <td>click</td> - <td>vaadin=runcomvaadintestscomponentswindowCloseSubWindow::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runcomvaadintestscomponentswindowCloseSubWindow::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td></td> </tr> <tr> diff --git a/uitest/tb2/com/vaadin/tests/components/window/SubWindowOrder.html b/uitest/tb2/com/vaadin/tests/components/window/SubWindowOrder.html index 6fd99caa19..f0ccddcce4 100644 --- a/uitest/tb2/com/vaadin/tests/components/window/SubWindowOrder.html +++ b/uitest/tb2/com/vaadin/tests/components/window/SubWindowOrder.html @@ -90,7 +90,7 @@ <!--Close window 4, which is the topmost window--> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowSubWindowOrder::/VWindow[3]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runcomvaadintestscomponentswindowSubWindowOrder::/VWindow[3]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>11,15</td> </tr> <tr> @@ -101,7 +101,7 @@ <!--Close Dialog 3 (topmost)--> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowSubWindowOrder::/VWindow[2]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runcomvaadintestscomponentswindowSubWindowOrder::/VWindow[2]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>6,8</td> </tr> <!--Make Dialog 5 (topmost) non-modal--> @@ -139,7 +139,7 @@ <!--Close dialog 5--> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowSubWindowOrder::/VWindow[2]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runcomvaadintestscomponentswindowSubWindowOrder::/VWindow[2]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>10,5</td> </tr> <tr> diff --git a/uitest/tb2/com/vaadin/tests/components/window/WindowMaximizeRestoreTest.html b/uitest/tb2/com/vaadin/tests/components/window/WindowMaximizeRestoreTest.html index a27963a066..65d5fd20e3 100644 --- a/uitest/tb2/com/vaadin/tests/components/window/WindowMaximizeRestoreTest.html +++ b/uitest/tb2/com/vaadin/tests/components/window/WindowMaximizeRestoreTest.html @@ -18,59 +18,59 @@ <!--Test maximize-restore button--> <tr> <td>assertCSSClass</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>v-window-maximizebox</td> </tr> <tr> <td>assertText</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[2]</td> <td>Window 1</td> </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>7,8</td> </tr> <tr> <td>assertCSSClass</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>v-window-restorebox</td> </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>9,7</td> </tr> <tr> <td>assertCSSClass</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>v-window-maximizebox</td> </tr> <!--test double click on header--> <tr> <td>doubleClickAt</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[2]</td> <td></td> </tr> <tr> <td>assertCSSClass</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>v-window-restorebox</td> </tr> <tr> <td>doubleClickAt</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[2]</td> <td></td> </tr> <tr> <td>assertCSSClass</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>v-window-maximizebox</td> </tr> <!--Resizable = false should hide max-restore button--> <tr> <td>assertVisible</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td></td> </tr> <tr> @@ -80,7 +80,7 @@ </tr> <tr> <td>assertNotVisible</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td></td> </tr> <!--Test server side max-restore--> @@ -91,7 +91,7 @@ </tr> <tr> <td>assertCSSClass</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>v-window-restorebox</td> </tr> <tr> @@ -101,28 +101,28 @@ </tr> <tr> <td>assertCSSClass</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>v-window-maximizebox</td> </tr> <!--test double click on header doesn't work--> <tr> <td>doubleClickAt</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[2]</td> <td></td> </tr> <tr> <td>assertCSSClass</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>v-window-maximizebox</td> </tr> <tr> <td>doubleClickAt</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[2]</td> <td></td> </tr> <tr> <td>assertCSSClass</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>v-window-maximizebox</td> </tr> <tr> @@ -148,7 +148,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>10,8</td> </tr> <tr> @@ -174,7 +174,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[1]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[1]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>6,11</td> </tr> <tr> @@ -184,7 +184,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[1]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[1]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>7,5</td> </tr> <tr> @@ -209,12 +209,12 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[1]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[1]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>6,11</td> </tr> <tr> <td>doubleClickAt</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[2]</td> <td>113,10</td> </tr> <tr> @@ -225,27 +225,27 @@ <!--Test that size and position is preserved when maximizing and restoring--> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>8,4</td> </tr> <tr> <td>dragAndDrop</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[2]</td> <td>-200,-200</td> </tr> <tr> <td>dragAndDrop</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[5]/domChild[0]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]/domChild[0]</td> <td>+100,+100</td> </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>6,5</td> </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[2]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowMaximizeRestoreTest::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td> <td>5,8</td> </tr> <tr> diff --git a/uitest/tb2/com/vaadin/tests/components/window/WindowWithInvalidCloseListener.html b/uitest/tb2/com/vaadin/tests/components/window/WindowWithInvalidCloseListener.html index 3ea1f8f732..ea4d2c3666 100644 --- a/uitest/tb2/com/vaadin/tests/components/window/WindowWithInvalidCloseListener.html +++ b/uitest/tb2/com/vaadin/tests/components/window/WindowWithInvalidCloseListener.html @@ -18,7 +18,7 @@ </tr> <tr> <td>mouseClick</td> - <td>vaadin=runcomvaadintestscomponentswindowWindowWithInvalidCloseListener::/VWindow[0]/domChild[0]/domChild[0]/domChild[3]</td> + <td>vaadin=runcomvaadintestscomponentswindowWindowWithInvalidCloseListener::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]/domChild[1]</td> <td>6,7</td> </tr> <tr> |