private void selectItem(final MenuItem newSelectedItem) {
menu.selectItem(newSelectedItem);
- String text = newSelectedItem != null ? newSelectedItem.getText()
- : "";
-
// Set the icon.
FilterSelectSuggestion suggestion = (FilterSelectSuggestion) newSelectedItem
.getCommand();
setSelectedItemIcon(suggestion.getIconUri());
// Set the text.
- setText(text);
+ setText(suggestion.getReplacementString());
menu.updateKeyboardSelectedItem();
}
*/
package com.vaadin.tests.fonticon;
+import static org.junit.Assert.assertEquals;
+
import java.io.IOException;
import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
openTestURL();
compareScreen("all");
}
+
+ @Test
+ public void comboBoxItemIconsOnKeyboardNavigation() throws Exception {
+ openTestURL();
+ WebElement comboBoxInput = getDriver().findElement(
+ By.className("v-filterselect-input"));
+
+ // No initial value.
+ assertEquals("", comboBoxInput.getText());
+
+ // Navigate to the first item with keyboard navigation.
+ sendKeys(comboBoxInput, Keys.ARROW_DOWN, Keys.ARROW_DOWN,
+ Keys.ARROW_DOWN);
+
+ // Value must be "One" without any extra characters.
+ // See ticket #14660
+ assertEquals("One", comboBoxInput.getAttribute("value"));
+
+ // Check also the second item.
+ sendKeys(comboBoxInput, Keys.ARROW_DOWN);
+ assertEquals("Two", comboBoxInput.getAttribute("value"));
+ }
+
+ private void sendKeys(WebElement element, Keys... keys) throws Exception {
+ for (Keys key : keys) {
+ element.sendKeys(key);
+ sleep(10); // For PhantomJS.
+ }
+ }
}