# test-proxy-recorder

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

Canonical: <https://test-proxy-recorder.dev/ru/docs/>
Docs index: <https://test-proxy-recorder.dev/docs/> · All docs as one file: <https://test-proxy-recorder.dev/llms-full.txt>

---

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

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

```text
                        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`](https://github.com/vitalets/playwright-network-cache) делает именно это с меньшей настройкой.

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

## Начните здесь

<CardGrid>
  <LinkCard title="Быстрый старт" href="/ru/docs/getting-started/quick-start/" description="Сгенерируйте всю настройку одной командой init." />
  <LinkCard title="Ручная настройка" href="/ru/docs/getting-started/manual-setup/" description="Подключите вручную для full-stack или только браузерных приложений." />
  <LinkCard title="Как это работает" href="/ru/docs/getting-started/how-it-works/" description="Механизмы записи через прокси и HAR." />
  <LinkCard title="Справочник API" href="/docs/reference/api/readme/" description="playwrightProxy, setProxyMode, defineConfig и хелперы Next.js." />
</CardGrid>

## Требования

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