Skip to content

Commit 31c0af4

Browse files
authored
Merge pull request #227 from nesrineabdmouleh/Add174Version
Add 174 version
2 parents ce19ff4 + bc37acf commit 31c0af4

File tree

5 files changed

+75
-21
lines changed

5 files changed

+75
-21
lines changed

src/pages/BO/catalog/products/create/tabStocks.ts

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ const psVersion = testContext.getPSVersion();
66

77
/* eslint-disable global-require, @typescript-eslint/no-var-requires */
88
function requirePage(): BOProductsCreateTabStocksPageInterface {
9+
if (semver.lt(psVersion, '7.5.0')) {
10+
return require('@versions/1.7.4/pages/BO/catalog/products/create/tabStocks').stocksTab;
11+
}
912
if (semver.lt(psVersion, '8.1.0')) {
1013
return require('@versions/8.0/pages/BO/catalog/products/create/tabStocks').stocksTab;
1114
}

src/pages/BO/catalog/suppliers/create.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const psVersion = testContext.getPSVersion();
77
/* eslint-disable global-require, @typescript-eslint/no-var-requires */
88
function requirePage(): BOSuppliersCreatePageInterface {
99
if (semver.lt(psVersion, '9.0.0')) {
10-
return require('@versions/8.1.0/pages/BO/catalog/suppliers/create').createSupplier;
10+
return require('@versions/8.1/pages/BO/catalog/suppliers/create').createSupplier;
1111
}
1212
return require('@versions/develop/pages/BO/catalog/suppliers/create').createSupplier;
1313
}

src/pages/FO/FOBasePage.ts

+20-4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import {FOBasePagePageInterface} from '@interfaces/FO';
33
import CommonPage from '@pages/commonPage';
44

55
import type {Page} from 'playwright';
6+
import semver from 'semver';
7+
import utilsTest from '@utils/test';
68

79
/**
810
* FO parent page, contains functions that can be used on all FO page
@@ -174,8 +176,13 @@ export default class FOBasePage extends CommonPage implements FOBasePagePageInte
174176
this.defaultLanguageSpan = `${this.languageSelectorDiv} button span`;
175177
this.languageSelectorExpandIcon = `${this.languageSelectorDiv} i.expand-more`;
176178
this.languageSelectorList = `${this.languageSelectorDiv} .js-dropdown.open`;
177-
this.languageSelectorMenuItemLink = (language) => `${this.languageSelectorDiv} ul li `
178-
+ `a[data-iso-code='${language}']`;
179+
if (semver.lt(utilsTest.getPSVersion(), '7.5.0')) {
180+
this.languageSelectorMenuItemLink = (language) => `${this.languageSelectorDiv} ul li `
181+
+ `a[href*='id_lang=${language}']`;
182+
} else {
183+
this.languageSelectorMenuItemLink = (language) => `${this.languageSelectorDiv} ul li `
184+
+ `a[data-iso-code='${language}']`;
185+
}
179186
this.currencySelectorDiv = '#_desktop_currency_selector';
180187
this.defaultCurrencySpan = `${this.currencySelectorDiv} button span`;
181188
this.currencySelectorExpandIcon = `${this.currencySelectorDiv} i.expand-more`;
@@ -409,7 +416,16 @@ export default class FOBasePage extends CommonPage implements FOBasePagePageInte
409416
page.locator(this.languageSelectorExpandIcon).click(),
410417
this.waitForVisibleSelector(page, this.languageSelectorList),
411418
]);
412-
await this.clickAndWaitForLoadState(page, this.languageSelectorMenuItemLink(lang));
419+
let language: string = lang;
420+
421+
if (semver.lt(utilsTest.getPSVersion(), '7.5.0')) {
422+
if (lang === 'en') {
423+
language = '1';
424+
} else {
425+
language = '2';
426+
}
427+
}
428+
await this.clickAndWaitForLoadState(page, this.languageSelectorMenuItemLink(language));
413429
}
414430

415431
/**
@@ -815,7 +831,7 @@ export default class FOBasePage extends CommonPage implements FOBasePagePageInte
815831
* @param page {Page} Browser tab
816832
* @returns {Promise<string|null>}
817833
*/
818-
async getRestrictedText(page: Page): Promise<string|null> {
834+
async getRestrictedText(page: Page): Promise<string | null> {
819835
return page.locator(this.restrictedText).textContent();
820836
}
821837
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Import pages
2+
import type {BOProductsCreateTabStocksPageInterface} from '@interfaces/BO/catalog/products/create/tabStocks';
3+
import {StocksTab} from '@versions/8.0/pages/BO/catalog/products/create/tabStocks';
4+
import type FakerProduct from '@data/faker/product';
5+
6+
import type {Page} from 'playwright';
7+
8+
/**
9+
* Bo product stocks tab, contains functions that can be used on the page
10+
* @class
11+
* @extends StocksTab
12+
*/
13+
class BOProductTabStocksVersion extends StocksTab implements BOProductsCreateTabStocksPageInterface {
14+
/**
15+
* Set product stock
16+
* @param page {Page} Browser tab
17+
* @param productData {FakerProduct} Data to set in stock form
18+
* @returns {Promise<void>}
19+
*/
20+
async setProductStock(page: Page, productData: FakerProduct): Promise<void> {
21+
await this.waitForSelectorAndClick(page, this.stocksTabLink);
22+
23+
await this.setValue(page, this.productQuantityInput, productData.quantity);
24+
await this.setValue(page, this.productMinimumQuantityInput, productData.minimumQuantity);
25+
26+
await this.setOptionWhenOutOfStock(page, productData.behaviourOutOfStock);
27+
28+
// Set value on label In and out of stock inputs
29+
await page.locator(this.labelWhenInStockInput).fill(productData.labelWhenInStock);
30+
await page.locator(this.labelWhenOutOfStock).fill(productData.labelWhenOutOfStock);
31+
}
32+
}
33+
34+
const stocksTab = new BOProductTabStocksVersion();
35+
export {stocksTab, BOProductTabStocksVersion};

src/versions/8.0/pages/BO/catalog/products/create/tabStocks.ts

+16-16
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ import type {Page} from 'playwright';
1111
* @extends StocksTab
1212
*/
1313
class BOProductTabStocksVersion extends StocksTab implements BOProductsCreateTabStocksPageInterface {
14-
private readonly labelWhenInStockInput: string;
14+
protected labelWhenInStockInput: string;
1515

16-
private readonly labelWhenOutOfStock: string;
16+
protected labelWhenOutOfStock: string;
1717

1818
/**
19-
* @constructs
20-
* Setting up texts and selectors to use on stocks tab
21-
*/
19+
* @constructs
20+
* Setting up texts and selectors to use on stocks tab
21+
*/
2222
constructor() {
2323
super();
2424

@@ -34,11 +34,11 @@ class BOProductTabStocksVersion extends StocksTab implements BOProductsCreateTab
3434
}
3535

3636
/**
37-
* Set option when out of stock
38-
* @param page {Page} Browser tab
39-
* @param option {string} Option to check
40-
* @returns {Promise<void>}
41-
*/
37+
* Set option when out of stock
38+
* @param page {Page} Browser tab
39+
* @param option {string} Option to check
40+
* @returns {Promise<void>}
41+
*/
4242
async setOptionWhenOutOfStock(page: Page, option: string): Promise<void> {
4343
switch (option) {
4444
case 'Deny orders':
@@ -60,11 +60,11 @@ class BOProductTabStocksVersion extends StocksTab implements BOProductsCreateTab
6060
}
6161

6262
/**
63-
* Set product stock
64-
* @param page {Page} Browser tab
65-
* @param productData {FakerProduct} Data to set in stock form
66-
* @returns {Promise<void>}
67-
*/
63+
* Set product stock
64+
* @param page {Page} Browser tab
65+
* @param productData {FakerProduct} Data to set in stock form
66+
* @returns {Promise<void>}
67+
*/
6868
async setProductStock(page: Page, productData: FakerProduct): Promise<void> {
6969
await this.waitForSelectorAndClick(page, this.stocksTabLink);
7070

@@ -81,4 +81,4 @@ class BOProductTabStocksVersion extends StocksTab implements BOProductsCreateTab
8181
}
8282

8383
const stocksTab = new BOProductTabStocksVersion();
84-
export {stocksTab, BOProductTabStocksVersion};
84+
export {stocksTab, BOProductTabStocksVersion as StocksTab};

0 commit comments

Comments
 (0)