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 org.junit.After; 020 import org.junit.Assert; 021 import org.junit.Before; 022 import org.openqa.selenium.NoSuchFrameException; 023 import org.openqa.selenium.WebDriver; 024 import org.openqa.selenium.WebDriverBackedSelenium; 025 026 import static junit.framework.Assert.fail; 027 import static org.junit.Assert.assertTrue; 028 029 /** 030 * @deprecated Use WebDriverITBase for new tests. 031 * @author Kuali Rice Team (rice.collab@kuali.org) 032 */ 033 public abstract class UpgradedSeleniumITBase { 034 private Selenium selenium; 035 protected WebDriver driver; 036 037 protected String getBaseUrlString() { 038 return ITUtil.getBaseUrlString(); 039 } 040 041 /** 042 * Returns the URL to be used with this test 043 * 044 * @return URL of the test 045 */ 046 public abstract String getTestUrl(); 047 048 /** 049 * Override in test to define a user other than admin 050 * @return 051 */ 052 public String getUserName() { 053 return "admin"; 054 } 055 056 @Before 057 public void setUp() throws Exception { 058 driver = ITUtil.getWebDriver(); 059 if (!getTestUrl().startsWith("/")) { 060 fail("getTestUrl does not start with /"); // TODO add it? 061 } 062 selenium = new WebDriverBackedSelenium(driver, ITUtil.getBaseUrlString() + getTestUrl()); 063 064 // Login 065 selenium.open(ITUtil.getBaseUrlString() + getTestUrl()); 066 ITUtil.loginSe(selenium, getUserName()); 067 } 068 069 protected void assertDocFinal(String docId) { 070 ITUtil.assertDocFinal(selenium, docId); 071 } 072 073 protected void assertElementPresent(String locator) { 074 assertTrue(isElementPresent(locator)); 075 } 076 077 protected void assertTextPresent(String text) { 078 assertTextPresent("", text); 079 } 080 081 protected void assertTextPresent(String message, String text) { 082 assertTrue(text + " text not present " + message, selenium.isTextPresent(text)); 083 } 084 085 protected void blanketApproveTest() throws InterruptedException { 086 ITUtil.blanketApprove(selenium); 087 } 088 089 protected void close() { 090 selenium.close(); 091 } 092 093 protected void check(String locator) { 094 selenium.check(locator); 095 } 096 097 protected void checkErrorMessageItem(String message) { 098 ITUtil.checkErrorMessageItem(selenium, message); 099 } 100 101 protected void checkForIncidentReport(String locator) { 102 checkForIncidentReport(locator, ""); 103 } 104 105 protected void checkForIncidentReport(String locator, String message) { 106 ITUtil.checkForIncidentReport(selenium, message); 107 } 108 109 protected void chooseCancelOnNextConfirmation() { 110 selenium.chooseCancelOnNextConfirmation(); 111 } 112 113 protected void colapseExpand(String clickLocator, String visibleLocator) throws InterruptedException { 114 waitAndClick(clickLocator); 115 waitNotVisible(visibleLocator); 116 117 waitAndClick(clickLocator); 118 waitIsVisible(visibleLocator); 119 } 120 121 protected void expandColapse(String clickLocator, String visibleLocator) throws InterruptedException { 122 waitAndClick(clickLocator); 123 waitIsVisible(visibleLocator); 124 125 waitAndClick(clickLocator); 126 waitNotVisible(visibleLocator); 127 } 128 129 protected void fireEvent(String locator, String event) { 130 selenium.fireEvent(locator, event); 131 } 132 133 protected void focus(String locator) { 134 selenium.focus(locator); 135 } 136 137 protected void focusAndType(String fieldLocator, String typeText) { 138 selenium.focus(fieldLocator); 139 selenium.type(fieldLocator, typeText); 140 } 141 142 protected String[] getAllWindowTitles() { 143 return selenium.getAllWindowTitles(); 144 } 145 146 protected String getAttribute(String attributeLocator) { 147 return selenium.getAttribute(attributeLocator); 148 } 149 150 protected String getConfirmation() { 151 return selenium.getConfirmation(); 152 } 153 154 protected Number getCssCount(String cssCountRows) { 155 return selenium.getCssCount(cssCountRows); 156 } 157 158 protected String getSelectedLabel(String locator) { 159 return selenium.getSelectedLabel(locator); 160 } 161 162 protected String[] getSelectOptions(String locator) { 163 return selenium.getSelectOptions(locator); 164 } 165 166 protected String getEval(String script) { 167 return selenium.getEval(script); 168 } 169 170 protected String getLocation() { 171 return selenium.getLocation(); 172 } 173 174 protected String getText(String locator) { 175 return selenium.getText(locator); 176 } 177 178 protected String getTitle() { 179 return selenium.getTitle(); 180 } 181 182 protected String getValue(String locator) { 183 return selenium.getValue(locator); 184 } 185 186 protected boolean isElementPresent(String locator) { 187 return selenium.isElementPresent(locator); 188 } 189 190 protected boolean isTextPresent(String locator) { 191 return selenium.isTextPresent(locator); 192 } 193 194 protected boolean isVisible(String locator) { 195 return selenium.isVisible(locator); 196 } 197 198 protected void keyDown(String locator, String key) { 199 selenium.keyDown(locator, key); 200 } 201 202 protected void keyPress(String locator, String key) { 203 selenium.keyPress(locator, key); 204 } 205 206 protected void keyUp(String locator, String key) { 207 selenium.keyUp(locator, key); 208 } 209 210 protected void mouseOver(String locator) { 211 selenium.mouseOver(locator); 212 } 213 214 protected void mouseOut(String locator) { 215 selenium.mouseOut(locator); 216 } 217 218 protected void open(String url) { 219 selenium.open(url); 220 } 221 222 protected void removeAllSelections(String locator) { 223 selenium.removeAllSelections(locator); 224 } 225 226 protected void select(String locator, String select) { 227 selenium.select(locator, select); 228 } 229 230 protected void selectFrame(String frameName) { 231 try { 232 selenium.selectFrame(frameName); 233 } catch (NoSuchFrameException nsfe) { 234 // do nothing, don't fail on a missing iframe 235 } 236 } 237 238 protected void setSpeed(String speed) { 239 selenium.setSpeed(speed); 240 } 241 242 protected void selectWindow(String windowName) { 243 selenium.selectWindow(windowName); 244 } 245 246 protected void uncheck(String locator) { 247 selenium.uncheck(locator); 248 } 249 250 protected void waitAndClick(String locator) throws InterruptedException { 251 waitAndClick(locator, ""); 252 } 253 254 protected void waitAndClick(String locator, String message) throws InterruptedException { 255 ITUtil.waitAndClick(selenium, locator, message); 256 } 257 258 protected String waitForDocId() throws InterruptedException { 259 ITUtil.waitForElement(selenium, AdminMenuITBase.DOC_ID_LOCATOR); 260 return selenium.getText(AdminMenuITBase.DOC_ID_LOCATOR); 261 } 262 263 protected void waitAndType(String elementLocator, String text) throws InterruptedException { 264 waitAndType(elementLocator, text, ""); 265 } 266 267 protected void waitAndType(String elementLocator, String text, String message) throws InterruptedException { 268 ITUtil.waitAndType(selenium, elementLocator, text, message); 269 } 270 271 protected void waitNotVisible(String visibleLocator) throws InterruptedException { 272 for (int second = 0;; second++) { 273 if (second >= 15) { 274 Assert.fail("timeout"); 275 } 276 277 if (!isVisible(visibleLocator)) { 278 break; 279 } 280 281 Thread.sleep(1000); 282 } 283 } 284 285 protected void waitIsVisible(String visibleLocator) throws InterruptedException { 286 for (int second = 0;; second++) { 287 if (second >= 15) { 288 Assert.fail("timeout"); 289 } 290 if (isVisible(visibleLocator)) { 291 break; 292 } 293 Thread.sleep(1000); 294 } 295 } 296 297 protected void waitForElementPresent(String locator) throws InterruptedException { 298 waitForElementPresent(locator, ""); 299 } 300 301 // TODO this should be message first 302 protected void waitForElementPresent(String locator, String message) throws InterruptedException { 303 ITUtil.waitForElement(selenium, locator, message); 304 } 305 306 protected void waitForElementVisible(String locator, String message) throws InterruptedException { 307 ITUtil.waitForElementVisible(selenium, locator, message); 308 } 309 310 protected void waitForPageToLoad() { 311 waitForPageToLoad(ITUtil.DEFAULT_WAIT_FOR_PAGE_TO_LOAD_TIMEOUT); 312 } 313 314 protected void waitForPageToLoad50000() { 315 waitForPageToLoad("50000"); 316 } 317 318 protected void waitForPageToLoad(String number) { 319 selenium.waitForPageToLoad(number); 320 } 321 322 protected void waitForTitleToEqualKualiPortalIndex() throws InterruptedException { 323 waitForTitleToEqualKualiPortalIndex(""); 324 } 325 326 protected void waitForTitleToEqualKualiPortalIndex(String message) throws InterruptedException { 327 ITUtil.waitForTitleToEqual(selenium, ITUtil.KUALI_PORTAL_TITLE, message); 328 } 329 330 protected void windowFocus() { 331 selenium.windowFocus(); 332 } 333 334 /** 335 * Useful to set -Dremote.driver.dontTearDown=f -Dremote.driver.dontTearDown=n to not shutdown the browser when 336 * working on tests. 337 * @throws Exception 338 */ 339 @After 340 public void tearDown() throws Exception { 341 if (ITUtil.dontTearDownPropertyNotSet()) { 342 selenium.stop(); 343 driver.quit(); // TODO not tested with chrome, the service stop might need this check too 344 } 345 } 346 }