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-recorder | routeFromHAR | MSW | Polly.js | playwright-network-cache | Mocky Balboa |
|---|---|---|---|---|---|---|
| Запись реального трафика | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ |
| Серверная сторона (SSR) | ✅ | ❌ | ✅ | ⚠️ | ❌ | ✅ |
| Сторона браузера | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| WebSocket | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Нативно для Playwright | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
| Поддерживается | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ |
⚠️ Polly.js перехватывает HTTP в Node, поэтому мокинг SSR возможен внутри процесса приложения, но не как часть прогона Playwright. MSW и Mocky Balboa тоже воспроизводят реальные ответы — но моки вы пишете вручную, а не записываете.
Когда выбрать что-то другое
Заголовок раздела «Когда выбрать что-то другое»- Весь ваш трафик — на стороне браузера — встроенный
routeFromHARв Playwright без зависимостей. Начните с него; добавляйте этот инструмент, когда появится SSR. - Вы хотите вручную создавать ответы или принудительно вызывать ошибки/крайние случаи — написанные вручную обработчики MSW и его большая экосистема подходят лучше и работают далеко за пределами Playwright.
- Лёгкое кеширование только в браузере, без SSR —
playwright-network-cacheделает именно это с меньшей настройкой.
Polly.js — источник вдохновения для этого подхода (запись/воспроизведение HTTP, «VCR для JS»); сейчас он фактически не поддерживается, что отчасти и есть причина существования этого инструмента.
Начните здесь
Заголовок раздела «Начните здесь»Требования
Заголовок раздела «Требования»- Node.js >= 20.0.0
@playwright/test>= 1.0.0 (peer-зависимость)