diff --git a/src/index.ts b/src/index.ts index 3d952608..0f86833e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -388,6 +388,7 @@ export {default as modBlockwishlistBoStatistics} from '@pages/BO/modules/blockwi export {default as modKeycloakConnectorDemoBoMain} from '@pages/BO/modules/keycloakConnectorDemo'; export {default as modProductCommentsBoMain} from '@pages/BO/modules/productcomments'; export {default as modPsCategoryProductsBoMain} from '@pages/BO/modules/ps_categoryproducts'; +export {default as modPsCheckPaymentBoMain} from '@pages/BO/modules/ps_checkpayment'; export {default as modPsEmailAlertsBoMain} from '@pages/BO/modules/ps_emailalerts'; export {default as modPsEmailSubscriptionBoMain} from '@pages/BO/modules/ps_emailsubscription'; export {default as modPsFacetedsearchBoMain} from '@pages/BO/modules/ps_facetedsearch'; diff --git a/src/interfaces/BO/modules/ps_checkpayment/index.ts b/src/interfaces/BO/modules/ps_checkpayment/index.ts new file mode 100644 index 00000000..88cdcddd --- /dev/null +++ b/src/interfaces/BO/modules/ps_checkpayment/index.ts @@ -0,0 +1,10 @@ +import {ModuleConfigurationPageInterface} from '@interfaces/BO/modules/moduleConfiguration'; +import {Page} from '@playwright/test'; + +export interface ModulePsCheckPaymentMainPageInterface extends ModuleConfigurationPageInterface { + readonly pageTitle: string; + + saveFormContactDetails(page: Page): Promise; + setAddress(page: Page, address: string): Promise; + setPayee(page: Page, payee: string): Promise; +} diff --git a/src/pages/BO/modules/ps_checkpayment/index.ts b/src/pages/BO/modules/ps_checkpayment/index.ts new file mode 100644 index 00000000..051fb3e7 --- /dev/null +++ b/src/pages/BO/modules/ps_checkpayment/index.ts @@ -0,0 +1,9 @@ +import type {ModulePsCheckPaymentMainPageInterface} from '@interfaces/BO/modules/ps_checkpayment'; + +/* eslint-disable global-require, @typescript-eslint/no-require-imports */ +function requirePage(): ModulePsCheckPaymentMainPageInterface { + return require('@versions/develop/pages/BO/modules/ps_checkpayment'); +} +/* eslint-enable global-require, @typescript-eslint/no-require-imports */ + +export default requirePage(); diff --git a/src/versions/develop/pages/BO/modules/ps_checkpayment/index.ts b/src/versions/develop/pages/BO/modules/ps_checkpayment/index.ts new file mode 100644 index 00000000..593b613b --- /dev/null +++ b/src/versions/develop/pages/BO/modules/ps_checkpayment/index.ts @@ -0,0 +1,72 @@ +import {type ModulePsCheckPaymentMainPageInterface} from '@interfaces/BO/modules/ps_checkpayment'; +import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration'; +import {Page} from '@playwright/test'; + +/** + * Module configuration page for module : ps_checkpayment, contains selectors and functions for the page + * @class + * @extends ModuleConfiguration + */ +class ModulePsCheckPaymentMainPage extends ModuleConfiguration implements ModulePsCheckPaymentMainPageInterface { + public readonly pageTitle: string; + + private readonly configurationForm: string; + + private readonly payeeInput: string; + + private readonly addressInput: string; + + private readonly submitContactDetails: string; + + /** + * @constructs + * Setting up titles and selectors to use on page + */ + constructor() { + super(); + this.pageTitle = 'Payments by check'; + this.successfulUpdateMessage = 'Settings updated'; + + // Selectors + // Customer Notifications + this.configurationForm = '#configuration_form'; + this.payeeInput = `${this.configurationForm} #CHEQUE_NAME`; + this.addressInput = `${this.configurationForm} #CHEQUE_ADDRESS`; + this.submitContactDetails = `${this.configurationForm} button[name="btnSubmit"]`; + } + + /* Methods */ + + /** + * Define the field "Payee" + * @param page {Page} Browser tab + * @param payee {string} + * @returns {Promise} + */ + async setPayee(page: Page, payee: string): Promise { + return this.setInputValue(page, this.payeeInput, payee); + } + + /** + * Define the field "Address" + * @param page {Page} Browser tab + * @param address {string} + * @returns {Promise} + */ + async setAddress(page: Page, address: string): Promise { + return this.setInputValue(page, this.addressInput, address); + } + + /** + * Save the "Contact details" form + * @param page {Page} Browser tab + * @returns {Promise} + */ + async saveFormContactDetails(page: Page): Promise { + await page.locator(this.submitContactDetails).click(); + + return this.getAlertSuccessBlockContent(page); + } +} + +module.exports = new ModulePsCheckPaymentMainPage();