/* * JBoss, Home of Professional Open Source * Copyright 2010, Red Hat Middleware LLC, and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * 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 org.jboss.arquillian.drone.webdriver.example; import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.drone.webdriver.factory.remote.reusable.ReusableRemoteWebDriver; import org.jboss.arquillian.drone.webdriver.utils.UrlUtils; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.InSequence; import org.junit.Assert; import org.junit.Assume; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.remote.SessionId; import qualifier.Reusable; /** * Tests Arquillian Selenium extension against Weld Login example. * <p> * Uses standard settings of Selenium 2.0, that is RemoteWebDriver by default, but allows user to pass another driver * specified * as a System property or in the Arquillian configuration. * * @author <a href="mailto:kpiwko@redhat.com">Karel Piwko</a> * @author <a href="mailto:jpapouse@redhat.com">Jan Papousek</a> * @see org.jboss.arquillian.drone.webdriver.factory.WebDriverFactory */ @RunWith(Arquillian.class) public class ReusableRemoteWebDriverTestCase { // sessionId is set to be static, so it can be shared between test methods private static SessionId sessionId; @BeforeClass public static void skipIfEdgeBrowser() { Assume.assumeFalse(System.getProperty("browser").equals("edge")); } private void checkIfWebdriverHubIsRunning() { Assert.assertTrue( "Remote Reusable tests require Selenium Server to be running on port 4444, please start it manually before running the tests.", UrlUtils.isSeleniumHubRunningOnDefaultUrl()); } @Test @InSequence(1) public void testReusableSessionId1(@Drone @Reusable RemoteWebDriver d) { checkIfWebdriverHubIsRunning(); Assert.assertNotNull("Browser has sessionId set up", d.getSessionId()); sessionId = d.getSessionId(); } @Test @InSequence(2) public void testReusableSessionId2(@Drone @Reusable RemoteWebDriver d) { checkIfWebdriverHubIsRunning(); Assert.assertTrue("Drone instance is reusable", d instanceof ReusableRemoteWebDriver); Assert.assertNotNull("Browser has sessionId set up", d.getSessionId()); Assert.assertEquals("SessionId was reused", sessionId, d.getSessionId()); sessionId = null; } @Test @InSequence(3) public void testReusableSessionId3(@Drone @Reusable WebDriver d) { checkIfWebdriverHubIsRunning(); Assert.assertNotNull("Browser has sessionId set up", ((RemoteWebDriver) d).getSessionId()); sessionId = ((RemoteWebDriver) d).getSessionId(); } @Test @InSequence(4) public void testReusableSessionId4(@Drone @Reusable WebDriver d) { checkIfWebdriverHubIsRunning(); Assert.assertTrue("Drone instance is reusable", d instanceof ReusableRemoteWebDriver); Assert.assertNotNull("Browser has sessionId set up", ((RemoteWebDriver) d).getSessionId()); Assert.assertEquals("SessionId was reused", sessionId, ((RemoteWebDriver) d).getSessionId()); sessionId = null; } @Test @InSequence(5) public void testNonReusableSession1(@Drone WebDriver d) { checkIfWebdriverHubIsRunning(); Assert.assertFalse("Drone instance is not reusable", d instanceof ReusableRemoteWebDriver); } }