Ir al contenido

test-proxy-recorder vs MSW, routeFromHAR, Polly.js y el modo de prueba de Next.js

Cada herramienta de esta página controla las respuestas de la API que ve una prueba end-to-end. Se diferencian en dónde interceptan las peticiones (en el navegador, dentro de tu servidor o en un proxy aparte) y en si las respuestas las escribes tú o las grabas. La tabla mantiene las seis herramientas de la introducción de la documentación y añade el modo de prueba de Next.js (Next.js test mode), mockttp, scenarist, talkback y proxay. Cada celda procede de la propia documentación, README o código fuente de la herramienta, enlazados debajo de la tabla, a fecha de 2026-10-03. «No documentado» significa que esas fuentes no lo indican.

HerramientaGraba tráfico realLado del servidor (SSR)Lado del navegadorWebSocketNativo de PlaywrightÚltima versión
test-proxy-recorderSíSí, a través del proxySí, a través de HARSíSí1.3.1, 2026-08-05
Playwright routeFromHARSíNoSíNoIntegradoPlaywright 1.63.0, 2026-09-04
MSWNo (handlers, o un HAR mediante @msw/source)Dentro del proceso del servidorSíSí@msw/playwright, peticiones del navegador3.0.2, 2026-10-03
Polly.jsSíDentro del proceso del servidorSíNo documentadoAdaptador de terceros@pollyjs/core 6.0.6, 2023-07-20
playwright-network-cacheSíNoSíNo documentadoSí0.3.0, 2026-05-12
Mocky BalboaNo (handlers)SíSíNo documentadoSí@mocky-balboa/playwright 2.0.2, 2026-05-21
Modo de prueba de Next.jsNo (handlers)Sí, solo Next.jsPeticiones a otros orígenesNo documentadoSíExperimental, en Next.js 16.3.8, 2026-09-30
mockttpNo documentadoSí, como proxy de reenvío (forward proxy)Sí, como proxy del navegadorSíNo, un fixture que escribes tú4.6.3, 2026-09-11
scenaristNo (escenarios en código)Next.js y ExpressNoNo documentadoSí0.5.1, 2026-09-27
talkbackSíSí, como dirección de la APINo documentadoNo documentadoNo4.2.0, 2024-07-10
proxaySíSí, como dirección de la APISí, como dirección de la APINo documentadoNonpm 1.9.0, 2024-05-15; GitHub 2.0.0, 2026-01-29

Las fechas de las versiones proceden del registro de npm, salvo que se enlace una release de GitHub.

  • test-proxy-recorder. Las llamadas del lado del servidor pasan por el proxy y las del navegador por HAR (cómo funciona). El proxy reproduce los mensajes de WebSocket grabados (CLI). Versión: npm.
  • Playwright routeFromHAR. Con update: true graba un HAR a partir de tráfico real (Mock APIs). La reproducción sirve «las peticiones de red que se hacen en la página» (API). Pasa por handlers de route() que responden peticiones HTTP y no tiene ninguna vía para WebSocket (harRouter.ts). Versión: v1.63.0.
  • MSW. Los handlers de las peticiones los escribes tú. MSW no graba nada por sí mismo, pero @msw/source puede generar handlers a partir de un archivo HAR que exportes desde las DevTools del navegador. En Node.js se ejecuta dentro del proceso que hace las peticiones (setupServer). Los WebSockets usan la API ws. La integración oficial @msw/playwright enruta a través de page.route(), así que cubre las peticiones del navegador. Versión: v3.0.2.
  • Polly.js. Su repositorio lo describe como «grabar, reproducir y simular interacciones HTTP». El adaptador node-http parchea los módulos http y https de Node, y el adaptador fetch envuelve el fetch global. Por tanto, Polly graba dentro del proceso que lo ejecuta. Su documentación no incluye ningún adaptador de WebSocket. El soporte de Playwright lo da el paquete de terceros polly-adapter-playwright, al que enlaza la documentación de Polly. Versión: npm.
  • playwright-network-cache. Su README dice que acelera las pruebas de Playwright «guardando en caché las peticiones de red en el sistema de archivos». CacheRoute intercepta con page.route() (código fuente), así que solo ve las peticiones del navegador. Versión: npm.
  • Mocky Balboa. Defines los mocks en la prueba, para las peticiones del servidor y del cliente, con una sola API. Los mocks se mantienen aislados por prueba mientras las pruebas se ejecutan en paralelo (características). Para Next.js 14 y posteriores, su CLI arranca tu servidor de Next.js (Next.js). Su documentación solo menciona WebSocket como el canal entre tu servidor y el runner de pruebas. Versión: npm.
  • Modo de prueba de Next.js. Los handlers registrados con next.onFetch() reciben las llamadas fetch del servidor, además de las llamadas fetch de la página a otros orígenes (README, page-route.ts). Mocking del lado del servidor cubre su configuración, su estado y MSW 3. Versión: Next.js 16.3.8.
  • mockttp. Un servidor de mocks y proxy HTTP y HTTPS para pruebas que se ejecutan «en node o en navegadores» (README). forAnyWebSocket() hace mock de las conexiones WebSocket (código fuente). El README no describe ningún modo de grabación. La publicación del equipo de Playwright muestra el fixture que hay que escribir. Versión: npm.
  • scenarist. El README dice que está «construido sobre MSW con gestión de escenarios en tiempo de ejecución y aislamiento por ID de prueba», y los escenarios los escribes en código. Su FAQ dice que «proporciona gestión de escenarios del lado del servidor, que complementa el mocking del lado del cliente de Playwright». El código de tu servidor reenvía x-scenarist-test-id en cada fetch (adaptador de Next.js), y @scenarist/playwright-helpers proporciona el fixture de Playwright. Versión: npm.
  • talkback. «Un proxy HTTP en JavaScript que graba y reproduce peticiones HTTP» (README). Tu app envía sus peticiones a talkback. Una petición que coincide con una cinta (tape) guardada recibe la respuesta de esa cinta, y una desconocida se reenvía al host y se guarda como una cinta nueva. El README no menciona ni navegadores ni cintas por prueba. Versión: npm.
  • proxay. Un proxy de grabación y reproducción para «un frontend web y su backend» o «un servidor y otro servidor» (README). Las pruebas eligen una cinta con POST /__proxay/tape, por ejemplo en beforeEach, y el README no trata las pruebas en paralelo. La versión 2.0.0 es una release de GitHub; npm sigue sirviendo la 1.9.0.

Polly.js, de Netflix, graba, reproduce y simula HTTP, y es la inspiración de test-proxy-recorder. Su estado a 2026-10-03:

  • @pollyjs/core no ha tenido ninguna versión nueva desde la 6.0.6 del 2023-07-20. El último cambio del repositorio, el 2025-05-31, publicó @pollyjs/adapter-fetch 6.0.7, que dejó de marcar como obsoleto el adaptador fetch para Node (Netflix/pollyjs#506).
  • Polly no tiene un adaptador propio para Playwright. Su documentación remite al paquete de terceros polly-adapter-playwright, que se conecta a un contexto de navegador o a una página. Su última versión, la 2.4.0, salió el 2024-04-18.
  • Para las llamadas del lado del servidor, Polly tiene que ejecutarse dentro del proceso del servidor, mediante su adaptador node-http o fetch.

Si vienes de Polly.js, sus conceptos se corresponden con los de test-proxy-recorder de la siguiente manera.

Polly.jstest-proxy-recorder
Modos record, replay y passthrough (configuración)Modos record, replay y transparent, que playwrightProxy.before() establece por prueba
Una grabación con nombre por instancia de Polly, guardada por un persisterUn .mock.json (servidor) y un .har (navegador) por prueba de Playwright, en el directorio de grabaciones
Adaptadores dentro del proceso que hace las peticionesUn proceso proxy para las llamadas del servidor, HAR para las del navegador y registerProxyFetch() en el servidor
Peticiones emparejadas por método, cabeceras, cuerpo, orden y URL por defectoPeticiones del lado del servidor emparejadas por método, ruta y un hash de la cadena de consulta (query string), en el orden grabado y sin comparar los cuerpos. Las peticiones del navegador siguen las reglas de HAR de Playwright, que también comparan los cuerpos de los POST

En una app de Next.js, las peticiones del navegador y las del servidor necesitan configuraciones de MSW distintas.

  • Peticiones del navegador. @msw/playwright, la integración oficial, ejecuta tus handlers a través de page.route(), con un fixture network que puedes cambiar por prueba.
  • Peticiones del servidor. MSW se ejecuta dentro del proceso de Next.js. La documentación de MSW no tiene una guía para Next.js, y el ejemplo de referencia es un pull request abierto, mswjs/examples#101. Los handlers que cambias en tiempo de ejecución los comparten todas las pruebas que llegan a ese servidor. Mocking del lado del servidor tiene los detalles y las fuentes.
  • Handlers de servidor por prueba. El modo de prueba de Next.js acepta handlers de MSW por prueba, pero su punto de entrada de MSW no se carga con MSW 3.0 (detalles). scenarist construye escenarios por prueba sobre MSW para Next.js y Express, y el código de tu servidor reenvía una cabecera con el id de la prueba en cada fetch.
  • Grabación. MSW no graba tráfico. @msw/source convierte en handlers un archivo HAR exportado desde las DevTools del navegador.

test-proxy-recorder hace la concesión contraria. Graba ambos lados desde la API real, así que no hay handlers que escribir. A cambio, tienes menos control sobre las respuestas que la API no produce a petición.

  • Todo tu tráfico es del lado del navegador. El routeFromHAR integrado de Playwright no necesita ninguna dependencia extra. Empieza por ahí y añade test-proxy-recorder cuando aparezcan peticiones del lado del servidor.
  • Quieres escribir las respuestas a mano o forzar errores y casos límite. Los handlers de MSW encajan mejor para eso, y MSW también funciona en Vitest, Storybook y el navegador, no solo en Playwright. Para handlers del lado del servidor por prueba en Playwright, mira Mocky Balboa, scenarist o el modo de prueba de Next.js.
  • Solo necesitas una caché del lado del navegador con poca configuración. playwright-network-cache guarda las respuestas en caché en disco mediante un solo fixture.
  • Tu servidor no está escrito en JavaScript, o no puedes cambiar su código. Un proxy de reenvío como mockttp funciona a través de HTTPS_PROXY. La publicación del equipo de Playwright dice que Python, Go, Ruby, Rust y .NET funcionan igual, y que Java necesita -Dhttps.proxyHost y -Dhttps.proxyPort.
  • Necesitas grabar y reproducir fuera de Playwright, en cualquier lenguaje. proxay y talkback son servidores HTTP independientes que guardan las grabaciones como archivos de cinta.