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

wkirschbaum
Hi everyone. We released Spreadsheet a couple of months ago which we have been using internally for parsing xlsx files internally for our...
New
MRdotB
Greetings Elixir community! Today, I’m thrilled to present you with resvg_nif, an open-source project that provides Elixir bindings for ...
New
restlessronin
The repo is at GitHub - cyberchitta/openai_ex: Community maintained Elixir library for OpenAI API. Docs are at OpenaiEx User Guide — ope...
New
kzemek
I’ve recently released v0.2.0 of my Python interop library, Snex. This version rolls up all work-in-progress improvements that have been...
New
Zurga
Subscribe to events emitted by EctoWatch, and cache the changed row. Use the sync/3 function to update an in-memory row or list of rows u...
New
munksgaard
flakify is an igniter installer that allows you to quickly get a Nix flake-based development shell up and running for your Elixir/Phoenix...
New
johantell
Ever struggled with mocking external HTTP services in Elixir tests? Found yourself writing brittle mocks that don’t catch real-world enco...
New
victor23k
LiveViewPortal is a small library that allows third-party sites to embed LiveView apps. The library is distributed as an NPM package. On...
New
leandrocp
MDEx is a fast and extensible Markdown parser and formatter. Fast Leverage Rust to parse, manipulate and render documents using: comra...
New
mudspot
Hi folks, I’d like to announce the release of Prometheus Agents, a set of subagents for Claude Code that cater to the Elixir Phoenix pro...
New

Other popular topics Top

Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
977 41022 311
New
sergio
In Ruby, I can go: User.find_by(email: "foobar@email.com").update(email: "hello@email.com") How can I do something similar in Elixir? ...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
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
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
magnetic
Hey :wave:t3: Elixir community, I’ve been learning Elixir, and working on some side projects. My editor of choice is VSCode, and althoug...
New

We're in Beta

About us Mission Statement