From 1a11633081322b383c558dfae413dac0e9ee2409 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Thu, 27 Feb 2025 09:27:08 +0100 Subject: [PATCH] Migrate `@pages/FO/{classic|hummingbird}/stores` from Core --- src/index.ts | 2 + src/interfaces/FO/stores.ts | 8 ++++ src/pages/FO/classic/stores.ts | 9 ++++ src/pages/FO/hummingbird/stores.ts | 9 ++++ .../develop/pages/FO/classic/stores.ts | 42 +++++++++++++++++++ .../develop/pages/FO/hummingbird/stores.ts | 17 ++++++++ 6 files changed, 87 insertions(+) create mode 100644 src/interfaces/FO/stores.ts create mode 100644 src/pages/FO/classic/stores.ts create mode 100644 src/pages/FO/hummingbird/stores.ts create mode 100644 src/versions/develop/pages/FO/classic/stores.ts create mode 100644 src/versions/develop/pages/FO/hummingbird/stores.ts diff --git a/src/index.ts b/src/index.ts index 991977fc..b1d1bb75 100644 --- a/src/index.ts +++ b/src/index.ts @@ -365,6 +365,7 @@ export {default as foClassicPasswordReminderPage} from '@pages/FO/classic/passwo export {default as foClassicProductPage} from '@pages/FO/classic/product'; export {default as foClassicSearchResultsPage} from '@pages/FO/classic/searchResults'; export {default as foClassicSitemapPage} from '@pages/FO/classic/sitemap'; +export {default as foClassicStoresPage} from '@pages/FO/classic/stores'; // Export Pages FO/Hummingbird export {default as foHummingbirdAboutUsPage} from '@pages/FO/hummingbird/aboutUs'; export {default as foHummingbirdCartPage} from '@pages/FO/hummingbird/cart'; @@ -391,6 +392,7 @@ export {default as foHummingbirdPasswordReminderPage} from '@pages/FO/hummingbir export {default as foHummingbirdProductPage} from '@pages/FO/hummingbird/product'; export {default as foHummingbirdSearchResultsPage} from '@pages/FO/hummingbird/searchResults'; export {default as foHummingbirdSitemapPage} from '@pages/FO/hummingbird/sitemap'; +export {default as foHummingbirdStoresPage} from '@pages/FO/hummingbird/stores'; // Export Modules export {default as modAutoupgradeBoMain} from '@pages/BO/modules/autoupgrade'; diff --git a/src/interfaces/FO/stores.ts b/src/interfaces/FO/stores.ts new file mode 100644 index 00000000..586f765b --- /dev/null +++ b/src/interfaces/FO/stores.ts @@ -0,0 +1,8 @@ +import {type FOBasePagePageInterface} from '@interfaces/FO'; +import type {Page} from '@playwright/test'; + +export interface FoStoresPageInterface extends FOBasePagePageInterface { + readonly pageTitle: string; + + getStoreImageMain(page: Page, idStore: number): Promise; +} diff --git a/src/pages/FO/classic/stores.ts b/src/pages/FO/classic/stores.ts new file mode 100644 index 00000000..e19c7925 --- /dev/null +++ b/src/pages/FO/classic/stores.ts @@ -0,0 +1,9 @@ +import type {FoStoresPageInterface} from '@interfaces/FO/stores'; + +/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ +function requirePage(): FoStoresPageInterface { + return require('@versions/develop/pages/FO/classic/stores').foStoresPage; +} +/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ + +export default requirePage(); diff --git a/src/pages/FO/hummingbird/stores.ts b/src/pages/FO/hummingbird/stores.ts new file mode 100644 index 00000000..231f944c --- /dev/null +++ b/src/pages/FO/hummingbird/stores.ts @@ -0,0 +1,9 @@ +import type {FoStoresPageInterface} from '@interfaces/FO/stores'; + +/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ +function requirePage(): FoStoresPageInterface { + return require('@versions/develop/pages/FO/hummingbird/stores'); +} +/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ + +export default requirePage(); diff --git a/src/versions/develop/pages/FO/classic/stores.ts b/src/versions/develop/pages/FO/classic/stores.ts new file mode 100644 index 00000000..1c3b4b9d --- /dev/null +++ b/src/versions/develop/pages/FO/classic/stores.ts @@ -0,0 +1,42 @@ +import {type FoStoresPageInterface} from '@interfaces/FO/stores'; +import FOBasePage from '@pages/FO/FOBasePage'; +import {type Page} from '@playwright/test'; + +/** + * Stores page, contains functions that can be used on the page + * @class + * @extends FOBasePage + */ +class FoStoresPage extends FOBasePage implements FoStoresPageInterface { + public readonly pageTitle: string; + + public readonly storeBlock: (idStore: number) => string; + + public readonly storeImage: (idStore: number) => string; + + /** + * @constructs + * Setting up texts and selectors to use on stores page + */ + constructor(theme: string = 'classic') { + super(theme); + + this.pageTitle = 'Stores'; + + this.storeBlock = (idStore: number) => `article#store-${idStore}`; + this.storeImage = (idStore:number) => `${this.storeBlock(idStore)} div.store-picture`; + } + + /** + * Returns the URL of the main image of a store + * @param page {Page} Browser tab + * @param idStore {number} ID of a store + * @returns {Promise} + */ + async getStoreImageMain(page: Page, idStore: number): Promise { + return this.getAttributeContent(page, `${this.storeImage(idStore)} source`, 'srcset'); + } +} + +const foStoresPage = new FoStoresPage(); +export {foStoresPage, FoStoresPage}; diff --git a/src/versions/develop/pages/FO/hummingbird/stores.ts b/src/versions/develop/pages/FO/hummingbird/stores.ts new file mode 100644 index 00000000..fcdf6d67 --- /dev/null +++ b/src/versions/develop/pages/FO/hummingbird/stores.ts @@ -0,0 +1,17 @@ +import {type FoStoresPageInterface} from '@interfaces/FO/stores'; +import {FoStoresPage as FoStoresPageClassic} from '@versions/develop/pages/FO/classic/stores'; + +/** + * @class + * @extends FOBasePage + */ +class FoStoresPage extends FoStoresPageClassic implements FoStoresPageInterface { + /** + * @constructs + */ + constructor() { + super('hummingbird'); + } +} + +module.exports = new FoStoresPage();