Udemy Playwright: Web Automation Testing From Zero to Hero: Difference between revisions
Jump to navigation
Jump to search
Udemy Playwright: Web Automation Testing From Zero to Hero (view source)
Revision as of 20:48, 3 June 2024
, 3 June→Parameterised Methods
Line 819: | Line 819: | ||
=== Parameterised Methods === | === Parameterised Methods === | ||
File: <code>tests\usepageObjects.spec.ts</code> | |||
<nowiki> | |||
import { expect, test } from "@playwright/test" | |||
import { NavigationPage } from "../page-objects/navigationPage" | |||
import { FormLayoutsPage } from "../page-objects/formLayoutsPage" | |||
test.beforeEach(async ({ page }, testInfo) => { | |||
await page.goto("http://localhost:4200/") | |||
}) | |||
test("navigate to all pages", async ({ page }) => { | |||
const navigateTo = new NavigationPage(page) | |||
await navigateTo.formLayoutsPage() | |||
await navigateTo.datePickerPage() | |||
await navigateTo.smartTablepage() | |||
await navigateTo.toastrPage() | |||
await navigateTo.tooltipPage() | |||
}) | |||
test("parameterised methods", async ({ page }) => { | |||
const navigateTo = new NavigationPage(page) | |||
const onFormLayoutsPage = new FormLayoutsPage(page) | |||
await navigateTo.formLayoutsPage() | |||
await onFormLayoutsPage.submitUsingTheGridFormWithCredentialsAndSelectOption( | |||
"test@test.com", | |||
"Welcome1", | |||
"Option 2" | |||
) | |||
await onFormLayoutsPage.submitInLineFormWithNameEmailAndCheckbox( | |||
"John Smith", | |||
"john@test.com", | |||
true | |||
) | |||
})</nowiki> | |||
File: <code>page-objects\formLayoutsPage.ts</code> | |||
<nowiki> | |||
import { Page } from "@playwright/test" | |||
export class FormLayoutsPage { | |||
private readonly page: Page | |||
constructor(page: Page) { | |||
this.page = page | |||
} | |||
async submitUsingTheGridFormWithCredentialsAndSelectOption( | |||
email: string, | |||
password: string, | |||
optionText: string | |||
) { | |||
const usingTheGridForm = this.page.locator("nb-card", { | |||
hasText: "Using the Grid", | |||
}) | |||
await usingTheGridForm.getByRole("textbox", { name: "Email" }).fill(email) | |||
await usingTheGridForm | |||
.getByRole("textbox", { name: "Password" }) | |||
.fill(password) | |||
await usingTheGridForm | |||
.getByRole("radio", { name: optionText }) | |||
.check({ force: true }) | |||
await usingTheGridForm.getByRole("button").click() | |||
} | |||
/** | |||
* This method fills out the inline form with user details | |||
* | |||
* @param name - first and last name | |||
* @param email - valid email for the test user | |||
* @param rememberMe - if the user session is to be saved | |||
*/ | |||
async submitInLineFormWithNameEmailAndCheckbox( | |||
name: string, | |||
email: string, | |||
rememberMe: boolean | |||
) { | |||
const inlineForm = this.page.locator("nb-card", { | |||
hasText: "Inline form", | |||
}) | |||
await inlineForm.getByRole("textbox", { name: "Jane Doe" }).fill(name) | |||
await inlineForm.getByRole("textbox", { name: "Email" }).fill(email) | |||
rememberMe && | |||
(await inlineForm.getByRole("checkbox").check({ force: true })) | |||
await inlineForm.getByRole("button").click() | |||
} | |||
}</nowiki> | |||
=== Date Picker Page Object === | === Date Picker Page Object === | ||
=== Page Objects Manager === | === Page Objects Manager === | ||
=== Page Objects Helper Base === | === Page Objects Helper Base === |