Чим відрізняється поняття фікстури у Cypress та Playwright

В Cypress та Playwright термін «фікстура» (fixture) використовується в різному контексті та вирішує різні завдання, хоча обидва інструменти призначені для автоматизації тестування.

1. Фікстури в Cypress

У Cypress під fixture розуміють статичні тестові дані (зазвичай у форматі JSON, TXT або зображень), які зберігаються в папці cypress/fixtures.

  • Основне призначення: Завантаження статичних даних, мокування (mocking) мережевих відповідей API (через cy.intercept()) та підстановка тестових файлів.
  • Як працюють: Завантажуються за допомогою команди cy.fixture('filename.json').
  • Приклад:JavaScriptcy.fixture('user.json').then((userData) => { cy.intercept('GET', '/api/user', userData); });

2. Фікстури в Playwright

У Playwright під fixture розуміють механізм впровадження залежностей (Dependency Injection) та управління оточенням/станом тесту. Це аналог фікстур у PyTest або setup/teardown-блоків (beforeEach / afterEach).

  • Основное призначення: Підготовка тестового середовища (створення нового контексту браузера, ізоляція page, авторизація, ініціалізація Page Objects) та їхнє коректне очищення після завершення тесту.
  • Як працюють: Передаються безпосередньо в аргументи функції test(). Playwright сам запускає фікстуру, передає готовий об’єкт у тест, а після завершення тесту виконує очищення (teardown).
  • Приклад вбудованих фікстур: page, browser, context, request.
  • Приклад:TypeScripttest('User login', async ({ page }) => { // 'page' — це фікстура, Playwright автоматично створив ізольовану сторінку await page.goto('https://example.com'); });
  • Кастомні фікстури: У Playwright можна створювати свої фікстури (наприклад, автоматично залогіненого користувача або готовий екземпляр Page Object), загортаючи їх через test.extend().

Порівняння пліч-о-пліч

КритерійCypress FixturesPlaywright Fixtures
Що це таке?Дані (JSON, файли) для тестів та моків.Оточення, об’єкти та сервіси (Dependency Injection).
Аналог в іншому світіJSON-файлы / Mocks / Stubs.PyTest fixtures / Dependency Injection / Setup-Teardown.
Життєвий циклЗавантажуються за запитом у коді тесту.Автоматично ініціалізуються ДО тесту та очищаються ПІСЛЯ.
Управління браузеромНе керують об’єктом браузера/сторінки.Керують контекстами браузера, сторінками, сесіями.
Як мокувати дані?Завантажити файл через cy.fixture().У Playwright для даних використовують звичайні JSON-імпорти або route.fulfill({ json }).