blob: 459e42bb3aa7162d6649588477ed5015ea560cdb [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.openmeetings.test.selenium;
import java.util.List;
import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao;
import org.apache.openmeetings.test.AbstractSpringTest;
import org.junit.After;
import org.junit.Before;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.springframework.beans.factory.annotation.Autowired;
public abstract class AbstractTestDefaults extends AbstractSpringTest {
@Autowired
private FieldLanguagesValuesDao fieldLanguagesValuesDao;
public WebDriver driver = null;
private String BASE_URL = "http://localhost:5080/openmeetings";
private String username = "swagner";
private String userpass = "qweqwe";
private String orgname = "seleniumtest";
private String email = "selenium@openmeetings.apache.org";
private String locale = "en-us";
public String getBASE_URL() {
return BASE_URL;
}
public String getUsername() {
return username;
}
public String getUserpass() {
return userpass;
}
public String getOrgname() {
return orgname;
}
public String getEmail() {
return email;
}
public Long getLanguageId() {
return 1L;
}
public String getLocale() {
return locale;
}
// setting this to false can be handy if you run the test from inside
// Eclipse, the browser will not shut down after the test so you can start
// to diagnose the test issue
public boolean doTearDownAfterTest = false;
public String getString(long id) {
return fieldLanguagesValuesDao.getString(id, getLanguageId());
}
/**
* Make method overwrite possible to have custom behavior in tests
*
* @return
*/
public boolean getDoTearDownAfterTest() {
return doTearDownAfterTest;
}
@Before
public void setUp() throws Exception {
super.setUp();
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("intl.accept_languages", getLocale());
driver = new FirefoxDriver(profile);
}
/**
* This test is a basic test to verify the default loader mechanism works
* it is not intend to be a part of any sub test
*
* @throws Exception
*/
//@Test
public void smokeTest() throws Exception {
try {
driver.get(getBASE_URL());
testIsInstalledAndDoInstallation();
SeleniumUtils.inputText(driver, "login", getUsername());
SeleniumUtils.inputText(driver, "pass", getUserpass());
WebElement signInButton = SeleniumUtils.findElement(driver,
"//button[span[contains(text(), 'Sign in')]]", true, true);
signInButton.click();
SeleniumUtils.elementExists(driver,
"//h3[contains(text(), 'Help and support')]", true);
} catch (Exception e) {
SeleniumUtils.makeScreenShot(this.getClass().getSimpleName(), e,
driver);
throw e;
}
}
/**
* Throws exception in case that test fails, so it is important to not catch
* that exception but really let the test fail!
*
* @throws Exception
*/
protected void testIsInstalledAndDoInstallation() throws Exception {
WebElement wicketExtensionsWizardHeaderTitle = SeleniumUtils
.findElement(driver, "wicketExtensionsWizardHeaderTitle", false, true);
if (wicketExtensionsWizardHeaderTitle == null) {
return;
}
if (wicketExtensionsWizardHeaderTitle.getText()
.contains("Installation")) {
System.out.println("Do Installation");
doInstallation();
}
}
private void doInstallation() throws Exception {
Thread.sleep(3000L);
List<WebElement> buttons_next = SeleniumUtils.findElements(driver,
"buttons:next", true);
buttons_next.get(1).sendKeys(Keys.RETURN);
Thread.sleep(1000L);
SeleniumUtils.inputText(driver, "view:cfg.username", getUsername());
SeleniumUtils.inputText(driver, "view:cfg.password", getUserpass());
SeleniumUtils.inputText(driver, "view:cfg.email", getEmail());
SeleniumUtils.inputText(driver, "view:cfg.group", getOrgname());
buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true);
buttons_next.get(1).sendKeys(Keys.RETURN);
Thread.sleep(1000L);
buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true);
buttons_next.get(1).sendKeys(Keys.RETURN);
Thread.sleep(1000L);
buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true);
buttons_next.get(1).sendKeys(Keys.RETURN);
Thread.sleep(1000L);
buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true);
buttons_next.get(1).sendKeys(Keys.RETURN);
Thread.sleep(2000L);
List<WebElement> elements = SeleniumUtils.findElements(driver,
"buttons:finish", true);
elements.get(1).sendKeys(Keys.RETURN);
long maxMilliSecondsWait = 120000;
while (maxMilliSecondsWait > 0) {
// check if installation is complete by searching for the link on
// the success page
WebElement enterApplicationLink = SeleniumUtils.findElement(driver,
"//a[contains(@href,'install')]", false, true);
if (enterApplicationLink == null) {
System.out
.println("Installation running - wait 3 more seconds and check again");
Thread.sleep(3000L);
maxMilliSecondsWait -= 3000;
} else {
maxMilliSecondsWait = 0;
enterApplicationLink.click();
return;
}
}
throw new Exception("Timeout during installation");
}
@After
public void tearDown() throws Exception {
if (getDoTearDownAfterTest()) {
driver.close();
driver.quit();
}
}
}