Playwright 1.63 újdonságok | ez egy AI-val generált bejegyzés

Becsült olvasási idő:
3 perc

Újdonságok

A Playwright 1.63 frissítése megérkezett, és számtalan olyan funkciót hoz, amelyek lényegesen egyszerűbbé teszik a komplex tesztelési munkafolyamatokat, a párhuzamosítást és a hibakeresést.

Az alábbiakban összefoglaltuk a kiadás legfontosabb újdonságait és fejlesztéseit.

Key Features & Újdonságok

1. Test Locks (Tesztreteszek)

  • Megoldást nyújt a közös erőforrások (pl. központi adatbázis, globális fiókbeállítások vagy külső API-k) használata miatti ütközésekre.
  • Lehetővé teszi zárolások (locks) megadását, így a tesztek automatikusan sorba állnak a kritikus erőforrások eléréséhez, elkerülve a párhuzamos futtatásból eredő hibákat.

2. Step paraméterek és feliratok (test.step)

  • A test.step() mostantól elfogad egy params opciót, amellyel saját metaadatokat és paramétereket adhatsz át a lépésekhez.
  • A riportokban és a Trace Viewerben tisztábban nyomon követhetők az egyedi lépésekhez tartozó változók és hívási argumentumok.

3. Aria Traces & Bővített Tracing

  • A Trace Viewer új aria pillanatképeket (snapshots) támogat.
  • Megkönnyíti a hozzáférhetőségi (accessibility) elemek és az ARIA fa állapotának elemzését hibakeresés közben.

4. Új Scroll Opciók az akcióknál

  • A legtöbb akciónál (pl. .click()) megjelent egy új scroll opció ("auto" | "none").
  • Lehetőséget biztosít arra, hogy kikapcsold a Playwright automatikus „scroll-into-view” viselkedését, ha egy elem pozícióját manuálisan szeretnéd kezelni.

5. Új teszt opciók és CLI parancsok

  • Nagyobb hozzáférhetőség tesztelése: Új reducedMotion, forcedColors és contrast opciók a testOptions alatt.
  • --add-reporter parancssori opció: Bővítheted a meglévő riporterek listáját ahelyett, hogy felülírnád a playwright.config.ts-ben megadottakat.
  • omitTags opció: Letisztultabb tesztcímek a riportokban (suppress-eli az automatikusan hozzáfűzött tegeket a list, line, dot, github és junit riportereknél).

Eltávolított (Deprecated) API-k

A 1.63-as verzió végleg kivezeti a régen elavultnak jelölt funkciókat:

  • Locator.ariaRef() (használd helyette a locator.ariaSnapshot() funkciót).
  • handle opció a BrowserContext.exposeBinding és Page.exposeBinding esetében.
  • logger opció a BrowserType.connect és connectOverCDP metódusoknál.
  • videosPath és videoSize konfig opciók (használd a recordVideo-t).

Frissítés

A legújabb verzióra való átálláshoz futtasd a projekt gyökerében az alábbi parancsot:

Bash

npm install -D @playwright/test@latest
npx playwright install

Test Lock minta

A Playwright 1.63-ban megjelent Test Locks (Tesztreteszek) opció segítségével megakadályozhatod, hogy bizonyos tesztek egyszerre futjanak és ütközzenek a közös erőforrásokon (pl. ugyanazon tesztfiók beállításai, adatbázis vagy külső API-k), miközben a többi független teszt továbbra is párhuzamosan fut.

Az alábbiakban bemutatjuk a legfontosabb használati módokat kódpéldákkal.

1. Egyedi teszt zárolása egy megnevezett retesszel (lock)

Ha van két vagy több teszted, amelyek ugyanazt a megosztott erőforrást módosítják, megadhatsz nekik egy azonos lock nevet az opciók között:

TypeScript

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

// Ez a teszt lefoglalja az 'admin-account' reteszt
test('Adminisztrátor frissíti a cég nevét', { lock: 'admin-account' }, async ({ page }) => {
  await page.goto('https://example.com/admin/settings');
  await page.getByLabel('Cégnév').fill('Új Cégnév Kft.');
  await page.getByRole('button', { name: 'Mentés' }).click();

  await expect(page.getByText('Sikeres mentés')).toBeVisible();
});

// Ez a teszt megvárja, amíg az előző teszt elengedi az 'admin-account' reteszt
test('Adminisztrátor módosítja az időzónát', { lock: 'admin-account' }, async ({ page }) => {
  await page.goto('https://example.com/admin/settings');
  await page.getByLabel('Időzóna').selectOption('Europe/Budapest');
  await page.getByRole('button', { name: 'Mentés' }).click();

  await expect(page.getByText('Sikeres mentés')).toBeVisible();
});

Hogyan működik? Amíg a Worker 1 az első tesztet futtatja az admin-account retesszel, addig a Worker 2 nem kezdi el a második tesztet. A két teszt egymás után fog lefutni, de a csomag többi, független tesztje (pl. termékkeresés, kosárkezelés) továbbra is teljesen párhuzamosan fut a többi workeren.

2. Egész tesztcsoport zárolása (test.describe)

Ha egy egész blokknyi teszt egyetlen közös erőforráson dolgozik, a lock opciót közvetlenül a test.describe() csoportra is ráteheted:

TypeScript

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

test.describe('Adatbázis konfigurációs tesztek', { lock: 'database-config' }, () => {
  
  test('Alapértelmezett nyelv beállítása', async ({ page }) => {
    // ... teszt kód
  });

  test('Rendszerértesítések kikapcsolása', async ({ page }) => {
    // ... teszt kód
  });

});

3. Több retesz egyidejű használata (Array)

Egy teszt akár több megosztott erőforrás zárolását is kérheti egyszerre. Ehhez adj meg egy tömböt a lock paraméterben:

TypeScript

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

test(
  'Fizetési átjáró és szállítási beállítások egyidejű frissítése',
  { lock: ['payment-sandbox', 'shipping-api'] },
  async ({ page }) => {
    // Ez a teszt csak akkor indul el, ha mindkét retesz szabad
    await page.goto('https://example.com/admin/integrations');
    // ... teszt kód
  }
);
Szerző:
Kategória:
, , ,
Bejegyzés dátuma:

Hozzászólások

Vélemény, hozzászólás?