Перейти к содержимому

test-proxy-recorder

VCR для Playwright. Записывайте реальные ответы API один раз и детерминированно воспроизводите их в CI. Поддерживает трафик SSR Next.js, браузера и WebSocket — без бэкенда, без моков, написанных вручную.

Прокси записывает реальные ответы API во время прогона тестов, а затем воспроизводит их в CI. Тесты остаются быстрыми и детерминированными, и вам никогда не нужно вручную поддерживать мок-фикстуры.

Record mode Replay mode
Browser/App ──> Proxy ──> Real API Browser/App ──> Proxy ──> Disk
│ │
└──> saves to disk └──> serves saved responses
(.mock.json) (.mock.json)
  • Без бэкенда в CI — запишите один раз против реального API и воспроизводите при каждом прогоне CI.
  • Без ручных моков — захватывайте реальные взаимодействия вместо написания фикстур вручную.
  • Поддержка SSR — записывает серверные запросы Next.js и аналогичных фреймворков.
  • Поддержка на стороне браузера — записывает вызовы fetch браузера, вызовы API расширений Chrome, аналитику и т. д.
  • Детерминированность — одни и те же ответы каждый раз, без нестабильной сети.
  • Поддержка WebSocket — записывает и воспроизводит WebSocket-соединения.

Инструменты для моков хороши в разных задачах. test-proxy-recorder — единственный, кто записывает реальный трафик через SSR, браузер и WebSocket без моков, написанных вручную, — именно эту нишу остальные оставляют незакрытой.

Возможностьtest-proxy-recorderrouteFromHARMSWPolly.jsplaywright-network-cacheMocky Balboa
Запись реального трафика
Серверная сторона (SSR)⚠️
Сторона браузера
WebSocket
Нативно для Playwright
Поддерживается

⚠️ Polly.js перехватывает HTTP в Node, поэтому мокинг SSR возможен внутри процесса приложения, но не как часть прогона Playwright. MSW и Mocky Balboa тоже воспроизводят реальные ответы — но моки вы пишете вручную, а не записываете.

  • Весь ваш трафик — на стороне браузера — встроенный routeFromHAR в Playwright без зависимостей. Начните с него; добавляйте этот инструмент, когда появится SSR.
  • Вы хотите вручную создавать ответы или принудительно вызывать ошибки/крайние случаи — написанные вручную обработчики MSW и его большая экосистема подходят лучше и работают далеко за пределами Playwright.
  • Лёгкое кеширование только в браузере, без SSRplaywright-network-cache делает именно это с меньшей настройкой.

Polly.js — источник вдохновения для этого подхода (запись/воспроизведение HTTP, «VCR для JS»); сейчас он фактически не поддерживается, что отчасти и есть причина существования этого инструмента.

  • Node.js >= 20.0.0
  • @playwright/test >= 1.0.0 (peer-зависимость)