Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate @pages/BO/modules/moduleConfiguration from Core #428

Merged
merged 1 commit into from
Feb 20, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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