Skip to content

Add carriers for version 1.7.7 #534

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 62 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
7d3e02e
Add carriers for 1.7.7
SD1982 Apr 23, 2025
c22a76d
Add condition to main carriers page
SD1982 Apr 23, 2025
b971701
Move carriers folder to shipping folder
SD1982 Apr 23, 2025
7f15566
Add 1.7.7 version for addresses create
SD1982 Apr 23, 2025
83f5452
Add condition for addresses page
SD1982 Apr 23, 2025
9d3d0db
Commit review change suggestions
SD1982 Apr 24, 2025
6c677c6
Fix missing element
SD1982 Apr 24, 2025
059714c
Add heritage from 8.2 to 1.7.7
SD1982 Apr 24, 2025
dad7401
Add page title and success message to 1.7.7
SD1982 Apr 24, 2025
767da4c
Fix description in jsdocs
SD1982 Apr 24, 2025
be5ae29
Add '.boCarriersPage' to version requirement
SD1982 Apr 24, 2025
5d43237
Re-add carrier create page link
SD1982 Apr 24, 2025
4095ba0
implement version for addresses index
SD1982 Apr 24, 2025
6b400ba
Implement orderCreate for few versions
SD1982 Apr 24, 2025
428ee46
Add temp log for debug
SD1982 Apr 24, 2025
030d52e
Override createOrder function for 1.7.7 version
SD1982 Apr 25, 2025
729179b
Remove useless override
SD1982 Apr 25, 2025
bee1c1b
Override paymentMethodSelect for 1.7.7
SD1982 Apr 25, 2025
d0db85a
Override setPaymentMethod for 1.7.7
SD1982 Apr 25, 2025
1a58abd
Remove unwanted comments
SD1982 Apr 25, 2025
4709100
Move selector override from 1.7.7 to 8.2
SD1982 Apr 25, 2025
b6bee4c
Move carrier button selector override from 1.7.7 to 1.7.8
SD1982 Apr 25, 2025
64d3aa8
Add carrier requirement for versions below 8.0.0
SD1982 Apr 25, 2025
4f5ae14
Move adress creation success message from 1.7.7 to 1.7.8
SD1982 Apr 25, 2025
66a59eb
Add requirement for lt 8.0.0
SD1982 Apr 25, 2025
101a34d
Move order setPaymentMethod override from 1.7.7 to 1.7.8
SD1982 Apr 25, 2025
a2074b8
Add login compatibility for 1.6.1.24
SD1982 Apr 28, 2025
0957718
Remove unwanted changes
SD1982 Apr 28, 2025
edd672e
Remove unwanted changes part2
SD1982 Apr 28, 2025
2c2e27d
Remove unwanted changes part3
SD1982 Apr 28, 2025
4d2625b
Add compat requirement in pages
SD1982 Apr 28, 2025
1b60b15
Add version to utils
SD1982 Apr 28, 2025
9a6375d
Remove temporary carriersCreate
SD1982 Apr 28, 2025
e433003
Remove temporary login require
SD1982 Apr 28, 2025
2fd0d6c
Add lt for version under 9.0.0
SD1982 Apr 28, 2025
0a6d169
Try require 8.2 on dashboard 1.6
SD1982 Apr 28, 2025
3f3efd0
Add require for dashboardPage under 9.0.0
SD1982 Apr 28, 2025
cb4704f
Try implementes carriers link to 1.6.1
SD1982 Apr 28, 2025
75d7cf0
Correctly implementes Dashboard
SD1982 Apr 28, 2025
da9bd95
Correctly require
SD1982 Apr 28, 2025
d1beff1
Correctly export carrierCreate from 8.2
SD1982 Apr 28, 2025
4956667
Override goToAddNewCarrier for 1.6 versions
SD1982 Apr 29, 2025
8ad5bac
Override CustomerParentLink in 1.6
SD1982 Apr 29, 2025
a674449
Override addNewAddress link for 1.6
SD1982 Apr 29, 2025
07f5912
Override addNewAddress page title for 1.6
SD1982 Apr 29, 2025
cefd290
Move title override to correct page
SD1982 Apr 29, 2025
575cfea
Override newAddress form selectors
SD1982 Apr 29, 2025
0754528
Override createEditAdress
SD1982 Apr 29, 2025
f94ba46
Total override createEditAddress for 1.6
SD1982 Apr 29, 2025
2cdcc07
Add missing locator
SD1982 Apr 29, 2025
25e124a
Update alert block locators
SD1982 Apr 29, 2025
8edd987
Update successful creation txt
SD1982 Apr 29, 2025
5c91da2
Update success block
SD1982 Apr 29, 2025
296d676
Override save and getSuccessTxt
SD1982 Apr 29, 2025
6998cef
Update successful creation txt
SD1982 Apr 29, 2025
556a98b
Add OrderParentLink for 1.6
SD1982 Apr 29, 2025
85d12b5
Override newOrderPage link for 1.6
SD1982 Apr 29, 2025
2a93694
Add order customer searh selector
SD1982 Apr 29, 2025
911ece8
Override order customer selection locators
SD1982 Apr 29, 2025
5700a10
Edit nth-child for customer card selection
SD1982 Apr 29, 2025
e6fc9a0
Override checkoutHistoryBlock locator for 1.6
SD1982 Apr 29, 2025
6453aeb
Add develop to require for lt than 9.0
SD1982 Apr 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@

## IDE
/.vscode/
/.idea/
10 changes: 5 additions & 5 deletions src/pages/BO/BOBasePage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ export default class BOBasePage extends CommonPage implements BOBasePagePageInte

private readonly dashboardLink: string;

public readonly ordersParentLink: string;
public ordersParentLink: string;

public readonly ordersLink: string;

Expand Down Expand Up @@ -115,7 +115,7 @@ export default class BOBasePage extends CommonPage implements BOBasePagePageInte

public readonly stocksLink: string;

public readonly customersParentLink: string;
public customersParentLink: string;

public readonly customersLink: string;

Expand Down Expand Up @@ -155,11 +155,11 @@ export default class BOBasePage extends CommonPage implements BOBasePagePageInte

public readonly linkWidgetLink: string;

public readonly shippingLink: string;
public shippingLink: string;

public readonly carriersLink: string;
public carriersLink: string;

public readonly shippingPreferencesLink: string;
public shippingPreferencesLink: string;

public readonly paymentParentLink: string;

Expand Down
15 changes: 14 additions & 1 deletion src/pages/BO/customers/addresses/create.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
import {type BOAddressesCreatePageInterface} from '@interfaces/BO/customers/addresses/create';
import testContext from '@utils/test';
import semver from 'semver';

const psVersion = testContext.getPSVersion();

/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
function requirePage(): BOAddressesCreatePageInterface {
return require('@versions/develop/pages/BO/customers/addresses/create');
if (semver.lt(psVersion, '7.0.0')) {
return require('@versions/1.6.1/pages/BO/customers/addresses/create').boAddressesCreatePage;
}
if (semver.lt(psVersion, '7.8.0')) {
return require('@versions/1.7.7/pages/BO/customers/addresses/create').boAddressesCreatePage;
}
if (semver.lt(psVersion, '9.0.0')) {
return require('@versions/8.2/pages/BO/customers/addresses/create').boAddressesCreatePage;
}
return require('@versions/develop/pages/BO/customers/addresses/create').boAddressesCreatePage;
}
/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */

Expand Down
18 changes: 17 additions & 1 deletion src/pages/BO/customers/addresses/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,24 @@
import {type BOAddressesPageInterface} from '@interfaces/BO/customers/addresses';
import testContext from '@utils/test';
import semver from 'semver';

const psVersion = testContext.getPSVersion();

/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
function requirePage(): BOAddressesPageInterface {
return require('@versions/develop/pages/BO/customers/addresses');
if (semver.lt(psVersion, '7.0.0')) {
return require('@versions/1.6.1/pages/BO/customers/addresses').boAddressesPage;
}
if (semver.lt(psVersion, '7.8.0')) {
return require('@versions/1.7.7/pages/BO/customers/addresses').boAddressesPage;
}
if (semver.lt(psVersion, '8.0.0')) {
return require('@versions/1.7.8/pages/BO/customers/addresses').boAddressesPage;
}
if (semver.lt(psVersion, '9.0.0')) {
return require('@versions/8.2/pages/BO/customers/addresses').boAddressesPage;
}
return require('@versions/develop/pages/BO/customers/addresses').boAddressesPage;
}
/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */

Expand Down
7 changes: 5 additions & 2 deletions src/pages/BO/dashboard/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,11 @@ const psVersion = testContext.getPSVersion();

/* eslint-disable global-require, @typescript-eslint/no-require-imports */
function requirePage(): DashboardPageInterface {
if (semver.gte(psVersion, '0.0.0')) {
return require('@versions/develop/pages/BO/dashboard');
if (semver.lt(psVersion, '7.0.0')) {
return require('@versions/1.6.1/pages/BO/dashboard').boDashboardPage;
}
if (semver.lt(psVersion, '9.0.0')) {
return require('@versions/develop/pages/BO/dashboard').boDashboardPage;
}
return require('@versions/develop/pages/BO/dashboard');
}
Expand Down
2 changes: 1 addition & 1 deletion src/pages/BO/login/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ function requirePage(): LoginPageInterface {
return require('@versions/1.7.8/pages/BO/login').loginPage;
}
if (semver.lt(psVersion, '9.0.0')) {
return require('@versions/8.1/pages/BO/login').loginPage;
return require('@versions/develop/pages/BO/login').loginPage;
}
return require('@versions/develop/pages/BO/login').loginPage;
}
Expand Down
16 changes: 16 additions & 0 deletions src/pages/BO/orders/create.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
import type {BOOrdersCreatePageInterface} from '@interfaces/BO/orders/create';
import testContext from '@utils/test';
import semver from 'semver';

const psVersion = testContext.getPSVersion();

/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
function requirePage(): BOOrdersCreatePageInterface {
if (semver.lt(psVersion, '7.0.0')) {
return require('@versions/1.6.1/pages/BO/orders/create').boOrderCreatePage;
}
if (semver.lt(psVersion, '7.8.0')) {
return require('@versions/1.7.7/pages/BO/orders/create').boOrderCreatePage;
}
if (semver.lt(psVersion, '8.0.0')) {
return require('@versions/1.7.8/pages/BO/orders/create').boOrderCreatePage;
}
if (semver.lt(psVersion, '9.0.0')) {
return require('@versions/8.2/pages/BO/orders/create').boOrderCreatePage;
}
return require('@versions/develop/pages/BO/orders/create');
}

Expand Down
3 changes: 3 additions & 0 deletions src/pages/BO/orders/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ const psVersion = testContext.getPSVersion();

/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
function requirePage(): BOOrdersPageInterface {
if (semver.lt(psVersion, '7.0.0')) {
return require('@versions/1.6.1/pages/BO/orders').ordersPage;
}
if (semver.lt(psVersion, '7.3.0')) {
return require('@versions/1.7.2/pages/BO/orders').ordersPage;
}
Expand Down
2 changes: 1 addition & 1 deletion src/pages/BO/shipping/carriers/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const psVersion = testContext.getPSVersion();
/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
function requirePage(): BOCarriersCreatePageInterface {
if (semver.lt(psVersion, '9.0.0')) {
return require('@versions/8.2/pages/BO/shipping/carriers/create');
return require('@versions/8.2/pages/BO/shipping/carriers/create').boCarriersCreatePage;
}
return require('@versions/develop/pages/BO/shipping/carriers/create').boCarriersCreatePage;
}
Expand Down
11 changes: 10 additions & 1 deletion src/pages/BO/shipping/carriers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,17 @@ const psVersion = testContext.getPSVersion();

/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
function requirePage(): BOCarriersPageInterface {
if (semver.lt(psVersion, '7.0.0')) {
return require('@versions/1.6.1/pages/BO/shipping/carriers').boCarriersPage;
}
if (semver.lt(psVersion, '7.8.0')) {
return require('@versions/1.7.7/pages/BO/shipping/carriers').boCarriersPage;
}
if (semver.lt(psVersion, '8.0.0')) {
return require('@versions/1.7.8/pages/BO/shipping/carriers').boCarriersPage;
}
if (semver.lt(psVersion, '9.0.0')) {
return require('@versions/8.2/pages/BO/shipping/carriers');
return require('@versions/8.2/pages/BO/shipping/carriers').boCarriersPage;
}
return require('@versions/develop/pages/BO/shipping/carriers').boCarriersPage;
}
Expand Down
5 changes: 3 additions & 2 deletions src/utils/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ export default {
const version: string = process.env.PS_VERSION;

return version
.replace(/\.x$/, '.99')
.replace(/^1\.7\./, '7.');
.replace(/\.x$/, '.99')
.replace(/^1\.7\./, '7.')
.replace(/^1\.6\./, '6.');
},
};
115 changes: 115 additions & 0 deletions src/versions/1.6.1/pages/BO/customers/addresses/create.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
// Import pages
import type FakerAddress from '@data/faker/address';
import {BOAddressesCreatePageInterface} from '@interfaces/BO/customers/addresses/create';
import type {Frame, Page} from '@playwright/test';
import {BOAddressesCreatePage as BOAddressCreatePageVersion} from '@versions/1.7.7/pages/BO/customers/addresses/create';

class BOAddressesCreatePage extends BOAddressCreatePageVersion implements BOAddressesCreatePageInterface {
private readonly customerAddressMobilePhoneInput: string;
/**
* @constructs
* Setting up texts and selectors to use in addresses create page
*/
constructor() {
super();
// Title
this.pageTitleCreate = `Addresses > Add new • ${global.INSTALL.SHOP_NAME}`;
// Alert Text
this.alertBlock = 'div.alert';
this.alertTextBlock = `${this.alertBlock}`;
this.alertBlockCloseButton = `${this.alertBlock} button[aria-label='Close']`;
this.alertSuccessBlock = `${this.alertBlock}.alert-success`;
this.alertSuccessBlockParagraph = `${this.alertSuccessBlock}`;
// Selectors
this.customerEmailInput = '#email';
this.customerAddressdniInput = '#dni';
this.customerAddressAliasInput = '#alias';
this.customerAddressFirstNameInput = '#firstname';
this.customerLastNameInput = '#lastname';
this.customerAddressCompanyInput = '#company';
this.customerAddressVatNumberInput = '#vat_number';
this.customerAddressInput = '#address1';
this.customerAddressPostCodeInput = '#postcode';
this.customerSecondAddressInput = '#address2';
this.customerAddressCityInput = '#city';
this.customerAddressCountrySelect = '#id_country';
this.customerAddressPhoneInput = '#phone';
this.customerAddressMobilePhoneInput = '#phone_mobile';
this.customerAddressOtherInput = '#other';
this.saveAddressButton = '#address_form_submit_btn';
}

/**
* Fill form for add/edit address
* @param page {Frame|Page} Browser tab
* @param addressData {FakerAddress} Data to set on new address form
* @param save {boolean} True if we need to save the new address, false if not
* @param waitForNavigation {boolean} True if we need to wait for navigation after save, false if not
* @returns {Promise<?string>}
*/
async createEditAddress(
page: Frame|Page,
addressData: FakerAddress,
save: boolean = true,
waitForNavigation: boolean = true,
): Promise<string|null> {
if (await this.elementVisible(page, this.customerEmailInput, 2000)) {
await this.setValue(page, this.customerEmailInput, addressData.email);
}
await this.setValue(page, this.customerAddressdniInput, addressData.dni);
await this.setValue(page, this.customerAddressAliasInput, addressData.alias);
await this.setValue(page, this.customerAddressFirstNameInput, addressData.firstName);
await this.setValue(page, this.customerLastNameInput, addressData.lastName);
await this.setValue(page, this.customerAddressCompanyInput, addressData.company);
await this.setValue(page, this.customerAddressVatNumberInput, addressData.vatNumber);
await this.setValue(page, this.customerAddressInput, addressData.address);
await this.setValue(page, this.customerSecondAddressInput, addressData.secondAddress);
await this.setValue(page, this.customerAddressPostCodeInput, addressData.postalCode);
await this.setValue(page, this.customerAddressCityInput, addressData.city);
await this.selectByVisibleText(page, this.customerAddressCountrySelect, addressData.country);
await this.setValue(page, this.customerAddressPhoneInput, addressData.phone);
await this.setValue(page, this.customerAddressMobilePhoneInput, addressData.phone);
await this.setValue(page, this.customerAddressOtherInput, addressData.other);

if (await this.elementVisible(page, this.customerAddressStateSelect, 1000)) {
await page.locator(this.customerAddressStateSelect).click();
await this.setValue(page, this.searchStateInput, addressData.state);
await this.waitForSelectorAndClick(page, this.searchResultState);
}

// Save and return successful message
if (save) {
if (waitForNavigation) {
return this.saveAddress(page);
}

await page.locator(this.saveAddressButton).click();
}

return null;
}

/**
* Save address
* @param page {Frame|Page} Browser tab
* @returns {Promise<string>}
*/
async saveAddress(page: Frame|Page): Promise<string> {
await this.clickAndWaitForURL(page, this.saveAddressButton);
return this.getAlertSuccessBlockParagraphContent(page);
}

/**
* Get text content of alert success block paragraph
* @param page {Frame|Page} Browser tab
* @param timeout
* @return {Promise<string>}
*/
async getAlertSuccessBlockParagraphContent(page: Frame | Page, timeout: number = 2000): Promise<string> {
await this.elementVisible(page, this.alertSuccessBlockParagraph, timeout);
return this.getTextContent(page, this.alertSuccessBlockParagraph);
}
}

const boAddressesCreatePage = new BOAddressesCreatePage();
export {boAddressesCreatePage, BOAddressesCreatePage};
24 changes: 24 additions & 0 deletions src/versions/1.6.1/pages/BO/customers/addresses/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import {type BOAddressesPageInterface} from '@interfaces/BO/customers/addresses';
import {BOAddressesPage as BOAddressesPageVersion} from '@versions/1.7.7/pages/BO/customers/addresses';

/**
* Addresses page, contains functions that can be used on the page
* @class
* @extends BOBasePage
*/
class BOAddressesPage extends BOAddressesPageVersion implements BOAddressesPageInterface {
/**
* @constructs
* Setting up texts and selectors to use on addresses page
*/
constructor() {
super();
this.successfulCreationMessage = '× Successful creation';
this.pageTitle = `Addresses • ${global.INSTALL.SHOP_NAME}`;
// Header links
this.addNewAddressLink = '#page-header-desc-address-new_address';
}
}

const boAddressesPage = new BOAddressesPage();
export {boAddressesPage, BOAddressesPage};
26 changes: 26 additions & 0 deletions src/versions/1.6.1/pages/BO/dashboard/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import type {DashboardPageInterface} from '@interfaces/BO/dashboard';
import {Dashboard as DashboardPageVersion} from '@versions/develop/pages/BO/dashboard';

/**
* Bo dashboard page, contains functions that can be used on the page
* @class
* @extends DashboardPage
*/
class DashboardPage extends DashboardPageVersion implements DashboardPageInterface {
/**
* @constructs
* Setting up titles and selectors to use on dashboard page
*/
constructor() {
super();
// Orders
this.ordersParentLink = 'li#maintab-AdminParentOrders';
// Customers
this.customersParentLink = 'li#maintab-AdminParentCustomer';
// Shipping
this.shippingLink = '#maintab-AdminParentShipping';
}
}

const boDashboardPage = new DashboardPage();
export {boDashboardPage, DashboardPage};
20 changes: 20 additions & 0 deletions src/versions/1.6.1/pages/BO/login/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Import pages
import type {LoginPageInterface} from '@interfaces/BO/login';
import {LoginPage} from '@versions/1.7.2/pages/BO/login';

/**
* Bo login page, contains functions that can be used on the page
* @class
* @extends ProductsPage
*/
class BOLoginVersion extends LoginPage implements LoginPageInterface {
/**
* @constructs
* Setting up texts and selectors to use on login page
*/
constructor() {
super();
}
}

module.exports = new BOLoginVersion();
Loading