diff --git a/playwright-tests/pages/AfterpayPage.ts b/playwright-tests/pages/AfterpayPage.ts index aa345ef4..cf71e250 100644 --- a/playwright-tests/pages/AfterpayPage.ts +++ b/playwright-tests/pages/AfterpayPage.ts @@ -9,12 +9,22 @@ export class AfterpayPage extends BasePage { readonly submitButton: Locator; readonly confirmButton: Locator; + readonly selectAfterpayWithInterestButton: Locator; + readonly selectAfterpayWithoutInterestButton: Locator; + readonly continueAfterpayButton: Locator; + constructor(page: Page) { super(page); this.page = page; this.passwordTextBox = page.getByTestId('login-password-input'); this.submitButton = page.getByRole('button', { name: 'Continue' }); this.confirmButton = page.getByRole('button', { name: 'Confirm' }); + + // Monthly with interest option + this.selectAfterpayWithInterestButton = page.getByRole('radio', { name: /month/ }); + // Biweekly without interest option + this.selectAfterpayWithoutInterestButton = page.getByTestId('payment-types-label').filter({ hasText: /every 2 weeks/ }); + this.continueAfterpayButton = page.getByRole('button', { name: 'Continue' }); } async login(password: string) { @@ -25,6 +35,18 @@ export class AfterpayPage extends BasePage { async executeAfterpayPayment(paymentDetails: IPaymentDetails) { await this.login(paymentDetails.password!); + + // For orders greater than $50, user will have 2 options to choose from: monthly with interest or biweekly without interest + await this.selectAfterpayWithoutInterestButton.waitFor({ state: 'visible' }); + + if (await this.selectAfterpayWithoutInterestButton.isVisible()) { + await this.selectAfterpayWithoutInterestButton.click(); + await this.continueAfterpayButton.click(); + } else if (await this.selectAfterpayWithInterestButton.isVisible()) { + await this.selectAfterpayWithInterestButton.click(); + await this.continueAfterpayButton.click(); + } + await this.confirmButton.click(); }