Skip to content

Commit

Permalink
Merge pull request #428 from Progi1984/boModuleConfigurationPage
Browse files Browse the repository at this point in the history
Migrate `@pages/BO/modules/moduleConfiguration` from Core
  • Loading branch information
Progi1984 authored Feb 20, 2025
2 parents 8cff347 + bf10f86 commit 2b0c9a4
Show file tree
Hide file tree
Showing 23 changed files with 150 additions and 139 deletions.
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ export {default as boInstalledModulesPage} from '@pages/BO/modules/modulesAndSer
export {default as boMerchandiseReturnsPage} from '@pages/BO/customerService/merchandiseReturns';
export {default as boMerchandiseReturnsEditPage} from '@pages/BO/customerService/merchandiseReturns/edit';
export {default as boModuleCatalogPage} from '@pages/BO/modules/moduleCatalog';
export {default as boModuleConfigurationPage} from '@pages/BO/modules/moduleConfiguration';
export {default as boModuleManagerAlertsPage} from '@pages/BO/modules/moduleManager/alerts';
export {default as boModuleManagerPage} from '@pages/BO/modules/moduleManager';
export {default as boModuleManagerUninstalledModulesPage} from '@pages/BO/modules/moduleManager/uninstalledModules';
Expand Down
105 changes: 6 additions & 99 deletions src/pages/BO/modules/moduleConfiguration/index.ts
Original file line number Diff line number Diff line change
@@ -1,102 +1,9 @@
import {ModuleConfigurationPageInterface} from '@interfaces/BO/modules/moduleConfiguration';
import BOBasePage from '@pages/BO/BOBasePage';
import type {ModuleConfigurationPageInterface} from '@interfaces/BO/modules/moduleConfiguration';

import type {Page} from 'playwright';
import semver from 'semver';
import utilsTest from '@utils/test';

/**
* Module configuration page, contains selectors and functions for the page.
* Can be used as a base page for specific module configuration page.
* @class
* @extends BOBasePage
*/
export default class ModuleConfiguration extends BOBasePage implements ModuleConfigurationPageInterface {
private readonly pageHeadSubtitle: string;

private readonly pageHeadButtonBack: string;

private readonly pageHeadButtonTranslate: string;

private readonly pageHeadButtonManageHooks: string;

private readonly modalTranslate: string;

private readonly modalTranslateCloseButton: string;

/**
* @constructs
* Setting up titles and selectors to use on module configuration page
*/
constructor() {
super();

// Header selectors
this.pageHeadSubtitle = '.page-subtitle';

if (semver.gte(utilsTest.getPSVersion(), '9.0.0')) {
this.pageHeadButtonBack = '#page-header-desc-configuration-module-back';
this.pageHeadButtonTranslate = '#page-header-desc-configuration-module-translate';
this.pageHeadButtonManageHooks = '#page-header-desc-configuration-module-hook';
} else {
this.pageHeadButtonBack = '#desc-module-back';
this.pageHeadButtonTranslate = '#desc-module-translate';
this.pageHeadButtonManageHooks = '#desc-module-hook';
}

this.modalTranslate = '#moduleTradLangSelect';
this.modalTranslateCloseButton = `${this.modalTranslate} div.modal-header button[data-dismiss="modal"]`;
}

/* Methods */

/**
* Get module name from page title
* @return {Promise<string>}
*/
async getPageSubtitle(page: Page): Promise<string> {
return this.getTextContent(page, this.pageHeadSubtitle);
}

/**
* Click on the Header Button "Back"
* @return {Promise<void>}
*/
async clickHeaderBack(page: Page): Promise<void> {
await this.clickAndWaitForURL(page, this.pageHeadButtonBack);
}

/**
* Click on the Header Button "Translate"
* @return {Promise<void>}
*/
async clickHeaderTranslate(page: Page): Promise<void> {
await page.locator(this.pageHeadButtonTranslate).click();
}

/**
* Click on the Header Button "Manage hooks"
* @return {Promise<void>}
*/
async clickHeaderManageHooks(page: Page): Promise<void> {
await this.clickAndWaitForURL(page, this.pageHeadButtonManageHooks);
}

/**
* Close the "Translate this module" modal
* @return {Promise<void>}
*/
async closeTranslateModal(page: Page): Promise<void> {
await page.locator(this.modalTranslateCloseButton).click();
}

/**
* Return if the "Translate this module" modal is visible
* @return {Promise<boolean>}
*/
async isModalTranslateVisible(page: Page): Promise<boolean> {
return this.elementVisible(page, `${this.modalTranslate}.modal.in`, 3000);
}
/* eslint-disable global-require, @typescript-eslint/no-require-imports */
function requirePage(): ModuleConfigurationPageInterface {
return require('@versions/develop/pages/BO/modules/moduleConfiguration').moduleConfigurationPage;
}
/* eslint-enable global-require, @typescript-eslint/no-require-imports */

module.exports = ModuleConfiguration;
export default requirePage();
4 changes: 2 additions & 2 deletions src/versions/develop/pages/BO/modules/autoupgrade/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import {ModuleAutoupgradeMainPageInterface} from '@interfaces/BO/modules/autoupgrade';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import type {Page} from '@playwright/test';
import {ModuleConfigurationPage} from '@versions/develop/pages/BO/modules/moduleConfiguration';

/**
* Module configuration page for module : Autoupgrade, contains selectors and functions for the page
* @class
* @extends ModuleConfiguration
*/
class Autoupgrade extends ModuleConfiguration implements ModuleAutoupgradeMainPageInterface {
class Autoupgrade extends ModuleConfigurationPage implements ModuleAutoupgradeMainPageInterface {
public pageTitle: string;

public readonly checkRequirementSuccessMessage: string;
Expand Down
4 changes: 2 additions & 2 deletions src/versions/develop/pages/BO/modules/blockwishlist/index.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import dataLanguages from '@data/demo/languages';
import {ModuleBlockwishlistMainPageInterface} from '@interfaces/BO/modules/blockwishlist';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import {ModuleConfigurationPage} from '@versions/develop/pages/BO/modules/moduleConfiguration';
import type {Page} from '@playwright/test';

/**
* Module configuration page for module : blockwishlist, contains selectors and functions for the page
* @class
* @extends ModuleConfiguration
*/
class Blockwishlist extends ModuleConfiguration implements ModuleBlockwishlistMainPageInterface {
class Blockwishlist extends ModuleConfigurationPage implements ModuleBlockwishlistMainPageInterface {
public readonly pageTitle: string;

public readonly defaultValueWishlistDefaultTitle: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ModuleBlockwishlistStatisticsPageInterface} from '@interfaces/BO/modules/blockwishlist/statistics';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import {ModuleConfigurationPage} from '@versions/develop/pages/BO/modules/moduleConfiguration';

import type {Page} from 'playwright';

Expand All @@ -8,7 +8,7 @@ import type {Page} from 'playwright';
* @class
* @extends ModuleConfiguration
*/
class BlockwishlistStatistics extends ModuleConfiguration implements ModuleBlockwishlistStatisticsPageInterface {
class BlockwishlistStatistics extends ModuleConfigurationPage implements ModuleBlockwishlistStatisticsPageInterface {
public readonly pageTitle: string;

private readonly rowTopBar: string;
Expand Down
4 changes: 2 additions & 2 deletions src/versions/develop/pages/BO/modules/contactform/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import {type ModuleContactFormMainPageInterface} from '@interfaces/BO/modules/contactform';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import {ModuleConfigurationPage} from '@versions/develop/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 {
class ModuleContactFormMainPage extends ModuleConfigurationPage implements ModuleContactFormMainPageInterface {
public readonly pageTitle: string;

private readonly sendConfirmationEmailToggle: (toggle: string) => string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import {type ModuleKeycloakConnectorDemoPageInterface} from '@interfaces/BO/modules/keycloakConnectorDemo';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import {ModuleConfigurationPage} from '@versions/develop/pages/BO/modules/moduleConfiguration';
import {type Page} from '@playwright/test';

/**
* Module configuration page for module : ps_email_subscription, contains selectors and functions for the page
* @class
* @extends ModuleConfiguration
*/
class KeycloakConnectorDemoPage extends ModuleConfiguration implements ModuleKeycloakConnectorDemoPageInterface {
class KeycloakConnectorDemoPage extends ModuleConfigurationPage implements ModuleKeycloakConnectorDemoPageInterface {
public readonly pageTitle: string;

private readonly formKeycloakEndpoint: string;
Expand Down
103 changes: 103 additions & 0 deletions src/versions/develop/pages/BO/modules/moduleConfiguration/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import {ModuleConfigurationPageInterface} from '@interfaces/BO/modules/moduleConfiguration';
import BOBasePage from '@pages/BO/BOBasePage';

import type {Page} from 'playwright';
import semver from 'semver';
import utilsTest from '@utils/test';

/**
* Module configuration page, contains selectors and functions for the page.
* Can be used as a base page for specific module configuration page.
* @class
* @extends BOBasePage
*/
class ModuleConfigurationPage extends BOBasePage implements ModuleConfigurationPageInterface {
private readonly pageHeadSubtitle: string;

private readonly pageHeadButtonBack: string;

private readonly pageHeadButtonTranslate: string;

private readonly pageHeadButtonManageHooks: string;

private readonly modalTranslate: string;

private readonly modalTranslateCloseButton: string;

/**
* @constructs
* Setting up titles and selectors to use on module configuration page
*/
constructor() {
super();

// Header selectors
this.pageHeadSubtitle = '.page-subtitle';

if (semver.gte(utilsTest.getPSVersion(), '9.0.0')) {
this.pageHeadButtonBack = '#page-header-desc-configuration-module-back';
this.pageHeadButtonTranslate = '#page-header-desc-configuration-module-translate';
this.pageHeadButtonManageHooks = '#page-header-desc-configuration-module-hook';
} else {
this.pageHeadButtonBack = '#desc-module-back';
this.pageHeadButtonTranslate = '#desc-module-translate';
this.pageHeadButtonManageHooks = '#desc-module-hook';
}

this.modalTranslate = '#moduleTradLangSelect';
this.modalTranslateCloseButton = `${this.modalTranslate} div.modal-header button[data-dismiss="modal"]`;
}

/* Methods */

/**
* Get module name from page title
* @return {Promise<string>}
*/
async getPageSubtitle(page: Page): Promise<string> {
return this.getTextContent(page, this.pageHeadSubtitle);
}

/**
* Click on the Header Button "Back"
* @return {Promise<void>}
*/
async clickHeaderBack(page: Page): Promise<void> {
await this.clickAndWaitForURL(page, this.pageHeadButtonBack);
}

/**
* Click on the Header Button "Translate"
* @return {Promise<void>}
*/
async clickHeaderTranslate(page: Page): Promise<void> {
await page.locator(this.pageHeadButtonTranslate).click();
}

/**
* Click on the Header Button "Manage hooks"
* @return {Promise<void>}
*/
async clickHeaderManageHooks(page: Page): Promise<void> {
await this.clickAndWaitForURL(page, this.pageHeadButtonManageHooks);
}

/**
* Close the "Translate this module" modal
* @return {Promise<void>}
*/
async closeTranslateModal(page: Page): Promise<void> {
await page.locator(this.modalTranslateCloseButton).click();
}

/**
* Return if the "Translate this module" modal is visible
* @return {Promise<boolean>}
*/
async isModalTranslateVisible(page: Page): Promise<boolean> {
return this.elementVisible(page, `${this.modalTranslate}.modal.in`, 3000);
}
}

const moduleConfigurationPage = new ModuleConfigurationPage();
export {moduleConfigurationPage, ModuleConfigurationPage};
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import {type ModuleProductCommentsBoMainPageInterface} from '@interfaces/BO/modules/productcomments';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import {ModuleConfigurationPage} from '@versions/develop/pages/BO/modules/moduleConfiguration';
import {type Page} from '@playwright/test';

/**
* Module configuration page for module : Product comments, contains selectors and functions for the page
* @class
* @extends ModuleConfiguration
*/
class ModuleProductCommentsBoMainPage extends ModuleConfiguration implements ModuleProductCommentsBoMainPageInterface {
class ModuleProductCommentsBoMainPage extends ModuleConfigurationPage implements ModuleProductCommentsBoMainPageInterface {
public readonly pageTitle: string;

private readonly reviewsTable: (table: string) => string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import {type ModulePsCategoryProductsMainPageInterface} from '@interfaces/BO/modules/ps_categoryproducts';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import {ModuleConfigurationPage} from '@versions/develop/pages/BO/modules/moduleConfiguration';
import {type Page} from '@playwright/test';

/**
* Module configuration page for module : ps_emailalerts, contains selectors and functions for the page
* @class
* @extends ModuleConfiguration
*/
class ModulePsCategoryProductsMain extends ModuleConfiguration implements ModulePsCategoryProductsMainPageInterface {
class ModulePsCategoryProductsMain extends ModuleConfigurationPage implements ModulePsCategoryProductsMainPageInterface {
public readonly pageTitle: string;

private readonly displayProductsPriceCheckbox: (toEnable: boolean) => string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import {type ModulePsCheckPaymentMainPageInterface} from '@interfaces/BO/modules/ps_checkpayment';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import {ModuleConfigurationPage} from '@versions/develop/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 {
class ModulePsCheckPaymentMainPage extends ModuleConfigurationPage implements ModulePsCheckPaymentMainPageInterface {
public readonly pageTitle: string;

private readonly configurationForm: string;
Expand Down
4 changes: 2 additions & 2 deletions src/versions/develop/pages/BO/modules/ps_emailalerts/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import {type ModulePsEmailAlertsMainPageInterface} from '@interfaces/BO/modules/ps_emailalerts';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import {ModuleConfigurationPage} from '@versions/develop/pages/BO/modules/moduleConfiguration';
import {type Page} from '@playwright/test';

/**
* Module configuration page for module : ps_emailalerts, contains selectors and functions for the page
* @class
* @extends ModuleConfiguration
*/
class ModulePsEmailAlertsMainPage extends ModuleConfiguration implements ModulePsEmailAlertsMainPageInterface {
class ModulePsEmailAlertsMainPage extends ModuleConfigurationPage implements ModulePsEmailAlertsMainPageInterface {
public readonly pageTitle: string;

private readonly productAvailabilityCheckbox: (toEnable: boolean) => string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {type ModulePsEmailSubscriptionMainPageInterface} from '@interfaces/BO/modules/ps_emailsubscription';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import {ModuleConfigurationPage} from '@versions/develop/pages/BO/modules/moduleConfiguration';

import type {Page} from 'playwright';

Expand All @@ -8,7 +8,7 @@ import type {Page} from 'playwright';
* @class
* @extends ModuleConfiguration
*/
class PsEmailSubscriptionPage extends ModuleConfiguration implements ModulePsEmailSubscriptionMainPageInterface {
class PsEmailSubscriptionPage extends ModuleConfigurationPage implements ModulePsEmailSubscriptionMainPageInterface {
public readonly pageTitle: string;

public readonly updateSettingsSuccessMessage: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ModulePsFacetedsearchFilterTemplatePageInterface} from '@interfaces/BO/modules/ps_facetedsearch/filterTemplate';
import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration';
import {ModuleConfigurationPage} from '@versions/develop/pages/BO/modules/moduleConfiguration';

import type {Page} from 'playwright';

Expand All @@ -8,7 +8,7 @@ import type {Page} from 'playwright';
* @class
* @extends ModuleConfiguration
*/
class PsFacetedSearchFilterTemplate extends ModuleConfiguration implements ModulePsFacetedsearchFilterTemplatePageInterface {
class PsFacetedSearchFilterTemplate extends ModuleConfigurationPage implements ModulePsFacetedsearchFilterTemplatePageInterface {
public readonly title: string;

private readonly panel: string;
Expand Down
Loading

0 comments on commit 2b0c9a4

Please sign in to comment.