fteschke

fteschke

Playwright_ex - Playwright client for browser automation

Announcing: playwright_ex

A simple Elixir client for the Playwright node.js server.
Automate browsers like Chromium, Firefox, Safari and Edge.
Experimental.

Extracted from phoenix_test_playwright, so the foundation is proven to work.
What I’m less sure about is the API. Happy to hear your thoughts!

References:

Most Liked

michallepicki

michallepicki

Thank you!!! I worked a bit in the past on maintaining a e2e web app integration test suite, testing on both Chrome and Firefox, and one of the most annoying things in the legacy WebDriver protocol was behavior differences when running the tests on different browsers. Or tests breaking after a browser update. And the new-er W3C WebDriver protocol didn’t solve this problem (and maybe actually even introduced more problems). I think the biggest contribution of Playwright is that Microsoft is putting in the leg work to make it work consistently across all the browsers (and that it works with their new versions). Sure, it’s not exactly 100% Firefox or Safari (they maintain forks) but I think it should be good enough to test most important functionality across all browsers.

michallepicki

michallepicki

Related, the W3C people have been working on another huge specification in WebDriver BiDi, we’ll see how well supported that one will be… And fresh off the press, with a 1.0 version already released (in Gleam style, where they intentionally discourage library authors from publishing 0.x versions so that APIs are well thought out from the start and libraries are not stuck in that chaotic pre-1.0 world) there’s now a Gleam library called butterbee for working with WebDriver BiDi.

What I’m less sure about is the API. Happy to hear your thoughts!

That probably goes without saying, but I think all of the hound, wallaby and now also butterbee could be an inspiration here. Personally I like your approach of having extracted the lower-level bits from phoenix_test_playwright, I think it would be best to focus on the protocol itself and a “client library” alone, and leave the higher level testing helpers and Ecto/Phoenix integration conveniences to other libraries building on top of it. For Wallaby, I know @aaronrenner extracted web_driver_client having that approach in mind

Where Next?

Popular in Announcing Top

Schultzer
Hey there, I wrote this low-level library recently, its goal is simply to lower the barrier between Elixir and SQL, and it does that by p...
New
moxley
An Elixir implementation of the popular PostCSS library, providing CSS parsing, AST manipulation, and stringification capabilities. Feat...
New
isaias-dias-machado
IEx’s h macro is great but it lacks a pager, so I built a small tool that caches documentation and lets you fuzzy search through it in yo...
New
mikehostetler
I’m falling in love with the Req Plugin pattern. It has limits, but when it works - it’s good. I ported over my Tesla based Fly Machines...
New
kasvith
Hello Everyone, I was working with some HTML-to-Markdown libraries and ran into a few issues when converting a complex markup file to Ma...
New
fteschke
Announcing: playwright_ex A simple Elixir client for the Playwright node.js server. Automate browsers like Chromium, Firefox, Safari an...
New
Antrater
Hi there! At Moon Design System, we have been working hard for the past six months on the next generation of our LiveView component libra...
New
leandrocp
MDEx is a fast and extensible Markdown parser and formatter. Fast Leverage Rust to parse, manipulate and render documents using: comra...
New
mattmower
I’m pleased to announce that we’ve released DemoGen v0.1.7, a library for creating repeatable demo scenarios in your Ecto-based SaaS appl...
New
germsvel
PhoenixTest provides a unified way of writing feature tests – regardless of whether you’re testing LiveView pages or static pages. It al...
New

Other popular topics Top

vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
yawaramin
In the Dialyzer docs ( http://erlang.org/doc/man/dialyzer.html#requesting-or-suppressing-warnings-in-source-files ), there is a way to tu...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
beno
I will often find my self writing things similar to: case some_value do nil -> something() "" -> something() _ -> someth...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New

We're in Beta

About us Mission Statement