defmodule Playwright do
@moduledoc """
`Playwright` module provides functions to launch a `Playwright.Browser`.
The following is a typical example of using `Playwright` to drive automation.
## Example
alias Playwright.{Browser, Page, Response}
browser = Playwright.launch(:chromium)
assert Browser.new_page(browser)
|> Page.goto("http://example.com")
|> Response.ok()
Browser.close(browser)
"""
use Playwright.ChannelOwner, fields: [:chromium]
@typedoc "The web client type used for `launch` and `connect` functions."
@type client :: :chromium | :firefox | :webkit
@doc """
Launch an instance of `Playwright.Browser`.map()
## Arguments
- `client`: The type of client (browser) to launch.
`(:chromium | nil)` with default `:chromium`
"""
@spec launch(atom()) :: Playwright.Browser.t()
def launch(client \\ nil)
def launch(client) when is_nil(client) do
launch(:chromium)
end
def launch(client) when client in [:chromium, :firefox, :webkit] do
{_connection, browser} = Playwright.BrowserType.launch()
browser
end
end