Notas básicas
La referencia principal es https://blog.logrocket.com/playwright-vs-puppeteer/ ; lo siguiente son notas. Desde que Chrome admitió los navegadores headless , las tecnologías complejas y laboriosas que antes recibían apoyo de desarrolladores independientes (como PhantomJS y Selenium) han dado paso a una evolución muy intensa de los frameworks de automatización web. Sobre Puppeteer : es un framework respaldado oficialmente por Chrome y basado en el DevTools Protocol, más estable que PhantomJS, que se basa en el protocolo WebDriver. Sobre Playwright : su equipo de desarrollo procede de Puppeteer. Frente a Puppeteer:
- La API es parecida (por lo tanto, el coste de uso es bajo).
- Algunas API son más ergonómicas (su semántica es mejor); además, la sintaxis permite simular cómodamente muchos dispositivos distintos.
- Es compatible con Firefox y WebKit, aunque el grado de compatibilidad es menor (quizá algún día pueda colaborar con el equipo de Puppeteer…). Sobre la elección tecnológica: tanto si eliges Playwright o Puppeteer como si eliges Cypress, PhantomJS o Selenium (tienen muchos workarounds, pero también son bastante flaky), debes considerar:
- Compatibilidad entre navegadores (según este artículo, ahora mismo Playwright lo hace mejor, pero ¿quién garantiza que Puppeteer y Cypress seguirán rezagados?).
- Soporte a largo plazo (creo que esto es una obviedad…).
- Analizar cada negocio según sus necesidades (otra obviedad…).
Elección para el negocio
Si es un proyecto nuevo, recomiendo usar Playwright. En la sección Otras referencias encontrarás una comparación detallada con otros frameworks, en el artículo 2.
Otras referencias
- The reckless, infinite scope of web browsers - Una reflexión sobre el ecosistema de los navegadores modernos.
- Playwright VS Selenium VS Puppeteer VS Cypress - Una entrada de blog china bastante completa y multidimensional que compara los frameworks populares de automatización web.
- Puppeteer, Selenium, Playwright, Cypress – how to choose? - El artículo citado al principio de la entrada china anterior.