Skip to content

Commit b041044

Browse files
authored
Merge pull request #54 from empawlowski/test/small-refactor
test: refactor home locators
2 parents 5744666 + fb34d00 commit b041044

File tree

5 files changed

+61
-25
lines changed

5 files changed

+61
-25
lines changed

.gitignore

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
1-
node_modules/
1+
# Node
2+
/node_modules/
3+
4+
# Playwright
25
test-results/
36
playwright-report/
47
playwright/.cache/
5-
e2e/output/
6-
e2e/download/
7-
.env
8+
e2e/output/**
9+
e2e/download/**
810

11+
# .env files
12+
.env
13+
.env.*
14+
!.env.template

e2e/components/footer.component.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { BasePage } from '@_e2e/pages/e2e/base.page';
2-
import { type Locator, type Page } from '@playwright/test';
2+
import { type Locator, type Page, expect } from '@playwright/test';
33

44
export class FooterComponent extends BasePage {
5-
readonly headerSubscription: Locator;
5+
private readonly headerSubscription: Locator;
66
private readonly fieldSubscribe: Locator;
77
private readonly buttonSubscribe: Locator;
8-
readonly alertSuccessSubs: Locator;
8+
private readonly alertSuccessSubs: Locator;
99

1010
constructor(page: Page) {
1111
super(page);
@@ -15,8 +15,16 @@ export class FooterComponent extends BasePage {
1515
this.alertSuccessSubs = this.page.locator('#success-subscribe');
1616
}
1717

18+
async isHeaderSubscriptionVisible(): Promise<void> {
19+
await expect(this.headerSubscription).toBeVisible();
20+
}
21+
1822
async sendSubscribe(email: string): Promise<void> {
1923
await this.fieldSubscribe.fill(email);
2024
await this.buttonSubscribe.click();
2125
}
26+
27+
async catchAlert(alert: string): Promise<void> {
28+
await expect(this.alertSuccessSubs).toContainText(alert);
29+
}
2230
}

e2e/pages/e2e/contact-us.page.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
import * as data from '@_e2e/assets/data/e2e/app.data.json';
22
import { ContactUsModel } from '@_e2e/models/e2e/contact-us.model';
33
import { BasePage } from '@_e2e/pages/e2e/base.page';
4-
import { type Locator, type Page } from '@playwright/test';
4+
import { HomePage } from '@_e2e/pages/e2e/home.page';
5+
import { type Locator, type Page, expect } from '@playwright/test';
56

67
export class ContactUsPage extends BasePage {
7-
readonly header: Locator;
8+
private readonly header: Locator;
89
private readonly fieldName: Locator;
910
private readonly fieldEmail: Locator;
1011
private readonly fieldSubject: Locator;
1112
private readonly fieldMessage: Locator;
1213
private readonly fieldFileUpload: Locator;
1314
private readonly buttonSubmit: Locator;
14-
readonly alertMessage: Locator;
15-
readonly buttonBackHome: Locator;
15+
private readonly alertMessage: Locator;
16+
private readonly buttonBackHome: Locator;
1617

1718
constructor(page: Page) {
1819
super(page);
@@ -27,6 +28,10 @@ export class ContactUsPage extends BasePage {
2728
this.buttonBackHome = page.locator('.btn-success');
2829
}
2930

31+
async isHeaderVisible(): Promise<void> {
32+
await expect(this.header).toBeVisible();
33+
}
34+
3035
async fillContactUs(form: ContactUsModel): Promise<void> {
3136
await this.fieldName.fill(form.name);
3237
await this.fieldEmail.fill(form.email);
@@ -35,4 +40,13 @@ export class ContactUsPage extends BasePage {
3540
await this.fieldFileUpload.setInputFiles('./e2e/assets/images/image.jpg');
3641
await this.buttonSubmit.click();
3742
}
43+
44+
async clickBackHome(): Promise<HomePage> {
45+
await this.buttonBackHome.click();
46+
return new HomePage(this.page);
47+
}
48+
49+
async catchAlert(alert: string): Promise<void> {
50+
await expect(this.alertMessage).toContainText(alert);
51+
}
3852
}

e2e/pages/e2e/home.page.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import { ProductsPage } from '@_e2e/pages/e2e/products/product.page';
88
import { type Locator, type Page, expect } from '@playwright/test';
99

1010
export class HomePage extends BasePage {
11-
readonly headerFullFledged: Locator;
11+
private readonly headerFullFledged: Locator;
1212
private readonly linkViewCart: Locator;
13-
readonly headerRecommendedItems: Locator;
13+
private readonly headerRecommendedItems: Locator;
1414
private readonly linkAddToCartFromRecommendedItems: Locator;
1515

1616
readonly leftSidebar: LeftSidebarComponent;
@@ -36,6 +36,14 @@ export class HomePage extends BasePage {
3636
await expect(this.page).toHaveTitle(data.title.home);
3737
}
3838

39+
async isHeaderFullFledgedInViewPort(): Promise<void> {
40+
await expect(this.headerFullFledged).toBeInViewport();
41+
}
42+
43+
async isHeaderRecommendedItemsVisible(): Promise<void> {
44+
await expect(this.headerRecommendedItems).toBeVisible();
45+
}
46+
3947
async addFromRecommendedItemsAndViewCart(): Promise<CartPage> {
4048
await this.linkAddToCartFromRecommendedItems.last().click();
4149
await this.linkViewCart.click();

e2e/tests/e2e/test.spec.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -239,14 +239,14 @@ test.describe('Test for test cases', { tag: ['@reg'] }, () => {
239239

240240
//Act
241241
await header.openContactUsPage();
242-
await expect.soft(contactUs.header).toBeVisible();
242+
await contactUs.isHeaderVisible();
243243
await contactUs.fillContactUs(contactUsFormData);
244244

245245
await contactUs.catchDialog();
246246
await contactUs.buttonAcceptDialog.click();
247247

248-
await expect.soft(contactUs.alertMessage).toContainText(data.contactUs.alertSuccess);
249-
await contactUs.buttonBackHome.click();
248+
await contactUs.catchAlert(data.contactUs.alertSuccess);
249+
await contactUs.clickBackHome();
250250

251251
//Assert
252252
await home.expectHomePage();
@@ -348,11 +348,11 @@ test.describe('Test for test cases', { tag: ['@reg'] }, () => {
348348

349349
//Act
350350
await home.scrollDownPage();
351-
await expect(home.footer.headerSubscription).toBeVisible();
351+
await home.footer.isHeaderSubscriptionVisible();
352352
await home.footer.sendSubscribe(emailData.email);
353353

354354
//Assert
355-
await expect(home.footer.alertSuccessSubs).toContainText(data.footer.confirmationSubscribe);
355+
await home.footer.catchAlert(data.footer.confirmationSubscribe);
356356

357357
// Test Case 10: Verify Subscription in home page
358358
// 1. Launch browser
@@ -371,11 +371,11 @@ test.describe('Test for test cases', { tag: ['@reg'] }, () => {
371371
await header.openCartPage();
372372
await cart.expectCartPage();
373373
await cart.scrollDownPage();
374-
await expect(footer.headerSubscription).toBeVisible();
374+
await footer.isHeaderSubscriptionVisible();
375375
await footer.sendSubscribe(emailData.email);
376376

377377
//Assert
378-
await expect(footer.alertSuccessSubs).toContainText(data.footer.confirmationSubscribe);
378+
await footer.catchAlert(data.footer.confirmationSubscribe);
379379

380380
// Test Case 11: Verify Subscription in Cart page
381381
// 1. Launch browser
@@ -899,7 +899,7 @@ test.describe('Test for test cases', { tag: ['@reg'] }, () => {
899899
test('Case 22: Add to cart from Recommended items', async ({ home, cart }) => {
900900
//Act
901901
await home.scrollDownPage();
902-
await expect.soft(home.headerRecommendedItems).toBeVisible();
902+
await home.isHeaderRecommendedItemsVisible();
903903
await home.addFromRecommendedItemsAndViewCart();
904904

905905
//Assert
@@ -1052,10 +1052,10 @@ test.describe('Test for test cases', { tag: ['@reg'] }, () => {
10521052
test('Case 25: Verify Scroll Up using "Arrow" button and Scroll Down functionality', async ({ home }) => {
10531053
//Act
10541054
await home.scrollDownPage();
1055-
await expect(home.footer.headerSubscription).toBeInViewport();
1055+
await home.footer.isHeaderSubscriptionVisible();
10561056
await home.takeScreenShot('footer');
10571057
await home.clickScrollUpArrow();
1058-
await expect(home.headerFullFledged).toBeInViewport();
1058+
await home.isHeaderFullFledgedInViewPort();
10591059
await home.takeScreenShot('header');
10601060

10611061
//Assert
@@ -1076,10 +1076,10 @@ test.describe('Test for test cases', { tag: ['@reg'] }, () => {
10761076
test('Case 26: Verify Scroll Up without "Arrow" button and Scroll Down functionality', async ({ home }) => {
10771077
//Act
10781078
await home.scrollDownPage();
1079-
await expect(home.footer.headerSubscription).toBeInViewport();
1079+
await home.footer.isHeaderSubscriptionVisible();
10801080
await home.takeScreenShot('up-arrow');
10811081
await home.scrollUpPage();
1082-
await expect(home.headerFullFledged).toBeInViewport();
1082+
await home.isHeaderFullFledgedInViewPort();
10831083
await home.giveMeSmallSecond();
10841084
await home.takeScreenShot('no-arrow');
10851085

0 commit comments

Comments
 (0)