README.md

# Chrome Launcher

This Elixir library makes launching headless Google Chrome processes with custom options easily.

Utilizes [erlexec](https://github.com/saleyn/erlexec) to manage processes under the hood.

Only supports OSX + Linux at this time.

---

### Installation:

```elixir
{:chrome_launcher, "~> 0.0.4"}
```

### Usage:

```elixir
{:ok, pid} = ChromeLauncher.launch([
  remote_debugging_port: 9233
])
```

> Or in a supervisor (1.5+)

```elixir
children = [
  {ChromeLauncher, [remote_debugging_port: 9222]}
]

Supervisor.start_link(children, strategy: :one_for_one)
```

> With multiple instances in a supervisor (1.5+)

```elixir
children = [
  Supervisor.child_spec({ChromeLauncher, [remote_debugging_port: 9222]}, id: :chrome_1),
  Supervisor.child_spec({ChromeLauncher, [remote_debugging_port: 9223]}, id: :chrome_2),
]

Supervisor.start_link(children, strategy: :one_for_one)
```

> Pre 1.5

```elixir
import Supervisor.Spec

children = [
  worker(ChromeLauncher, [[remote_debugging_port: 9222]], id: :chrome_1),
  worker(ChromeLauncher, [[remote_debugging_port: 9223]], id: :chrome_2),
]

Supervisor.start_link(children, strategy: :one_for_one)
```

Available options:

- `remote_debugging_port`: Configures `--remote-debugging-port=PORT` flag for connecting to the chrome process.
- `flags`: Flags to be passed in when starting the headless chrome process. (Overrides defaults set by `:chrome_launcher`)