diff --git a/src/data/demo/modules.ts b/src/data/demo/modules.ts index 9260b56a..c926a0b7 100644 --- a/src/data/demo/modules.ts +++ b/src/data/demo/modules.ts @@ -158,4 +158,8 @@ export default { tag: 'statsstock', name: 'Available quantities', }), + autoupgrade: new FakerModule({ + tag: 'autoupgrade', + name: '1-Click Upgrade', + }), }; diff --git a/src/index.ts b/src/index.ts index 9c899505..8afb50fe 100644 --- a/src/index.ts +++ b/src/index.ts @@ -308,6 +308,7 @@ export {default as foHummingbirdProductPage} from '@pages/FO/hummingbird/product export {default as foHummingbirdSearchResultsPage} from '@pages/FO/hummingbird/searchResults'; // Export Modules +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 modKeycloakConnectorDemoBoMain} from '@pages/BO/modules/keycloakConnectorDemo'; diff --git a/src/interfaces/BO/modules/autoupgrade/index.ts b/src/interfaces/BO/modules/autoupgrade/index.ts new file mode 100644 index 00000000..b9a81264 --- /dev/null +++ b/src/interfaces/BO/modules/autoupgrade/index.ts @@ -0,0 +1,9 @@ +import {ModuleConfigurationPageInterface} from '@interfaces/BO/modules/moduleConfiguration'; +import type {Page} from '@playwright/test'; + +export interface ModuleAutoupgradeMainPageInterface extends ModuleConfigurationPageInterface { + readonly pageTitle: string; + + goToMaintenancePage(page:Page): Promise<Page>; + isRequirementsAlertDangerVisible(page:Page): Promise<boolean>; +} diff --git a/src/pages/BO/modules/autoupgrade/index.ts b/src/pages/BO/modules/autoupgrade/index.ts new file mode 100644 index 00000000..07bb6416 --- /dev/null +++ b/src/pages/BO/modules/autoupgrade/index.ts @@ -0,0 +1,10 @@ +import type {ModuleAutoupgradeMainPageInterface} from '@interfaces/BO/modules/autoupgrade'; + +/* eslint-disable global-require, @typescript-eslint/no-require-imports */ +function requirePage(): ModuleAutoupgradeMainPageInterface { + return require('@versions/develop/pages/BO/modules/autoupgrade'); +} + +/* eslint-enable global-require, @typescript-eslint/no-require-imports */ + +export default requirePage(); diff --git a/src/versions/develop/pages/BO/modules/autoupgrade/index.ts b/src/versions/develop/pages/BO/modules/autoupgrade/index.ts new file mode 100644 index 00000000..91cb3b38 --- /dev/null +++ b/src/versions/develop/pages/BO/modules/autoupgrade/index.ts @@ -0,0 +1,54 @@ +import {ModuleAutoupgradeMainPageInterface} from '@interfaces/BO/modules/autoupgrade'; +import ModuleConfiguration from '@pages/BO/modules/moduleConfiguration'; +import type {Page} from '@playwright/test'; + +/** + * Module configuration page for module : Autoupgrade, contains selectors and functions for the page + * @class + * @extends ModuleConfiguration + */ +class Autoupgrade extends ModuleConfiguration implements ModuleAutoupgradeMainPageInterface { + public readonly pageTitle: string; + + private readonly currentConfigurationTable: string; + + private readonly maintenanceModeLink: string; + + private readonly alertDangerPreUpgrade: string; + + /** + * @constructs + */ + constructor() { + super(); + + this.pageTitle = `Update assistant > Update assistant • ${global.INSTALL.SHOP_NAME}`; + + // Selectors + this.currentConfigurationTable = '#currentConfiguration table'; + this.maintenanceModeLink = `${this.currentConfigurationTable} a[href*='shop/maintenance']`; + this.alertDangerPreUpgrade = `#${this.currentConfigurationTable} p.alert.alert-danger`; + } + + // Methods + // Pre-upgrade checklist table + /** + * Go to maintenance page + * @param page {Page} Browser tab + * @return {Promise<Page>} Opened tab after the click + */ + async goToMaintenancePage(page: Page): Promise<Page> { + return this.openLinkWithTargetBlank(page, this.maintenanceModeLink); + } + + /** + * Is requirements alert danger visible + * @param page {Page} Browser tab + * @return {Promise<Page>} + */ + async isRequirementsAlertDangerVisible(page: Page): Promise<boolean> { + return this.elementVisible(page, this.alertDangerPreUpgrade, 2000); + } +} + +module.exports = new Autoupgrade();