# CLI

> Интерфейс командной строки test-proxy-recorder — опции, темп воспроизведения WebSocket и как сбросить зависший прокси.

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

---

```bash
test-proxy-recorder <target-url> [options]
```

| Опция            | По умолчанию   | Описание                            |
| ---------------- | -------------- | ----------------------------------- |
| `<target-url>`   | *(обязательно)*| URL бэкенда для проксирования       |
| `--port, -p`     | `8000`         | Порт прослушивания прокси           |
| `--dir, -d`      | `./recordings` | Каталог для файлов записей           |
| `--timeout, -t`  | `120000`       | Таймаут автосброса сессии (мс)      |
| `--config, -c`   | *(авто)*       | Путь к файлу конфигурации           |
| `--ws-timing`    | `burst`        | Темп воспроизведения WebSocket — `burst` или `original` |

Маскирование секретов **включено по умолчанию** — Authorization/Cookie/Set-Cookie автоматически вырезаются из записей. Отключите через `--no-redact` или `redaction: false` в [конфигурации](/ru/docs/guides/config/). О флагах `--redact-headers` и `--redact-body`, которые добавляют к тому, что маскируется, см. [маскирование секретов](/ru/docs/guides/secret-redaction/).

```bash
# Examples
test-proxy-recorder http://localhost:8000
test-proxy-recorder http://localhost:8000 --port 8100 --dir ./mocks
```

## Темп воспроизведения WebSocket

По умолчанию записанные серверные сообщения WebSocket воспроизводятся **пачкой** (`burst`) при подключении — это быстрее всего и полностью детерминированно, идеально для CI. Передайте `--ws-timing original` (или `websocket: { timing: 'original' }` в конфигурации), чтобы воспроизводить их по записанным меткам времени, так что сообщения приходят с их реальными интервалами; тогда тест занимает примерно столько же реального времени, сколько и запись.

Это также можно задать **для каждого теста** через `playwrightProxy.before(page, testInfo, mode, { websocket: { timing: 'original' } })` — это переопределяет значение по умолчанию на уровне прокси только для этой сессии.

## Сброс зависшего прокси

Прокси автоматически возвращается в `transparent` после таймаута каждой сессии, а `globalTeardown` сбрасывает его в конце чистого прогона. Но **прерванный** прогон (`Ctrl+C`), сессия UI/отладки или конфигурация без `globalTeardown` могут оставить общий прокси зависшим в `record`/`replay` — и тогда ваше приложение продолжит отдавать записанные ответы вместо обращения к реальному бэкенду. Сбросьте его по требованию:

```bash
test-proxy-recorder reset    # or: npm run proxy:reset
```

Это отправляет POST `{ "mode": "transparent" }` на `/__control` — поддерживаемая, безопасная для параллелизма замена ручного сброса через `curl`. Запускать безопасно в любой момент: недоступный прокси трактуется как no-op. Порт определяется так: **флаг `--port` → переменная окружения `TEST_PROXY_RECORDER_PORT` → файл конфигурации → `8000`**, поэтому он нацелен на порт, на котором был запущен прокси (переопределите через `--port` / `--config`). `init` создаёт это как скрипт `proxy:reset`.

## `init` — сгенерировать настройку

Рекомендуемую настройку одной командой через `npx test-proxy-recorder init` см. в [быстром старте](/ru/docs/getting-started/quick-start/).
