This is a project I've been working on for weeks and I'm very excited to finally have it to a point where I can announce it to the community.
Marionette was inspired by Puppeteer, and actually started as an attempt to port Puppeteer to Crystal. I learned after about a week of struggle that Node is much better adapted to an async workflow than Crystal. The lack of a good event system and promises made working with WebSockets in the way I needed quite difficult. I thought Marionette was doomed to failure until something changed in Crystal or the ecosystem, but then I learned about the actual Marionette protocol from Firefox.
You can check out the project at https://github.com/watzon/marionette. The API is incomplete, but usable!