# `Cerberus.Browser.Install`
[🔗](https://github.com/ftes/cerberus/blob/v0.1.7/lib/cerberus/browser/install.ex#L1)

Shared Chrome runtime installer for Cerberus Mix tasks.

This module executes the Cerberus Chrome installer script and returns a parsed
payload that can be rendered as JSON, key/value env lines, or shell exports.

# `env_map`

```elixir
@type env_map() :: %{required(String.t()) =&gt; String.t()}
```

# `install_opt`

```elixir
@type install_opt() ::
  {:version, String.t()}
  | {:stable_link_dir, String.t()}
  | {:command_runner,
     (String.t(), [String.t()], keyword() -&gt; {String.t(), non_neg_integer()})}
```

# `install_payload`

```elixir
@type install_payload() :: %{
  browser: :chrome,
  binaries: %{chrome_binary: String.t(), chromedriver_binary: String.t()},
  versions: %{chrome_version: String.t(), chromedriver_version: String.t()},
  raw: %{required(String.t()) =&gt; String.t()}
}
```

Parsed install payload from installer output

# `browser_config`

```elixir
@spec browser_config(install_payload()) ::
  keyword(chrome_binary: String.t(), chromedriver_binary: String.t())
```

# `env_vars`

```elixir
@spec env_vars(install_payload()) :: env_map()
```

# `install`

```elixir
@spec install([install_opt()]) :: {:ok, install_payload()} | {:error, String.t()}
```

# `render`

```elixir
@spec render(install_payload()) :: String.t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
