El blog de QA en español de Redsauce

Playwright vs Serenity BDD

Artículo de Sergio Miguel

Playwright vs Serenity BDD

Elegir la herramienta adecuada para la automatización de pruebas es una decisión crítica en el desarrollo de software. En este artículo exploraremos dos de los principales competidores: Playwright y Serenity BDD. Cada uno tiene sus propias fortalezas y características distintivas. En Redsauce hemos utilizado ambos, y tras nuestra experiencia te presentamos las principales ventajas de cada uno para ayudarte a escoger el framework que más le convenga a tu proyecto:

Playwright

Playwright es una librería_ open-source_ de automatización de navegadores web desarrollada por Microsoft y publicada en 2020.


Fue desarrollado por un equipo de ingenieros que habían trabajado anteriormente en proyectos similares como Puppeteer en Google.

Posteriormente, se incorporó playwright/test, un runner diseñado específicamente para sacar el máximo provecho a la API y hacer tests end-to-end más robustos y sencillos.

Desde sus inicios, Playwright se mantiene activamente y ha experimentado un rápido crecimiento y adopción en la comunidad de web testing.

Lo usan en algunos de sus proyectos empresas como Disney, Adobe, ING y la propia Microsoft.

Características/ventajas

  • Brinda soporte para el desarrollo en varios navegadores, como WebKit, Firefox y Chromium, abarcando Chrome, Edge, Firefox, Opera y Safari.

  • Compatible con múltiples sistemas operativos, como Windows, Linux y macOS.

  • Soporta múltiples lenguajes, como JavaScript, TypeScript, Python, Java y .NET permitiendo elegir el entorno que mejor se adapte a las necesidades.

  • Incorpora funciones como contextos aislados de navegador (lo que permite ejecuciones en paralelo confiables), esperas automáticas, asserts inteligentes que reiteran automáticamente y grabación en vídeo de las ejecuciones.

  • Por defecto ejecuta los archivos de tests en paralelo, ejecutando los tests de cada archivo en serie, aunque es totalmente configurable.

  • Posee herramientas de desarrollo efectivas como codegen (genera instrucciones de código grabando las acciones de usuario), inspector (herramienta gráfica para la depuración), y trace viewer (visor detallado de trazas de las ejecuciones).

  • Desarrollada con una arquitectura moderna y sin restricciones, permite interactuar con sitios web de varias páginas y pestañas de manera similar a un usuario real. Además, permite gestionar con facilidad frames y eventos del navegador.

  • Además del repositorio público de GitHub y la documentación online, cuentan con un canal de YouTube con tutoriales y conferencias, y un servidor de Discord para la comunidad.

Contras/desventajas

  • No soporta dispositivos reales como un teléfono móvil o una tableta, pudiendo solamente emularlos.

  • No soporta navegadores antiguos.

  • Los informes que genera son básicos (html, json, junit…), aunque se pueden implementar propios

Serenity BDD

Serenity BDD es un framework de desarrollo de _tests _de software, diseñado para facilitar la creación y mantenimiento de pruebas automatizadas en un estilo de documentación legible por humanos. Está específicamente orientado hacia la automatización de _tests _de aceptación y funcionales, y proporcionar informes detallados sobre el estado de las pruebas.


Serenity BDD surge de la necesidad de mejorar la calidad y la comprensión de los tests de software en metodología Agile. El proyecto (inicialmente conocido como Thucydides) fue iniciado por John Ferguson Smart, un conocido experto en pruebas y desarrollo Agile,


Lo emplean empresas como Yandex, General Electrics, UBS y Barclays.

Características/ventajas

  • Proporciona informes detallados y legibles que incluyen capturas de pantalla y documentación automatizada, lo que puede ayudar a identificación y solucionar problemas.

  • Se integra fácilmente con muchas herramientas populares de desarrollo y testing, como JUnit y TestNG, así como con herramientas de construcción como Maven y Gradle y librerías del ecosistema Java como Spring o Lombok..

  • Aunque no es estrictamente necesario, cuando se usa con Cucumber, utiliza un lenguaje claro y expresivo llamado Gherkin para escribir escenarios de prueba, lo que facilita la colaboración entre los equipos de desarrollo y pruebas, así como la comprensión de los casos de prueba por parte de personas no técnicas.

  • Ofrece soporte para patrones de diseño como Page Object y Screenplay, lo que facilita la creación y mantenimiento de tests.

  • Proporciona un manejo automático de WebDriver, lo que significa que los desarrolladores no tienen que preocuparse por la inicialización y cierre de instancias de WebDriver.

  • Es compatible con Appium para la automatización de pruebas móviles en Android e iOS.

Contras/desventajas

  • Los navegadores soportados dependen de los módulos sobre los que se sustenta, como Selenium webdriver o Browserstack, lo que hace que las interacciones con los mismos sean más lentas.

  • De la misma forma, las capacidades de grabación de vídeo de los tests dependen de dichos módulos y sus configuraciones.

  • No proporciona capacidades de ejecución en paralelo por sí mismo. De nuevo, esta característica depende de los módulos empleados y sus configuraciones (por ejemplo, maven-failsafe-plugin o Cucumber-JUnit).

  • Dado que está implementado en Java, sólo soporta Java, Groovy o Kotlin (lenguajes JVM) como lenguajes de programación

  • El soporte avanzado, como cursos online y soporte personalizado, es de pago.

Elegir un framework para la automatización de tests siempre se reduce a una cuestión de necesidades a cubrir y recursos disponibles para ello. Si, por ejemplo, la aplicación que queremos testear está hecha con Angular y el equipo de desarrollo está muy especializado en este framework, es posible que el más adecuado sea Protractor.


Para los protagonistas de este artículo, ambas alternativas presentan puntos fuertes a su favor, y podríamos añadir a la pugna otros contendientes como Cypress, WebdriverIO, TestCafe, Puppeteer y muchos otros.


Si valoramos la compatibilidad con navegadores, la velocidad de ejecución y las herramientas que facilitan el desarrollo, Playwright podría ser la elección adecuada.


Playwright tiende a ser más rápido debido a su diseño centrado en la eficiencia y la ejecución paralela.


Si nos interesa más el BDD, documentación rica y facilidad de uso para no programadores, Serenity BDD puede ser más acertado.


Aun así, gracias a la extensibilidad y capacidades de integración que ambos productos poseen, podemos (eso sí, con el esfuerzo extra que pueda implicar) acabar de adaptarlos a nuestras necesidades, por ejemplo añadiendo Cucumber a Playwright para añadirle funcionalidades de BDD.


Quien sabe, en un futuro podríamos incluso llegar a ver a SerenityBDD usando Playwright en vez de Selenium.


Si aún tienes dudas sobre qué herramienta es la más adecuada para tu proyecto, puedes ponerte en contacto con nosotros. Revisaremos tu proyecto y te ayudaremos a escoger el framework más adecuado según tus necesidades. También puedes venir a visitarnos.

Sobre nosotros

Has llegado al blog de Redsauce, un equipo de expertos en QA y desarrollo de software. Aquí hablaremos sobre testing ágil, automatización, programación, ciberseguridad… ¡Bienvenido!