From 3a2bff0664014e992315b05ebdfdf9634d4f27b9 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Tue, 28 Jan 2025 11:35:37 +0100 Subject: [PATCH] Migrate `@pages/BO/advancedParameters/multistore/url/addURL` from Core --- src/index.ts | 1 + .../multistore/url/create.ts | 13 +++ .../multistore/url/create.ts | 9 ++ .../multistore/url/create.ts | 94 +++++++++++++++++++ 4 files changed, 117 insertions(+) create mode 100644 src/interfaces/BO/advancedParameters/multistore/url/create.ts create mode 100644 src/pages/BO/advancedParameters/multistore/url/create.ts create mode 100644 src/versions/develop/pages/BO/advancedParameters/multistore/url/create.ts diff --git a/src/index.ts b/src/index.ts index 959bdf8b..40e85091 100644 --- a/src/index.ts +++ b/src/index.ts @@ -255,6 +255,7 @@ export {default as boMonitoringPage} from '@pages/BO/catalog/monitoring'; export {default as boMultistorePage} from '@pages/BO/advancedParameters/multistore'; export {default as boMultistoreShopPage} from '@pages/BO/advancedParameters/multistore/shop'; export {default as boMultistoreShopCreatePage} from '@pages/BO/advancedParameters/multistore/shop/create'; +export {default as boMultistoreShopUrlCreatePage} from '@pages/BO/advancedParameters/multistore/url/create'; export {default as boMyProfilePage} from '@pages/BO/advancedParameters/team/myProfile'; export {default as boNewExperimentalFeaturesPage} from '@pages/BO/advancedParameters/newExperimentalFeatures'; export {default as boOrdersPage} from '@pages/BO/orders'; diff --git a/src/interfaces/BO/advancedParameters/multistore/url/create.ts b/src/interfaces/BO/advancedParameters/multistore/url/create.ts new file mode 100644 index 00000000..e071a0de --- /dev/null +++ b/src/interfaces/BO/advancedParameters/multistore/url/create.ts @@ -0,0 +1,13 @@ +import {type BOBasePagePageInterface} from '@interfaces/BO'; +import {type Page} from '@playwright/test'; + +export interface BOMultistoreShopUrlCreatePageInterface extends BOBasePagePageInterface { + readonly errorDisableMainURLMessage: string; + readonly errorDisableShopMessage: string; + readonly pageTitleCreate: string; + readonly pageTitleEdit: string; + + setMainURL(page: Page, status: string): Promise; + setShopStatus(page: Page, status: string): Promise; + setVirtualUrl(page: Page, url: string): Promise; +} diff --git a/src/pages/BO/advancedParameters/multistore/url/create.ts b/src/pages/BO/advancedParameters/multistore/url/create.ts new file mode 100644 index 00000000..4a2f2bf3 --- /dev/null +++ b/src/pages/BO/advancedParameters/multistore/url/create.ts @@ -0,0 +1,9 @@ +import {type BOMultistoreShopUrlCreatePageInterface} from '@interfaces/BO/advancedParameters/multistore/url/create'; + +/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ +function requirePage(): BOMultistoreShopUrlCreatePageInterface { + return require('@versions/develop/pages/BO/advancedParameters/multistore/url/create'); +} +/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ + +export default requirePage(); diff --git a/src/versions/develop/pages/BO/advancedParameters/multistore/url/create.ts b/src/versions/develop/pages/BO/advancedParameters/multistore/url/create.ts new file mode 100644 index 00000000..181d26e2 --- /dev/null +++ b/src/versions/develop/pages/BO/advancedParameters/multistore/url/create.ts @@ -0,0 +1,94 @@ +import {type BOMultistoreShopUrlCreatePageInterface} from '@interfaces/BO/advancedParameters/multistore/url/create'; +import BOBasePage from '@pages/BO/BOBasePage'; +import {type Page} from '@playwright/test'; + +/** + * Add url page, contains functions that can be used on the page + * @class + * @extends BOBasePage + */ +class BOMultistoreShopUrlCreatePage extends BOBasePage implements BOMultistoreShopUrlCreatePageInterface { + public readonly pageTitleCreate: string; + + public readonly pageTitleEdit: string; + + public readonly errorDisableMainURLMessage: string; + + public readonly errorDisableShopMessage: string; + + private readonly domainInput: string; + + private readonly virtualUrlInput: string; + + private readonly mainURLButton: (status: string) => string; + + private readonly enabledButton: (status: string) => string; + + private readonly saveButton: string; + + /** + * @constructs + * Setting up texts and selectors to use on add url page + */ + constructor() { + super(); + + this.pageTitleCreate = 'Add new •'; + this.pageTitleEdit = 'Multistore > Edit'; + this.errorDisableMainURLMessage = 'You cannot change a main URL to a non-main URL. You have to set another URL' + + ' as your Main URL for the selected shop.'; + this.errorDisableShopMessage = 'You cannot disable the Main URL.'; + + // Selectors + this.domainInput = '#domain'; + this.virtualUrlInput = '#virtual_uri'; + this.mainURLButton = (status: string) => `#main_${status}`; + this.enabledButton = (status: string) => `#active_${status}`; + this.saveButton = '#shop_url_form_submit_btn_1'; + } + + /* + Methods + */ + + /** + * Add shop URL + * @param page {Page} Browser tab + * @param url {string} url to set on edit/add shop form + * @returns {Promise} + */ + async setVirtualUrl(page: Page, url: string): Promise { + await this.setValue(page, this.virtualUrlInput, url); + + await this.clickAndWaitForURL(page, this.saveButton, 'networkidle', 60000); + return this.getTextContent(page, this.alertSuccessBlock); + } + + /** + * Set main URL + * @param page {Page} Browser tab + * @param status {string} Main url status + * @returns {Promise} + */ + async setMainURL(page: Page, status: string): Promise { + await this.setChecked(page, this.mainURLButton(status)); + await this.clickAndWaitForURL(page, this.saveButton); + + return this.getTextContent(page, this.alertBlock); + } + + /** + * Set shop url status + * @param page {Page} Browser tab + * @param status {string} shop url status + * @returns {Promise} + */ + async setShopStatus(page: Page, status: string): Promise { + await this.setChecked(page, this.enabledButton(status)); + await this.waitForSelectorAndClick(page, this.saveButton); + + return this.getTextContent(page, this.alertBlock); + } +} + +module.exports = new BOMultistoreShopUrlCreatePage();