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

Commit

Permalink
Merge branch 'integration/master' into rhbz1110048
Browse files Browse the repository at this point in the history
Conflicts:
	zanata-war/src/main/webapp/WEB-INF/layout/login_provider.xhtml
  • Loading branch information
Alex Eng committed Jun 22, 2014
2 parents 8f688ea + 810d895 commit 26379c8
Show file tree
Hide file tree
Showing 93 changed files with 1,501 additions and 2,473 deletions.
5 changes: 4 additions & 1 deletion functional-test/pom.xml
Expand Up @@ -628,9 +628,12 @@
<properties>
<property>
<name>listener</name>
<value>org.zanata.util.ScreenshotEnabledTestRunListener</value>
<value>org.zanata.util.ScreenshotEnabledTestRunListener,org.zanata.util.FeatureInventoryRecorder</value>
</property>
</properties>
<systemPropertyVariables>
<featureInventoryLocation>${project.build.directory}/feature-inventory</featureInventoryLocation>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
Expand Down
2 changes: 2 additions & 0 deletions functional-test/src/main/java/org/zanata/page/CorePage.java
Expand Up @@ -38,6 +38,8 @@
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;

import javax.annotation.Nullable;

/**
* Contains the physical elements, such as page title and home link, that must
* exist on all Zanata pages.
Expand Down
Expand Up @@ -38,8 +38,19 @@
*/
public class RegisterPage extends CorePage {

public final String USERNAMEVALIDATIONERROR = "Between 3 and 20 lowercase "+
"letters, numbers and underscores only";
public static final String USERNAME_VALIDATION_ERROR =
"Between 3 and 20 lowercase letters, numbers and underscores only";

public static final String USERNAME_UNAVAILABLE_ERROR =
"This username is not available";

public static final String MALFORMED_EMAIL_ERROR =
"not a well-formed email address";

public static final String REQUIRED_FIELD_ERROR = "value is required";

public static final String USERNAME_LENGTH_ERROR =
"size must be between 3 and 20";

@FindBy(id = "loginForm:name")
private WebElement nameField;
Expand Down
Expand Up @@ -32,6 +32,9 @@

@Slf4j
public class SignInPage extends CorePage {

public static final String LOGIN_FAILED_ERROR = "Login failed";

@FindBy(id = "loginForm:username")
private WebElement usernameField;

Expand Down
Expand Up @@ -68,21 +68,6 @@ public ManageUserAccountPage(WebDriver driver) {
roleMap.put("user", "4");
}

public ManageUserAccountPage enterUsername(final String username) {
waitForTenSec().until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
WebElement usernameField = input.findElement(usernameBy);
usernameField.clear();
usernameField.sendKeys(username);
return input.findElement(usernameBy).getAttribute("value")
.equals(username);
}
});

return new ManageUserAccountPage(getDriver());
}

public ManageUserAccountPage enterPassword(String password) {
passwordField.sendKeys(password);
return new ManageUserAccountPage(getDriver());
Expand Down Expand Up @@ -123,17 +108,4 @@ public ManageUserPage cancelEditUser() {
return new ManageUserPage(getDriver());
}

public ManageUserAccountPage clearFields() {
waitForTenSec().until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
input.findElement(usernameBy).clear();
return input.findElement(usernameBy).getAttribute("value")
.isEmpty();
}
});
passwordField.clear();
passwordConfirmField.clear();
return new ManageUserAccountPage(getDriver());
}
}
Expand Up @@ -30,6 +30,17 @@
*/
public class DashboardAccountTab extends DashboardBasePage {

public static final String INCORRECT_OLD_PASSWORD_ERROR =
"Old password is incorrect, please check and try again.";

public static final String FIELD_EMPTY_ERROR = "may not be empty";

public static final String PASSWORD_LENGTH_ERROR =
"size must be between 6 and 20";

public static final String EMAIL_TAKEN_ERROR =
"This email address is already taken";

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

Expand Down
Expand Up @@ -20,12 +20,10 @@
*/
package org.zanata.page.projects;

import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import java.util.List;

import lombok.extern.slf4j.Slf4j;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
Expand All @@ -35,7 +33,7 @@
import org.zanata.page.projectversion.VersionLanguagesPage;
import org.zanata.util.WebElementUtil;

import java.util.List;
import com.google.common.base.Predicate;

/**
* @author Damian Jansen
Expand Down Expand Up @@ -63,41 +61,29 @@ public CreateVersionPage clickCreateVersionLink() {
}

public VersionLanguagesPage gotoVersion(final String versionId) {
return refreshPageUntil(this,
new Function<WebDriver, VersionLanguagesPage>() {
@Override
public VersionLanguagesPage apply(WebDriver input) {
WebElement versionForm =
getDriver().findElement(By.id("versions_form"));

List<WebElement> versionLinks =
versionForm.findElement(
By.className("list--stats"))
.findElements(By.tagName("li"));

log.info("found {} active versions",
versionLinks.size());

Optional<WebElement> found =
Iterables.tryFind(versionLinks,
new Predicate<WebElement>() {
@Override
public boolean apply(
WebElement input) {
return input
.findElement(
By.tagName("a"))
.getText()
.contains(versionId);
}
});

Preconditions.checkState(found.isPresent(), versionId
+ " not found");
found.get().findElement(By.tagName("a")).click();
return new VersionLanguagesPage(getDriver());
};
});
waitForTenSec().until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
List<WebElement> versionLinks = getDriver()
.findElement(By.id("versions_form"))
.findElement(By.className("list--stats"))
.findElements(By.tagName("li"));
boolean clicked = false;
for (WebElement links : versionLinks) {
// The Translate Options menu can get picked up here
for (WebElement link : links.findElements(By.tagName("a"))) {
if (link.getText().contains(versionId)) {
link.click();
clicked = true;
break;
}
}
if (clicked) break;
}
return clicked;
}
});
return new VersionLanguagesPage(getDriver());
}

public List<String> getVersions() {
Expand Down
Expand Up @@ -68,7 +68,7 @@ public ProjectVersionsPage apply(WebDriver input) {
PROJECT_NAME_COLUMN));
WebElement link = table.findElement(By.linkText(projectName));
link.click();
return new ProjectVersionsPage(input);
return new ProjectVersionsPage(getDriver());
}
});
}
Expand Down
Expand Up @@ -31,6 +31,7 @@
import org.zanata.page.projects.ProjectBasePage;
import org.zanata.util.WebElementUtil;

import javax.annotation.Nullable;
import java.util.List;

/**
Expand Down Expand Up @@ -77,24 +78,12 @@ public List<WebElement> apply(WebDriver driver) {
}

public ProjectPermissionsTab clickRemoveOn(String maintainer) {
for (WebElement maintainersLi : getSettingsMaintainersElement()) {
String displayedUsername = getUsername(maintainersLi);
if (displayedUsername.equals(maintainer)) {
maintainersLi.findElement(By.tagName("a")).click();
break;
}
}
getMaintainerElementFromList(maintainer).click();
return new ProjectPermissionsTab(getDriver());
}

public ProjectBasePage clickRemoveOnSelf(String maintainer) {
for (WebElement maintainersLi : getSettingsMaintainersElement()) {
String displayedUsername = getUsername(maintainersLi);
if (displayedUsername.equals(maintainer)) {
maintainersLi.findElement(By.tagName("a")).click();
break;
}
}
getMaintainerElementFromList(maintainer).click();
return new ProjectBasePage(getDriver());
}

Expand All @@ -104,6 +93,21 @@ private String getUsername(WebElement maintainersLi) {
.replace("@", "");
}

private WebElement getMaintainerElementFromList(final String maintainer) {
return waitForTenSec().until(new Function<WebDriver, WebElement>() {
@Override
public WebElement apply(WebDriver input) {
for (WebElement maintainersLi : getSettingsMaintainersElement()) {
String displayedUsername = getUsername(maintainersLi);
if (displayedUsername.equals(maintainer)) {
return maintainersLi.findElement(By.tagName("a"));
}
}
return null;
}
});
}

public ProjectPermissionsTab waitForMaintainersContains(
final String username) {
return refreshPageUntil(this, new Predicate<WebDriver>() {
Expand All @@ -125,8 +129,10 @@ public boolean apply(WebDriver driver) {
}

public List<WebElement> getSettingsMaintainersElement() {
return getDriver().findElement(By.id("settings-permissions-form"))
.findElements(By.xpath(".//ul/li[@class='reveal--list-item']"));
return getDriver()
.findElement(By.id("settings-permissions-form"))
.findElement(By.id("maintainers-list"))
.findElements(By.tagName("li"));
}

public List<String> getSettingsMaintainersList() {
Expand Down
Expand Up @@ -48,7 +48,7 @@ public boolean apply(WebDriver input) {
}

public boolean sourceDocumentsContains(String document) {
List<WebElement> documentList = getLanguageTabDocumentList();
List<WebElement> documentList = getDocumentsTabDocumentList();
for (final WebElement tableRow : documentList) {
if (tableRow.findElement(By.className("list__title")).getText()
.contains(document)) {
Expand All @@ -58,7 +58,7 @@ public boolean sourceDocumentsContains(String document) {
return false;
}

private List<WebElement> getLanguageTabDocumentList() {
private List<WebElement> getDocumentsTabDocumentList() {
waitForTenSec().until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
Expand Down
Expand Up @@ -30,6 +30,10 @@

public class HomePage extends BasePage {

public static final String SIGNUP_SUCCESS_MESSAGE =
"You will soon receive an email " +
"with a link to activate your account.";

@FindBy(id = "main_body_content")
private WebElement mainBodyContent;

Expand Down
21 changes: 21 additions & 0 deletions functional-test/src/test/java/org/zanata/feature/Feature.java
@@ -0,0 +1,21 @@
package org.zanata.feature;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
/**
* @author Patrick Huang
* <a href="mailto:pahuang@redhat.com">pahuang@redhat.com</a>
*/
public @interface Feature {
int NO_BUG = 0;

int bugzilla() default NO_BUG;
String summary() default "no description";
int[] tcmsTestPlanIds() default {};
int[] tcmsTestCaseIds() default {};
}

0 comments on commit 26379c8

Please sign in to comment.