Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 11 additions & 1 deletion src/data/faker/cartRule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export default class FakerCartRule {

public readonly discountType: string;

public readonly discountPercent: number | null;
public discountPercent: number | string | null;

public readonly discountAmount: CartRuleDiscountAmount | null;

Expand Down Expand Up @@ -205,4 +205,14 @@ export default class FakerCartRule {
this.freeGiftProduct = cartRuleToCreate.freeGiftProduct || null;
}
}

getDiscountPercent(): number {
return parseInt(this.discountPercent!.toString(), 10);
}

setDiscountPercent(discountPercent: number|string|null): this {
this.discountPercent = discountPercent;

return this;
}
}
2 changes: 2 additions & 0 deletions src/interfaces/BO/catalog/discounts/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import {type Frame, type Page} from '@playwright/test';

export interface BOCartRulesCreatePageInterface extends BOBasePagePageInterface {
readonly editPageTitle: string;
readonly errorMessageFieldInvalid: (field: string) => string;
readonly errorMessageReductionPercentageBetween: string;
readonly pageTitle: string;

clickOnCancelButton(page: Page): Promise<void>;
Expand Down
2 changes: 1 addition & 1 deletion src/interfaces/FO/cart/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export interface FoCartPageInterface extends FOBasePagePageInterface {
getAlertWarningForPromoCode(page: Page): Promise<string>;
getCartRuleErrorMessage(page: Page): Promise<string>;
getCartRuleName(page: Page, line?: number): Promise<string>;
getDiscountValue(page: Page, line?: number): Promise<number>;
getCartRuleValue(page: Page, line?: number): Promise<string>;
getHighlightPromoCode(page: Page): Promise<string>;
getNoItemsInYourCartMessage(page: Page): Promise<string>;
getNotificationMessage(page: Page): Promise<string>;
Expand Down
12 changes: 6 additions & 6 deletions src/utils/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ export default {
},

/**
* Calculate percentage
* @param num {number|float} Number to do the percentage
* @param percentage {number} Percentage value
* @returns {Promise<number|float>}
*/
async percentage(num: number, percentage: number): Promise<number> {
* Calculate percentage
* @param num {number|float} Number to do the percentage
* @param percentage {number} Percentage value
* @returns {number|float}
*/
percentage(num: number, percentage: number): number {
return (num / 100) * percentage;
},

Expand Down
14 changes: 11 additions & 3 deletions src/versions/develop/pages/BO/catalog/discounts/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ class BOCartRulesCreatePage extends BOBasePage implements BOCartRulesCreatePageI

public readonly editPageTitle: string;

public readonly errorMessageReductionPercentageBetween: string;

public readonly errorMessageFieldInvalid: (field: string) => string;

private readonly cartRuleForm: string;

private readonly infomationsTabLink: string;
Expand Down Expand Up @@ -167,6 +171,10 @@ class BOCartRulesCreatePage extends BOBasePage implements BOCartRulesCreatePageI
this.pageTitle = 'Cart Rules > Add new •';
this.editPageTitle = 'Cart Rules > Edit';

// Messages
this.errorMessageReductionPercentageBetween = 'Reduction percentage must be between 0% and 100%';
this.errorMessageFieldInvalid = (field: string) => `The ${field} field is invalid.`;

// Selectors
this.cartRuleForm = '#cart_rule_form';

Expand Down Expand Up @@ -541,10 +549,10 @@ class BOCartRulesCreatePage extends BOBasePage implements BOCartRulesCreatePageI
async saveCartRule(page: Frame | Page): Promise<string> {
await this.clickAndWaitForURL(page, this.saveButton);

if (await this.elementVisible(page, `${this.alertSuccessBlock}[role='alert']`, 2000)) {
return this.getTextContent(page, `${this.alertSuccessBlock}[role='alert']`);
if (await this.elementVisible(page, `${this.alertBlock}[role='alert']`, 2000)) {
return this.getTextContent(page, `${this.alertBlock}[role='alert']`);
}
return this.getTextContent(page, this.alertSuccessBlock);
return this.getTextContent(page, this.alertBlock);
}

/**
Expand Down
18 changes: 9 additions & 9 deletions src/versions/develop/pages/FO/classic/cart/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -519,22 +519,22 @@ class CartPage extends FOBasePage implements FoCartPageInterface {
}

/**
* Get cart rule error text
* Get cart rule value
* @param page {Page} Browser tab
* @returns {Promise<string>}
* @param line {number} Cart rule line
* @return {string}
*/
async getCartRuleErrorMessage(page: Page): Promise<string> {
return this.getTextContent(page, this.cartRuleAlertMessage);
async getCartRuleValue(page: Page, line: number = 1): Promise<string> {
return this.getTextContent(page, this.discountValue(line));
}

/**
* Get discount value
* Get cart rule error text
* @param page {Page} Browser tab
* @param line {number} Cart summary line
* @returns {Promise<number>}
* @returns {Promise<string>}
*/
async getDiscountValue(page: Page, line: number = 1): Promise<number> {
return this.getPriceFromText(page, this.discountValue(line), 2000);
async getCartRuleErrorMessage(page: Page): Promise<string> {
return this.getTextContent(page, this.cartRuleAlertMessage);
}

/**
Expand Down