Розділ 1

Що таке фікстура

Документація →

Playwright Test побудований навколо ідеї тестових фікстур. Фікстура встановлює середовище для кожного тесту: дає йому все, що потрібно, і нічого зайвого. Фікстури ізольовані між тестами, тож тести можна групувати за змістом, а не за спільним налаштуванням.

Ви вже користувалися фікстурою в першому ж тесті. Аргумент { page } — це не просто деструктуризація: він повідомляє раннеру, що тесту потрібна фікстура page, і раннер налаштує її до запуску тесту, а після завершення прибере.

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

test('basic test', async ({ page }) => {
  await page.goto('https://playwright.dev/');
  await expect(page).toHaveTitle(/Playwright/);
});

За довідником API механіка така: Playwright Test дивиться на оголошення кожного тесту, аналізує, які фікстури йому потрібні, і готує саме їх. Значення, підготовлені фікстурами, зливаються в один об'єкт, який передається першим параметром у тест, хуки, анотації та інші фікстури. Саме тому ви пишете async ({ page, request }) => ... і отримуєте рівно те, що назвали.

Проблема

Тесту потрібне готове оточення — сторінка, контекст, дані, авторизація — і кожен тест має починати з чистого стану.

Чому

Якщо тести ділять між собою змінюваний стан, результат одного починає залежати від іншого, і ізоляція ламається.

Рішення

Фікстура готує оточення під конкретний тест і прибирає за собою. Раннер створює лише ті фікстури, які тест назвав у своїх аргументах.

Коли застосовувати

Фактично завжди: навіть найпростіший тест із { page } уже працює через фікстуру. Питання лише в тому, чи достатньо вбудованих, чи час писати власні.