]> source.dussan.org Git - vaadin-framework.git/commitdiff
Test for broken Webkit feature which causes extra scrollbars (#12736, #12727)
authorArtur Signell <artur@vaadin.com>
Wed, 6 Nov 2013 15:17:42 +0000 (17:17 +0200)
committerVaadin Code Review <review@vaadin.com>
Fri, 29 Nov 2013 17:16:09 +0000 (17:16 +0000)
This is the original cause for the Vaadin issues

Live test at http://artur.virtuallypreinstalled.com/webkit-scrollbars.html

Change-Id: Iaf9a46b635fabcb7cd795547c782c596aa57ce12

WebContent/statictestfiles/browserfeatures/WebkitPositionAbsoluteScrollbars.html [new file with mode: 0644]
uitest/src/com/vaadin/tests/browserfeatures/WebkitPositionAbsoluteScrollbarsTest.java [new file with mode: 0644]

diff --git a/WebContent/statictestfiles/browserfeatures/WebkitPositionAbsoluteScrollbars.html b/WebContent/statictestfiles/browserfeatures/WebkitPositionAbsoluteScrollbars.html
new file mode 100644 (file)
index 0000000..7547816
--- /dev/null
@@ -0,0 +1,69 @@
+<!doctype>
+<html><head>
+  <style>
+  #spacer {
+       width: 100px;
+       height: 100px;
+       background: blue;
+  }
+  #scrollable {
+       background: white;
+       border: 1px solid black;
+       overflow: auto;
+       position: relative;
+       width: 250px;
+  }
+  #container {
+       position:relative;
+       display:inline-block;
+       width:100%;
+       height:130px;
+  }
+  #margin {
+       position: absolute;
+    width: 200px; 
+    top: 12px; 
+    margin-right: 12px; 
+    left: 12px; 
+    height: 110px;
+  }
+  </style>
+  </head>
+ <body>
+ <div>
+ Starting point: No horizontal scrollbar<br/>
+ Expected: Get back to starting point after clicking through steps (do 1, do  2, cancel 1, cancel 2)<br/>
+ Actual: Scrollbars after doing the steps<br/><br/>
+ </div>
+<button id="step1" onclick="step1();">Step 1 - Enlarge container</button> 
+<button id="step2" onclick="step2();">Step 2 - Move child</button> 
+<button id="step3" onclick="step3();">Step 3 - Reduce container</button>
+<button id="step4" onclick="step4();">Step 4 - Return child</button>
+<div id="scrollable">
+<div id="container">
+<div id="margin" style="">
+<div id="spacer" style="height: 100px; width: 100%;">
+</div>
+</div>
+</div>
+</div>
+  
+<script>
+function step1() {
+       document.getElementById("container").style.width="110%";
+}
+function step2() {
+       document.getElementById("margin").style.left="200px";
+}
+function step3() {
+       document.getElementById("container").style.width="100%";
+}
+function step4() {
+       document.getElementById("margin").style.left="12px";      
+}
+
+</script>
+
+
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/browserfeatures/WebkitPositionAbsoluteScrollbarsTest.java b/uitest/src/com/vaadin/tests/browserfeatures/WebkitPositionAbsoluteScrollbarsTest.java
new file mode 100644 (file)
index 0000000..54fb721
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2000-2013 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.browserfeatures;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class WebkitPositionAbsoluteScrollbarsTest extends MultiBrowserTest {
+
+    @Override
+    protected String getDeploymentPath() {
+        return "/statictestfiles/browserfeatures/WebkitPositionAbsoluteScrollbars.html";
+    }
+
+    @Test
+    public void testWebkitScrollbarProblem() throws Exception {
+        openTestURL();
+        getDriver().findElement(By.id("step1")).click();
+        getDriver().findElement(By.id("step2")).click();
+        getDriver().findElement(By.id("step3")).click();
+        getDriver().findElement(By.id("step4")).click();
+        compareScreen("no-scrollbars");
+    }
+}