lib/playwright/cli.ex

defmodule Playwright.CLI do
  @moduledoc """
  A wrapper to the Playwright Javascript CLI
  """

  require Logger

  def install_browsers do
    Logger.info("Installing playwright browsers")
    cli_path = config_cli() || default_cli()
    {result, exit_status} = System.cmd(cli_path, ["install"])
    Logger.info(result)
    if exit_status != 0, do: raise("Failed to install playwright browsers")
  end

  # private
  # ----------------------------------------------------------------------------

  defp config_cli do
    Application.get_env(:playwright, LaunchOptions)[:playwright_cli_path]
  end

  defp default_cli do
    Path.join(:code.priv_dir(:playwright), "static/playwright_cli.js")
  end
end