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?
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:
- Un repo https://github.com/kblok/playwright-sharp
- Un paquete NuGet https://www.nuget.org/packages/PlaywrightSharp/. Aunque seguramente vamos a tener varios paquetes (un paquete de abstracción, y varios paquetes por browser).
- Un dominio http://www.playwrightsharp.com/ (ni siquiera te molestes en hacer click en el link).
- ¡Y un plan! https://github.com/kblok/playwright-sharp/projects/1
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!