From 1c178c7761fb8a164601f57099e299d0964a8b96 Mon Sep 17 00:00:00 2001 From: JennyNou Date: Wed, 15 Apr 2026 08:19:16 -0400 Subject: [PATCH] Add payment adyen page --- playwright-tests/pages/PaymentAdyenPage.ts | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 playwright-tests/pages/PaymentAdyenPage.ts diff --git a/playwright-tests/pages/PaymentAdyenPage.ts b/playwright-tests/pages/PaymentAdyenPage.ts new file mode 100644 index 00000000..94c00e6f --- /dev/null +++ b/playwright-tests/pages/PaymentAdyenPage.ts @@ -0,0 +1,46 @@ +import { type Locator, type Page } from '@playwright/test'; +import { BasePage } from './BasePage'; +import { IPaymentDetailsAdyen } from '@business-logic/types/CustomerDetails'; + +export class PaymentAdyenPage extends BasePage { + readonly page: Page; + + readonly cardNumberTextField: Locator; + readonly expiryDateTextField: Locator; + readonly securityCodeTextField: Locator; + readonly billingAddressTextField: Locator; + readonly cityTextField: Locator; + readonly stateDropDown: Locator; + readonly payButton: Locator; + + readonly afterPayButton: Locator; + readonly afterPayLaunchButton: Locator; + readonly applePayButton: Locator; + + issPageValue = 'payment-page-adyen'; + + constructor(page: Page) { + super(page); + this.page = page; + + //Credit Card Fields + this.cardNumberTextField = this.page.locator('iframe[title="Iframe for card number"]').contentFrame().getByRole('textbox', { name: 'Card number' }); + this.expiryDateTextField = this.page.locator('iframe[title="Iframe for expiry date"]').contentFrame().getByRole('textbox', { name: 'Expiry date' }); + this.securityCodeTextField = this.page.locator('iframe[title="Iframe for security code"]').contentFrame().getByRole('textbox', { name: 'CVV/CVC' }); + this.billingAddressTextField = this.page.getByRole('textbox', { name: 'Address' }); + this.cityTextField = this.page.getByRole('textbox', { name: 'City' }); + this.stateDropDown = this.page.getByRole('combobox', { name: 'State' }); + this.payButton = this.page.getByRole('button', { name: 'Pay $' }); + } + + async populateCreditCardDetails(paymentDetailsAdyen: IPaymentDetailsAdyen){ + await this.cardNumberTextField.fill(paymentDetailsAdyen.cardNumber!); + await this.expiryDateTextField.fill(paymentDetailsAdyen.expirationDate!); + await this.securityCodeTextField.fill(paymentDetailsAdyen.cvv!); + await this.billingAddressTextField.fill(paymentDetailsAdyen.billingAddress!.street); + await this.cityTextField.fill(paymentDetailsAdyen.billingAddress!.city); + await this.stateDropDown.fill(paymentDetailsAdyen.billingAddress!.state); + await this.stateDropDown.press('Enter'); + } + +} \ No newline at end of file