Skip to content
CAI
Software that uses CAICheck a score

elixir-wallaby/wallaby

68.8

Adequate · 23 September 2026

5.8k

lines of production code

Elixir

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a browser automation library for Elixir that provides a high-level API for interacting with web pages and managing browser sessions. It supports multiple driver backends, including Chrome/Chromedriver and Selenium, to execute automated tests and control headless or full browsers. The codebase includes comprehensive integration and unit tests to validate browser interactions, query filtering, and session management.

How it got here

2016 — Modernization and API expansion

9 changes.

This period focused on modernizing the codebase by upgrading to Elixir 1.17+ and migrating configuration to the modern Config module. The team introduced a new public API for browser automation, including support for Chrome/Chromium, and added static analysis tools like Credo and Dialyzer to improve code quality and consistency.

2017 — Integration test infrastructure and driver utilities

13 changes.

This period focused on building out the integration testing framework, including new support modules for browser automation, session management, and HTTP testing. The work also introduced utilities for managing background processes and driver logging, while significantly expanding test coverage for browser interactions and Selenium compatibility.

2020 — test coverage and dev environment improvements

5 changes.

This period focused on expanding test coverage for Chrome and Selenium integration components, including new scripts for simulating browser drivers and verifying session management. Additionally, a Docker-based development environment was introduced to streamline the setup process for contributors.

Features

Add Credo, Dialyzer, and Nix Flake configuration files

The repository now includes configuration files for code quality and static analysis tools. A \.credo.exs\ file introduces Credo linting rules, a \.dialyzer\_ignore.exs\ file suppresses specific Dialyzer warnings, and a \.formatter.exs\ file standardizes Elixir code formatting. Additionally, \flake.nix\ and \flake.lock\ files are added to support Nix-based development environments, while \release-please-config.json\ and \.release-please-manifest.json\ automate versioning. These changes improve code consistency, catch potential errors early, and simplify setting up the development environment.

(repo-wide) · high confidence

Add Docker-based development environment script

A new 'bin/docker-run' script has been added to the project. This script facilitates the creation and execution of a Docker container configured with specific versions of Elixir and Erlang, along with Chromium and ChromeDriver, allowing users to run the application in an isolated environment.

bin · high confidence

Add event emitter and configurable JS error handling

A new \EventEmitter\ module is introduced to support telemetry-style event emission for testing, allowing implementation code to emit events and tests to await them. Additionally, the \Wallaby\ module is updated to expose configuration options for JavaScript error handling (\js\_errors\ and \js\_logger\), enabling users to control whether JS errors are re-thrown and where JS console logs are written.

lib · medium confidence

Added KeyCodes helper for keyboard input

A new \Wallaby.Helpers.KeyCodes\ module was added to \lib/wallaby/helpers/key\_codes.ex\. This helper provides a mapping of common keyboard keys (such as shift, control, arrow keys, and numeric keys) to their corresponding Unicode escape sequences. This enables users to send complex key combinations and special characters during automated browser interactions.

lib/wallaby/helpers · high confidence

Added script to manage background processes and handle graceful shutdowns

A new shell script (priv/run\_command.sh) has been added to manage background processes. It starts a program in the background, captures its PID, and sets up a trap to ensure the process is killed if the parent script receives INT, HUP, or TERM signals, or if stdin closes. This provides a mechanism for cleaner process management and shutdown handling.

priv · medium confidence

Introduce new browser automation API and Chrome driver implementation

The library has been restructured to introduce a new public API for browser automation, centered around the \Wallaby.Browser\ module, which provides functions for interacting with web pages (e.g., \fill\_in\, \click\, \find\). A new \Wallaby.Chrome\ module and its associated submodules (\Chromedriver\, \ReadinessChecker\, \Server\) have been added to handle Chrome/Chromium browser sessions, including headless mode configuration and driver management. The \Wallaby.Feature\ module now supports a \feature\ macro for writing feature tests, and a \Wallaby.DSL\ module simplifies test setup by aliasing browser and query modules. Additionally, \Wallaby.Element\ and \Wallaby.Query\ modules provide the core abstractions for interacting with DOM elements and constructing queries.

lib/wallaby · high confidence

New driver utility modules for logging and port management

The driver now includes new internal modules to support logging and network operations: Wallaby.Driver.ExternalCommand for managing external processes, Wallaby.Driver.LogChecker and Wallaby.Driver.LogStore for capturing and storing browser logs, and Wallaby.Driver.TemporaryPath and Wallaby.Driver.Utils for generating temporary paths and finding available network ports.

lib/wallaby/driver · high confidence

New integration test support modules for session management and viewport checks

Added three new modules in the integration test support directory: \Wallaby.Integration.Helpers\ provides a \displayed\_in\_viewport?/2\ function that executes JavaScript to verify if an element is visible within the browser viewport; \Wallaby.Integration.SessionCase\ introduces a \start\_test\_session/1\ helper that automatically manages test sessions with retry logic; and \Wallaby.Integration.TestServer\ provides a lightweight HTTP server for serving test pages during integration tests.

_integration\test/support · high confidence

Behavioural changes

Consolidate integration test suite

The integration test suite is now loaded from a single entry point (integration\_test/tests.exs), which includes all existing browser and element test cases. This change ensures that the full set of integration tests is automatically discovered and run, rather than relying on individual file inclusions or manual configuration.

_integration\test · high confidence

Improved error messages and query generation for form elements

The query engine now provides more specific and actionable error messages when form element queries fail, such as clarifying issues with label 'for' attributes, button types, and text matching. Additionally, the system now generates XPath expressions for querying elements by text, attribute, and other conditions, enhancing the clarity of failure states for users debugging their tests.

lib/wallaby/query · high confidence

Migrated configuration to new config format

The application configuration has been migrated from the legacy Mix.Config module to the modern Config module. This change updates the default settings for the Wallaby library, including the maximum wait time (5000ms), pool size (3), JavaScript logging behavior (stdio), screenshot capture (false), and HTTP client options. Environment-specific configurations for dev, docs, prod, and test environments are now handled through separate files imported by the main config file.

config · high confidence

Test coverage

Added Selenium integration test suite; Added integration test page fixtures for browser interactions; Added integration tests for browser automation features; Added integration tests for browser interactions, query filtering, and session management; Added integration tests for the Wallaby.Feature macro and module usage; Added test support scripts for Chrome and Chromedriver; Added tests for Chrome WebDriver server and logging; Added tests for Selenium driver session and client interactions; Added tests for query error messages and XPath; Added unit tests for Wallaby driver utilities; Added unit tests for core Wallaby modules; Added unit tests for key code encoding; Expanded Chrome integration test coverage; New test support modules for browser automation and HTTP testing; Removed empty placeholder test and configured ExUnit to skip pending tests.

Dependencies

Update project configuration and lockfile for Elixir 1.17+ and modern dependencies

The project's \mix.exs\ has been updated to require Elixir 1.17+ and specifies modern versions for key dependencies, including \httpoison\ 3.0.0, \web\_driver\_client\ 0.3.0, and \credo\ 1.7.19. The \mix.lock\ file has been regenerated to reflect these dependency updates, ensuring the build environment is compatible with newer Elixir releases and updated third-party libraries.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 65 → 69 (+3.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 91 → 95 (+3.8)
  • Architecture 100 → 100 (-0.2)
  • Maturity 55 → 55 (-0.5)
  • Readiness 66 → 78 (+11.8)
  • Security 71 → 76 (+5.9)

Resolved (13)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • FileTooLong: wallaby/chrome.ex (lib/wallaby/chrome.ex)
  • FileTooLong: wallaby/webdriver_client.ex (lib/wallaby/webdriver_client.ex)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • No exposed public API
  • Off-boarding risk: anonymized user #1
  • Test reliability not included
  • TooManyMethods: Browser (lib/wallaby/browser.ex)

New (13)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Fork-triggerable workflow runs with an unscoped write token
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • High CVE: [GHSA redacted] (mix.lock)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • Off-boarding risk: anonymized user #1
  • Outdated: dialyxir
  • Outdated: ecto_sql
  • Outdated: ex_doc
  • Outdated: phoenix_ecto

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

elixir-wallaby/wallaby was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 13e1394d3141908ecc1c9f42c089eaa564c83f10 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.