-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #425 from Progi1984/boOrderMessagesCreatePage
Migrate `@pages/BO/customerService/orderMessages/add` from Core
- Loading branch information
Showing
4 changed files
with
114 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
import type FakerOrderMessage from '@data/faker/orderMessage'; | ||
import {BOBasePagePageInterface} from '@interfaces/BO'; | ||
import {type Page} from '@playwright/test'; | ||
|
||
export interface BOOrderMessagesCreatePageInterface extends BOBasePagePageInterface { | ||
readonly pageTitle: string; | ||
readonly pageTitleEdit: string; | ||
readonly pageTitleView: string; | ||
|
||
addEditOrderMessage(page: Page, orderMessageData: FakerOrderMessage): Promise<string>; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
import {type BOOrderMessagesCreatePageInterface} from '@interfaces/BO/customerService/orderMessages/create'; | ||
|
||
/* eslint-disable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ | ||
function requirePage(): BOOrderMessagesCreatePageInterface { | ||
return require('@versions/develop/pages/BO/customerService/orderMessages/create'); | ||
} | ||
/* eslint-enable global-require, @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ | ||
|
||
export default requirePage(); |
92 changes: 92 additions & 0 deletions
92
src/versions/develop/pages/BO/customerService/orderMessages/create.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
import type FakerOrderMessage from '@data/faker/orderMessage'; | ||
import {type BOOrderMessagesCreatePageInterface} from '@interfaces/BO/customerService/orderMessages/create'; | ||
import BOBasePage from '@pages/BO/BOBasePage'; | ||
import {type Page} from '@playwright/test'; | ||
|
||
/** | ||
* Add order message page, contains selectors and functions for the page | ||
* @class | ||
* @extends BOBasePage | ||
*/ | ||
class BOOrderMessagesCreatePage extends BOBasePage implements BOOrderMessagesCreatePageInterface { | ||
public readonly pageTitle: string; | ||
|
||
public readonly pageTitleEdit: string; | ||
|
||
public readonly pageTitleView: string; | ||
|
||
private readonly nameLangButton: string; | ||
|
||
private readonly langDropdownDiv: string; | ||
|
||
private readonly nameLangSpan: (lang: string) => string; | ||
|
||
private readonly nameInput: (id: number) => string; | ||
|
||
private readonly messageTextarea: (id: number) => string; | ||
|
||
private readonly saveButton: string; | ||
|
||
/** | ||
* @constructs | ||
* Setting up titles and selectors to use on add order message page | ||
*/ | ||
constructor() { | ||
super(); | ||
|
||
this.pageTitle = `New order message • ${global.INSTALL.SHOP_NAME}`; | ||
this.pageTitleEdit = 'Editing message'; | ||
this.pageTitleView = 'Customer thread'; | ||
|
||
// Selectors | ||
this.nameLangButton = '#order_message_name_dropdown'; | ||
this.langDropdownDiv = 'div.locale-dropdown-menu[aria-labelledby="order_message_name_dropdown"]'; | ||
this.nameLangSpan = (lang: string) => `${this.langDropdownDiv} span[data-locale='${lang}']`; | ||
this.nameInput = (id: number) => `#order_message_name_${id}`; | ||
this.messageTextarea = (id: number) => `#order_message_message_${id}`; | ||
this.saveButton = '#save-button'; | ||
} | ||
|
||
/* | ||
Methods | ||
*/ | ||
|
||
/** | ||
* Change form language | ||
* @param page {Page} Browser tab | ||
* @param lang {string} Language to set on form | ||
* @return {Promise<void>} | ||
*/ | ||
async changeFormLang(page: Page, lang: string = 'en'): Promise<void> { | ||
await Promise.all([ | ||
page.locator(this.nameLangButton).click(), | ||
this.waitForVisibleSelector(page, `${this.nameLangButton}[aria-expanded='true']`), | ||
]); | ||
await Promise.all([ | ||
page.locator(this.nameLangSpan(lang)).click(), | ||
this.waitForVisibleSelector(page, `${this.nameLangButton}[aria-expanded='false']`), | ||
]); | ||
} | ||
|
||
/** | ||
* Add/Edit order message | ||
* @param page {Page} Browser tab | ||
* @param orderMessageData {FakerOrderMessage} Data to set order message form | ||
* @returns {Promise<string>} | ||
*/ | ||
async addEditOrderMessage(page: Page, orderMessageData: FakerOrderMessage): Promise<string> { | ||
// Change lang to 'en' than set inputs value | ||
await this.changeFormLang(page, 'en'); | ||
await this.setValue(page, this.nameInput(1), orderMessageData.name); | ||
await this.setValue(page, this.messageTextarea(1), orderMessageData.message); | ||
// Change lang to 'fr' than set inputs value | ||
await this.changeFormLang(page, 'fr'); | ||
await this.setValue(page, this.nameInput(2), orderMessageData.frName); | ||
await this.setValue(page, this.messageTextarea(2), orderMessageData.frMessage); | ||
// Save order message | ||
await this.clickAndWaitForURL(page, this.saveButton); | ||
return this.getAlertSuccessBlockParagraphContent(page); | ||
} | ||
} | ||
|
||
module.exports = new BOOrderMessagesCreatePage(); |