diff --git a/lib/playwright/artifact.ex b/lib/playwright/artifact.ex new file mode 100644 index 0000000..486f3da --- /dev/null +++ b/lib/playwright/artifact.ex @@ -0,0 +1,4 @@ +defmodule Playwright.Artifact do + @moduledoc false + use Playwright.SDK.ChannelOwner +end diff --git a/lib/playwright/browser.ex b/lib/playwright/browser.ex index 484ac42..5a703e7 100644 --- a/lib/playwright/browser.ex +++ b/lib/playwright/browser.ex @@ -725,18 +725,19 @@ defmodule Playwright.Browser do # --- - # test_chromium_tracing.py - # @spec start_tracing(t(), Page.t(), options()) :: :ok - # def start_tracing(browser, page \\ nil, options \\ %{}) + @type opts_tracing :: map() - # test_chromium_tracing.py - # @spec stop_tracing(t()) :: binary() - # def stop_tracing(browser) + @spec start_tracing(t(), Page.t(), opts_tracing()) :: t() | {:error, Error.t()} + def start_tracing(browser, page \\ nil, options \\ %{}) - # @spec version(BrowserContext.t()) :: binary - # def version(browser) + def start_tracing(%Browser{} = browser, _page, _options) do + Channel.post({browser, :start_tracing}) + end - # --- + @spec stop_tracing(t()) :: binary() + def stop_tracing(%Browser{} = browser) do + Channel.post({browser, :stop_tracing}) + end # events # ---------------------------------------------------------------------------- diff --git a/mix.exs b/mix.exs index ccb83ff..482ce04 100644 --- a/mix.exs +++ b/mix.exs @@ -114,6 +114,7 @@ defmodule Playwright.MixProject do Playwright.APIRequest, Playwright.APIRequestContext, Playwright.APIResponse, + Playwright.Artifact, Playwright.Browser, Playwright.BrowserContext, Playwright.BrowserType, diff --git a/test/api/browser_test.exs b/test/api/browser_test.exs index 547e27e..fdae0f1 100644 --- a/test/api/browser_test.exs +++ b/test/api/browser_test.exs @@ -190,7 +190,28 @@ defmodule Playwright.BrowserTest do end end + describe "Browser.start_tracing/3" do + test "on success, returns the 'subject' `Browser`", %{browser: browser} do + assert %Browser{} = Browser.start_tracing(browser) + Browser.stop_tracing(browser) + end + + test "on failure, returns `{:error, error}`", %{browser: browser} do + browser = %{browser | guid: "bogus"} + assert {:error, %Error{type: "TargetClosedError"}} = Browser.start_tracing(browser) + end + end + + describe "Browser.stop_tracing/1" do + test "on success, returns the resultant `Artifact`", %{browser: browser} do + Browser.start_tracing(browser) + assert %Playwright.Artifact{} = Browser.stop_tracing(browser) + end + test "on failure, returns `{:error, error}`", %{browser: browser} do + Browser.start_tracing(browser) + browser = %{browser | guid: "bogus"} + assert {:error, %Error{type: "TargetClosedError"}} = Browser.start_tracing(browser) end end end diff --git a/test/api/tracing_test.exs b/test/api/tracing_test.exs new file mode 100644 index 0000000..47ec7f5 --- /dev/null +++ b/test/api/tracing_test.exs @@ -0,0 +1 @@ +# test_chromium_tracing.py