aboutsummaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorBogdan Udrescu <bogdan@vaadin.com>2014-07-08 09:58:45 +0300
committerBogdan Udrescu <bogdan@vaadin.com>2014-07-28 12:13:45 +0300
commit9b19675dffec603bc7e8fe6d973ed4edafaff136 (patch)
treee91d4cd81ceb23015572bf757e6fcde2a0f3ded0 /uitest
parenta84a2a6d27c35e4b176dc9b3433a824263ea14d0 (diff)
downloadvaadin-framework-9b19675dffec603bc7e8fe6d973ed4edafaff136.tar.gz
vaadin-framework-9b19675dffec603bc7e8fe6d973ed4edafaff136.zip
Bottom component click scroll up the parent panel in a window (#12943)
Due to old fix for (#11994) the v-scrollable div of the window would expand to 110% of its size then immediately back to the original size. The first action, expanding the v-scrollable to 110% would decrease the scrollTop value of our panel, while increasing its height. When the revert back action would set the v-scrollable to its own size, the panel's scrollTop would remain decreased, causing the scroll bar to move up, hiding the ~10% at the bottom. Fixed by calling Util.runWebkitOverflowAutoFix(); instead of changing the height. Change-Id: I79eafd1f9500c2e4c10dadbfc7100608c0732e04
Diffstat (limited to 'uitest')
-rw-r--r--uitest/src/com/vaadin/tests/components/window/BottomComponentScrollsUp.java103
-rw-r--r--uitest/src/com/vaadin/tests/components/window/BottomComponentScrollsUpTest.java71
2 files changed, 174 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/window/BottomComponentScrollsUp.java b/uitest/src/com/vaadin/tests/components/window/BottomComponentScrollsUp.java
new file mode 100644
index 0000000000..2c5e415408
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/window/BottomComponentScrollsUp.java
@@ -0,0 +1,103 @@
+/*
+ * 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.window;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+
+/**
+ * Reproducing bug #12943 where an action on a Button or ComboBox placed at the
+ * bottom of a window in a scroll panel, will scroll up the parent panel.
+ *
+ * This was due to the fact that with the state confirmation notification from
+ * the server, the window.setVisible would be call again, and the hack that
+ * solved the scrollbars in a window (#11994) would cause the our bug.
+ *
+ * @since
+ * @author Vaadin Ltd
+ */
+@SuppressWarnings("serial")
+public class BottomComponentScrollsUp extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ Button b = new Button("Open window");
+ addComponent(b);
+ b.addClickListener(new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ openWindow();
+ }
+
+ });
+
+ openWindow();
+ }
+
+ private void openWindow() {
+ Window w = new Window();
+ w.setWidth("300px");
+ w.setHeight("300px");
+ w.center();
+
+ Panel p = createPanel();
+ p.setSizeFull();
+
+ w.setContent(p);
+
+ addWindow(w);
+ }
+
+ private Panel createPanel() {
+ Panel p = new Panel();
+
+ VerticalLayout content = new VerticalLayout();
+ p.setContent(content);
+ content.setHeight("500px");
+
+ List<String> items = new ArrayList<String>();
+ items.add("1");
+ items.add("2");
+ items.add("3");
+
+ Button button = new Button("Press me");
+ content.addComponent(button);
+ content.setComponentAlignment(button, Alignment.BOTTOM_CENTER);
+ return p;
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Interacting with a component at the bottom of scrollable panel within a subwindow scrolls up";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 12943;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/window/BottomComponentScrollsUpTest.java b/uitest/src/com/vaadin/tests/components/window/BottomComponentScrollsUpTest.java
new file mode 100644
index 0000000000..3d0da2677b
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/window/BottomComponentScrollsUpTest.java
@@ -0,0 +1,71 @@
+/*
+ * 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.window;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.Dimension;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+
+import com.vaadin.testbench.TestBenchElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+/**
+ * Automatic test for fix for #12943.
+ *
+ * While testing without the fix, the test failed on both Chrome and PhantomJS.
+ *
+ * @since
+ * @author Vaadin Ltd
+ */
+public class BottomComponentScrollsUpTest extends MultiBrowserTest {
+
+ @Override
+ public void setup() throws Exception {
+ super.setup();
+
+ openTestURL();
+ }
+
+ @Test
+ public void windowScrollTest() throws IOException, InterruptedException {
+ TestBenchElement panelScrollable = (TestBenchElement) getDriver()
+ .findElement(By.className("v-panel-content"));
+ Dimension panelScrollableSize = panelScrollable.getSize();
+
+ WebElement verticalLayout = panelScrollable.findElement(By
+ .className("v-verticallayout"));
+ Dimension verticalLayoutSize = verticalLayout.getSize();
+
+ panelScrollable.scroll(verticalLayoutSize.height);
+
+ WebElement button = verticalLayout
+ .findElement(By.className("v-button"));
+
+ button.click();
+
+ // Loose the focus from the button.
+ new Actions(getDriver())
+ .moveToElement(panelScrollable, panelScrollableSize.width / 2,
+ panelScrollableSize.height / 2).click().build()
+ .perform();
+
+ compareScreen("window");
+ }
+}