Skip to content

Instantly share code, notes, and snippets.

@lfryc
Created July 16, 2012 08:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lfryc/3121648 to your computer and use it in GitHub Desktop.
Save lfryc/3121648 to your computer and use it in GitHub Desktop.
/*
* 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 java.io.IOException;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.jboss.arquillian.drone.webdriver.factory.remote.reusable.ReusableRemoteWebDriver;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.junit.InSequence;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Assert;
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.
*
* 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 SimplerReusableRemoteWebDriverTestCase {
// sessionId is set to be static, so it can be shared between test methods
private static SessionId sessionId;
/**
* Creates a WAR of a Weld based application using ShrinkWrap
*
* @return WebArchive to be tested
*/
@Deployment(testable = false)
public static WebArchive createDeployment() {
return Deployments.createDeployment();
}
@BeforeClass
public static void checkIfWebdriverHubIsRunning() {
Assert.assertTrue("Remote Reusable tests require Selenium Server to be running on port 4444, please start",
isSeleniumServerRunning());
}
@Test
@InSequence(1)
public void testReusableSessionId1(@Drone @Reusable RemoteWebDriver d) {
Assert.assertNotNull("Browser has sessionId set up", ((RemoteWebDriver) d).getSessionId());
sessionId = ((RemoteWebDriver) d).getSessionId();
}
/**
* Tries to open a service on default port used by Selenium Server (:4444)
*/
public static boolean isSeleniumServerRunning() {
return !isPortAvailable(4444);
}
/**
* @author The Apache Directory Project (mina-dev@directory.apache.org)
*/
static boolean isPortAvailable(int port) {
ServerSocket ss = null;
DatagramSocket ds = null;
try {
ss = new ServerSocket(port);
ss.setReuseAddress(true);
ds = new DatagramSocket(port);
ds.setReuseAddress(true);
return true;
} catch (IOException e) {
// do nothing
} finally {
if (ds != null) {
ds.close();
}
if (ss != null) {
try {
ss.close();
} catch (IOException e) {
/* should not be thrown */
}
}
}
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment