diff options
author | Dmitrii Rogozin <dmitrii@vaadin.com> | 2014-05-09 19:13:59 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2014-05-21 05:18:35 +0000 |
commit | cc5c5af189c0eb16257cdbe0374374c159b67560 (patch) | |
tree | f700612d8afc327f8f85e50fac337a679d06744c /uitest/src/com/vaadin/tests/components/combobox | |
parent | fd8a4d3ab839d7e29fe89ff7b4329a8776ae3304 (diff) | |
download | vaadin-framework-cc5c5af189c0eb16257cdbe0374374c159b67560.tar.gz vaadin-framework-cc5c5af189c0eb16257cdbe0374374c159b67560.zip |
Fix keyboard navigating in combo box (#11333).
Extract code which focuses on item after changing the page. Deferring this method allows to update the list of items before focusing.
Change-Id: I7d249c2abbd5c24ca2d798736e483f2b7dfa59f1
Diffstat (limited to 'uitest/src/com/vaadin/tests/components/combobox')
-rw-r--r-- | uitest/src/com/vaadin/tests/components/combobox/ComboBoxScrollingWithArrows.java | 72 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/components/combobox/ComboBoxScrollingWithArrowsTest.java | 83 |
2 files changed, 155 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/combobox/ComboBoxScrollingWithArrows.java b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxScrollingWithArrows.java new file mode 100644 index 0000000000..d9ae7da050 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxScrollingWithArrows.java @@ -0,0 +1,72 @@ +/* + * 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.combobox; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.AbstractLayout; +import com.vaadin.ui.ComboBox; +import com.vaadin.ui.VerticalLayout; + +/** + * Test UI verifying navigating in combobox via arrow keys. + */ +public class ComboBoxScrollingWithArrows extends AbstractTestUI { + final String DESCRIPTION = "When positioned on last item in the page and press downArrow key - should open new page and set focus on the first item."; + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#setup(com.vaadin.server. + * VaadinRequest) + */ + @Override + protected void setup(VaadinRequest request) { + VerticalLayout layout = new VerticalLayout(); + addComponent(layout); + addComboBox(layout); + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#getTestDescription() + */ + @Override + protected String getTestDescription() { + return DESCRIPTION; + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#getTicketNumber() + */ + @Override + protected Integer getTicketNumber() { + return 11333; + } + + private void addComboBox(AbstractLayout layout) { + ComboBox box = new ComboBox(); + for (int i = 0; i < 100; i++) { + box.addItem("item " + i); + } + box.setPageLength(10); + box.setNullSelectionAllowed(false); + layout.addComponent(box); + } +} diff --git a/uitest/src/com/vaadin/tests/components/combobox/ComboBoxScrollingWithArrowsTest.java b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxScrollingWithArrowsTest.java new file mode 100644 index 0000000000..bc03593e3f --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxScrollingWithArrowsTest.java @@ -0,0 +1,83 @@ +/* + * 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.combobox; + +import java.util.List; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebElement; + +import com.vaadin.testbench.By; +import com.vaadin.tests.tb3.MultiBrowserTest; + +/** + * When pressed down key, while positioned on the last item - should show next + * page and focus on the first item of the next page. + */ +public class ComboBoxScrollingWithArrowsTest extends MultiBrowserTest { + + @Before + public void openURL() { + openTestURL(); + } + + @Test + public void scrollDownArrowKeyTest() throws InterruptedException { + final int ITEMS_PER_PAGE = 10; + // Selenium is used instead of TestBench4, because there is no method to + // access the popup of the combobox + // The method ComboBoxElement.openPopup() opens the popup, but doesn't + // provide any way to access the popup and send keys to it. + // Ticket #13756 + WebElement dropDownComboBox = driver.findElement(By + .className("v-filterselect-input")); + // opens Lookup + dropDownComboBox.sendKeys(Keys.DOWN); + // go to the last item and then one more + for (int i = 0; i < ITEMS_PER_PAGE + 1; i++) { + dropDownComboBox.sendKeys(Keys.DOWN); + } + String expected = "item " + ITEMS_PER_PAGE;// item 10 + + List<WebElement> items = driver.findElements(By + .className("gwt-MenuItem-selected")); + String actual = items.get(0).getText(); + Assert.assertEquals(expected, actual); + } + + @Test + public void scrollUpArrowKeyTest() throws InterruptedException { + final int ITEMS_PER_PAGE = 10; + WebElement dropDownComboBox = driver.findElement(By + .className("v-filterselect-input")); + // opens Lookup + dropDownComboBox.sendKeys(Keys.DOWN); + // go to the last item and then one more + for (int i = 0; i < ITEMS_PER_PAGE + 1; i++) { + dropDownComboBox.sendKeys(Keys.DOWN); + } + // move to one item up + dropDownComboBox.sendKeys(Keys.UP); + String expected = "item " + (ITEMS_PER_PAGE - 1);// item 9 + List<WebElement> items = driver.findElements(By + .className("gwt-MenuItem-selected")); + String actual = items.get(0).getText(); + Assert.assertEquals(expected, actual); + } +} |