Skip to content

Commit 92f687b

Browse files
authored
Merge pull request #305 from nesrineabdmouleh/addMethodsToInstallModule
Add methods to install module for all PS versions
2 parents a76f913 + a1189e3 commit 92f687b

File tree

21 files changed

+770
-1
lines changed

21 files changed

+770
-1
lines changed

src/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,14 @@ export {default as boLanguagesCreatePage} from '@pages/BO/international/language
223223
export {default as boLocalizationPage} from '@pages/BO/international/localization';
224224
export {default as boLoginPage} from '@pages/BO/login';
225225
export {default as boMaintenancePage} from '@pages/BO/shopParameters/general/maintenance';
226-
export {default as boModuleManagerPage} from '@pages/BO/modules/moduleManager';
226+
export {default as boMarketplacePage} from '@pages/BO/modules/marketplace';
227+
export {default as boInstalledModulesPage} from '@pages/BO/modules/modulesAndServices/installedModules';
228+
export {default as boModuleCatalogPage} from '@pages/BO/modules/moduleCatalog';
227229
export {default as boModuleManagerAlertsPage} from '@pages/BO/modules/moduleManager/alerts';
230+
export {default as boModuleManagerPage} from '@pages/BO/modules/moduleManager';
228231
export {default as boModuleManagerUninstalledModulesPage} from '@pages/BO/modules/moduleManager/uninstalledModules';
229232
export {default as boModuleManagerUpdatesPage} from '@pages/BO/modules/moduleManager/updates';
233+
export {default as boModuleSelectionPage} from '@pages/BO/modules/modulesAndServices/selection';
230234
export {default as boMyProfilePage} from '@pages/BO/advancedParameters/team/myProfile';
231235
export {default as boNewExperimentalFeaturesPage} from '@pages/BO/advancedParameters/newExperimentalFeatures';
232236
export {default as boOrdersPage} from '@pages/BO/orders';
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import {BOBasePagePageInterface} from '@interfaces/BO';
2+
import type {Page} from '@playwright/test';
3+
4+
export interface MarketplacePageInterface extends BOBasePagePageInterface {
5+
readonly installMessageSuccessful: (moduleTag: string) => string;
6+
readonly pageTitle: string;
7+
8+
goToMarketplacePage(page: Page): Promise<void>;
9+
installModule(page: Page, moduleTag: string): Promise<string|null>;
10+
goToModuleConfigurationPage(page:Page):Promise<void>;
11+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import {BOBasePagePageInterface} from '@interfaces/BO';
2+
import type {Page} from '@playwright/test';
3+
4+
export interface ModuleCatalogPageInterface extends BOBasePagePageInterface {
5+
readonly installMessageSuccessful: (moduleTag: string) => string;
6+
readonly pageTitle: string;
7+
8+
installModule(page: Page, moduleTag: string): Promise<string | null>;
9+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import {BOBasePagePageInterface} from '@interfaces/BO';
2+
import type {Page} from '@playwright/test';
3+
import FakerModule from '@data/faker/module';
4+
5+
export interface InstalledModulesPageInterface extends BOBasePagePageInterface {
6+
readonly pageTitle: string;
7+
8+
goToSelectionPage(page: Page): Promise<void>;
9+
goToModuleConfigurationPage(page:Page, moduleTag:string):Promise<void>;
10+
isModuleVisible(page: Page, module: FakerModule): Promise<boolean>,
11+
searchModule(page: Page, module: FakerModule): Promise<boolean>;
12+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import {BOBasePagePageInterface} from '@interfaces/BO';
2+
import type {Page} from '@playwright/test';
3+
4+
export interface SelectionPageInterface extends BOBasePagePageInterface {
5+
readonly installMessageSuccessful: (moduleTag: string) => string;
6+
readonly pageTitle: string;
7+
8+
installModule(page: Page, moduleTag: string): Promise<string | null>;
9+
goToInstalledModulesPage(page: Page): Promise<void>;
10+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import type {MarketplacePageInterface} from '@interfaces/BO/modules/marketplace';
2+
import testContext from '@utils/test';
3+
import semver from 'semver';
4+
5+
const psVersion = testContext.getPSVersion();
6+
7+
/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
8+
function requirePage(): MarketplacePageInterface {
9+
if (semver.gte(psVersion, '7.6.0')) {
10+
return require('@versions/mock/pages/BO/modules/marketplace');
11+
}
12+
return require('@versions/1.7.5/pages/BO/modules/marketplace');
13+
}
14+
/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
15+
16+
export default requirePage();
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import type {ModuleCatalogPageInterface} from '@interfaces/BO/modules/moduleCatalog';
2+
3+
/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
4+
function requirePage(): ModuleCatalogPageInterface {
5+
return require('@versions/1.7.6/pages/BO/modules/moduleCatalog');
6+
}
7+
/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
8+
9+
export default requirePage();
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import type {InstalledModulesPageInterface} from '@interfaces/BO/modules/modulesAndServices/installedModules';
2+
import testContext from '@utils/test';
3+
import semver from 'semver';
4+
5+
const psVersion = testContext.getPSVersion();
6+
7+
/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
8+
function requirePage(): InstalledModulesPageInterface {
9+
if (semver.gte(psVersion, '7.5.0')) {
10+
return require('@versions/mock/pages/BO/modules/modulesAndServices/installedModules');
11+
}
12+
if (semver.lt(psVersion, '7.2.0')) {
13+
return require('@versions/1.7.1/pages/BO/modules/modulesAndServices/installedModules').installedModulesPage;
14+
}
15+
if (semver.lt(psVersion, '7.3.0')) {
16+
return require('@versions/1.7.2/pages/BO/modules/modulesAndServices/installedModules').installedModulesPage;
17+
}
18+
return require('@versions/1.7.4/pages/BO/modules/modulesAndServices/installedModules').installedModulesPage;
19+
}
20+
/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
21+
22+
export default requirePage();
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import type {SelectionPageInterface} from '@interfaces/BO/modules/modulesAndServices/selection';
2+
import testContext from '@utils/test';
3+
import semver from 'semver';
4+
5+
const psVersion = testContext.getPSVersion();
6+
7+
/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
8+
function requirePage(): SelectionPageInterface {
9+
if (semver.gte(psVersion, '7.5.0')) {
10+
return require('@versions/mock/pages/BO/modules/modulesAndServices/selection');
11+
}
12+
if (semver.lt(psVersion, '7.1.0')) {
13+
return require('@versions/1.7.0/pages/BO/modules/modulesAndServices/selection').selectionPage;
14+
}
15+
if (semver.lt(psVersion, '7.2.0')) {
16+
return require('@versions/1.7.1/pages/BO/modules/modulesAndServices/selection').selectionPage;
17+
}
18+
if (semver.lt(psVersion, '7.3.0')) {
19+
return require('@versions/1.7.2/pages/BO/modules/modulesAndServices/selection').selectionPage;
20+
}
21+
return require('@versions/1.7.4/pages/BO/modules/modulesAndServices/selection').selectionPage;
22+
}
23+
/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
24+
25+
export default requirePage();
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Import pages
2+
import type {SelectionPageInterface} from '@interfaces/BO/modules/modulesAndServices/selection';
3+
import {SelectionPage} from '@versions/1.7.1/pages/BO/modules/modulesAndServices/selection';
4+
import {Page} from '@playwright/test';
5+
6+
/**
7+
* Bo selection page, contains functions that can be used on the page
8+
* @class
9+
* @extends ProductsPage
10+
*/
11+
class SelectionVersion extends SelectionPage implements SelectionPageInterface {
12+
/**
13+
* @constructs
14+
* Setting up texts and selectors to use on selection page
15+
*/
16+
constructor() {
17+
super();
18+
19+
// Selectors
20+
this.alertSuccessBlock = '#main-div div.flash-message-list.alert.alert-success';
21+
}
22+
23+
/**
24+
* Install the module and return success message
25+
* @param {Page} page
26+
* @param {string} moduleTag
27+
* @returns {Promise<string|null>}
28+
*/
29+
async installModule(page: Page, moduleTag: string): Promise<string | null> {
30+
await page.locator(this.searchModuleInput).fill(moduleTag);
31+
await page.keyboard.press('Enter');
32+
await page.locator(this.installModuleButton).click();
33+
34+
return this.getAlertSuccessBlockContent(page);
35+
}
36+
}
37+
38+
const selectionPage = new SelectionVersion();
39+
export {selectionPage, SelectionVersion as SelectionPage};

0 commit comments

Comments
 (0)