/* * Copyright 2000-2016 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.themes.valo; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import java.util.List; import org.junit.Test; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import com.vaadin.tests.tb3.MultiBrowserTest; /** * Test for the built-in reponsive ("RWD") styles in Valo. */ public class ResponsiveStylesTest extends MultiBrowserTest { /** * Use this parameter to test the collapsed menu state. */ public static final String COLLAPSED_MENU_TEST_PARAM = "collapsed"; private static final String MENU_STYLENAME = "valo-menu"; private static final int NARROW_ELEMENT_INDEX = 0; private static final int NARROW_WIDTH = 112; private static final int WIDE_ELEMENT_INDEX = 1; private static final int WIDE_WIDTH = 146; private static final String TOGGLE_STYLENAME = "valo-menu-toggle"; /** * Tests that valo-menu-responsive can be used in any element on the page, * not just as top-level component. * * @throws Exception */ @Test public void testValoMenuResponsiveParentSize() throws Exception { openTestURL(); List<WebElement> menus = findElements( com.vaadin.testbench.By.className(MENU_STYLENAME)); WebElement narrowMenu = menus.get(NARROW_ELEMENT_INDEX); int narrowWidth = narrowMenu.getSize().width; assertThat(narrowWidth, equalTo(NARROW_WIDTH)); WebElement wideMenu = menus.get(WIDE_ELEMENT_INDEX); int wideWidth = wideMenu.getSize().width; assertThat(wideWidth, equalTo(WIDE_WIDTH)); compareScreen("defaultMenuWidths"); } /** * Tests that the valo-menu-hover style makes the menu appear on mouseover. * * @throws Exception */ @Test public void testValoMenuResponsiveHover() throws Exception { openTestURL(COLLAPSED_MENU_TEST_PARAM); compareScreen("collapsedMenu"); List<WebElement> toggles = findElements( com.vaadin.testbench.By.className(TOGGLE_STYLENAME)); // Only one menu in the collapsed example WebElement toggle = toggles.get(0); Actions actions = new Actions(getDriver()); actions.moveToElement(toggle); actions.perform(); compareScreen("expandedMenu"); } }