package com.vaadin.tests.fields; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.WebElement; import com.vaadin.testbench.elements.ButtonElement; import com.vaadin.tests.tb3.MultiBrowserTest; public class TabIndexesTest extends MultiBrowserTest { @Override public void setup() throws Exception { super.setup(); openTestURL(); } @Test public void testTabIndexesSetToZero() { // clicked by default assertLogText("1. Setting tab indexes to 0"); for (WebElement element : getFieldElements()) { assertTabIndex("0", element); } } @Test public void testTabIndexesSetToOne() { setTabIndexesTo("1"); for (WebElement element : getFieldElements()) { assertTabIndex("1", element); } } @Test public void testTabIndexesSetToOneThroughN() { setTabIndexesTo("1..N"); int counter = 0; for (WebElement element : getFieldElements()) { ++counter; assertTabIndex(String.valueOf(counter), element); } } @Test public void testTabIndexesSetToNThroughOne() { setTabIndexesTo("N..1"); List<WebElement> fieldElements = getFieldElements(); int counter = fieldElements.size(); for (WebElement element : fieldElements) { assertTabIndex(String.valueOf(counter), element); --counter; } } private void setTabIndexesTo(String expected) { String caption = String.format("Set %stab indexes to %s", (expected.contains("N") ? "" : "all "), expected); $(ButtonElement.class).caption(caption).first().click(); assertLogText("2. Setting tab indexes to " + expected); } private void assertLogText(String expected) { Assert.assertEquals("Unexpected log contents,", expected, getLogRow(0)); } private void assertTabIndex(String expected, WebElement element) { Assert.assertEquals("Unexpected tab index,", expected, element.getAttribute("tabIndex")); } private List<WebElement> getFieldElements() { List<WebElement> fieldElements = new ArrayList<>(); fieldElements.add(getElement1()); fieldElements.add(getElement2()); fieldElements.add(getElement3()); fieldElements.add(getElement4()); fieldElements.add(getElement5()); fieldElements.add(getElement6()); fieldElements.add(getElement7()); fieldElements.add(getElement8()); fieldElements.add(getElement9()); fieldElements.add(getElement10()); fieldElements.add(getElement11()); fieldElements.add(getElement12()); fieldElements.add(getElement13()); fieldElements.add(getElement14()); fieldElements.add(getElement15()); fieldElements.add(getElement16()); fieldElements.add(getElement17()); return fieldElements; } private WebElement getElement1() { return vaadinElement("PID_Sfield-1/domChild[1]/domChild[1]"); } private WebElement getElement2() { return vaadinElement("PID_Sfield-2/domChild[0]"); } private WebElement getElement3() { return vaadinElement("PID_Sfield-3/domChild[0]"); } private WebElement getElement4() { return vaadinElement("PID_Sfield-4/domChild[0]"); } private WebElement getElement5() { return vaadinElement("PID_Sfield-5"); } private WebElement getElement6() { return vaadinElement("PID_Sfield-6/domChild[0]"); } private WebElement getElement7() { return vaadinElement("PID_Sfield-7/domChild[0]"); } private WebElement getElement8() { return vaadinElement("PID_Sfield-8/domChild[0]/domChild[0]"); } private WebElement getElement9() { return vaadinElement("PID_Sfield-9/domChild[1]/domChild[1]"); } private WebElement getElement10() { return vaadinElement("PID_Sfield-10/domChild[1]"); } private WebElement getElement11() { return vaadinElement("PID_Sfield-11/domChild[1]"); } private WebElement getElement12() { return vaadinElement("PID_Sfield-12"); } private WebElement getElement13() { return vaadinElement("PID_Sfield-13"); } private WebElement getElement14() { return vaadinElement("PID_Sfield-14"); } private WebElement getElement15() { return vaadinElement("PID_Sfield-15/domChild[1]"); } private WebElement getElement16() { return vaadinElement("PID_Sfield-16/domChild[0]"); } private WebElement getElement17() { return vaadinElement("PID_Sfield-17"); } }