Commit b28de04a authored by Kyle Muldoon's avatar Kyle Muldoon

broke down each web component into class. Successfully validated user info at Account Settings page

parent f94de708
package Pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class AccountSettingsPagePF {
WebDriver driver;
WebDriverWait wdw;
@FindBy(how = How.ID, using = "input-firstName")
WebElement firstNameField;
@FindBy(how = How.ID, using = "input-lastName")
WebElement lastNameField;
@FindBy(how = How.ID, using = "emailIdaccount")
WebElement emailField;
public AccountSettingsPagePF(WebDriver driver) {
this.driver = driver;
this.wdw = new WebDriverWait(this.driver, 1);
PageFactory.initElements(driver, this);
}
public String getFirstName() {
wdw.until(ExpectedConditions.elementToBeClickable(firstNameField));
return firstNameField.getAttribute("value");
}
public String getLastName() {
wdw.until(ExpectedConditions.elementToBeClickable(lastNameField));
return lastNameField.getAttribute("value");
}
public String getEmail() {
wdw.until(ExpectedConditions.elementToBeClickable(emailField));
return emailField.getAttribute("value");
}
}
package PageComponents; package Pages;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
......
package Pages;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How; import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.WebDriverWait;
public class AccountSettingsPOM { public class LoggedInHomePagePF {
WebDriver driver; WebDriver driver;
WebDriverWait wdw; WebDriverWait wdw;
@FindBy(how = How.PARTIAL_LINK_TEXT, using = "Account")
WebElement expandAccountOptionsButton; WebElement expandAccountOptionsButton;
WebElement accountSettingsButton;
WebElement userNameInputBox;
WebElement userPasswordInputBox;
WebElement signInButton;
public LoggedInHomePagePF(WebDriver driver) {
this.driver = driver;
this.wdw = new WebDriverWait(this.driver, 1);
PageFactory.initElements(driver, this);
}
public void revealRightSidebarLoggedIn() {
wdw.until(ExpectedConditions.elementToBeClickable(expandAccountOptionsButton));
expandAccountOptionsButton.click();
}
} }
package Pages;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class LoggedInRightSideBarPF {
WebDriver driver;
WebDriverWait wdw;
@FindBy(how = How.PARTIAL_LINK_TEXT, using = "Account Settings")
WebElement revealAccountSettingsButton;
public LoggedInRightSideBarPF(WebDriver driver) {
this.driver = driver;
this.wdw = new WebDriverWait(this.driver, 1);
PageFactory.initElements(driver, this);
}
public void revealAccountSettings() {
wdw.until(ExpectedConditions.elementToBeClickable(revealAccountSettingsButton));
revealAccountSettingsButton.click();
}
}
package PageComponents; package Pages;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
......
package PageComponents; package Pages;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
......
import PageComponents.HomePagePF; import Pages.*;
import PageComponents.LoginModalPF;
import PageComponents.RightSideBarPF;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeDriver;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Properties; import java.util.Properties;
import static org.junit.Assert.*;
public class SafewayLoginTest { public class SafewayLoginTest {
...@@ -19,26 +17,60 @@ public class SafewayLoginTest { ...@@ -19,26 +17,60 @@ public class SafewayLoginTest {
@Test @Test
public void testSafewayLogin() throws InterruptedException { public void testSafewayLogin() throws InterruptedException {
// Expected field values to test against
String expectedFName = "Nisum";
String expectedLName = "TestAcct";
String expectedEmail = "vkrijegccvsknuvnpv@miucce.com";
// Get browser driver for OS as well as user credentials for login
setup(); setup();
// Initialize test browser session
WebDriver driver = new ChromeDriver(); WebDriver driver = new ChromeDriver();
// Initialize browser control objects for Safeway.com
HomePagePF homePage = new HomePagePF(driver); HomePagePF homePage = new HomePagePF(driver);
RightSideBarPF rightSideBar = new RightSideBarPF(driver); RightSideBarPF rightSideBar = new RightSideBarPF(driver);
LoginModalPF loginModal = new LoginModalPF(driver); LoginModalPF loginModal = new LoginModalPF(driver);
LoggedInHomePagePF loggedInHomePage = new LoggedInHomePagePF(driver);
LoggedInRightSideBarPF loggedInRightSideBar = new LoggedInRightSideBarPF(driver);
AccountSettingsPagePF accountSettingsPage = new AccountSettingsPagePF(driver);
// Perform user login and arrive at account settings page
homePage.visitSafewayHomepage(); homePage.visitSafewayHomepage();
homePage.revealRightSidebar(); homePage.revealRightSidebar();
rightSideBar.revealLoginModal(); rightSideBar.revealLoginModal();
loginModal.fillUserInfo(safewayLoginCreds.getProperty("username"), safewayLoginCreds.getProperty("password")); loginModal.fillUserInfo(safewayLoginCreds.getProperty("username"), safewayLoginCreds.getProperty("password"));
loginModal.sendCredentials(); loginModal.sendCredentials();
Thread.sleep(3000);
loggedInHomePage.revealRightSidebarLoggedIn();
loggedInRightSideBar.revealAccountSettings();
// Extract user info from account settings page, compare against expected
assertEquals(expectedFName, accountSettingsPage.getFirstName());
assertEquals(expectedLName, accountSettingsPage.getLastName());
assertEquals(expectedEmail, accountSettingsPage.getEmail());
// Tear down the test session. It passed
System.out.println("ALL TEST CASES PASSED!");
Thread.sleep(10000); Thread.sleep(10000);
driver.quit(); driver.quit();
} }
public void setup() { public void setup() {
pollSystemInfo();
pollCredentials();
System.out.println("====================================================");
System.out.printf("Running login test using %s on %s\n", browser, OS);
System.out.println("username:\t" + this.safewayLoginCreds.getProperty("username"));
System.out.println("password:\t" + this.safewayLoginCreds.getProperty("password"));
System.out.println("====================================================");
}
public void pollSystemInfo() {
///////////////////// /////////////////////
// Get environment information // Get environment information
///////////////////// /////////////////////
...@@ -50,23 +82,18 @@ public class SafewayLoginTest { ...@@ -50,23 +82,18 @@ public class SafewayLoginTest {
System.setProperty("webdriver.chrome.driver", System.setProperty("webdriver.chrome.driver",
"/Users/kmuldoon/Dev/practice/testing/Selenium/Selenium-POM-Safeway/src/test/resources/chromedriver"); "/Users/kmuldoon/Dev/practice/testing/Selenium/Selenium-POM-Safeway/src/test/resources/chromedriver");
break; break;
case "Windows": case "Windows":
; ;
break; break;
case "Linux": case "Linux":
; ;
break; break;
default: default:
System.out.println("Unsupported OS"); System.out.println("Unsupported OS");
} }
}
public void pollCredentials() {
System.out.printf("Running login test using %s on %s\n", browser, OS);
///////////////////// /////////////////////
// Get Login Credentials // Get Login Credentials
///////////////////// /////////////////////
...@@ -77,12 +104,10 @@ public class SafewayLoginTest { ...@@ -77,12 +104,10 @@ public class SafewayLoginTest {
// load a properties file // load a properties file
this.safewayLoginCreds.load(input); this.safewayLoginCreds.load(input);
// get the property value and print it out
System.out.println("username:\t" + this.safewayLoginCreds.getProperty("username"));
System.out.println("password:\t" + this.safewayLoginCreds.getProperty("password"));
} catch (IOException ex) { } catch (IOException ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment