From e63352517b1296b13443122875ab56de365f84e8 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Thu, 20 Feb 2025 10:04:29 +0100 Subject: [PATCH] Migrate `@pages/BO/modules/contactform` from Core --- src/index.ts | 1 + .../BO/modules/contactform/index.ts | 9 +++ src/pages/BO/modules/contactform/index.ts | 9 +++ .../pages/BO/modules/contactform/index.ts | 64 +++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 src/interfaces/BO/modules/contactform/index.ts create mode 100644 src/pages/BO/modules/contactform/index.ts create mode 100644 src/versions/develop/pages/BO/modules/contactform/index.ts diff --git a/src/index.ts b/src/index.ts index 0f86833e..25626181 100644 --- a/src/index.ts +++ b/src/index.ts @@ -385,6 +385,7 @@ export {default as foHummingbirdSitemapPage} from '@pages/FO/hummingbird/sitemap export {default as modAutoupgradeBoMain} from '@pages/BO/modules/autoupgrade'; export {default as modBlockwishlistBoMain} from '@pages/BO/modules/blockwishlist'; export {default as modBlockwishlistBoStatistics} from '@pages/BO/modules/blockwishlist/statistics'; +export {default as modContactFormBoMain} from '@pages/BO/modules/contactform'; 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'; diff --git a/src/interfaces/BO/modules/contactform/index.ts b/src/interfaces/BO/modules/contactform/index.ts new file mode 100644 index 00000000..e98393eb --- /dev/null +++ b/src/interfaces/BO/modules/contactform/index.ts @@ -0,0 +1,9 @@ +import {ModuleConfigurationPageInterface} from '@interfaces/BO/modules/moduleConfiguration'; +import {Page} from '@playwright/test'; + +export interface ModuleContactFormMainPageInterface extends ModuleConfigurationPageInterface { + readonly pageTitle: string; + + setReceiveCustomersMessageByEmail(page: Page, toEnable: boolean): Promise; + setSendConfirmationEmail(page: Page, toEnable: boolean): Promise; +} diff --git a/src/pages/BO/modules/contactform/index.ts b/src/pages/BO/modules/contactform/index.ts new file mode 100644 index 00000000..90fff65d --- /dev/null +++ b/src/pages/BO/modules/contactform/index.ts @@ -0,0 +1,9 @@ +import type {ModuleContactFormMainPageInterface} from '@interfaces/BO/modules/contactform'; + +/* eslint-disable global-require, @typescript-eslint/no-require-imports */ +function requirePage(): ModuleContactFormMainPageInterface { + return require('@versions/develop/pages/BO/modules/contactform'); +} +/* eslint-enable global-require, @typescript-eslint/no-require-imports */ + +export default requirePage(); diff --git a/src/versions/develop/pages/BO/modules/contactform/index.ts b/src/versions/develop/pages/BO/modules/contactform/index.ts new file mode 100644 index 00000000..b8d5dbce --- /dev/null +++ b/src/versions/develop/pages/BO/modules/contactform/index.ts @@ -0,0 +1,64 @@ +import {type ModuleContactFormMainPageInterface} from '@interfaces/BO/modules/contactform'; +import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration'; +import {Page} from '@playwright/test'; + +/** + * Module configuration page for module : contactform, contains selectors and functions for the page + * @class + * @extends ModuleConfiguration + */ +class ModuleContactFormMainPage extends ModuleConfiguration implements ModuleContactFormMainPageInterface { + public readonly pageTitle: string; + + private readonly sendConfirmationEmailToggle: (toggle: string) => string; + + private readonly sendNotificationEmailToggle: (toggle: string) => string; + + private readonly saveButton: string; + + /** + * @constructs + * Setting up titles and selectors to use on contact form page + */ + constructor() { + super(); + + this.pageTitle = 'Contact form'; + this.successfulUpdateMessage = 'The settings have been successfully updated.'; + + // Selectors + this.sendConfirmationEmailToggle = (toggle: string) => `#CONTACTFORM_SEND_CONFIRMATION_EMAIL_${toggle}`; + this.sendNotificationEmailToggle = (toggle: string) => `#CONTACTFORM_SEND_NOTIFICATION_EMAIL_${toggle}`; + this.saveButton = '#module_form_submit_btn'; + } + + /* Methods */ + + /** + * Set send confirmation email + * @param page {Page} Browser tab + * @param toEnable {boolean} True if we need to enable send confirmation email + * @returns {Promise} + */ + async setSendConfirmationEmail(page: Page, toEnable: boolean): Promise { + await this.setChecked(page, this.sendConfirmationEmailToggle(toEnable ? 'on' : 'off')); + await this.clickAndWaitForLoadState(page, this.saveButton); + + return this.getAlertSuccessBlockContent(page); + } + + /** + * Set send confirmation email + * @param page {Page} Browser tab + * @param toEnable {boolean} True if we need to enable receive customers message by email + * @returns {Promise} + */ + async setReceiveCustomersMessageByEmail(page: Page, toEnable: boolean): Promise { + await this.setChecked(page, this.sendNotificationEmailToggle(toEnable ? 'on' : 'off')); + await this.clickAndWaitForLoadState(page, this.saveButton); + + return this.getAlertSuccessBlockContent(page); + } +} + +module.exports = new ModuleContactFormMainPage();