Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
rhbz1066756 - Fix functional tests after merging with latest master.
Browse files Browse the repository at this point in the history
  • Loading branch information
Carlos A. Munoz committed Apr 14, 2014
1 parent ae20fb4 commit 4941cc8
Show file tree
Hide file tree
Showing 16 changed files with 246 additions and 194 deletions.
6 changes: 1 addition & 5 deletions functional-test/src/main/java/org/zanata/page/BasePage.java
Expand Up @@ -26,6 +26,7 @@
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
Expand Down Expand Up @@ -273,11 +274,6 @@ public WebElement apply(WebDriver driver) {
return new ProjectVersionsPage(getDriver());
}

public String getHtmlSource(WebElement webElement) {
return (String) ((JavascriptExecutor) getDriver()).executeScript(
"return arguments[0].innerHTML;", webElement);
}

public void clickWhenTabEnabled(final WebElement tab) {
waitForTenSec().until(new Predicate<WebDriver>() {
@Override
Expand Down
17 changes: 17 additions & 0 deletions functional-test/src/main/java/org/zanata/page/CorePage.java
Expand Up @@ -122,6 +122,23 @@ public String getNotificationMessage() {
return messages.size() > 0 ? messages.get(0).getText() : "";
}

public void waitForNotificationMessage(final String expectedMessage) {
waitForTenSec().until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver driver) {
List<WebElement> messages =
getDriver().findElement(By.id("messages"))
.findElements(By.tagName("li"));
for( WebElement message : messages ) {
if( message.getText().trim().equals( expectedMessage ) ) {
return true;
}
}
return false;
}
});
}

public List<String> waitForErrors() {
waitForTenSec().until(new Function<WebDriver, WebElement>() {
@Override
Expand Down
Expand Up @@ -40,7 +40,7 @@ public DashboardActivityTab(WebDriver driver) {

public List<WebElement> getMyActivityList() {
WebElement listWrapper =
getDriver().findElement(By.id("activityList"));
getDriver().findElement(By.id("activity-list"));

if (listWrapper != null) {
return listWrapper.findElements(By.xpath("./li"));
Expand Down
Expand Up @@ -66,7 +66,7 @@ public boolean activityTabIsSelected() {
By.cssSelector("#activity.is-active")) != null;
}

private void clickWhenTabEnabled(final WebElement tab) {
public void clickWhenTabEnabled(final WebElement tab) {
waitForTenSec().until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
Expand All @@ -80,18 +80,6 @@ public boolean apply(WebDriver input) {
});
}

public WebElement getActivityTab() {
return activityTab;
}

public WebElement getProjectsTab() {
return projectsTab;
}

public WebElement getSettingsTab() {
return settingsTab;
}

public List<WebElement> getMyActivityList() {
WebElement listWrapper =
getDriver().findElement(By.id("activity-list"));
Expand All @@ -108,7 +96,7 @@ public DashboardProjectsTab gotoProjectsTab() {
}

public DashboardSettingsTab gotoSettingsTab() {
getSettingsTab().click();
settingsTab.click();
return new DashboardSettingsTab(getDriver());
}

Expand All @@ -117,9 +105,4 @@ public CreateProjectPage clickCreateYourOwn() {
getDriver().findElement(By.linkText("create your own")).click();
return new CreateProjectPage(getDriver());
}

public DashboardBasePage clickOnActivityTab() {
getActivityTab().click();
return this;
}
}
Expand Up @@ -34,7 +34,7 @@ public class DashboardSettingsTab extends DashboardBasePage {
@FindBy(id = "email-update-form:emailField:email")
private WebElement emailField;

@FindBy(id = "updateEmailButton")
@FindBy(id = "email-update-form:updateEmailButton")
private WebElement updateEmailButton;

@FindBy(id = "passwordChangeForm:oldPasswordField:oldPassword")
Expand All @@ -43,7 +43,7 @@ public class DashboardSettingsTab extends DashboardBasePage {
@FindBy(id = "passwordChangeForm:newPasswordField:newPassword")
private WebElement newPasswordField;

@FindBy(id = "changePasswordButton")
@FindBy(id = "passwordChangeForm:changePasswordButton")
private WebElement changePasswordButton;

public DashboardSettingsTab(WebDriver driver) {
Expand All @@ -58,13 +58,6 @@ public DashboardSettingsTab typeNewAccountEmailAddress(String emailAddress) {

public DashboardSettingsTab clickUpdateEmailButton() {
updateEmailButton.click();
waitForTenSec().until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
return !DashboardSettingsTab.this.getNotificationMessage()
.contains("admin");
}
});
return this;
}

Expand All @@ -82,13 +75,6 @@ public DashboardSettingsTab typeNewPassword(String newPassword) {

public DashboardSettingsTab clickUpdatePasswordButton() {
changePasswordButton.click();
waitForTenSec().until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
return !DashboardSettingsTab.this.getNotificationMessage()
.contains("admin");
}
});
return this;
}
}
Expand Up @@ -30,12 +30,15 @@
import org.zanata.page.account.ChangePasswordPage;
import org.zanata.page.account.MyAccountPage;
import org.zanata.page.dashboard.DashboardBasePage;
import org.zanata.page.dashboard.DashboardSettingsTab;
import org.zanata.page.utility.HomePage;
import org.zanata.util.AddUsersRule;
import org.zanata.util.NoScreenshot;
import org.zanata.workflow.BasicWorkFlow;
import org.zanata.workflow.LoginWorkFlow;

import java.util.List;

import static org.hamcrest.MatcherAssert.assertThat;

/**
Expand All @@ -57,20 +60,16 @@ public void setUp() {
@Test
@Category(BasicAcceptanceTest.class)
public void changePasswordSuccessful() {
MyAccountPage myAccountPage =
new LoginWorkFlow().signIn("translator", "translator")
.goToMyProfile().goToChangePassword()
.enterOldPassword("translator")
.enterNewPassword("newpassword")
.enterConfirmNewPassword("newpassword")
.changePassword();

assertThat(
"Confirmation message is displayed",
myAccountPage.getNotificationMessage(),
Matchers.equalTo("Your password has been successfully changed."));

HomePage homePage = myAccountPage.logout();
String passwordChanged = "Your password has been successfully changed.";

DashboardBasePage dashboard =
new LoginWorkFlow().signIn("translator", "translator");
dashboard.gotoSettingsTab()
.typeOldPassword("translator")
.typeNewPassword("newpassword")
.clickUpdatePasswordButton();

HomePage homePage = dashboard.logout();
assertThat("User is logged out", !homePage.hasLoggedIn());
DashboardBasePage dashboardPage =
new LoginWorkFlow().signIn("translator", "newpassword");
Expand All @@ -82,87 +81,59 @@ public void changePasswordSuccessful() {
public void changePasswordCurrentPasswordFailure() {
String incorrectPassword =
"Old password is incorrect, please check and try again.";
ChangePasswordPage changePasswordPage =
new LoginWorkFlow().signIn("translator", "translator")
.goToMyProfile().goToChangePassword()
.enterOldPassword("nottherightpassword")
.enterNewPassword("somenewpassword")
.enterConfirmNewPassword("somenewpassword")
.changePasswordExpectingFailure();

assertThat("Incorrect password message displayed",
changePasswordPage.getErrors(),
Matchers.contains(incorrectPassword));
}

@Test
public void changePasswordConfirmationMismatch() {
String incorrectPassword = "Passwords do not match";
ChangePasswordPage changePasswordPage =
List<String> fieldErrors =
new LoginWorkFlow().signIn("translator", "translator")
.goToMyProfile().goToChangePassword()
.enterOldPassword("translator")
.enterNewPassword("somenewpassword")
.enterConfirmNewPassword("differentpassword")
.changePasswordExpectingFailure();
.gotoSettingsTab()
.typeOldPassword("nottherightpassword")
.typeNewPassword("somenewpassword")
.clickUpdatePasswordButton()
.getFieldErrors();

assertThat("Incorrect password message displayed",
changePasswordPage.getErrors(),
fieldErrors,
Matchers.contains(incorrectPassword));
}

@Test
public void changePasswordCancel() {
MyAccountPage myAccountPage =
new LoginWorkFlow().signIn("translator", "translator")
.goToMyProfile().goToChangePassword()
.enterOldPassword("translator")
.enterNewPassword("notnewpassword")
.enterConfirmNewPassword("notnewpassword")
.cancelChangePassword();

HomePage homePage = myAccountPage.logout();
assertThat("User is logged out", !homePage.hasLoggedIn());
DashboardBasePage dashboardPage =
new LoginWorkFlow().signIn("translator", "translator");
assertThat("User has logged in with the original password",
dashboardPage.hasLoggedIn());
}

@Test
public void changePasswordRequiredFieldsAreNotEmpty() {
String emptyPassword = "value is required";
ChangePasswordPage changePasswordPage =
String mayNotBeEmpty = "may not be empty";
List<String> fieldErrors =
new LoginWorkFlow().signIn("translator", "translator")
.goToMyProfile().goToChangePassword()
.changePasswordExpectingFailure();
.gotoSettingsTab()
.clickUpdatePasswordButton()
.getFieldErrors();

assertThat("Incorrect password message displayed",
changePasswordPage.getErrors(),
Matchers.contains(emptyPassword, emptyPassword, emptyPassword));
fieldErrors,
Matchers.contains(mayNotBeEmpty, mayNotBeEmpty));
}

@Test
public void changePasswordAreOfRequiredLength() {
String passwordSizeError = "size must be between 6 and 20";
String tooShort = "test5";
String tooLong = "t12345678901234567890";
ChangePasswordPage changePasswordPage =
DashboardSettingsTab dashboardSettingsTab =
new LoginWorkFlow().signIn("translator", "translator")
.goToMyProfile().goToChangePassword()
.enterNewPassword("test5")
.enterConfirmNewPassword(tooShort);

.gotoSettingsTab()
.typeOldPassword("translator");

List<String> fieldErrors =
dashboardSettingsTab
.typeNewPassword(tooShort)
.clickUpdatePasswordButton()
.waitForFieldErrors();
assertThat("Incorrect password message displayed",
changePasswordPage.waitForErrors(),
fieldErrors,
Matchers.hasItem(passwordSizeError));

changePasswordPage =
changePasswordPage.enterNewPassword(tooLong)
.enterConfirmNewPassword(tooLong);

fieldErrors =
dashboardSettingsTab
.typeNewPassword(tooLong)
.clickUpdatePasswordButton()
.waitForFieldErrors();
assertThat("Incorrect password message displayed",
changePasswordPage.waitForErrors(),
fieldErrors,
Matchers.hasItem(passwordSizeError));
}
}
Expand Up @@ -96,21 +96,27 @@ public void projectListIsPresent() throws Exception {

@Test
public void accountEmailModification() throws Exception {
final String successMessage =
"You will soon receive an email with a link to activate your email account change.";
dashboard.gotoSettingsTab()
.typeNewAccountEmailAddress("new@fakeemail.com")
.clickUpdateEmailButton();
assertThat(dashboard.getNotificationMessage()).startsWith(
"You will soon receive an email");
.clickUpdateEmailButton()
.waitForNotificationMessage(successMessage);
assertThat(dashboard.getNotificationMessage())
.isEqualTo(successMessage);
}

@Test
public void passwordChange() throws Exception {
final String passwordChanged =
"Your password has been successfully changed.";
dashboard.gotoSettingsTab()
.typeOldPassword("admin")
.typeNewPassword("admin2")
.clickUpdatePasswordButton();
.clickUpdatePasswordButton()
.waitForNotificationMessage(passwordChanged);
assertThat(dashboard.getNotificationMessage()).isEqualTo(
"Your password has been successfully changed.");
passwordChanged);
}

public boolean signInAs(String username, String password) {
Expand Down
Expand Up @@ -73,14 +73,14 @@ public void addLanguageAsEnabled() {
manageLanguagePage.languageIsEnabled(language));

List<String> enabledLocaleList = manageLanguagePage.goToHomePage()
.goToProject("about fedora").gotoVersion("master")
.gotoSettingsTab().gotoSettingsLanguagesTab()
.gotoVersion("master")
.gotoSettingsTab()
.gotoSettingsLanguagesTab()
.clickInheritCheckbox()
.waitForLocaleListVisible()
.getEnabledLocaleList();
.goToProjects()
.goToProject("about fedora")
.gotoVersion("master")
.gotoSettingsTab()
.gotoSettingsLanguagesTab()
.clickInheritCheckbox()
.waitForLocaleListVisible()
.getEnabledLocaleList();

assertThat("The language is enabled by default", enabledLocaleList,
Matchers.hasItem(languageDisplayName));
Expand Down

0 comments on commit 4941cc8

Please sign in to comment.