Packages
playwright
0.1.0-preview
1.49.1-alpha.2
1.49.1-alpha.1
1.44.0-alpha.4
1.44.0-alpha.3
1.44.0-alpha.2
1.44.0-alpha.1
1.18.0-alpha.1
0.1.17-preview-7
0.1.17-preview-6
0.1.17-preview-5
0.1.17-preview-4
0.1.17-preview-3
0.1.17-preview-2
0.1.17-preview-1
0.1.16-preview-3
0.1.16-preview-2
0.1.16-preview-1
0.1.1-preview
0.1.0-preview
Playwright is an Elixir library to automate Chromium, Firefox and WebKit browsers with a single API. Playwright delivers automation that is ever-green, capable, reliable and fast.
Current section
Files
Jump to
Current section
Files
lib/playwright_test/case.ex
defmodule PlaywrightTest.Case do
@moduledoc """
Use `PlaywrightTest.Case` in an ExUnit test module to start a Playwright
server and put it into the test context.
## Examples
defmodule Web.DriverTransportTest do
use ExUnit.Case
use PlaywrightTest.Case,
headless: false,
transport: :driver
describe "features" do
test "goes to a page", %{browser: browser} do
page =
browser
|> Playwright.Browser.new_page()
text =
page
|> Playwright.Page.goto("https://playwright.dev")
|> Playwright.Page.text_content(".navbar__title")
assert text == "Playwright"
Playwright.Page.close(page)
end
end
end
defmodule Web.WebSocketTransportTest do
use ExUnit.Case
use PlaywrightTest.Case,
transport: :websocket
end
"""
defmacro __using__(options \\ %{}) do
quote do
alias Playwright.Runner.Config
setup_all do
inline_options = unquote(options) |> Enum.into(%{})
launch_options = Map.merge(Config.launch_options(), inline_options)
runner_options = Map.merge(Config.playwright_test(), inline_options)
Application.put_env(:playwright, LaunchOptions, launch_options)
{:ok, _} = Application.ensure_all_started(:playwright)
case runner_options.transport do
:driver ->
{connection, browser} = Playwright.BrowserType.launch()
[
connection: connection,
browser: browser,
transport: :driver
]
:websocket ->
options = Config.connect_options()
{connection, browser} = Playwright.BrowserType.connect(options.ws_endpoint)
[
connection: connection,
browser: browser,
transport: :websocket
]
end
end
setup %{browser: browser} do
page = Playwright.Browser.new_page(browser)
on_exit(:ok, fn ->
Playwright.Page.close(page)
end)
[page: page]
end
end
end
end