/* * Copyright 2013 eXo Platform SAS * * 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 examples.tutorial; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.junit.Test; import static org.junit.Assert.*; import org.junit.runner.RunWith; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; import java.net.HttpURLConnection; import java.net.URL; /** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */ @RunWith(Arquillian.class) public abstract class WeatherTestCase { // tag::deploymentURL[] @ArquillianResource URL deploymentURL; // end::deploymentURL[] // tag::driver[] @Drone WebDriver driver; // end::driver[] public abstract URL getApplicationURL(String application); // tag::testWeather1[] @Test @RunAsClient public void testWeather1() throws Exception { URL url = getApplicationURL("weather1"); // <1> Retrieve the application driver.get(url.toString()); WebElement body = driver.findElement(By.tagName("body")); assertTrue(body.getText().contains("The weather application")); // <2> Check markup is correct } // end::testWeather1[] @Test @RunAsClient public void testWeather2() throws Exception { URL url = getApplicationURL("weather2"); driver.get(url.toString()); WebElement body = driver.findElement(By.tagName("body")); assertTrue(body.getText().contains("temperature in marseille")); assertTrue(body.getText().contains("20 degrees")); } @Test @RunAsClient public void testWeather3() throws Exception { URL url = getApplicationURL("weather3"); driver.get(url.toString()); WebElement body = driver.findElement(By.tagName("body")); assertTrue(body.getText().contains("temperature in marseille")); assertTrue(body.getText().contains("10 degrees")); } @Test @RunAsClient public void testWeather4() throws Exception { URL url = getApplicationURL("weather4"); driver.get(url.toString()); WebElement body = driver.findElement(By.tagName("body")); assertTrue(body.getText().contains("temperature in marseille")); assertTrue("Was expecting to find <10 degrees> in " + body.getText(), body.getText().contains("10 degrees")); WebElement parisElt = driver. findElement(By.linkText("Paris")); parisElt.click(); body = driver.findElement(By.tagName("body")); assertTrue(body.getText().contains("temperature in paris")); assertTrue(body.getText().contains("10 degrees")); } @Test @RunAsClient public void testWeather5() throws Exception { URL url = getApplicationURL("weather5"); driver.get(url.toString()); WebElement locationElt = driver. findElement(By.cssSelector("input[name='location']")); locationElt.sendKeys("bastia"); locationElt.submit(); WebElement body = driver.findElement(By.tagName("body")); assertTrue(body.getText().contains("temperature in bastia")); assertTrue(body.getText().contains("10 degrees")); } @Test @RunAsClient public void testWeather7() throws Exception { URL url = getApplicationURL("weather7"); driver.get(url.toString()); WebElement link = driver.findElement(By.tagName("link")); String href = link.getAttribute("href"); url = new URL(href); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); assertEquals(200, conn.getResponseCode()); } @Test @RunAsClient public void testWeather8() throws Exception { URL url = getApplicationURL("weather8"); driver.get(url.toString()); WebElement p = new WebDriverWait(driver, 10).until( new ExpectedCondition<WebElement>() { public WebElement apply(WebDriver input) { return input.findElement( By.cssSelector("div.accordion-inner p")); } }); assertTrue(p.getText().contains("temperature in marseille")); assertTrue(p.getText().contains("10 degrees")); } }