LearningSalesForceCommerceC.../storefront-reference-architecture/test/acceptance/pages/account.page.js
2021-12-21 10:57:31 -08:00

124 lines
4.8 KiB
JavaScript

const I = actor();
module.exports = {
locators: {
addressTitle: '#addressId.form-control',
fName: '#firstName.form-control',
lName: '#lastName.form-control',
address1: '#address1.form-control',
country: '#country.form-control',
state: '#state.form-control',
city: '#city.form-control',
zip: '#zipCode.form-control',
phone: '#phone.form-control',
saveBtn: '.btn.btn-save.btn-block.btn-primary',
nameOnCard: '#cardOwner.form-control',
ccNum: '#cardNumber.form-control',
expMonth: '#month.form-control',
expYear: '#year.form-control',
defaultPayment: '.custom-control-label',
currentPassword: '#currentPassword.form-control',
newPassword: '#newPassword.form-control',
newPasswordConfirm: '#newPasswordConfirm.form-control',
confirmEmail: '#confirmEmail.form-control',
confirmPassword: '#password.form-control',
addNew: '.card-link',
backToAccount: '.text-center.back-to-account-link',
viewAll: '.pull-right',
removeProductBtn: '.remove-btn.remove-payment.btn-light',
removeProductModal: '.modal-content',
removeProductConfirm: '.btn.btn-primary.delete-confirmation-btn',
loggedInAccountNav: '.user.nav-item',
accountLogOut: '.user .popover li'
},
addAddress(addressTitle, fName, lName, address1, country, state, city, zipcode, phone) {
I.fillField(this.locators.addressTitle, addressTitle);
I.fillField(this.locators.fName, fName);
I.fillField(this.locators.lName, lName);
I.fillField(this.locators.address1, address1);
I.selectOption(this.locators.country, country);
I.selectOption(this.locators.state, state);
I.fillField(this.locators.city, city);
I.fillField(this.locators.zip, zipcode);
I.fillField(this.locators.phone, phone);
I.click(this.locators.saveBtn);
},
clickAddAddress() {
let locator = locate(this.locators.addNew)
.withAttr({ 'aria-label': 'Add New Address' });
I.click(locator);
},
clickAddPayment() {
let locator = locate(this.locators.addNew)
.withAttr({ 'aria-label': 'Add New Payment' });
I.click(locator);
},
clickEditProfile() {
let locator = locate(this.locators.viewAll)
.withAttr({ 'aria-label': 'Edit Profile' });
I.click(locator);
},
clickEditPassword() {
let locator = locate(this.locators.viewAll)
.withAttr({ 'aria-label': 'Change Password' });
I.click(locator);
},
clickAddressBook() {
let locator = locate(this.locators.viewAll)
.withAttr({ 'aria-label': 'View Address Book' });
I.click(locator);
},
clickEditAddress(addName) {
let locator = locate(this.locators.viewAll)
.withAttr({ 'aria-label': `Edit Address : ${addName} (Default Address)` });
I.click(locator);
},
editAddress(addName) {
let locator = locate('#addressId.form-control');
I.wait(1);
I.fillField(locator, addName);
I.wait(1);
I.click(this.locators.saveBtn);
},
addPayment(nameOnCard, ccNum, expMonth, expYear) {
I.fillField(this.locators.nameOnCard, nameOnCard);
I.fillField(this.locators.ccNum, ccNum);
I.scrollTo(this.locators.expMonth);
I.selectOption(this.locators.expMonth, expMonth);
I.selectOption(this.locators.expYear, expYear);
I.click(this.locators.defaultPayment);
I.click(this.locators.saveBtn);
I.click(this.locators.backToAccount);
},
viewAllPayments() {
let locator = locate(this.locators.viewAll)
.withAttr({ 'aria-label': 'View saved payment methods' });
I.click(locator);
},
removePayment(deletePaymentModalText) {
let locator = locate(this.locators.removeProductBtn).last();
I.click(locator);
I.waitForText(deletePaymentModalText);
within(this.locators.removeProductModal, () => {
I.click(this.locators.removeProductConfirm);
});
},
changePassword(currentPassword, newPassword) {
I.fillField(this.locators.currentPassword, currentPassword);
I.fillField(this.locators.newPassword, newPassword);
I.fillField(this.locators.newPasswordConfirm, newPassword);
I.click(this.locators.saveBtn);
},
editProfile(phone, email, password) {
I.fillField(this.locators.phone, phone);
I.fillField(this.locators.confirmEmail, email);
I.fillField(this.locators.confirmPassword, password);
I.click(this.locators.saveBtn);
},
logOut() {
I.click(this.locators.loggedInAccountNav);
let locator = locate(this.locators.accountLogOut).last();
I.click(locator);
}
};