A concurrent browser automation library for Elixir that simulates user interactions to test web applications.
Wallaby is an Elixir library for browser automation and acceptance testing of web applications. It allows developers to write tests that simulate real user interactions—like clicking buttons, filling forms, and navigating pages—directly in their Elixir test suites. It solves the problem of writing reliable, concurrent end-to-end tests by managing browser sessions automatically and integrating seamlessly with Phoenix and Ecto.
Elixir developers building web applications with Phoenix who need robust, concurrent acceptance tests that mimic user behavior. It's especially valuable for teams testing real-time features, multi-user interactions, or complex JavaScript-heavy interfaces.
Developers choose Wallaby for its Elixir-native DSL, built-in concurrency, and tight integration with the Phoenix ecosystem. Unlike generic browser automation tools, it feels idiomatic to Elixir developers, reduces boilerplate, and handles tricky scenarios like LiveView testing and Ecto sandboxing out of the box.
Concurrent browser tests for your Elixir web apps.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers a clean, idiomatic API that integrates seamlessly with ExUnit, using pipes and declarative queries as shown in the README's Todo test example, making it feel like part of the Elixir language.
Runs tests concurrently by default and manages multiple browser sessions automatically, speeding up test suites without manual setup, as highlighted in the concurrent testing and multi-user scenario features.
Tightly integrates with Phoenix, Ecto sandbox, and LiveView, with detailed setup guides for enabling concurrent database access and real-time testing, including hooks for LiveView as documented.
Supports asynchronous JavaScript, dialogs (alert, confirm, prompt), logs, and errors, with functions like accept_alert and blocking actions that reduce race conditions, as described in the JavaScript section.
Requires installation and maintenance of external drivers like chromedriver or selenium, adding complexity to setup and operational dependencies, as noted in the requirements and setup sections.
Primarily supports Chrome and Firefox via Selenium, with no native support for browsers like Safari or Edge, which may hinder cross-browser testing efforts without additional configuration.
Setup involves multiple steps, including Phoenix server enabling, Ecto sandbox configuration, and asset compilation for JavaScript/CSS, which can be daunting and error-prone for new users.