Skip to content

chore(main): release 0.31.0#1

Open
github-actions[bot] wants to merge 1 commit intomainfrom
release-please--branches--main--components--wallaby
Open

chore(main): release 0.31.0#1
github-actions[bot] wants to merge 1 commit intomainfrom
release-please--branches--main--components--wallaby

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions bot commented Mar 15, 2026

🤖 I have created a release beep boop

0.31.0 (2026-04-20)

⚠ BREAKING CHANGES

  • rename project to Wallabidi
  • remove Selenium driver and legacy HTTP protocol

Features

  • @tag :browser system and LiveView integration test suite (500e8a3)
  • add BiDi-powered DX features (2f7fa8e)
  • add cast_command to BiDi WebSocketClient (efe3e82)
  • add ChromeCDP driver — direct CDP to Chrome, 97% tests passing (5c5be2e)
  • add Lightpanda CDP driver (Phase 1) (30dd7fe)
  • add Lightpanda integration test suite and Phase 2 fixes (a79ae8b)
  • add WebDriver BiDi protocol support for Chrome driver (124f438)
  • auto-await LiveView patch after click and fill_in (f466429)
  • auto-discover Chrome WebSocket URL from DevTools endpoint (7fc8f63)
  • auto-flush infrastructure at driver boundary (abd7bc3)
  • auto-inject onPatchEnd hook — no app.js changes needed (392f963)
  • auto-propagate Mimic stubs in LiveSandbox, fix optional deps (bb96ea0)
  • auto-start Chrome via Docker when chromedriver not found (6069fc0)
  • automatic Cachex checkout in Feature setup (a3df493)
  • await LiveView connected after navigation (5ab6f90)
  • await_selector handles XPath text queries (12bf4e8)
  • await+find pipeline — MutationObserver + find + filter in 1 RPC (2e9f53c)
  • BiDi pipeline find — ops-based find+filter via script.evaluate (12a48ba)
  • BiDi push-based find+click via script.addPreloadScript channel (803fbd2)
  • Cachex.Sandbox integration — transparent cache isolation (f3c1bd7)
  • CachexSandbox pool for test isolation (0f3e42b)
  • CDP query pipeline — find + filter in one JS evaluation (8dd53a6)
  • chrome test_helper starts all driver backends (7f369f2)
  • ChromeCDP 243/245 tests passing — implement remaining driver features (4225efb)
  • click_full — classify + prepare_patch + click in 1 RPC (712338f)
  • config-based driver selection with @tag :browser routing (2c8bc9e)
  • deterministic page-ready via loaderId-correlated lifecycle events (96041bb)
  • direct LiveView driver — no browser needed (cb5aa36)
  • Docker networking — Chrome in container reaches host test server (494a422)
  • event-driven assert_has via await_selector (0c6d2c7)
  • event-driven redirect detection via beforeunload (cb0ffb6)
  • Feature integrates with sandbox_case when available (f629c2b)
  • FunWithFlags.Sandbox integration + Cachex cleanup (1b8c83f)
  • handle full page navigation with BiDi load event (f3ec14b)
  • launch Chrome directly — bypass chromedriver entirely (2509bb1)
  • LiveView driver — 0 failures across all test suites (e3db08c)
  • LiveViewDriver handles static page interactions (398fd43)
  • make settle LiveView-aware (6c8ee28)
  • mix test.browsers for multi-browser CI testing (0d0dc32)
  • MockSandbox plug — propagate Mimic/Mox on HTTP requests too (de98064)
  • Mox support — auto-propagate stubs to LiveView processes (3c2c42b)
  • native Elixir query evaluation for LiveViewDriver (031fa8c)
  • optional SessionPool for browser session reuse (45df6ab)
  • per-operation timing benchmark across CDP, BiDi, LiveView (c06fe21)
  • pipeline classify op + revert deferred classification (f66620d)
  • pipeline click — find + filter + click in 1 RPC (8de785c)
  • protocol abstraction, LiveView-aware visit for CDP, load test infra (971f738)
  • pure BiDi — eliminate all WebdriverClient fallbacks (b9aa730)
  • push-based element finding via Runtime.addBinding (87dac2d)
  • remove Selenium driver and legacy HTTP protocol (ab70de9)
  • rename project to Wallabidi (d23fcc4)
  • sandbox integration tests pass — all 5 scenarios working (142c4b0)
  • SandboxHelper for Cachex and spawn_link workers (17495d4)
  • streamline Chrome/chromedriver discovery with BrowserPaths (23049e2)
  • support remote ChromeDriver (e.g. Docker container) (4ad30b4)
  • text-aware await_selector (89fa40d)
  • three-tier test system — liveview / headless / browser (b4363fe)
  • use chromedriver with BiDi — inject webSocketUrl capability (4d7d476)
  • visit waits for LiveSocket connection (#7) (d68f612)
  • Wallabidi.Sandbox plug and Wallabidi.LiveSandbox on_mount hook (28878ad)
  • with_patch_await for all interaction types (7530003)
  • XPath polyfill and unique session IDs for Lightpanda (c8205bf)

Bug Fixes

  • add cleanup_stale_sessions noop to Lightpanda, avoid compile warnings (e4923a7)
  • add CSRF token to test app layout (6327fd2)
  • add Elixir 1.19 Erlang-format dialyzer ignore patterns (541e47f)
  • add native.ex guard_fail to dialyzer ignore (1dc2e36)
  • add timeout to await_patch promise (#4) (f5beaa2)
  • attribute property access, displayed visibility, dialog subscription, object keys (e6d92a5)
  • attribute reads DOM property, defensive session cleanup (866a365)
  • auto-close sessions via on_exit registration (73b918d)
  • await session cleanup to prevent resource leaks (c07c5ff)
  • await_liveview_connected resolves on old LiveView (#4) (8114fae)
  • await_liveview_connected uses pre_url to avoid old LV race (1ba2f98)
  • await_patch detects navigation and returns early (#4) (f6feebc)
  • await_patch resolves "navigated" and waits for LV connected (ab978fb)
  • await_selector bails on navigation (#4) (6004c1f)
  • await_selector re-runs on new page after navigation (#4) (60fdf93)
  • await_selector uses querySelectorAll for text matching (b05e28a)
  • beforeunload in prepare_patch catches redirect during click (aeb3c26)
  • BiDi bootstrap activation + input[image] classification (6a417a4)
  • BiDi full-page navigation — subscribe to page_load, drain before click (5b7c68d)
  • BiDi ResponseParser.extract_value must unwrap {:ok, map} tuples (290b98e)
  • Cachex $callers fix is in 4.1+, not 4.0+ (60c8dd9)
  • call mark_cleanup_started before closing sessions (798edea)
  • cast releaseObject, await page load on patch→navigate transition (5d908f5)
  • CDP client — scoping, send_keys, options, displayed, window size (6031d8a)
  • CDP client compatibility — DOM text walker, attribute properties (8d8f9d9)
  • CDP client send_keys Session guard, window size tracking (7d733a2)
  • Chrome launch args — missing -- prefix and user-data-dir (d949cbd)
  • ChromeCDP 245/245 — eliminate parallel race conditions (564d3cc)
  • CI and test fixes for Selenium removal (a6cf794)
  • CI dialyzer — remove deprecated --halt-exit-status flag, ignore callback_info_missing (5a634f3)
  • CI reduce concurrency, remove browser cache (7593493)
  • classify phx-trigger-action forms and JS command lists (007238b)
  • classify unknown/failed bindings as :none, not :patch (#5) (795eb73)
  • clean up dialyzer, elixirc_paths, CI linting (aa53963)
  • clean up stale ChromeDriver sessions on first use (0b80799)
  • click fallback for all non-stale errors (d017c6e)
  • compile deps separately from app to avoid dep warnings (a82d404)
  • compiler warnings, CI lightpanda install, 1.20-rc.4 (7fbcada)
  • defensive end_session — catch already-dead WebSocket (20ac190)
  • DELETE session before closing WebSocket (2fdd597)
  • detect non-LV pages via [data-phx-main] instead of 200ms timeout (347464c)
  • detect redirect after await_patch timeout via URL check (728b9b3)
  • dialyzer — pattern match status 101 before WebSocket.new (c91df0f)
  • dialyzer ignore for LiveViewDriver guard_fail warnings (7132b8a)
  • dialyzer ignore patterns for Elixir 1.19 warning format (d93b67d)
  • dialyzer xpath_polyfill guard, Lightpanda CI concurrency (ec2fe53)
  • don't call mint_request inside GenServer callbacks (51526cc)
  • don't fail on unused dialyzer filters (cross-version compat) (7672672)
  • don't use link/button selectors as body text search (#4) (c599ef5)
  • drain stale bidi_event messages on session end (7e3b227)
  • ensure BiDiClient loaded before function_exported? check (16cc5ab)
  • explicitly end session in on_exit for non-Feature tests (a0c12f5)
  • explicitly end sessions in on_exit before sandbox checkin (376339a)
  • fill_in drains all phx-change patches before returning (#9) (3d7e49a)
  • frame switching, file inputs, capabilities tests, version messages (c2cc876)
  • handle Mint :unknown in DevTools discovery receive loop (3a04dcf)
  • handle missing goog:chromeOptions in capability manipulation (a3e235f)
  • headless=new, Chrome throttling flags, safe classification default (910ffa7)
  • Host header must be localhost for Chrome DevTools discovery (1cdeb92)
  • increase lifecycle timeout test margins for CI (6771e95)
  • increase Lightpanda CDP max connections to 64 (cc7e75c)
  • increase settle defaults to 10s timeout, 1s idle (46a1fc1)
  • Inspect impl avoids Inspect.Algebra internals entirely (2ea18cb)
  • Inspect impl uses Algebra.line() for Elixir 1.19 compat (772451f)
  • Inspect.Algebra compat for Elixir 1.19+, lint env (5063086)
  • isolate DevTools discovery from Agent mailbox (48006af)
  • JS error/log tests — allow async BiDi events to arrive (4791fe0)
  • last 2 test failures — skip invisible click, settle for log timing (17163f9)
  • last 3 integration test failures (04f0672)
  • lifecycle timeout test catches both RuntimeError and EXIT (7b28061)
  • Lightpanda end_session — close WebSocket, skip closeTarget (27f13a0)
  • limit Lightpanda concurrency on CI, fix arg passthrough (efb6d48)
  • LiveView driver — body extraction, index route, visit_endpoint (dcf51ce)
  • LiveView driver — current_url, tags, parse_html (cf9c535)
  • LiveView driver — decode_xpath ordering, click return, native finder (2590af6)
  • LiveView driver — parse_html, text scope, attribute hyphen (0bde740)
  • LiveView driver — text normalization, radio/checkbox click, selected state (69e0625)
  • LiveView driver blank_page?, outerHTML, tag browser-only tests (3027d8c)
  • LiveView static pages, SessionStore tests, outerHTML inspect (8ab6ad9)
  • LiveViewDriver re-reads element HTML and tracks field values (4518630)
  • make BiDi opportunistic — don't modify capabilities (45d42a6)
  • make wait_for_network_idle work with persistent connections (27578a7)
  • monitor LiveView processes instead of fixed sleep (1c33092)
  • move stale session cleanup to app startup (3c67adc)
  • only hide absolutely/fixed positioned off-screen elements (0eab11b)
  • parse session ID from W3C response format (0766a98)
  • phx-change also checks for push vs JS-only (d102e14)
  • pipeline scoped queries — preserve this binding in XPath ops (28c0238)
  • plain form submit classified as :full_page (#6) (c273f9c)
  • polyfill form.reset() for Lightpanda CDP driver (d3080ae)
  • push-based find — selected filter, error propagation, race fix (32187ec)
  • push-based page-ready waiter eliminates click flakiness (2458765)
  • queue WebSocket commands until handshake completes (e454f2f)
  • raise NavigationTimeoutError on silent click-through timeouts (9caa5c6)
  • relax lifecycle timeout test assertion and add ExUnit timeout (59c39c6)
  • remote chromedriver improvements (ac8ee0a)
  • remove linter-injected Runtime.addBinding corruption in pipeline.ex classify JS (074c597)
  • remove unused form_html variable (ff64b05)
  • remove worktree from git, add .claude to gitignore (0b7a3f5)
  • replace all remaining wallaby references with wallabidi (d503255)
  • replace polling click with push-based find + single click eval (50f1310)
  • resolve all Credo --strict issues (de986d2)
  • resolve all credo strict issues (f772088)
  • resolve all test and dialyzer failures (db57512)
  • resolve CI failures — Credo nesting, Docker fallback in lifecycle tests (b795fdd)
  • resolve credo issues — reduce nesting, fix alias order (a044fe9)
  • resolve dialyzer errors (6e115b1)
  • resolve remaining 23 integration test failures (654f503)
  • resolve_test_driver respects WALLABIDI_DRIVER env (f54911b)
  • restore chromedriver validation and filter mapper log noise (bbf76e2)
  • run dialyzer in dev env (dialyxir is dev-only dep) (466a37f)
  • run entire linting job in dev env (8ed9ab3)
  • runtime check for SandboxCase instead of compile-time (26a6044)
  • scrollIntoView before click on all code paths (a410043)
  • session pool propagates sandbox metadata on checkout (#3) (fe66fc2)
  • sync bootstrap install in CDP session creation (be19366)
  • tag JS-dependent and wait/retry tests as :headless (1a0de34)
  • trace timing test works for all drivers (5086936)
  • unused variable warning (grab_error → _) (47b8023)
  • update CI for new test structure and browser install (e84086d)
  • upgrade dialyxir 1.4.3 → 1.4.7 for OTP 28 compatibility (6c3b648)
  • use $callers for Ecto sandbox in LiveView Hook (42589b9)
  • use atom key for goog:chromeOptions Access (8119414)
  • use bare chromedriver image, skip tests when no local chromedriver (8b16ba1)
  • use BiDi network interception for pool user-agent override (#3) (2379a4b)
  • use compile_env guard — zero production overhead (c881dac)
  • use exact OTP version for 1.20-rc (strict requires it) (f7e8837)
  • use file-level credo disable for apply in lightpanda.ex (ab80f18)
  • use Hex package for phoenix_test_only (65e8be0)
  • use JS .click() instead of pointer actions for element clicks (96eceed)
  • use LazyHTML.from_document for full HTML pages (62def29)
  • use sharedReference format for BiDi script arguments (2b7fbf4)
  • use W3C capabilities format for session creation (37970c0)
  • use W3C capability keys throughout (c6c5fab)
  • visibility check no longer rejects off-viewport elements (e8e4895)
  • visit uses wait:interactive and 30s timeout (#8) (08b69a1)
  • wait for liveSocket.main.joinPending before dispatching click (6e007c3)
  • XPath classification and form redirect handling (3daafac)

Performance Improvements

  • eliminate about:blank navigate in BiDi session setup (37ec11a)
  • fire-and-forget domain enables, eliminate 4 blocking round-trips (e2a5fe5)
  • fire-and-forget register_js + inline ops in final_check (2554cce)
  • remove --disable-gpu, add anti-throttle features for headless (296f1c8)
  • single chromedriver process for all tests (4359e45)
  • skip await_patch for JS-only clicks and non-phx forms (#4) (bac0ba0)
  • skip xpath polyfill injection on Chrome (native support) (1603d4f)

Reverts


This PR was generated with Release Please. See documentation.

@github-actions github-actions bot force-pushed the release-please--branches--main--components--wallaby branch 18 times, most recently from 2fa5d45 to a070daa Compare March 18, 2026 01:38
@github-actions github-actions bot force-pushed the release-please--branches--main--components--wallaby branch 3 times, most recently from 1c9f1cd to acefacf Compare April 20, 2026 12:44
@github-actions github-actions bot force-pushed the release-please--branches--main--components--wallaby branch from acefacf to 50f17a0 Compare April 20, 2026 19:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants