Udemy Playwright: Web Automation Testing From Zero to Hero: Difference between revisions

Jump to navigation Jump to search
m
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 ===

Navigation menu