Powrót do: Playwright Elements – Kluczowe koncepcje automatyzacji testów
Sesja i Playwright – ekspresowe wprowadzenie
Potraktuj to jako preludium – czyli szybki wstęp i zajawkę dalszych lekcji😉
W kolejnych nagraniach znacznie dokładniej tłumaczymy poszczególne zagadnienia, automatyzujemy i testujemy różne przypadki. W kolejnych lekcjach omawiamy dobre praktyki stosowane w projektach😉
Prezentacja
Sesja
Co to jest sesja w przeglądarce?
To informacje, które przeglądarka zapamiętuje podczas naszej interakcji ze stroną.
Może to być stan logowania, preferencje użytkownika czy różne ustawienia strony.
Mamy kilka sposobów przechowywania danych:
- Cookies – przechowują dane o logowaniu
- Session storage – przechowuje dane do zamknięcia strony
- Local storage – przechowuje długotrwale dane w przeglądarce
Jak działa sesja w przeglądarce?
Przeglądarka i serwer komunikują się, aby utrzymać informacje o sesji.
Proces sesji wygląda zazwyczaj tak:
- Użytkownik odwiedza stronę internetową i loguje się na stronie.
- Serwer przypisuje unikalne dane użytkownikowi – to może być token ID lub inne zaszyfrowane informacje.
- Dane sesji są odsyłane do front-endu i są przechowywane w przeglądarce (np. w cookies, Local Storage, Session Storage) i/lub na serwerze.
- Podczas kolejnych żądań przeglądarka dołącza identyfikator sesji, aby serwer mógł rozpoznać użytkownika.
- Po zakończeniu sesji (np. po zamknięciu przeglądarki lub wygaśnięciu czasu sesji) dane mogą zostać usunięte.
Wykorzystanie sesji w Playwright
Przygotowanie sesji
Zapisanie sesji po teście z logowaniem:
import { test, expect } from "@playwright/test"; import path from "path"; import { SESSION_PATH } from "../playwright.config"; test.describe("Setup session", () => { test("authenticate", async ({ page }) => { // Arrange: const userName = "Moses.Armstrong@Feest.ca"; const password = "test1"; await page.goto("/login/"); // Act: await page.locator('[name="username"]').fill(userName); await page.locator("#password").fill(password); await page.locator("#loginButton").click(); // Assert: await expect(page.getByTestId("hello")).toBeVisible(); await page.context().storageState({ path: SESSION_PATH }); }); });
Sesja w pojedynczych testach
Wstrzyknięcie sesji do wybranych testów za pomocą test.use()
:
import { test, expect } from "@playwright/test"; import { SESSION_PATH } from "../playwright.config"; test.use({ storageState: SESSION_PATH }); test.describe("welcome page tests", () => { test("user account", async ({ page }) => { // Arrange: const helloHeaderLocator = page.getByTestId("hello"); await page.goto("/welcome/"); // Assert: await expect(helloHeaderLocator).toBeVisible(); await expect(helloHeaderLocator).toHaveText("Hi Moses.Armstrong@Feest.ca!"); }); });
Wstrzyknięcie sesji do projektu
Wstrzyknięcie sesji do wszystkich testów z danego projektu:
import { defineConfig, devices } from "@playwright/test"; import path from "path"; export const SESSION_PATH = path.join(__dirname, "./.auth/user.json"); export default defineConfig({ testDir: "./tests", fullyParallel: true, workers: 1, reporter: "html", use: { baseURL: "http://localhost:3000", trace: "on", }, projects: [ { name: "setup", use: { ...devices["Desktop Chrome"] }, testMatch: /.*\.setup\.ts/, }, { name: "tests", use: { ...devices["Desktop Chrome"], storageState: SESSION_PATH, }, dependencies: ["setup"], }, ], });
Zewnętrzne linki i zasoby
- Darmowe materiały o automatyzacji z Playwright
- Wykorzystanie sesji podczas projektowania profesjonalnego frameworka zajdziesz w lekcjach – Projekty zależne, sesja i aliasy (🔒Tylko dla członków Programu Automatyzacja z Playwright)
- What Are Sessions? How Do They Work?
- Oficjalna dokumentacja o wykorzystaniu danych sesji w testach – Basic: shared account in all tests
- Oficjalnym repozytorium naszej autorskiej aplikacji do nauki automatyzacji: GitHub / 🦎GAD
- Mini kurs, w którym opowiadamy szczegółowo o naszej aplikacji do testów: GAD – poznaj naszą autorską aplikację do nauki automatyzacji (🔒Tylko dla członków Programu Automatyzacja z Playwright)