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

Commit

Permalink
fix(test): Use RuleChain to operate rules sequentially
Browse files Browse the repository at this point in the history
  • Loading branch information
djansen-redhat committed Oct 13, 2015
1 parent 4460c1f commit 2439d32
Show file tree
Hide file tree
Showing 64 changed files with 315 additions and 776 deletions.
65 changes: 65 additions & 0 deletions functional-test/src/main/java/org/zanata/page/AbstractPage.java
Expand Up @@ -30,6 +30,7 @@
import org.hamcrest.Matcher;
import org.hamcrest.StringDescription;
import org.openqa.selenium.*;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
Expand Down Expand Up @@ -356,6 +357,70 @@ public void clickElement(final WebElement element) {
element.click();
}

/**
* Convenience function for enter text (common case)
*
* @param element element to pass text to
* @param text text to be entered
*/
public void enterText(final WebElement element, final String text) {
enterText(element, text, true, false, true);
}

/**
* Enter text into an element.
*
* Waits for notifications to be dismissed and element to be ready and visible before entering
* the text.
* If no checking is performed, the resulting screenshot may not be accurate.
* @param element element to pass text to
* @param text text to be entered
* @param clear clear the element's text before entering new text
* @param inject use sendKeys rather than the Actions chain (direct injection)
* @param check check the 'value' attribute for success, and accurate screenshot delay
*/
public void enterText(final WebElement element, final String text, boolean clear,
boolean inject, final boolean check) {
removeNotifications();
waitForNotificationsGone();
scrollIntoView(element);
waitForAMoment().withMessage("editable: " + element.toString()).until(
ExpectedConditions.elementToBeClickable(element));
if (inject) {
if (clear) {
element.clear();
}
element.sendKeys(text);
} else {
Actions enterTextAction = new Actions(getDriver()).moveToElement(element);
enterTextAction = enterTextAction.click();
// Fields can 'blur' on click
waitForPageSilence();
if (clear) {
enterTextAction = enterTextAction.sendKeys(Keys.chord(Keys.CONTROL, "a")).sendKeys(Keys.DELETE);
// Fields can 'blur' on clear
waitForPageSilence();
}
enterTextAction.sendKeys(text).perform();
}
if (check) {
waitForAMoment().withMessage("Text equal to entered")
.until(new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
String text = element.getAttribute("value");
if (!text.equals(text)) {
log.info("Found: {}", text);
return false;
}
return true;
}
});
} else {
log.info("Not checking text entered");
}
}

private void waitForElementReady(final WebElement element) {
waitForAMoment().withMessage("Waiting for element to be ready").until(
new Predicate<WebDriver>() {
Expand Down
Expand Up @@ -22,16 +22,14 @@

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.zanata.feature.Feature;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.feature.testharness.TestPlan.BasicAcceptanceTest;
import org.zanata.feature.testharness.TestPlan.DetailedTest;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.page.dashboard.DashboardBasePage;
import org.zanata.page.dashboard.dashboardsettings.DashboardAccountTab;
import org.zanata.util.AddUsersRule;
import org.zanata.workflow.BasicWorkFlow;
import org.zanata.workflow.LoginWorkFlow;

Expand All @@ -44,9 +42,6 @@
@Category(DetailedTest.class)
public class ChangePasswordTest extends ZanataTestCase {

@Rule
public AddUsersRule addUsersRule = new AddUsersRule();

@Before
public void setUp() {
new BasicWorkFlow().goToHome().deleteCookiesAndRefresh();
Expand Down
Expand Up @@ -23,14 +23,12 @@
import lombok.extern.slf4j.Slf4j;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.zanata.feature.Feature;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.feature.testharness.TestPlan.DetailedTest;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.page.account.RegisterPage;
import org.zanata.util.AddUsersRule;
import org.zanata.workflow.BasicWorkFlow;

import static org.assertj.core.api.Assertions.assertThat;
Expand All @@ -45,9 +43,6 @@ public class EmailValidationTest extends ZanataTestCase {

private RegisterPage registerPage;

@ClassRule
public static AddUsersRule addUsersRule = new AddUsersRule();

@BeforeClass
public static void setUp() {
// Ensure no login
Expand Down
Expand Up @@ -21,19 +21,16 @@
package org.zanata.feature.account;

import lombok.extern.slf4j.Slf4j;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.subethamail.wiser.WiserMessage;
import org.zanata.feature.Feature;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.feature.testharness.TestPlan.DetailedTest;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.page.account.InactiveAccountPage;
import org.zanata.page.utility.HomePage;
import org.zanata.util.AddUsersRule;
import org.zanata.util.EmailQuery;
import org.zanata.util.EnsureLogoutRule;
import org.zanata.util.HasEmailRule;
import org.zanata.workflow.BasicWorkFlow;
import org.zanata.workflow.LoginWorkFlow;
Expand All @@ -49,15 +46,9 @@
@Category(DetailedTest.class)
public class InactiveUserLoginTest extends ZanataTestCase {

@ClassRule
public static AddUsersRule addUsersRule = new AddUsersRule();

@Rule
public HasEmailRule hasEmailRule = new HasEmailRule();

@Rule
public EnsureLogoutRule ensureLogoutRule = new EnsureLogoutRule();

@Feature(summary = "The user needs to verify their account before they may " +
"log in",
tcmsTestPlanIds = 5316, tcmsTestCaseIds = 181714)
Expand Down Expand Up @@ -108,8 +99,7 @@ public void resendActivationEmail() throws Exception {
.signInInactive(usernamepassword, usernamepassword)
.clickResendActivationEmail();

assertThat(homePage.getNotificationMessage())
.isEqualTo(HomePage.SIGNUP_SUCCESS_MESSAGE)
assertThat(homePage.expectNotification(HomePage.SIGNUP_SUCCESS_MESSAGE))
.as("The message sent notification is displayed");

assertThat(hasEmailRule.getMessages().size())
Expand Down Expand Up @@ -155,8 +145,7 @@ public void updateActivationEmail() throws Exception {
.enterNewEmail("newtester@example.com")
.clickUpdateEmail();

assertThat(homePage.getNotificationMessage())
.isEqualTo(HomePage.EMAILCHANGED_MESSAGE)
assertThat(homePage.expectNotification(HomePage.EMAILCHANGED_MESSAGE))
.as("The email changed notification is displayed");

assertThat(hasEmailRule.getMessages().size())
Expand Down
Expand Up @@ -21,17 +21,15 @@
package org.zanata.feature.account;

import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.zanata.feature.Feature;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.feature.testharness.TestPlan.DetailedTest;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.page.account.RegisterPage;
import org.zanata.page.dashboard.dashboardsettings.DashboardAccountTab;
import org.zanata.page.dashboard.dashboardsettings.DashboardClientTab;
import org.zanata.page.dashboard.dashboardsettings.DashboardProfileTab;
import org.zanata.util.AddUsersRule;
import org.zanata.util.Constants;
import org.zanata.util.PropertiesHolder;
import org.zanata.workflow.LoginWorkFlow;
Expand All @@ -45,9 +43,6 @@
@Category(DetailedTest.class)
public class ProfileTest extends ZanataTestCase {

@Rule
public AddUsersRule addUsersRule = new AddUsersRule();

private static final String adminsApiKey = "b6d7044e9ee3b2447c28fb7c50d86d98";
private static final String serverUrl = PropertiesHolder
.getProperty(Constants.zanataInstance.value());
Expand Down
Expand Up @@ -20,26 +20,25 @@
*/
package org.zanata.feature.account;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.zanata.feature.Feature;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.feature.testharness.TestPlan.BasicAcceptanceTest;
import org.zanata.feature.testharness.TestPlan.DetailedTest;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.page.account.RegisterPage;
import org.zanata.page.account.SignInPage;
import org.zanata.page.utility.HomePage;
import org.zanata.util.AddUsersRule;
import org.zanata.util.HasEmailRule;
import org.zanata.workflow.BasicWorkFlow;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static org.assertj.core.api.Assertions.assertThat;

/**
Expand All @@ -49,9 +48,6 @@
@Category(DetailedTest.class)
public class RegisterTest extends ZanataTestCase {

@ClassRule
public static AddUsersRule addUsersRule = new AddUsersRule();

@ClassRule
public static HasEmailRule emailRule = new HasEmailRule();

Expand Down
Expand Up @@ -24,8 +24,8 @@
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.zanata.feature.Feature;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.feature.testharness.TestPlan.DetailedTest;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.page.account.RegisterPage;
import org.zanata.workflow.BasicWorkFlow;

Expand Down
Expand Up @@ -20,14 +20,12 @@
*/
package org.zanata.feature.administration;

import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.zanata.feature.Feature;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.feature.testharness.TestPlan.DetailedTest;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.page.administration.RoleAssignmentsPage;
import org.zanata.util.AddUsersRule;
import org.zanata.workflow.LoginWorkFlow;

import static org.assertj.core.api.Assertions.assertThat;
Expand All @@ -39,9 +37,6 @@
@Category(DetailedTest.class)
public class AutoRoleAssignmentTest extends ZanataTestCase {

@Rule
public AddUsersRule addUsersRule = new AddUsersRule();

@Feature(summary = "The administrator can create a rule to assign roles " +
"at user sign in",
tcmsTestPlanIds = 5316, tcmsTestCaseIds = 0)
Expand Down
Expand Up @@ -20,17 +20,13 @@
*/
package org.zanata.feature.administration;

import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.zanata.feature.Feature;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.feature.testharness.TestPlan.DetailedTest;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.page.utility.HomePage;
import org.zanata.util.AddUsersRule;
import org.zanata.util.SampleProjectRule;
import org.zanata.workflow.BasicWorkFlow;
import org.zanata.workflow.LoginWorkFlow;

Expand All @@ -43,14 +39,8 @@
@Category(DetailedTest.class)
public class EditHomePageTest extends ZanataTestCase {

@ClassRule
public static AddUsersRule addUsersRule = new AddUsersRule();

@Rule
public SampleProjectRule sampleProjectRule = new SampleProjectRule();

@BeforeClass
public static void beforeClass() {
@Before
public void before() {
new BasicWorkFlow().goToHome().deleteCookiesAndRefresh();
assertThat(new LoginWorkFlow().signIn("admin", "admin").loggedInAs())
.isEqualTo("admin")
Expand Down
Expand Up @@ -20,24 +20,23 @@
*/
package org.zanata.feature.administration;

import java.io.File;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.openqa.selenium.Alert;
import org.zanata.feature.Feature;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.feature.testharness.TestPlan.DetailedTest;
import org.zanata.feature.testharness.ZanataTestCase;
import org.zanata.page.administration.TranslationMemoryEditPage;
import org.zanata.page.administration.TranslationMemoryPage;
import org.zanata.util.AddUsersRule;
import org.zanata.util.TestFileGenerator;
import org.zanata.workflow.BasicWorkFlow;
import org.zanata.workflow.LoginWorkFlow;
import org.zanata.workflow.TranslationMemoryWorkFlow;

import java.io.File;

import static org.assertj.core.api.Assertions.assertThat;

/**
Expand All @@ -47,13 +46,10 @@
@Category(DetailedTest.class)
public class EditTranslationMemoryTest extends ZanataTestCase {

@ClassRule
public static AddUsersRule addUsersRule = new AddUsersRule();

private TestFileGenerator testFileGenerator = new TestFileGenerator();

@BeforeClass
public static void beforeClass() {
@Before
public void before() {
new BasicWorkFlow().goToHome().deleteCookiesAndRefresh();
assertThat(new LoginWorkFlow().signIn("admin", "admin").loggedInAs())
.isEqualTo("admin")
Expand Down

0 comments on commit 2439d32

Please sign in to comment.