summaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorHenrik Paul <henrik@vaadin.com>2014-09-10 12:13:08 +0300
committerHenrik Paul <henrik@vaadin.com>2014-09-15 14:01:42 +0300
commit861b57c196fa17f1488222125b9a89c38d6ad46d (patch)
treee5a68c157ed63cc8e8fd4db0a6436f67e0e663d8 /uitest
parent854b50af1a45d9a4768f6e3820416ba19f08c9a2 (diff)
downloadvaadin-framework-861b57c196fa17f1488222125b9a89c38d6ad46d.tar.gz
vaadin-framework-861b57c196fa17f1488222125b9a89c38d6ad46d.zip
Tests Escalator's freezing columns. (#13334)
Change-Id: Ifd85cfba770e31a91e05b854fde67c991f443c4d
Diffstat (limited to 'uitest')
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java13
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorColumnFreezingTest.java112
2 files changed, 125 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java
index 5a282a15b6..eff964bd4f 100644
--- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java
+++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorBasicClientFeaturesTest.java
@@ -50,6 +50,9 @@ public abstract class EscalatorBasicClientFeaturesTest extends MultiBrowserTest
protected static final String CLEAR_ROW_COLUMN = "Clear (rows, then columns)";
protected static final String FEATURES = "Features";
+ protected static final String FROZEN_COLUMNS = "Frozen columns";
+ protected static final String FREEZE_1_COLUMN = "Freeze 1 column";
+ protected static final String FREEZE_0_COLUMNS = "Freeze 0 columns";
protected static final String COLUMN_SPANNING = "Column spanning";
protected static final String COLSPAN_NORMAL = "Apply normal colspan";
protected static final String COLSPAN_NONE = "Apply no colspan";
@@ -175,6 +178,16 @@ public abstract class EscalatorBasicClientFeaturesTest extends MultiBrowserTest
By.className("v-escalator-scroller-vertical"));
}
+ protected void scrollHorizontallyTo(int px) {
+ executeScript("arguments[0].scrollLeft = " + px,
+ getHorizontalScrollbar());
+ }
+
+ private WebElement getHorizontalScrollbar() {
+ return getEscalator().findElement(
+ By.className("v-escalator-scroller-horizontal"));
+ }
+
protected Object executeScript(String script, Object... args) {
return ((JavascriptExecutor) getDriver()).executeScript(script, args);
}
diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorColumnFreezingTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorColumnFreezingTest.java
new file mode 100644
index 0000000000..fb217789c2
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/EscalatorColumnFreezingTest.java
@@ -0,0 +1,112 @@
+/*
+ * 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.grid.basicfeatures;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.junit.Test;
+import org.openqa.selenium.WebElement;
+
+public class EscalatorColumnFreezingTest extends EscalatorBasicClientFeaturesTest {
+
+ private final static Pattern TRANSFORM_PATTERN = Pattern.compile(// @formatter:off
+ // any start of the string
+ ".*"
+
+ // non-capturing group for "webkitTransform: " or "transform: "
+ + "(?:webkitT|t)ransform: "
+
+ // non-capturing group for "translate" or "translate3d"
+ + "translate(?:3d)?"
+
+ // capturing the digits in e.g "(100px,"
+ + "\\((\\d+)px,"
+
+ // any end of the string
+ + ".*");
+
+ // @formatter:on
+
+ private final static Pattern LEFT_PATTERN = Pattern
+ .compile(".*left: (\\d+)px.*");
+
+ private static final int NO_FREEZE = -1;
+
+ @Test
+ public void testNoFreeze() {
+ openTestURL();
+ populate();
+
+ WebElement bodyCell = getBodyCell(0, 0);
+ assertFalse(isFrozen(bodyCell));
+ assertEquals(NO_FREEZE, getFrozenScrollCompensation(bodyCell));
+ }
+
+ @Test
+ public void testOneFreeze() {
+ openTestURL();
+ populate();
+
+ selectMenuPath(FEATURES, FROZEN_COLUMNS, FREEZE_1_COLUMN);
+ int scrollPx = 100;
+ scrollHorizontallyTo(scrollPx);
+
+ WebElement bodyCell = getBodyCell(0, 0);
+ assertTrue(isFrozen(bodyCell));
+ assertEquals(scrollPx, getFrozenScrollCompensation(bodyCell));
+ }
+
+ @Test
+ public void testFreezeToggle() {
+ openTestURL();
+ populate();
+
+ selectMenuPath(FEATURES, FROZEN_COLUMNS, FREEZE_1_COLUMN);
+ scrollHorizontallyTo(100);
+ selectMenuPath(FEATURES, FROZEN_COLUMNS, FREEZE_0_COLUMNS);
+
+ WebElement bodyCell = getBodyCell(0, 0);
+ assertFalse(isFrozen(bodyCell));
+ assertEquals(NO_FREEZE, getFrozenScrollCompensation(bodyCell));
+ }
+
+ private void populate() {
+ selectMenuPath(GENERAL, POPULATE_COLUMN_ROW);
+ }
+
+ private static boolean isFrozen(WebElement cell) {
+ return cell.getAttribute("class").contains("frozen");
+ }
+
+ private static int getFrozenScrollCompensation(WebElement cell) {
+ String styleAttribute = cell.getAttribute("style");
+ Matcher transformMatcher = TRANSFORM_PATTERN.matcher(styleAttribute);
+ Matcher leftMatcher = LEFT_PATTERN.matcher(styleAttribute);
+
+ if (transformMatcher.find()) {
+ return Integer.parseInt(transformMatcher.group(1));
+ } else if (leftMatcher.find()) {
+ return Integer.parseInt(leftMatcher.group(1));
+ } else {
+ return NO_FREEZE;
+ }
+ }
+}