From 0d0f2d10a7f0f3aa5cdc55420512feb5ad8429e6 Mon Sep 17 00:00:00 2001 From: Teemu Pòˆntelin Date: Tue, 3 Jun 2014 21:00:48 +0300 Subject: Fix for handling selectors with both width and height ranges (#13587) This fix splits the used regular expressions into a more manageable parts while fixing the handling of a case where both width-range and height-range are defined. Also refactored some duplicate code into a helper function. Change-Id: I98295b8b0772b33a9985c0630e065eea2281d11d --- .../tests/extensions/ResponsiveWidthAndHeight.java | 50 +++++++++++++++++ .../extensions/ResponsiveWidthAndHeightTest.java | 64 ++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 uitest/src/com/vaadin/tests/extensions/ResponsiveWidthAndHeight.java create mode 100644 uitest/src/com/vaadin/tests/extensions/ResponsiveWidthAndHeightTest.java (limited to 'uitest/src') diff --git a/uitest/src/com/vaadin/tests/extensions/ResponsiveWidthAndHeight.java b/uitest/src/com/vaadin/tests/extensions/ResponsiveWidthAndHeight.java new file mode 100644 index 0000000000..1c3acbec8d --- /dev/null +++ b/uitest/src/com/vaadin/tests/extensions/ResponsiveWidthAndHeight.java @@ -0,0 +1,50 @@ +/* + * 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.extensions; + +import com.vaadin.annotations.Theme; +import com.vaadin.server.Responsive; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.CssLayout; +import com.vaadin.ui.Label; + +@Theme("tests-responsive") +public class ResponsiveWidthAndHeight extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + CssLayout layout = new CssLayout(); + layout.addStyleName("width-and-height"); + layout.setSizeFull(); + setContent(layout); + Responsive.makeResponsive(layout); + + layout.addComponent(new Label( + "Resize the browser window in both dimensions to see the background color change.")); + } + + @Override + protected String getTestDescription() { + return "The CssLayout with both width-range and height-range defined"; + } + + @Override + protected Integer getTicketNumber() { + return 13587; + } +} diff --git a/uitest/src/com/vaadin/tests/extensions/ResponsiveWidthAndHeightTest.java b/uitest/src/com/vaadin/tests/extensions/ResponsiveWidthAndHeightTest.java new file mode 100644 index 0000000000..8086457c24 --- /dev/null +++ b/uitest/src/com/vaadin/tests/extensions/ResponsiveWidthAndHeightTest.java @@ -0,0 +1,64 @@ +/* + * 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.extensions; + +import static org.junit.Assert.assertEquals; + +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import com.vaadin.testbench.By; +import com.vaadin.testbench.elements.CssLayoutElement; +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class ResponsiveWidthAndHeightTest extends MultiBrowserTest { + + @Before + public void setUp() throws Exception { + // We need this in order to ensure that the initial width-range is + // width: 600px- and height: 500px- + testBench().resizeViewPortTo(1024, 768); + } + + @Test + public void testWidthAndHeightRanges() throws Exception { + openTestURL(); + + // IE sometimes has trouble waiting long enough. + new WebDriverWait(getDriver(), 30).until(ExpectedConditions + .presenceOfElementLocated(By + .cssSelector(".v-csslayout-width-and-height"))); + + // Verify both width-range and height-range. + assertEquals("600px-", + $(CssLayoutElement.class).first().getAttribute("width-range")); + assertEquals("500px-", + $(CssLayoutElement.class).first().getAttribute("height-range")); + + // Resize + testBench().resizeViewPortTo(550, 450); + + // Verify updated width-range and height-range. + assertEquals("0-599px", + $(CssLayoutElement.class).first().getAttribute("width-range")); + assertEquals("0-499px", + $(CssLayoutElement.class).first().getAttribute("height-range")); + } + +} -- cgit v1.2.3