package com.vaadin.test.defaultwidgetset; import java.util.List; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.phantomjs.PhantomJSDriver; import com.vaadin.testbench.ScreenshotOnFailureRule; import com.vaadin.testbench.TestBenchTestCase; import com.vaadin.testbench.elements.ButtonElement; import com.vaadin.testbench.elements.LabelElement; import com.vaadin.testbench.elements.TextFieldElement; public abstract class AbstractWidgetSetIT extends TestBenchTestCase { @Rule public ScreenshotOnFailureRule rule = new ScreenshotOnFailureRule(this, true); @Before public void setup() { // Screenshot rule tears down the driver setDriver(new PhantomJSDriver()); } protected void testAppStartsUserCanInteract(String expectedWidgetSet) { testAppStartsUserCanInteract(expectedWidgetSet, false); } protected void testAppStartsUserCanInteract(String expectedWidgetSet, boolean debug) { String url = "http://localhost:8080"; if (debug) { url += "?debug"; } getDriver().get(url); TextFieldElement nameInput = $(TextFieldElement.class).first(); nameInput.setValue("John Dåe"); $(ButtonElement.class).first().click(); Assert.assertEquals("Label shown", 2, $(LabelElement.class).all().size()); Assert.assertEquals("Thanks John Dåe, it works!", $(LabelElement.class).get(1).getText()); Assert.assertEquals(expectedWidgetSet, findElement(By.id("widgetsetinfo")).getText()); } protected void assertNoUnknownComponentShown() { Assert.assertEquals(0, findElements(By.className("vaadin-unknown-caption")).size()); } protected void assertUnknownComponentShown(String componentClass) { WebElement unknownComponentCaption = findElement( By.className("vaadin-unknown-caption")); Assert.assertTrue(unknownComponentCaption.getText().contains( "does not contain implementation for " + componentClass)); } protected void assertHasDebugMessage(String message) { List<WebElement> elements = getDriver().findElements( By.xpath("//span[@class='v-debugwindow-message']")); boolean found = false; for (WebElement element : elements) { if (element.getText().contains(message)) { found = true; break; } } Assert.assertTrue( "Cannot find debug message containing '" + message + "'", found); } }