001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 */
019
020 package org.apache.geronimo.testsupport;
021
022 import org.apache.geronimo.testsupport.TestSupport;
023
024 import com.thoughtworks.selenium.Selenium;
025
026 import org.openqa.selenium.server.SeleniumServer;
027
028 import org.testng.annotations.BeforeSuite;
029 import org.testng.annotations.AfterSuite;
030
031 /**
032 * Provides support for Selenium test cases.
033 *
034 * @version $Rev: 706640 $ $Date: 2008-10-21 14:44:05 +0000 (Tue, 21 Oct 2008) $
035 */
036 public class SeleniumTestSupport
037 extends TestSupport
038 {
039 protected static ExtendedSelenium selenium;
040
041 protected ExtendedSelenium createSeleniumClient(String url) throws Exception {
042 super.setUp();
043
044 if (url == null) {
045 // url = "http://localhost:" + SeleniumServer.DEFAULT_PORT;
046 // post 1.0-beta-1 builds don't define DEFAULT_PORT
047 url = "http://localhost:4444";
048 }
049
050 String browser = System.getProperty("browser", "*firefox");
051
052 log.info("Creating Selenium client for URL: " + url + ", Browser: " + browser);
053
054 //ExtendedSelenium selenium = new ExtendedSelenium("localhost", SeleniumServer.DEFAULT_PORT, "*firefox", url);
055 ExtendedSelenium selenium = new ExtendedSelenium("localhost", 4444, browser, url);
056
057 return selenium;
058 }
059
060 protected void ensureSeleniumClientInitialized() {
061 if (selenium == null) {
062 throw new IllegalStateException("Selenium client was not initalized");
063 }
064 }
065
066 @BeforeSuite
067 protected synchronized void startSeleniumClient() throws Exception {
068 log.info("Starting Selenium client");
069
070 selenium = createSeleniumClient("http://localhost:8080/");
071 selenium.start();
072 }
073
074 @AfterSuite
075 protected synchronized void stopSeleniumClient() throws Exception {
076 ensureSeleniumClientInitialized();
077
078 log.info("Stopping Selenium client");
079
080 selenium.stop();
081 }
082
083 protected void waitForPageLoad() throws Exception {
084 ensureSeleniumClientInitialized();
085
086 selenium.waitForPageToLoad("30000");
087 }
088 }
089