Pierwsze testy z mockowaniem w Playwright

Prezentacja

Pierwsze testy z mockowaniem w Playwright

Pierwsze testy z mockowaniem w Playwright

Pierwsze testy z mockowaniem w Playwright

Pierwsze testy z mockowaniem w Playwright

Pierwsze testy z mockowaniem w Playwright

Pierwsze testy z mockowaniem w Playwright

Pierwsze testy z mockowaniem w Playwright

Pierwsze testy z mockowaniem w Playwright

Dodatkowe materiały

Aby zainicjalizować projekt, musisz wykonać komendę:

npm init playwright@latest

Po przygotowaniu projektu musisz również zainstalować przeglądarki (w tym przypadku – tylko Chromium) za pomocą polecenia:

npx playwright install chromium
TIP: Zainicjalizować projekt możesz jeszcze za pomocą 2 metod.

Możesz użyć polecenia:

npm init playwright@latest --yes -- --quiet --browser=chromium

Albo z poziomu naszej darmowej wtyczki do VS Code – Playwright Helpers. Więcej o niej opowiadmy na Wtyczki do VS Code – efektywna automatyzacja testów z Playwright.

W tej lekcji będziemy testować stronę http://localhost:3000/practice/random-simple-user-v1.html (jeśli korzystasz z aplikacji GAD lokalnie)

Wynikowy kod

Wynikowy w pliku user-data.spec.ts:

import { test, expect } from "@playwright/test";


test.describe("Test User Data", () => {
  test("Check user name visibility", async ({ page }) => {
    // Arrange:
    const userNameTestId = "user-full-name";
    const userNameSelector = page.getByTestId(userNameTestId);


    await page.route("/api/v1/data/random/simple-user", async (route) => {
      const response = await route.fetch();
      const json = await response.json();
      console.log(json);
      await route.fulfill({ json: json });
    });


    // Act:
    await page.goto("/practice/random-simple-user-v1.html");


    // Assert:
    await expect(userNameSelector).toBeVisible();


    const userName = await userNameSelector.innerText();
    console.log(userName);
  });


  test("Check user name", async ({ page }) => {
    // Arrange:
    const userNameTestId = "user-full-name";
    const userNameSelector = page.getByTestId(userNameTestId);
    const expectedUserName = "John Doe";


    await page.route("/api/v1/data/random/simple-user", async (route) => {
      const response = await route.fetch();
      const json = await response.json();
      console.log(json);
      await route.fulfill({ json: mockedUserData });
    });


    // Act:
    await page.goto("/practice/random-simple-user-v1.html");


    // Assert:
    await expect(userNameSelector).toHaveText(expectedUserName);
  });


  test("Missing birthdate (will fail on a bug!)", async ({ page }) => {
    // Arrange:
    const birthdateTestId = "user-date-of-birth";
    const birthdateSelector = page.getByTestId(birthdateTestId);
    const expectedBirthdate = "[No Data]";


    await page.route("/api/v1/data/random/simple-user", async (route) => {
      const response = await route.fetch();
      const json = await response.json();
      console.log(json);
      json.dateOfBirth = undefined;
      await route.fulfill({ json: json });
    });


    // Act:
    await page.goto("/practice/random-simple-user-v1.html");


    // Assert:
    await expect(birthdateSelector).toHaveText(expectedBirthdate);
  });


  test("birth date 100 years ago (will fail on a bug!)", async ({ page }) => {
    // Arrange:
    const ageTestId = "user-age";
    const ageSelector = page.getByTestId(ageTestId);
    const expectedAge = "101";
    const bithDate = "1923-04-02T00:00:00.000Z";


    await page.route("/api/v1/data/random/simple-user", async (route) => {
      const response = await route.fetch();
      const json = await response.json();
      console.log(json);
      json.dateOfBirth = bithDate;
      await route.fulfill({ json: json });
    });


    // Act:
    await page.goto("/practice/random-simple-user-v1.html");


    // Assert:
    await expect(ageSelector).toHaveText(expectedAge);
  });
});


const mockedUserData = {
  userId: "U7800",
  username: "frankgonzalez282",
  firstName: "John",
  lastName: "Doe",
  email: "frankgonzalez282@test2.test.com",
  phone: "+845-666-357-2761",
  dateOfBirth: "1966-04-02T00:00:00.000Z",
  profilePicture: "83d80aca-da5a-4582-88d6-34a42574a9fe.jpg",
  address: {
    street: "203 Hill Street",
    city: "Zoar",
    postalCode: 79484,
    country: "UK",
  },
  lastLogin: "2022-05-21T00:00:00.000Z",
  accountCreated: "2019-09-26T00:00:00.000Z",
  status: 1,
};


Zewnętrzne linki i zasoby

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *