Skip to content

Commit e25abe3

Browse files
Merge pull request #312 from nesrineabdmouleh/AdaptMaintenancePage
Adapt maintenance page with all versions
2 parents 725db92 + 9be4ecf commit e25abe3

File tree

7 files changed

+132
-8
lines changed

7 files changed

+132
-8
lines changed

src/pages/BO/modules/autoupgrade/index.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
import type {ModuleAutoupgradeMainPageInterface} from '@interfaces/BO/modules/autoupgrade';
2+
import semver from 'semver';
3+
import testContext from '@utils/test';
4+
5+
const psVersion = testContext.getPSVersion();
26

37
/* eslint-disable global-require, @typescript-eslint/no-require-imports */
48
function requirePage(): ModuleAutoupgradeMainPageInterface {
5-
return require('@versions/develop/pages/BO/modules/autoupgrade');
9+
if (semver.lt(psVersion, '7.4.0')) {
10+
return require('@versions/1.7.3/pages/BO/modules/autoupgrade').autoupgrade;
11+
}
12+
return require('@versions/develop/pages/BO/modules/autoupgrade').autoupgrade;
613
}
714

815
/* eslint-enable global-require, @typescript-eslint/no-require-imports */
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
11
import type {BOMaintenancePageInterface} from '@interfaces/BO/shopParameters/general/maintenance';
2+
import semver from 'semver';
3+
import testContext from '@utils/test';
4+
5+
const psVersion = testContext.getPSVersion();
26

37
/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
48
function requirePage(): BOMaintenancePageInterface {
5-
return require('@versions/develop/pages/BO/shopParameters/general/maintenance');
9+
if (semver.lt(psVersion, '7.4.0')) {
10+
return require('@versions/1.7.3/pages/BO/shopParameters/general/maintenance').maintenancePage;
11+
}
12+
if (semver.lt(psVersion, '7.8.0')) {
13+
return require('@versions/1.7.7/pages/BO/shopParameters/general/maintenance').maintenancePage;
14+
}
15+
return require('@versions/develop/pages/BO/shopParameters/general/maintenance').maintenancePage;
616
}
17+
718
/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
819

920
export default requirePage();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import {ModuleAutoupgradeMainPageInterface} from '@interfaces/BO/modules/autoupgrade';
2+
import {Autoupgrade} from '@versions/develop/pages/BO/modules/autoupgrade';
3+
import type {Page} from '@playwright/test';
4+
5+
/**
6+
* Module configuration page for module : Autoupgrade, contains selectors and functions for the page
7+
* @class
8+
* @extends ModuleConfiguration
9+
*/
10+
class AutoupgradeVersion extends Autoupgrade implements ModuleAutoupgradeMainPageInterface {
11+
// Methods
12+
/**
13+
* Go to maintenance page
14+
* @param page {Page} Browser tab
15+
* @return {Promise<Page>} Opened tab after the click
16+
*/
17+
async goToMaintenancePage(page: Page): Promise<Page> {
18+
return this.openLinkWithTargetBlank(page, this.goToMaintenancePageLink, 'body #main');
19+
}
20+
}
21+
22+
const autoupgrade = new AutoupgradeVersion();
23+
export {autoupgrade, AutoupgradeVersion as Autoupgrade};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// Import pages
2+
import type {BOMaintenancePageInterface} from '@interfaces/BO/shopParameters/general/maintenance';
3+
import {BOMaintenancePage} from '@versions/develop/pages/BO/shopParameters/general/maintenance';
4+
5+
import type {Page} from 'playwright';
6+
7+
/**
8+
* Maintenance page, contains selectors and functions for the page
9+
* @class
10+
* @extends BOBasePage
11+
*/
12+
class BOMaintenanceVersion extends BOMaintenancePage implements BOMaintenancePageInterface {
13+
/**
14+
* @constructs
15+
* Setting up texts and selectors to use on products page
16+
*/
17+
constructor() {
18+
super();
19+
20+
this.shopStatusToggleInput = (toggle: number) => `label[for='PS_SHOP_ENABLE_${toggle ? 'on' : 'off'}']`;
21+
this.saveFormButton = '#configuration_fieldset_general div.panel-footer button';
22+
this.addMyIPAddressButton = '#conf_id_PS_MAINTENANCE_IP button';
23+
this.alertSuccessBlock = 'div.alert.alert-success[style*=\'display\']';
24+
this.successfulUpdateMessage = 'The settings have been successfully updated.';
25+
}
26+
27+
/**
28+
* Enable/Disable shop
29+
* @param page {Page} Browser tab
30+
* @param toEnable {boolean} Status to set to enable/disable the shop
31+
* @return {Promise<string>}
32+
*/
33+
async changeShopStatus(page: Page, toEnable: boolean = true): Promise<string> {
34+
await this.setChecked(page, this.shopStatusToggleInput(toEnable ? 1 : 0));
35+
await this.clickAndWaitForLoadState(page, this.saveFormButton);
36+
await this.elementNotVisible(page, this.shopStatusToggleInput(!toEnable ? 1 : 0), 2000);
37+
38+
return this.getTextContent(page, this.alertSuccessBlock);
39+
}
40+
41+
/**
42+
* Add my IP address in maintenance IP input
43+
* @param page {Page} Browser tab
44+
* @return {Promise<string>}
45+
*/
46+
async addMyIpAddress(page: Page): Promise<string> {
47+
await page.locator(this.addMyIPAddressButton).click();
48+
await page.locator(this.saveFormButton).click();
49+
50+
return this.getTextContent(page, this.alertSuccessBlock);
51+
}
52+
}
53+
54+
const maintenancePage = new BOMaintenanceVersion();
55+
export {maintenancePage, BOMaintenanceVersion as MaintenancePage};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Import pages
2+
import type {BOMaintenancePageInterface} from '@interfaces/BO/shopParameters/general/maintenance';
3+
import {BOMaintenancePage} from '@versions/develop/pages/BO/shopParameters/general/maintenance';
4+
5+
/**
6+
* Maintenance page, contains selectors and functions for the page
7+
* @class
8+
* @extends BOBasePage
9+
*/
10+
class BOMaintenanceVersion extends BOMaintenancePage implements BOMaintenancePageInterface {
11+
/**
12+
* @constructs
13+
* Setting up texts and selectors to use on products page
14+
*/
15+
constructor() {
16+
super();
17+
18+
this.shopStatusToggleInput = (toggle: number) => `label[for='form_general_enable_shop_${toggle}']`;
19+
this.saveFormButton = 'div.card-footer button.btn-primary';
20+
this.addMyIPAddressButton = '.add_ip_button';
21+
}
22+
}
23+
24+
const maintenancePage = new BOMaintenanceVersion();
25+
export {maintenancePage, BOMaintenanceVersion as MaintenancePage};

src/versions/develop/pages/BO/modules/autoupgrade/index.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Autoupgrade extends ModuleConfiguration implements ModuleAutoupgradeMainPa
2828

2929
private readonly checkRequirementsFailedAlerts: string;
3030

31-
private readonly goToMaintenancePageLink: string;
31+
protected goToMaintenancePageLink: string;
3232

3333
private readonly checkRequirementsButton: string;
3434

@@ -176,6 +176,7 @@ class Autoupgrade extends ModuleConfiguration implements ModuleAutoupgradeMainPa
176176
*/
177177
async goToNextStep(page: Page): Promise<void> {
178178
await page.locator(this.nextStepButton).click();
179+
await page.waitForTimeout(2000);
179180
}
180181

181182
/**
@@ -231,4 +232,5 @@ class Autoupgrade extends ModuleConfiguration implements ModuleAutoupgradeMainPa
231232
}
232233
}
233234

234-
module.exports = new Autoupgrade();
235+
const autoupgrade = new Autoupgrade();
236+
export {autoupgrade, Autoupgrade};

src/versions/develop/pages/BO/shopParameters/general/maintenance.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class BOMaintenancePage extends BOBasePage implements BOMaintenancePageInterface
1414

1515
private readonly generalForm: string;
1616

17-
private readonly shopStatusToggleInput: (toggle: number) => string;
17+
protected shopStatusToggleInput: (toggle: number) => string;
1818

1919
private readonly allowAdminsToggleInput: (toggle: number) => string;
2020

@@ -24,11 +24,11 @@ class BOMaintenancePage extends BOBasePage implements BOMaintenancePageInterface
2424

2525
private readonly maintenanceTextInputFR: string;
2626

27-
private readonly addMyIPAddressButton: string;
27+
protected addMyIPAddressButton: string;
2828

2929
private readonly maintenanceIpInput: string;
3030

31-
private readonly saveFormButton: string;
31+
protected saveFormButton: string;
3232

3333
/**
3434
* @constructs
@@ -124,4 +124,5 @@ class BOMaintenancePage extends BOBasePage implements BOMaintenancePageInterface
124124
}
125125
}
126126

127-
module.exports = new BOMaintenancePage();
127+
const maintenancePage = new BOMaintenancePage();
128+
export {maintenancePage, BOMaintenancePage};

0 commit comments

Comments
 (0)