001    /*
002     * Copyright 2006-2012 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package edu.samplu.common;
017    
018    import com.thoughtworks.selenium.Selenium;
019    import junit.framework.Assert;
020    import org.junit.After;
021    import org.junit.Before;
022    import org.openqa.selenium.WebDriver;
023    import org.openqa.selenium.WebDriverBackedSelenium;
024    import org.openqa.selenium.firefox.FirefoxDriver;
025    
026    import static junit.framework.Assert.fail;
027    
028    /**
029     * @deprecated Use WebDriverITBase for new tests.
030     * @author Kuali Rice Team (rice.collab@kuali.org)
031     */
032    public abstract class UpgradedSeleniumITBase {
033        public final static String PORTAL = "/portal.do";
034        protected Selenium selenium;
035        protected WebDriver driver;
036    
037        /**
038         * Returns the URL to be used with this test
039         *
040         * @return URL of the test
041         */
042        public abstract String getTestUrl();
043    
044        @Before
045        public void setUp() throws Exception {
046            driver = new FirefoxDriver();
047            if (!getTestUrl().startsWith("/")) {
048                fail("getTestUrl does not start with /"); // TODO add it?
049            }
050            selenium = new WebDriverBackedSelenium(driver, getBaseUrlString() + getTestUrl());
051    
052            // Login
053            selenium.open(getBaseUrlString() + getTestUrl());
054            login(selenium);
055        }
056    
057        public static String getBaseUrlString() {
058            String baseUrl = System.getProperty("remote.public.url");
059            if (baseUrl == null) {
060                baseUrl = "http://localhost:8080";
061            } else if (baseUrl.endsWith("/")) {
062                baseUrl = baseUrl.substring(0, baseUrl.length() - 1);
063            } else if (!baseUrl.startsWith("http")) {
064                baseUrl = "http://" + baseUrl;
065            }
066            return baseUrl;
067        }
068    
069        public static void login(Selenium selenium) {
070            if (System.getProperty("remote.autologin") == null) {
071                Assert.assertEquals("Login", selenium.getTitle());
072                selenium.type("__login_user", "admin");
073                selenium.click("//input[@value='Login']");
074                selenium.waitForPageToLoad("30000");
075            }
076        }
077    
078        /**
079         * Useful to set -Dremote.driver.dontTearDown=f  -Dremote.driver.dontTearDown=n to not shutdown the browser when
080         * working on tests.
081         * @throws Exception
082         */
083        @After
084        public void tearDown() throws Exception {
085            if (System.getProperty("remote.driver.dontTearDown") == null ||
086                    "f".startsWith(System.getProperty("remote.driver.dontTearDown").toLowerCase()) ||
087                    "n".startsWith(System.getProperty("remote.driver.dontTearDown").toLowerCase())) {
088                selenium.stop();
089                driver.quit(); // TODO not tested with chrome, the service stop might need this check too
090            }
091        }
092    }