browser-harness, Playwright y Puppeteer: cómo elegir una herramienta de automatización de navegador

Comparación de browser-harness, Playwright y Puppeteer por posicionamiento, soporte de navegadores, auto-waiting, contextos, herramientas y escenarios de uso.

En automatización de navegadores y pruebas automatizadas, Playwright y Puppeteer son dos de las herramientas que más se comparan. Ambas pueden controlar navegadores, hacer clic en páginas, extraer contenido, generar capturas o PDFs, y ambas están muy relacionadas con Chrome DevTools Protocol.

Al añadir browser-use/browser-harness, la pregunta deja de ser solo “qué framework de pruebas es más potente”. Pasa a ser una comparación entre dos tipos de herramientas:

  • Playwright / Puppeteer: herramientas para que ingenieros escriban scripts deterministas.
  • browser-harness: una herramienta para que AI Agent operen navegadores reales.

El primer grupo encaja con pruebas, scraping y automatización de ingeniería. El segundo se parece más a una capa de control de navegador para agentes como Claude Code, Codex CLI y Gemini.

Relación entre Playwright y Puppeteer

Puppeteer nació en el equipo de Google Chrome y se orienta de forma natural a Chromium y Chrome. Su API es concisa, el ecosistema es maduro y resulta muy cómodo para capturas, PDFs, extracción de páginas y automatización ligera alrededor de Chrome.

Playwright es mantenido por Microsoft, y su equipo tiene vínculos históricos profundos con el trabajo temprano de Puppeteer. Tomó muchas lecciones de Puppeteer y añadió mejor soporte cross-browser, auto-waiting, aislamiento de contextos, reportes de pruebas y herramientas de depuración.

En resumen:

  • Si solo necesitas tareas ligeras alrededor de Chrome, Puppeteer sigue siendo muy cómodo.
  • Si haces pruebas E2E cross-browser, automatización de SPA complejas o ingeniería de pruebas en equipo, Playwright suele encajar mejor.

Diferencias principales

Dimensión Puppeteer Playwright
Mantenedor Google Microsoft
Soporte de navegadores Principalmente Chrome / Chromium Chromium, Firefox, WebKit
Lenguajes Principalmente JavaScript / TypeScript JavaScript / TypeScript, Python, Java, .NET
Auto-waiting Más esperas explícitas Locator y auto-waiting más completos
Aislamiento de contextos Soportado, pero menos central BrowserContext muy sólido
Herramientas Simple, maduro, básico Codegen, Trace Viewer, reportes
Uso típico Automatización de Chrome, capturas, PDF, scraping ligero Pruebas E2E cross-browser, automatización frontend compleja

Soporte de navegadores

Puppeteer destaca en Chrome. Se integra estrechamente con Chromium. Si tu objetivo es controlar Chrome, generar PDFs, tomar capturas o hacer scraping sencillo, Puppeteer tiene poca carga mental.

Playwright destaca en trabajo cross-browser. Soporta de forma nativa Chromium, Firefox y WebKit. WebKit es importante porque muchos problemas relacionados con Safari no se detectan usando solo Chrome. Para aplicaciones que deben cubrir escritorio, móvil y distintos motores, Playwright es una mejor herramienta principal.

Esta es la primera frontera de decisión: si solo importa Chrome, Puppeteer está bien. Si necesitas pruebas cross-browser serias, elige primero Playwright.

Auto-waiting y estabilidad

Lo más molesto de la automatización de navegador no suele ser “cómo hacer clic”, sino si la página está lista. Un elemento puede no estar en el DOM, estar cubierto, seguir animándose o continuar deshabilitado.

En Puppeteer se suele escribir:

1
2
await page.waitForSelector('#submit-btn');
await page.click('#submit-btn');

Funciona, pero el ingeniero debe pensar la lógica de espera. Cuanto más compleja es la página, más aparecen waitForSelector, waitForTimeout y reintentos manuales.

El mecanismo de Locator y auto-waiting de Playwright es más completo:

1
await page.locator('#submit-btn').click();

Antes de hacer clic, Playwright comprueba si el elemento es visible, accionable, estable y no está cubierto, y reintenta durante un tiempo razonable. Esto importa mucho en aplicaciones modernas con React, Vue o Next.js, donde hay mucho renderizado asíncrono y flaky tests.

Múltiples cuentas y aislamiento de contextos

Si necesitas simular varios usuarios, o permitir que varias tareas compartan un proceso de navegador pero separen Cookie, LocalStorage y Session, BrowserContext es importante.

Puppeteer también soporta aislamiento de contextos, pero Playwright lo convierte en capacidad central. Puedes crear varios contextos independientes dentro de una misma instancia de navegador. Cada contexto se comporta como un navegador limpio sin iniciar procesos completos una y otra vez.

Esto es útil para:

  • Pruebas concurrentes con múltiples cuentas.
  • Pruebas de flujos con varios roles.
  • Ecommerce, mensajería y documentos colaborativos.
  • Tareas de extracción que necesitan aislar Cookie y estado de login.

Diferencias de herramientas

Playwright es la opción más orientada a ingeniería. Incluye herramientas usadas en desarrollo de pruebas:

  • codegen: operar en una página y generar scripts automáticamente.
  • Trace Viewer: revisar capturas, DOM, red y console logs tras un fallo.
  • Test Runner: assertions, paralelismo, reintentos, reportes y matrices de proyectos.
  • Locator: selección por texto, role, label, test id y CSS.

Puppeteer se parece más a una biblioteca ligera de control de navegador. No es pesada, su API es directa y se integra bien en scripts, tareas de servidor y flujos personalizados.

Si construyes un sistema de pruebas empresarial, las herramientas de Playwright ahorran mucho trabajo. Si solo necesitas un script Node.js para convertir páginas a PDF o hacer capturas programadas, Puppeteer puede ser más directo.

Dónde encaja browser-harness

browser-harness no es el mismo tipo de herramienta que Playwright o Puppeteer.

Playwright y Puppeteer asumen sobre todo que humanos escriben scripts. Los ingenieros deciden selectores, condiciones de espera, assertions y manejo de excepciones. Buscan determinismo: el mismo script debería producir el mismo resultado bajo el mismo estado de página.

browser-harness asume sobre todo que un AI Agent opera el navegador. Su objetivo no es ofrecer una enorme API de alto nivel, sino conectarse a Chrome real mediante CDP y exponer capturas, clics por coordenadas, DOM, solicitudes de red y helpers al agente. El agente puede observar la página, decidir el siguiente paso, añadir helpers cuando falta capacidad y convertir experiencia del sitio en skills.

Por eso encaja mejor con tareas abiertas:

  • Iniciar sesión en un backend y descargar facturas.
  • Rellenar formularios en un sistema interno.
  • Manejar páginas OA o SaaS que cambian con frecuencia.
  • Explorar una página según un objetivo del usuario, no ejecutar un script fijo.
  • Dar capacidad de navegador a Claude Code, Codex CLI y herramientas similares.

Comparación de los tres

Dimensión Puppeteer Playwright browser-harness
Usuario objetivo Ingenieros Ingenieros y equipos de prueba AI Agent
Objetivo principal Controlar Chrome Automatización cross-browser estable Permitir que agentes operen navegadores reales
Estilo Automatización JS/TS escrita a mano Scripts más framework de pruebas Usuario da un objetivo, el agente ejecuta pasos
Localización CSS, XPath, DOM API Locator, texto, role, CSS Capturas, coordenadas, DOM, CDP
Esperas Más control manual Auto-waiting fuerte El agente observa y ajusta
Entorno Normalmente navegador automatizado Normalmente navegador de pruebas A menudo Chrome real
Mejor uso Scripts Chrome, capturas, PDF, scraping ligero E2E, validación cross-browser, SPA complejas Asistentes AI, tareas web abiertas, flujos con cuentas reales

Sensación de código

Puppeteer se siente más cercano al control directo de Chrome:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');

  await page.waitForSelector('#submit-btn');
  await page.click('#submit-btn');

  await browser.close();
})();

Playwright enfatiza Locator y auto-waiting:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');

  await page.locator('#submit-btn').click();

  await browser.close();
})();

browser-harness se siente completamente distinto. Normalmente no escribes un script completo. Das un objetivo dentro de un entorno de agente:

1
Abre el panel de administración, descarga la factura del mes pasado y organízala para reembolso.

El agente usa browser-harness repetidamente para:

  • Tomar capturas y entender la página actual.
  • Hacer clic en una coordenada o localizar un elemento.
  • Escribir texto, subir archivos y descargar archivos.
  • Decidir cómo cerrar popups.
  • Añadir código helper cuando falta algo.
  • Convertir flujos reutilizables en domain skills.

Ese no es el estilo de un script de pruebas tradicional. Es el flujo de trabajo de un browser agent.

Cómo elegir

Elige Puppeteer cuando:

  • El proyecto corre principalmente en Node.js.
  • Solo necesitas Chrome o Chromium.
  • La tarea es captura, PDF, scraping simple o automatización ligera.
  • Quieres una API simple, pocas dependencias y más control manual.
  • Dependendes mucho de Chrome DevTools Protocol.

Elige Playwright cuando:

  • Construyes automatización UI estándar o pruebas E2E.
  • Necesitas cubrir Chromium, Firefox y WebKit.
  • El lenguaje principal del equipo puede ser Python, Java o C#.
  • La página es una SPA compleja con muchos estados asíncronos y riesgo de flaky tests.
  • Necesitas codegen, Trace Viewer, reportes y pruebas paralelas.

Elige browser-harness cuando:

  • Desarrollas o usas AI Agent.
  • Quieres que el modelo opere un navegador real como una persona.
  • Los pasos de la tarea no son fijos y requieren juicio página por página.
  • El sitio cambia a menudo o tiene muchos popups, iframes y shadow DOM.
  • Quieres que flujos web reales sean manejados por Claude Code, Codex CLI u otras herramientas similares.

Conclusión

Playwright y Puppeteer son herramientas de automatización de navegador cuyo objetivo central es permitir que humanos escriban scripts fiables. Puppeteer es más ligero y cercano a Chrome. Playwright es más completo y encaja mejor con pruebas cross-browser y aplicaciones frontend complejas.

browser-harness apunta en otra dirección. No está pensado para reemplazar a Playwright o Puppeteer en pruebas. Está pensado para permitir que AI Agent controlen navegadores reales. Sacrifica parte del determinismo de los scripts tradicionales a cambio de más adaptación en tareas abiertas.

Así que no se trata de elegir solo uno. Conviene separar por capa de tarea:

  • Ingeniería de pruebas: Playwright primero.
  • Scripts ligeros de Chrome: Puppeteer encaja bien.
  • AI Agent trabajando en la web: mira browser-harness.

Referencias:

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy