Skip to content

Commit

Permalink
Implement Pages.Driver.open_browser/1 for LiveView driver
Browse files Browse the repository at this point in the history
  • Loading branch information
eahanson committed Nov 11, 2024
1 parent 13c42d6 commit de27210
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 0 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## Unreleased changes

- Implement `c:Pages.Driver.open_browser/1` for `Pages.Driver.LiveView`.

## 2.1.1

- Add default context to `Pages.new` to avoid breaking change to API.
Expand Down
6 changes: 6 additions & 0 deletions lib/pages.ex
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,12 @@ defmodule Pages do
@spec handle_redirect(Pages.Driver.t()) :: Pages.result()
def handle_redirect(%module{} = page), do: module.handle_redirect(page)

@doc """
Attempt to open the current page in a web browser.
"""
@spec open_browser(Pages.Driver.t()) :: Pages.Driver.t()
def open_browser(%module{} = page), do: module.open_browser(page)

@doc """
Render a change to the element at `selector` with the value `value`. See `Phoenix.LiveViewTest.render_change/2` for
a description of the `value` field.
Expand Down
3 changes: 3 additions & 0 deletions lib/pages/driver.ex
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ defmodule Pages.Driver do
@doc "Wait for a server-issued redirect. Implementation for `Pages.handle_redirect/1`."
@callback handle_redirect(Pages.Driver.t()) :: Pages.result()

@doc "Attempt to open the current page in a web browser."
@callback open_browser(Pages.Driver.t()) :: Pages.Driver.t()

@doc "Render a change. Implementation for `Pages.render_change/3`."
@callback render_change(Pages.Driver.t(), Hq.Css.selector(), Enum.t()) :: Pages.result()

Expand Down
8 changes: 8 additions & 0 deletions lib/pages/driver/conn.ex
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,14 @@ defmodule Pages.Driver.Conn do
|> Pages.new(page.context)
end

@doc """
Not yet implemented for this driver.
"""
@impl Pages.Driver
@spec open_browser(Pages.Driver.t()) :: Pages.Driver.t()
def open_browser(_page),
do: raise("Not yet implemented for this driver")

@impl Pages.Driver
def rerender(page) do
path =
Expand Down
10 changes: 10 additions & 0 deletions lib/pages/driver/live_view.ex
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,16 @@ defmodule Pages.Driver.LiveView do
|> Pages.visit(path, page.context)
end

@doc """
Attempt to open the current page in a web browser.
"""
@spec open_browser(Pages.Driver.t()) :: Pages.Driver.t()
@impl Pages.Driver
def open_browser(page) do
LiveViewTest.open_browser(page.live)
page
end

@doc "Called from `Pages.rerender/1` when the given page is a LiveView."
@spec rerender(Pages.Driver.t()) :: Pages.result()
@impl Pages.Driver
Expand Down

0 comments on commit de27210

Please sign in to comment.