diff --git a/.github/workflows/smoke_tests.yml b/.github/workflows/smoke_tests.yml
index 2efb871..2c5f26a 100644
--- a/.github/workflows/smoke_tests.yml
+++ b/.github/workflows/smoke_tests.yml
@@ -30,7 +30,7 @@ jobs:
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & # optional
- name: Run tests
- run: mvn test -Dtest=RunCucumberTest -Dbrowser=chrome-headless -Dcucumber.filter.tags="@login-success"
+ run: mvn test -Dtest=RunCucumberTest -Dbrowser=chrome-headless -Dcucumber.filter.tags="@signup-success"
- name: Generate reports
if: always()
diff --git a/pom.xml b/pom.xml
index 1798657..ac7fe26 100644
--- a/pom.xml
+++ b/pom.xml
@@ -133,6 +133,14 @@
cluecumber-report-plugin
${trivago.version}
+
+
+
+ com.github.javafaker
+ javafaker
+ 1.0.2
+
+
diff --git a/src/test/java/pages/CreateAccountPage.java b/src/test/java/pages/CreateAccountPage.java
index 0660eda..9c4645e 100644
--- a/src/test/java/pages/CreateAccountPage.java
+++ b/src/test/java/pages/CreateAccountPage.java
@@ -5,13 +5,12 @@
import org.openqa.selenium.support.ui.Select;
import runner.RunBase;
import static support.Commands.*;
-import static support.UserDataUtils.*;
import static pages.LoginSignupPage.*;
+import static support.FakeDataAPI.*;
public class CreateAccountPage extends RunBase {
//region constants
- public static final String URL = "https://automationexercise.com/login";
private final By TITLE_MR_FIELD = By.id("id_gender1");
private final By TITLE_MRS_FIELD = By.id("id_gender2");
private static final By PASSWORD_FIELD = By.id("password");
@@ -24,7 +23,6 @@ public class CreateAccountPage extends RunBase {
private final By LAST_NAME_FIELD = By.id("last_name");
private final By COMPANY_FIELD = By.id("company");
private final By ADDRESS1_FIELD = By.id("address1");
- private final By ADDRESS2_FIELD = By.id("address2");
private final By COUNTRY_FIELD = By.id("country");
private final By STATE_FIELD = By.id("state");
private final By CITY_FIELD = By.id("city");
@@ -35,7 +33,7 @@ public class CreateAccountPage extends RunBase {
private final By NAME_ACTUAL = By.id("name");
private final String EMAIL_EXPECTED = storeEmail();
private final By EMAIL_ACTUAL = By.id("email");
- public static final String GET_PASSWORD = getRandomPassword();
+ public static final String GET_PASSWORD = getPassword();
//endregion
public void pageCheck() {
@@ -43,6 +41,9 @@ public void pageCheck() {
}
public void checkUserName() {
+ System.out.println("##########################");
+ System.out.println("WILL VERIFY IF THE NAME IS CORRECT");
+ System.out.println(NAME_EXPECTED);
checkElementIsCorrect(NAME_ACTUAL, NAME_EXPECTED);
}
@@ -98,15 +99,11 @@ public void addLastName() {
}
public void addCompanyName() {
- fillField(COMPANY_FIELD, "Test Company INC.");
+ fillField(COMPANY_FIELD, getCompanyName());
}
public void addAddress1() {
- fillField(ADDRESS1_FIELD, "Test St. 980 NY");
- }
-
- public void addAddress2() {
- fillField(ADDRESS2_FIELD, "Test neighborhood");
+ fillField(ADDRESS1_FIELD, getAddress());
}
public void addCountry() {
@@ -116,22 +113,21 @@ public void addCountry() {
}
public void addState() {
- fillField(STATE_FIELD, "Test State");
+ fillField(STATE_FIELD, getState());
}
public void addCity() {
- fillField(CITY_FIELD, "Testown");
+ fillField(CITY_FIELD, getCity());
}
public void addZipcode() {
- fillField(ZIPCODE_FIELD, getRandomNumber(5));
+ fillField(ZIPCODE_FIELD, getZipCode());
}
public void addMobileNumber() {
- fillField(MOBILE_NUMBER_FIELD, getRandomNumber(10));
+ fillField(MOBILE_NUMBER_FIELD, getPhoneNumber());
}
-
public void clickCreateButton() {
clickButton(CREATE_ACCOUNT_BUTTON);
}
@@ -148,7 +144,6 @@ public void addUserData() {
addLastName();
addCompanyName();
addAddress1();
- addAddress2();
addCountry();
addState();
addCity();
diff --git a/src/test/java/pages/HomePage.java b/src/test/java/pages/HomePage.java
index 9988c69..73fd5db 100644
--- a/src/test/java/pages/HomePage.java
+++ b/src/test/java/pages/HomePage.java
@@ -9,18 +9,16 @@ public class HomePage extends RunBase {
//region constants
public static final String URL = "https://automationexercise.com/";
+ private static final By HOME_PAGE_BUTTON = By.xpath("//*[@id=\"header\"]/div/div/div/div[2]/div/ul/li[1]/a");
private static final By LOGIN_SIGNUP_BUTTON = By.xpath("//*[@id=\"header\"]/div/div/div/div[2]/div/ul/li[4]/a");
private static final String HOME_PAGE_TEXT_EXPECTED = "FEATURES ITEMS";
private static final By HOME_PAGE_TEXT_ACTUAL = By.xpath("/html/body/section[2]/div/div/div[2]/div[1]/h2");
- public final By LOGOUT_BUTTON = By.xpath("//*[@id=\"header\"]/div/div/div/div[2]/div/ul/li[4]/a");
+ public static final By LOGOUT_BUTTON = By.xpath("//*[@id=\"header\"]/div/div/div/div[2]/div/ul/li[4]/a");
private static final By NAME_ACTUAL = By.xpath("//*[@id=\"header\"]/div/div/div/div[2]/div/ul/li[10]/a/b");
private static final String NAME_EXPECTED = storeFullName();
- private static final By IFRAME = By.cssSelector("#aswift_1");
- private static final By IFRAME_DISMISS = By.cssSelector("#dismiss-button");
private static final String ACCOUNT_CREATED_TEXT_EXPECTED = "ACCOUNT CREATED!";
private static final By ACCOUNT_CREATED_TEXT_ACTUAL = By.xpath("//*[@id=\"form\"]/div/div/div/h2/b");
private final By USER_IS_LOGGED = By.xpath("//*[@id=\"header\"]/div/div/div/div[2]/div/ul/li[10]/a");
- private static final By CONTINUE_BUTTON = By.xpath("//*[@id=\"form\"]/div/div/div/div/a");
//endregion
public static void openPage() {
@@ -36,15 +34,22 @@ public static void clickSignupLoginButton() {
clickButton(LOGIN_SIGNUP_BUTTON);
}
- public void clickLogoutButton() {
+ public static void clickLogoutButton() {
clickButton(LOGOUT_BUTTON);
}
public static void accountCreatedConfirmation() {
+ System.out.println("##########################");
+ System.out.println("WILL VERIFY THE SIGNUP");
checkElementIsCorrect(ACCOUNT_CREATED_TEXT_ACTUAL, ACCOUNT_CREATED_TEXT_EXPECTED);
- clickButton(CONTINUE_BUTTON);
- dismissIFrame(IFRAME, IFRAME_DISMISS);
+ //clickButton(CONTINUE_BUTTON);
+ //dismissIFrame(IFRAME, IFRAME_DISMISS);
+ clickButton(HOME_PAGE_BUTTON);
+ checkElementIsCorrect(NAME_ACTUAL, NAME_EXPECTED);
+ clickLogoutButton();
+ clickSignupLoginButton();
+ checkNewUserLogin();
checkElementIsCorrect(NAME_ACTUAL, NAME_EXPECTED);
}
diff --git a/src/test/java/pages/LoginSignupPage.java b/src/test/java/pages/LoginSignupPage.java
index 58bffb8..8993c27 100644
--- a/src/test/java/pages/LoginSignupPage.java
+++ b/src/test/java/pages/LoginSignupPage.java
@@ -3,15 +3,15 @@
import org.openqa.selenium.By;
import runner.RunBase;
import static support.Commands.*;
-import static support.UserDataUtils.*;
+import static support.FakeDataAPI.*;
import static pages.CreateAccountPage.*;
public class LoginSignupPage extends RunBase {
//region constants
public static final String URL = "https://automationexercise.com/login";
- private final By LOGIN_EMAIL_FIELD = By.xpath("//*[@id=\"form\"]/div/div/div[1]/div/form/input[2]");
- private final By PASSWORD_FIELD = By.xpath("//*[@id=\"form\"]/div/div/div[1]/div/form/input[3]");
+ private static final By LOGIN_EMAIL_FIELD = By.xpath("//*[@id=\"form\"]/div/div/div[1]/div/form/input[2]");
+ private static final By PASSWORD_FIELD = By.xpath("//*[@id=\"form\"]/div/div/div[1]/div/form/input[3]");
private static final By LOGIN_BUTTON = By.xpath("//*[@id=\"form\"]/div/div/div[1]/div/form/button");
private final By ERROR_MESSAGE = By.xpath("//*[@id=\"form\"]/div/div/div[1]/div/form/p");
private static final By NAME_FIELD = By.xpath("//*[@id=\"form\"]/div/div/div[3]/div/form/input[2]");
@@ -19,10 +19,10 @@ public class LoginSignupPage extends RunBase {
private static final By SIGNUP_BUTTON = By.xpath("//*[@id=\"form\"]/div/div/div[3]/div/form/button");
private static final By ERROR_ACTUAL = By.xpath("//*[@id=\"form\"]/div/div/div[3]/div/form/p");
private static final String ERROR_EXPECTED = "Email Address already exist!";
- public static final String GET_FIRST_NAME = getRandomName.firstName();
- public static final String GET_LAST_NAME = getRandomName.lastName();
- public static final String GET_EMAIL = getRandomEmail();
- public final String GET_PASSWORD = storePassword();
+ public static final String GET_FIRST_NAME = getFirstName();
+ public static final String GET_LAST_NAME = getLastName();
+ public static final String GET_EMAIL = getEmail();
+ public static final String GET_NEW_USER_PASSWORD = storePassword();
//endregion
public static void pageCheck() {
@@ -66,10 +66,11 @@ public static String storeLastName() {
}
public static String storeFullName() {
- return storeFirstName() + storeLastName();
+ return storeFirstName() + " " + storeLastName();
}
public static void addName() {
+ System.out.println("THE NAME ADDED WAS: " + storeFullName());
fillField(NAME_FIELD, storeFullName());
}
@@ -78,6 +79,7 @@ public static String storeEmail() {
}
public static void addSignupEmail() {
+ System.out.println("THE EMAIL ADDED WAS: " + storeEmail());
fillField(SIGNUP_EMAIL_FIELD, storeEmail());
}
@@ -93,4 +95,10 @@ public void errorMessageSignup() {
checkElementIsCorrect(ERROR_ACTUAL, ERROR_EXPECTED);
}
+ public static void checkNewUserLogin (){
+ fillField(LOGIN_EMAIL_FIELD, storeEmail());
+ fillField(PASSWORD_FIELD, GET_NEW_USER_PASSWORD);
+ clickButton(LOGIN_BUTTON);
+ }
+
}
diff --git a/src/test/java/runner/RunCucumberTest.java b/src/test/java/runner/RunCucumberTest.java
index 0d5b88c..1a4404b 100644
--- a/src/test/java/runner/RunCucumberTest.java
+++ b/src/test/java/runner/RunCucumberTest.java
@@ -9,7 +9,7 @@
@CucumberOptions(
plugin = {"html:target/formated-report/report.html", "json:target/formated-report/report.json"},
features = "src/test/resources/features",
- //tags = "@login",
+ //tags = "@signup-success",
glue = {"steps"}
)
diff --git a/src/test/java/steps/LogoutSteps.java b/src/test/java/steps/LogoutSteps.java
index bdf039c..98e39c4 100644
--- a/src/test/java/steps/LogoutSteps.java
+++ b/src/test/java/steps/LogoutSteps.java
@@ -12,7 +12,6 @@
public class LogoutSteps extends RunCucumberTest {
LoginSignupPage loginSignupPage = new LoginSignupPage();
- HomePage homePage = new HomePage();
@Given("the user is logged in to the website")
public void userLogged(){
@@ -21,7 +20,7 @@ public void userLogged(){
@When ("the user clicks on the Logout button")
public void logoutButton(){
- homePage.clickLogoutButton();
+ HomePage.clickLogoutButton();
}
@Then("the user successfully logout from their account")
diff --git a/src/test/java/steps/SignupSteps.java b/src/test/java/steps/SignupSteps.java
index babb1a3..0239abb 100644
--- a/src/test/java/steps/SignupSteps.java
+++ b/src/test/java/steps/SignupSteps.java
@@ -19,7 +19,6 @@ public void signupData() {
LoginSignupPage.addSignupEmail();
}
-
@And("clicks the signup button")
public void signupButton() {
LoginSignupPage.clickSignupButton();
@@ -43,7 +42,6 @@ public void createAccountButton() {
createAccountPage.clickCreateButton();
}
-
@Then("the user sees a signup confirmation message")
public void confirmationMessage() {
HomePage.accountCreatedConfirmation();
diff --git a/src/test/java/support/Commands.java b/src/test/java/support/Commands.java
index d283843..2e46ac9 100644
--- a/src/test/java/support/Commands.java
+++ b/src/test/java/support/Commands.java
@@ -1,5 +1,6 @@
package support;
+import org.apache.commons.lang3.RandomStringUtils;
import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
@@ -7,6 +8,7 @@
import org.openqa.selenium.support.ui.WebDriverWait;
import runner.RunCucumberTest;
import java.time.Duration;
+import java.util.Random;
public class Commands extends RunCucumberTest {
@@ -42,6 +44,7 @@ public static void fillField(By element, String value) {
System.out.println("##########################");
System.out.println("Will fill a field with a value");
try {
+
waitElement(element);
getDriver().findElement(element).sendKeys(value);
} catch (Exception error) {
@@ -60,46 +63,54 @@ public static void enterWebPage(String URL) {
}
/*---------*/
+ public static String getRandomNumber(int numberOfDigits){
+ return RandomStringUtils.randomNumeric(numberOfDigits);
+ }
+
+ public static int getRandomNumber(int minValue, int maxValue){
+ Random random = new Random();
+
+ return random.nextInt(maxValue - minValue) + minValue;
+ }
+
public static void selectOption(By element1, By element2){
System.out.println("##########################");
System.out.println("Will select an option");
- String option = String.valueOf(UserDataUtils.getRandomNumber(1, 2));
+ String option = String.valueOf(getRandomNumber(1, 2));
System.out.println("Selected option " + option);
switch (option) {
case "1":
clickButton(element1);
- //String selected1 = element1.toString();
break;
case "2":
clickButton(element2);
- //String selected2 = element2.toString();
break;
default:
System.out.println("**** Element not found");
}
}
- /*---------*/
+ /*
public static void dismissIFrame(By element1, By element2){
System.out.println("##########################");
System.out.println("Will try to locate and dismiss add");
try {
- waitElement(element1);
+ waitLonger(60);
getDriver().switchTo().frame(getDriver().findElement(element1));
- waitElement(element2);
+ waitLonger(30);
getDriver().findElement(element2).click();
getDriver().switchTo().defaultContent();
} catch (Exception error) {
System.out.println("**** Add was not displayed");
}
}
+ */
/*---------*/
public static void checkElementIsCorrect(By elementActual, String valueExpected) {
try {
waitElement(elementActual);
WebElement element = getDriver().findElement(elementActual);
-
if (element.getAttribute("value") != null) {
// Method 1: Element with a "value" attribute. Ex.: Filled forms
String valueActual = element.getAttribute("value");
diff --git a/src/test/java/support/FakeDataAPI.java b/src/test/java/support/FakeDataAPI.java
new file mode 100644
index 0000000..72db8a8
--- /dev/null
+++ b/src/test/java/support/FakeDataAPI.java
@@ -0,0 +1,57 @@
+package support;
+
+import com.github.javafaker.Faker;
+import runner.RunCucumberTest;
+
+public class FakeDataAPI extends RunCucumberTest {
+
+
+ public static Faker api (){
+ return new Faker();
+ }
+
+ public static String getFirstName (){
+ String name = api().name().firstName();
+ System.out.println("THE GENERATED FIRST NAME WAS " + name);
+ return name;
+ }
+
+ public static String getLastName (){
+ String name = api().name().lastName();
+ System.out.println("THE GENERATED LAST NAME WAS " + name);
+ return name;
+ }
+
+ public static String getEmail (){
+ String email = api().internet().emailAddress();
+ System.out.println(email);
+ return email;
+ }
+
+ public static String getPassword (){
+ String password = api().internet().password();
+ System.out.println(password);
+ return password;
+ }
+
+ public static String getCompanyName (){
+ return api().company().name();
+ }
+ public static String getAddress (){
+ return api().address().streetAddress();
+ }
+ public static String getState (){
+ return api().address().state();
+ }
+ public static String getCity (){
+ return api().address().city();
+ }
+
+ public static String getZipCode (){
+ return api().address().zipCode();
+ }
+ public static String getPhoneNumber (){
+ return api().phoneNumber().cellPhone();
+ }
+
+}
diff --git a/src/test/java/support/UserDataUtils.java b/src/test/java/support/UserDataUtils.java
deleted file mode 100644
index 6c0dda9..0000000
--- a/src/test/java/support/UserDataUtils.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package support;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import runner.RunCucumberTest;
-import java.util.Random;
-
-public class UserDataUtils extends RunCucumberTest {
-
- //Methods created to generate random data for forms
-
- /*---------*/
- public static String getRandomNumber(int numberOfDigits){
- return RandomStringUtils.randomNumeric(numberOfDigits);
- }
-
- public static int getRandomNumber(int minValue, int maxValue){
- Random random = new Random();
-
- return random.nextInt(maxValue - minValue) + minValue;
- }
-
- /*---------*/
- public static class getRandomName {
- private static Random random = new Random();
- private static String[] firstName = { "Amelia", "Olivia", "Emily", "Ava", "Sophie",
- "Mia", "Ruby", "Lily", "Grace", "Freya", "Charlotte", "Daisy", "Phoebe", "Millie",
- "Eva", "Alice", "Lucy", "Florence", "Lola"};
-
- private static String[] lastName = { " Smith", " Johnson", " Williams", " Brown", " Jones", " Garcia",
- " Miller", " Davis", " Rodriguez", " Martinez", " Hernandez", " Lopez" };
-
- public static String firstName() {
- return firstName[random.nextInt(firstName.length)];
- }
-
- public static String lastName() {
- return lastName[random.nextInt(lastName.length)];
- }
-
- }
-
- /*---------*/
- public static String getRandomEmail(){
- String emailStart = "test+", emailEnd = "@test.com";
- int number = getRandomNumber(1,9999999);
-
- return emailStart + number + emailEnd;
- }
-
- /*---------*/
- public static String getRandomPassword(){
-
- String uppercase = RandomStringUtils.randomAlphabetic(2),
- lowercase = RandomStringUtils.randomAlphabetic(2).toLowerCase(),
- number = getRandomNumber(2);
-
- return uppercase + lowercase + number;
- }
-
-}