Current section

Files

Jump to
phoenix_test_playwright lib phoenix_test playwright page.ex
Raw

lib/phoenix_test/playwright/page.ex

defmodule PhoenixTest.Playwright.Page do
@moduledoc """
Interact with a Playwright `Page`.
There is no official documentation, since this is considered Playwright internal.
References:
- https://github.com/microsoft/playwright/blob/main/packages/playwright-core/src/client/page.ts
"""
import PhoenixTest.Playwright.Connection, only: [post: 1]
def update_subscription(page_id, opts \\ []) do
post(guid: page_id, method: :update_subscription, params: Map.new(opts))
end
def screenshot(page_id, opts \\ []) do
# Playwright options: https://playwright.dev/docs/api/class-page#page-screenshot
params =
opts
|> Keyword.validate!(full_page: true, omit_background: false)
|> Map.new()
[guid: page_id, method: :screenshot, params: params]
|> post()
|> unwrap_response(& &1.result.binary)
end
defp unwrap_response(response, fun) do
case response do
%{error: _} = error -> {:error, error}
_ -> {:ok, fun.(response)}
end
end
end