Skip to content

Commit

Permalink
Merge pull request #443 from Progi1984/foStoresPage
Browse files Browse the repository at this point in the history
Migrate `@pages/FO/{classic|hummingbird}/stores` from Core
  • Loading branch information
Progi1984 authored Feb 27, 2025
2 parents 2eed779 + 1a11633 commit 85d2a8c
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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';
Expand Down
8 changes: 8 additions & 0 deletions src/interfaces/FO/stores.ts
Original file line number Diff line number Diff line change
@@ -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<string|null>;
}
9 changes: 9 additions & 0 deletions src/pages/FO/classic/stores.ts
Original file line number Diff line number Diff line change
@@ -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();
9 changes: 9 additions & 0 deletions src/pages/FO/hummingbird/stores.ts
Original file line number Diff line number Diff line change
@@ -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();
42 changes: 42 additions & 0 deletions src/versions/develop/pages/FO/classic/stores.ts
Original file line number Diff line number Diff line change
@@ -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<string|null>}
*/
async getStoreImageMain(page: Page, idStore: number): Promise<string|null> {
return this.getAttributeContent(page, `${this.storeImage(idStore)} source`, 'srcset');
}
}

const foStoresPage = new FoStoresPage();
export {foStoresPage, FoStoresPage};
17 changes: 17 additions & 0 deletions src/versions/develop/pages/FO/hummingbird/stores.ts
Original file line number Diff line number Diff line change
@@ -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();

0 comments on commit 85d2a8c

Please sign in to comment.