197 lines
9.8 KiB
JavaScript
197 lines
9.8 KiB
JavaScript
|
const I = actor();
|
||
|
|
||
|
module.exports = {
|
||
|
locators: {
|
||
|
lineItemName: 'div.line-item-name',
|
||
|
checkoutAsGuestBtn: '.btn.btn-primary.btn-block.submit-customer',
|
||
|
checkoutAsRegisteredBtn: '.btn.btn-block.btn-primary',
|
||
|
emailGuest: '#email-guest',
|
||
|
emailRegistered: '#email',
|
||
|
password: '#login-form-password',
|
||
|
fName: '.form-control.shippingFirstName',
|
||
|
lName: '.form-control.shippingLastName',
|
||
|
address1: '.form-control.shippingAddressOne',
|
||
|
country: '.form-control.shippingCountry',
|
||
|
state: '.form-control.shippingState',
|
||
|
city: '.form-control.shippingAddressCity',
|
||
|
zip: '.form-control.shippingZipCode',
|
||
|
phone: '.form-control.shippingPhoneNumber',
|
||
|
toPayment: '.btn.btn-primary.btn-block.submit-shipping',
|
||
|
payPhone: '#phoneNumber',
|
||
|
payCard: '#cardNumber',
|
||
|
payExpMonth: '#expirationMonth',
|
||
|
payExpYear: '#expirationYear',
|
||
|
paySecCode: '#securityCode',
|
||
|
paySecCodeSaved: '.form-control.saved-payment-security-code',
|
||
|
placeOrder: '.btn.btn-primary.btn-block.submit-payment',
|
||
|
confirmOrder: '.btn.btn-primary.btn-block.place-order',
|
||
|
billingConfirmation: '.addressSelector.form-control',
|
||
|
shipping_addSelector: '.addressSelector',
|
||
|
shipping_methodBlock: '.shipping-method-block',
|
||
|
shipping_methodOptions: '.form-check.col-9.start-lines',
|
||
|
checkout_shippingSection: '.card.shipping-summary',
|
||
|
checkout_prefilledShippingInfo: '.addressSelector.form-control',
|
||
|
checkout_paymentSection: '.card.payment-summary',
|
||
|
checkout_orderSummary: '.card-body.order-total-summary',
|
||
|
|
||
|
orderConf_thankYou: '.order-thank-you-msg',
|
||
|
orderConf_shippingSection: '.summary-details.shipping',
|
||
|
orderConf_billingSection: '.summary-details.billing',
|
||
|
orderConf_paymentSection: '.payment-details',
|
||
|
orderConf_quantity: '.line-item-pricing-info',
|
||
|
orderConf_totalSection: '.order-total-summary',
|
||
|
orderConf_orderNumber: 'summary-details.order-number',
|
||
|
homeLink: 'a>img.hidden-md-down',
|
||
|
checkoutStage: '.data-checkout-stage'
|
||
|
},
|
||
|
fillPersonalDataGuest(email) {
|
||
|
I.fillField(this.locators.emailGuest, email);
|
||
|
},
|
||
|
fillShippingInfo(fName, lName, address1, country, state, city, zipcode, phone) {
|
||
|
I.scrollTo(this.locators.fName);
|
||
|
I.fillField(this.locators.fName, fName);
|
||
|
I.fillField(this.locators.lName, lName);
|
||
|
I.fillField(this.locators.address1, address1);
|
||
|
I.waitForElement(this.locators.country);
|
||
|
I.selectOption(this.locators.country, country);
|
||
|
I.waitForElement(this.locators.state);
|
||
|
I.selectOption(this.locators.state, state);
|
||
|
I.wait(3);
|
||
|
I.fillField(this.locators.city, city);
|
||
|
I.fillField(this.locators.phone, phone);
|
||
|
I.fillField(this.locators.zip, zipcode);
|
||
|
},
|
||
|
fillPaymentInfoGuest(fName, lName, address1, city, stateAbr, zipcode, phone, ccNum, expMonth, expYear, ccSecCode) {
|
||
|
I.waitForElement(this.locators.checkout_prefilledShippingInfo);
|
||
|
I.see(fName, this.locators.checkout_prefilledShippingInfo);
|
||
|
I.see(lName, this.locators.checkout_prefilledShippingInfo);
|
||
|
I.see(address1, this.locators.checkout_prefilledShippingInfo);
|
||
|
I.see(city, this.locators.checkout_prefilledShippingInfo);
|
||
|
I.see(stateAbr, this.locators.checkout_prefilledShippingInfo);
|
||
|
I.see(zipcode, this.locators.checkout_prefilledShippingInfo);
|
||
|
I.fillField(this.locators.payPhone, phone);
|
||
|
I.fillField(this.locators.payCard, ccNum);
|
||
|
I.waitForElement(this.locators.payExpMonth, expMonth);
|
||
|
I.selectOption(this.locators.payExpMonth, expMonth);
|
||
|
I.waitForElement(this.locators.payExpYear, expYear);
|
||
|
I.selectOption(this.locators.payExpYear, expYear);
|
||
|
I.waitForElement(this.locators.paySecCode);
|
||
|
I.fillField(this.locators.paySecCode, ccSecCode);
|
||
|
},
|
||
|
fillPaymentInfoRegistered(phone, ccSecCode) {
|
||
|
I.fillField(this.locators.payPhone, phone);
|
||
|
I.waitForElement(this.locators.paySecCodeSaved);
|
||
|
I.fillField(this.locators.paySecCodeSaved, ccSecCode);
|
||
|
},
|
||
|
verifyCart(quantity, itemPrice, totalItemPrice, shipping, tax, estimatedTotal) {
|
||
|
I.waitForElement(this.locators.lineItemQuantity);
|
||
|
I.waitForText(quantity, this.locators.lineItemQuantity);
|
||
|
I.waitForElement(this.locators.totalItemQuantity);
|
||
|
I.waitForText(quantity + ' Items', this.locators.totalItemQuantity);
|
||
|
I.waitForElement(this.locators.lineItemPriceTotal);
|
||
|
I.waitForText(itemPrice, this.locators.lineItemPriceTotal);
|
||
|
I.waitForElement(this.locators.totalItemPrice);
|
||
|
I.waitForText(totalItemPrice, this.locators.totalItemPrice);
|
||
|
I.waitForElement(this.locators.shippingCost);
|
||
|
I.waitForText(shipping, this.locators.shippingCost);
|
||
|
I.waitForElement(this.locators.taxTotal);
|
||
|
I.waitForText(tax, this.locators.taxTotal);
|
||
|
I.waitForElement(this.locators.estimatedTotal);
|
||
|
I.waitForText(estimatedTotal, this.locators.estimatedTotal);
|
||
|
},
|
||
|
fillReturnCustomerInfo(email, password) {
|
||
|
I.waitForElement(this.locators.email);
|
||
|
I.fillField(this.locators.email, email);
|
||
|
I.waitForElement(this.locators.password);
|
||
|
I.fillField(this.locators.password, password);
|
||
|
},
|
||
|
verifyShipping(fname, lname, add1, city, stateAbr, zip) {
|
||
|
I.waitForElement(this.locators.shipping_addSelector);
|
||
|
I.waitForText(`${fname} ${lname} ${add1}`, this.locators.shipping_addSelector);
|
||
|
I.waitForText(`${city}, ${stateAbr} ${zip}`, this.locators.shipping_addSelector);
|
||
|
I.waitForElement(this.locators.shipping_methodBlock);
|
||
|
I.seeNumberOfVisibleElements(this.locators.shipping_methodOptions, 3);
|
||
|
},
|
||
|
verifyBilling() {
|
||
|
// Check for best way to verify this one
|
||
|
I.waitForElement(this.locators.billingConfirmation);
|
||
|
I.waitForText(fName + lName + address1);
|
||
|
},
|
||
|
verifyCheckoutInfo(fName, lName, add1, city, zip, phone, ccNum, ccExpDate, quantity,
|
||
|
totalItemPrice, shipping, tax, estimatedTotal) {
|
||
|
// verify shipping address is correct
|
||
|
I.scrollTo(this.locators.checkout_shippingSection);
|
||
|
I.see(fName, this.locators.checkout_shippingSection);
|
||
|
I.see(lName, this.locators.checkout_shippingSection);
|
||
|
I.see(add1, this.locators.checkout_shippingSection);
|
||
|
I.see(city, this.locators.checkout_shippingSection);
|
||
|
I.see(zip, this.locators.checkout_shippingSection);
|
||
|
I.see(phone, this.locators.checkout_shippingSection);
|
||
|
|
||
|
// verify billing address is correct
|
||
|
I.scrollTo(this.locators.checkout_paymentSection);
|
||
|
I.see(fName, this.locators.checkout_paymentSection);
|
||
|
I.see(lName, this.locators.checkout_paymentSection);
|
||
|
I.see(add1, this.locators.checkout_paymentSection);
|
||
|
I.see(city, this.locators.checkout_paymentSection);
|
||
|
I.see(zip, this.locators.checkout_paymentSection);
|
||
|
I.see(phone, this.locators.checkout_paymentSection);
|
||
|
|
||
|
// verify payment info is correct
|
||
|
// Leave the last 4 digits shown; replace everything else with '*'
|
||
|
I.see(ccNum.replace(/\d(?=\d{4})/g, '*'), this.locators.checkout_paymentSection);
|
||
|
I.see(ccExpDate, this.locators.checkout_paymentSection);
|
||
|
|
||
|
// verify product info is correct
|
||
|
I.scrollTo(this.locators.orderConf_quantity);
|
||
|
I.see(quantity, this.locators.orderConf_quantity);
|
||
|
|
||
|
I.see(totalItemPrice, this.locators.checkout_orderSummary);
|
||
|
I.see(shipping, this.locators.checkout_orderSummary);
|
||
|
I.see(tax, this.locators.checkout_orderSummary);
|
||
|
I.see(estimatedTotal, this.locators.checkout_orderSummary);
|
||
|
},
|
||
|
verifyOrderConfirmation(fName, lName, add1, city, zip, phone, email, ccNum, ccExpDate, quantity,
|
||
|
totalItemPrice, shipping, tax, estimatedTotal) {
|
||
|
// verify order is place successfully by verifying the order confirmation page
|
||
|
I.scrollTo(this.locators.orderConf_thankYou);
|
||
|
I.see('Thank you for your order.', this.locators.orderConf_thankYou);
|
||
|
|
||
|
// verify shipping address is correct
|
||
|
I.scrollTo(this.locators.orderConf_shippingSection);
|
||
|
I.see(fName, this.locators.orderConf_shippingSection);
|
||
|
I.see(lName, this.locators.orderConf_shippingSection);
|
||
|
I.see(add1, this.locators.orderConf_shippingSection);
|
||
|
I.see(city, this.locators.orderConf_shippingSection);
|
||
|
I.see(zip, this.locators.orderConf_shippingSection);
|
||
|
I.see(phone, this.locators.orderConf_shippingSection);
|
||
|
|
||
|
// verify billing address is correct
|
||
|
I.scrollTo(this.locators.orderConf_billingSection);
|
||
|
I.see(fName, this.locators.orderConf_billingSection);
|
||
|
I.see(lName, this.locators.orderConf_billingSection);
|
||
|
I.see(add1, this.locators.orderConf_billingSection);
|
||
|
I.see(city, this.locators.orderConf_billingSection);
|
||
|
I.see(zip, this.locators.orderConf_billingSection);
|
||
|
I.see(email, this.locators.orderConf_billingSection);
|
||
|
I.see(phone, this.locators.orderConf_billingSection);
|
||
|
|
||
|
// verify payment info is correct
|
||
|
// Leave the last 4 digits shown; replace everything else with '*'
|
||
|
I.see(ccNum.replace(/\d(?=\d{4})/g, '*'), this.locators.orderConf_paymentSection);
|
||
|
I.see(ccExpDate, this.locators.orderConf_paymentSection);
|
||
|
|
||
|
// verify product info is correct
|
||
|
I.scrollTo(this.locators.orderConf_quantity);
|
||
|
I.see(quantity, this.locators.orderConf_quantity);
|
||
|
|
||
|
I.see(totalItemPrice, this.locators.orderConf_totalSection);
|
||
|
I.see(shipping, this.locators.orderConf_totalSection);
|
||
|
I.see(tax, this.locators.orderConf_totalSection);
|
||
|
I.see(estimatedTotal, this.locators.orderConf_totalSection);
|
||
|
},
|
||
|
gotoHomePageFromCheckout() {
|
||
|
I.click(this.locators.homeLink);
|
||
|
}
|
||
|
};
|