WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit eed70aa

Browse files
authored
Merge pull request #21 from auto-qa-hub/po-manager-file
add-po-manager-file
2 parents 7f08cd5 + 59043aa commit eed70aa

File tree

5 files changed

+77
-29
lines changed

5 files changed

+77
-29
lines changed

page_objects_ts/POManager.ts

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { CartPage } from "./CartPage";
2+
import { CheckoutCompletePage } from "./CheckoutCompletePage";
3+
import { CheckoutStepOnePage } from "./CheckoutStepOnePage";
4+
import { CheckoutStepTwoPage } from "./CheckoutStepTwoPage";
5+
import { InventoryPage } from "./InventoryPage";
6+
import { MainPage } from "./MainPage";
7+
import { UserMenuPage } from "./UserMenuPage";
8+
import { expect, type Locator, type Page } from "@playwright/test";
9+
10+
export class POManager {
11+
page: Page;
12+
cartPage: CartPage;
13+
checkoutCompletePage: CheckoutCompletePage;
14+
checkoutStepOnePage: CheckoutStepOnePage;
15+
checkoutStepTwoPage: CheckoutStepTwoPage;
16+
inventoryPage: InventoryPage;
17+
mainPage: MainPage;
18+
userMenuPage: UserMenuPage;
19+
20+
constructor(page: Page) {
21+
this.page = page;
22+
this.cartPage = new CartPage(this.page);
23+
this.checkoutCompletePage = new CheckoutCompletePage(this.page);
24+
this.checkoutStepOnePage = new CheckoutStepOnePage(this.page);
25+
this.checkoutStepTwoPage = new CheckoutStepTwoPage(this.page);
26+
this.inventoryPage = new InventoryPage(this.page);
27+
this.mainPage = new MainPage(this.page);
28+
this.userMenuPage = new UserMenuPage(this.page);
29+
}
30+
getCartPage() {
31+
return this.cartPage;
32+
}
33+
getCheckoutCompletePage() {
34+
return this.checkoutCompletePage;
35+
}
36+
getCheckoutStepOnePage() {
37+
return this.checkoutStepOnePage;
38+
}
39+
getCheckoutStepTwoPage() {
40+
return this.checkoutStepTwoPage;
41+
}
42+
getInventoryPage() {
43+
return this.inventoryPage;
44+
}
45+
getMainPage() {
46+
return this.mainPage;
47+
}
48+
getUserMenuPage() {
49+
return this.userMenuPage;
50+
}
51+
}
52+
module.exports = { POManager };

tests/lockedUser.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import { test, expect } from "@playwright/test";
2-
import { MainPage } from "../page_objects_ts/MainPage";
32
import usersData from "../fixtures/usersData.json";
3+
import { POManager } from "../page_objects_ts/POManager";
44

55
test.describe("Tests for locked user", () => {
66
test("Attempt to login with locked user creds", async ({ page }) => {
7-
const mainPage = new MainPage(page);
7+
const poManager = new POManager(page);
88
const username = usersData.users[1];
99
const password = usersData.password;
1010

11-
await mainPage.visitMainPage();
12-
await mainPage.fillUsername(username);
13-
await mainPage.fillPassword(password);
11+
await poManager.mainPage.visitMainPage();
12+
await poManager.mainPage.fillUsername(username);
13+
await poManager.mainPage.fillPassword(password);
1414

1515
await expect(page.locator('input[name="user-name"]')).toHaveValue(username);
1616
await expect(page.locator('input[name="password"]')).toHaveValue(password);
1717

18-
await mainPage.loginButton();
18+
await poManager.mainPage.loginButton();
1919
await page.getByPlaceholder("Username").isVisible();
2020
await expect(page.locator("svg.error_icon").first()).toBeVisible();
2121
await page.getByPlaceholder("Password").isVisible();

tests/mainPage.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { test, expect } from '@playwright/test';
2-
import { MainPage } from '../page_objects_ts/MainPage';
2+
import { POManager } from '../page_objects_ts/POManager';
33

44
test.describe("Main Page tests", () => {
55
test('Visit Main Page', async ({ page }) => {
6-
const mainPage = new MainPage(page);
7-
await mainPage.visitMainPage();
6+
const poManager = new POManager(page);
7+
await poManager.mainPage.visitMainPage();
88

99
//Verify that the "Username" field is displayed
1010
await expect(page.locator('input[data-test="username"]')).toBeVisible();

tests/standardUser.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import { test, expect } from '@playwright/test';
2-
import { MainPage } from '../page_objects_ts/MainPage';
32
import usersData from '../fixtures/usersData.json';
3+
import { POManager } from '../page_objects_ts/POManager';
44

55
test.describe("Standard user tests", () => {
66
test('Standard user path', async ({ page }) => {
7-
const mainPage = new MainPage(page);
7+
const poManager = new POManager(page);
88
const username = usersData.users[0];
99
const password = usersData.password;
1010

11-
await mainPage.visitMainPage();
12-
await mainPage.fillUsername(username);
13-
await mainPage.fillPassword(password);
11+
await poManager.mainPage.visitMainPage();
12+
await poManager.mainPage.fillUsername(username);
13+
await poManager.mainPage.fillPassword(password);
1414

1515
await expect(page.locator('input[name="user-name"]')).toHaveValue(username);
1616
await expect(page.locator('input[name="password"]')).toHaveValue(password);
1717

18-
await mainPage.loginButton();
18+
await poManager.mainPage.loginButton();
1919

2020
await page.waitForURL('/inventory.html');
2121

tests/visualUser.spec.ts

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,29 @@
11
import { test, expect } from "@playwright/test";
2-
import { MainPage } from "../page_objects_ts/MainPage";
32
import usersData from "../fixtures/usersData.json";
4-
import { InventoryPage } from "../page_objects_ts/InventoryPage";
5-
import { UserMenuPage } from "../page_objects_ts/UserMenuPage";
3+
import { POManager } from "../page_objects_ts/POManager";
64

75

86
test.describe("Visual user tests", () => {
97
test("Visual user issues", async ({ page }) => {
10-
const mainPage = new MainPage(page);
11-
const inventoryPage = new InventoryPage(page);
12-
const userMenuPage = new UserMenuPage(page);
8+
const poManager = new POManager(page);
139
const username = usersData.users[5];
1410
const password = usersData.password;
1511

16-
await mainPage.visitMainPage();
17-
await mainPage.fillUsername(username);
18-
await mainPage.fillPassword(password);
12+
await poManager.mainPage.visitMainPage();
13+
await poManager.mainPage.fillUsername(username);
14+
await poManager.mainPage.fillPassword(password);
1915

2016
await expect(page.locator('input[name="user-name"]')).toHaveValue(username);
2117
await expect(page.locator('input[name="password"]')).toHaveValue(password);
2218

23-
await mainPage.loginButton();
19+
await poManager.mainPage.loginButton();
2420

2521
await page.waitForURL("/inventory.html");
26-
await userMenuPage.UserMenuIcon();
22+
await poManager.userMenuPage.UserMenuIcon();
2723
await expect(
2824
page.locator('img[class*="bm-cross visual_failure"]')
2925
).toBeVisible();
30-
await userMenuPage.closeMenuIcon();
26+
await poManager.userMenuPage.closeMenuIcon();
3127
await expect(
3228
page.locator('img[class*="bm-cross visual_failure"]')
3329
).toBeVisible();
@@ -50,12 +46,12 @@ test.describe("Visual user tests", () => {
5046
await expect(shoppingCart).toHaveClass(
5147
/shopping_cart_container\s+visual_failure/
5248
);
53-
await inventoryPage.addToCartFirstItem();
49+
await poManager.inventoryPage.addToCartFirstItem();
5450
await expect(
5551
page.locator('a span[class="shopping_cart_badge"]')
5652
).toBeVisible();
5753

58-
await inventoryPage.ShopContainerIcon();
54+
await poManager.inventoryPage.ShopContainerIcon();
5955
await page.goto("/cart.html");
6056
// Locate the item name using data-test attribute
6157
const itemName = page.locator('[data-test="inventory-item-name"]');

0 commit comments

Comments
 (0)