Si usás puppeteer o puppeteer-sharp seguro que debes estar tan emocionado como yo con el anuncio de Playwright. Playwright va a llevar la automatización de browsers a un nuevo nivel.

Descripción del proyecto en GitHub

Playwright está enfocado en la automatización multi-browser y multi-plataforma, de una manera confiable, completa y veloz. Nuestro primer objetivo con Playwright es mejorar el testing de UI automatizado, eliminando inestabilidades y mejorando los tiempos de ejecución, ofreciendo detalles sobre el browser que se está utilizando.

El equipo que tienen es impresionante, no veo la hora de ver todo lo que van a hacer con este proyecto.

Ahora vamos a lo importante ¿Vamos a tener un PlaywrightSharp?

yes

Si, vamos a hacer un port a .NET de Playwright (esta oración está agregada simplemente para mejorar el SEO del post).

Ya tenemos lo más importante:

Filosofía del proyecto

Así como hicimos con Puppeteer-Sharp, el objetivo principal es crear una API lo más cercana posible a Playwright. Un developer tiene que ser capaz de moverse facilmente entre Playwright y PlaywrightSharp.

Teniendo en claro ese objetivo principal, Playwright Sharp tiene que tener sabor a .NET/C# (creo que suena horrible en español, tiene que tener un .NET flavor). Un developer tiene que ser capaz de inyectar los objetivos usando un inyector de dependencias, las funciones getters de Playwright tienen que ser traducidas como propiedades, Los métodos asyncs van a tener el sufijo Async, etc, etc.

No vamos (tecnicamente hablando) a respetar semver. Siempre vamos a tratar de que una versión de PlaywrightSharp tenga los mismos features que la misma versión en Playwright.

La arquitectura

Si bien esto no está definido aún, PlaywrightSharp va a ser mas o menos así:

  • PlaywrightSharp, con las clases base.
  • PlaywrightSharp.Abstractions, with interfaces, usando el namespace Playwright.
  • PlaywrightSharp.#BrowserEngine#. Paquetes específicos para cada browser. Por ejemplo PlaywrightSharp.Chromium.

El plan

Alcanzar a un proyecto activo es todo un desafío. Siempre estás un paso atrás. Pero, si una vez fuimos capaces de alcanzar a Puppeteer, vamos a ser capaces de alcanzar a Playwright.

Ya tenemos nuestro primer proyecto. 157 issues que nos van a ayudar a llegar al tag first-snapshot que creé el 25 de enero.

Como aprendí en el pasado, los tests van a ser nuestro faro. Van a hacer lo primero que implementemos (bueno, técnicamente lo segundo), y van a ser nuestra guia para saber que componentes tenemos que implementar.

Palabras finales

Siempre hablo del “poder de la estrella”. Esas estrellas en GitHub no significan mucho para algunos, para para los desarrolladores de las librerías es una linda palmada en la espalda. Así que si estás interesado en este proyecto, una estrella en el repo me va a robar una sonrisa :)

¡No dejes de codear!