Changelog
View SourceAll notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[0.10.0-rc.0] 2025-11-19
Breaking changes
- Use browser pool by default, instead of starting new browser per test suite. Commit 095e216
# test_helper.exs + {:ok, _} = PhoenixTest.Playwright.Supervisor.start_link() Application.put_env(:phoenix_test, :base_url, MyAppWeb.Endpoint.url()) - Changes required if internals (beyond
PhoenixTestandPhoenixTest.Playwrightmodules) were used. Phoenix-agnostic modules moved toPlaywrightEx, with slight API changes. Example:- |> unwrap(& {:ok, _} = PhoenixTest.Playwright.Frame.click(&1.frame_id, selector)) + |> unwrap(& {:ok, _} = PlaywrightEx.Frame.click(&1.frame_id, selector: selector, timeout: @timeout))
Changed
- Ecto sandbox ownership: Use a separate sandbox owner process instead of the test process. This reduces ownership errors when LiveViews continue to use database connections after the test terminates. Commit 3b54699
Added
- Config option
ecto_sandbox_stop_owner_delay: Delay in milliseconds before shutting down the Ecto sandbox owner. Use when LiveViews or other processes need time to stop using the connections. Commit 2f4a8cf
[0.9.1] 2025-10-29
Added
- Browser pooling (opt-in): Reduced memory, higher speed.. Commit 00e75c6
[0.9.0] 2025-10-26
Fixed
assert_has/refute_has: don't raise if multiple nodes found when usingvalueoption (playwright strict mode). Commit 73ebf10
Changed
- Return result tuples from all playwright channel functions for consistency and to surface errors early. Commit ae63989
- Most notably may affect callers of
Frame.evaluate/3
- Most notably may affect callers of
Added
- Register custom selector engines via new config option
selector_engines. Commit 73ebf10 - Import click/2 in Playwright.Case. Commit 968d5cd
- Add drag and drop:
drag(source, to: target). Commit f4161bd
[0.8.0] 2025-09-17
Removed
- Config option
cli. Useassets_dirinstead. Commit 9e95e54
Added
- Support
bunxJS runner. Added config optionsrunnerandassets_dir. Commit 9e95e54 - Support missing
assert_has/refute_hasoptions:labelandvalue. Commit 2e92cbe - Support
phoenix_test0.8(lazy_html). Commit 1074cde
Changed
- Include source location when logging javascript errors and browser console logs. Commit 6b148f
- Only consider visible inputs for fill_in etc. Commit 86c2e3d
- Speed up
refute_has: Use playwright browser internal retry. Commit aac0497
[0.7.1] 2025-07-01
Added
- Config option
executable_path: allow using existing browser executable instead of bundled browser (e.g. on NixOS). Commit 15df46
Fixed
refute_has/3add retry, don't fail if element initially found. Commit 7bd49b
[0.7.0] 2025-06-16
Added
- Dialog handling. Commit 4eadea
- Config option
accept_dialogs(default:true) PhoenixTest.Playwright.with_dialog/3for conditional handling
- Config option
Removed
Connection.received/1. Commit 4eadea- Use
EventRecorderinstead
- Use
[0.6.3] 2025-05-05
Added
- Add locale to avoid console warnings. Commit [becf5e6] @peaceful-james
Fixed
- Trigger
phx-changeevent for input withphx-debounce="blur". Commit 72edd9
[0.6.2] 2025-04-24
Changed
Frame.evaluate/3: Don't transform map keys in return value. Example:js {camelCase: {a: 1}} -> ex %{"camelCase": %{"a": 1}}. Previously attempted to underscore and atom-ize keys, which led to issue #24. Commit 5ff530
[0.6.1] 2025-04-02
Added
- Support relevant
phoenix_test 0.6features- ✅ Deprecate
selectwith:fromin favor of:option(handled byPhoenixTest) - ✅ Allow nesting of
within/3 - ✅ Allow calling
visit/2sequentially (was already supported) - ❌ Raise error when visiting a defined route: In a feature test, we assert on the rendered page, not the status code.
- ✅ Deprecate
[0.6.0] 2025-03-18
Added
- Add and remove cookies:
add_cookies/2,add_session_cookie/3,clear_cookies/{1,2}@peaceful-james - Add option
browser_launch_timeoutfor more fine-grained control (is typically a lot slower than other actions) @s3cur3
[0.5.0] 2025-02-14
Added
- Docs: Document and validate global and per-test configuration
- Docs: Document non-standard driver functions (
click/4,click_button/4etc.). Also, exclude standard driver functions from docs. - Config: Override config via
Caseopts, e.g.use PhoenixTest.Playwright.Case, headless: false - Keyboard simulation:
type/{3,4}andpress/{3,4}
Changed
- Renamed:
PheonixTest.CasetoPhoenixTest.Playwright.Casedefmodule MyTest do - use PhoenixTest.Case, async: true + use PhoenixTest.Playwright.Case, async: true - @moduletag :playwright
[0.4.0] 2025-02-03
Added
- Screenshots:
screenshot/{2,3}function andscreenshot: trueconfig for auto-capture @s3cur3
Changed
- Config: flattened list (remove nested
browserconfig), override via top-level ExUnit@tag ...s (remove nested@tag playwright: [...])# config/test.exs config :phoenix_test, playwright: [ - browser: [browser: :chromium, headless: false, slow_mo: 0] + browser: :chromium, + headless: false, + slow_mo: 0
[0.3.0] 2025-01-26
Changed
- Auto-convert case of playwright messages keys (snake_case to camelCase)
[0.2.1] 2025-01-17
Added
- Add more config options (browser, JS console) @s3cur3
Changed
- Improve error messages @s3cur3
- Improve setup and docs for contributors @s3cur3
[0.2.0] 2025-01-09
Added
- support
phoenix_test@0.5,elixir@1.18,phoenix_live_view@1.0
[0.1.5] 2024-12-15
Added
@tag trace: :opento auto open recorded Playwright trace in viewer