# butterbee
[](https://hex.pm/packages/butterbee)
[](https://hexdocs.pm/butterbee/)
### Control the browser with gleam code using butterbee!
Butterbee is a webdriver bidi client written in Gleam.
Webdriver bidi is a protocol that allows for controlling the browser via code.
It's primary usage is to write tests that automate user behavior on a web page
## Getting started
```sh
gleam add --dev butterbee
```
### Example
Getting started with butterbee is easy! make sure Firefox is on your $PATH, add the code below to your test and run `gleam test`.
```gleam
import butterbee
import butterbee/by
import butterbee/config/browser
import butterbee/input
import butterbee/nodes
import butterbee/query
import butterbee/webdriver
import gleeunit
pub fn main() {
butterbee.init()
gleeunit.main()
}
pub fn minimal_example_test_() {
let assert Ok(output) =
driver.new(browser.Firefox)
|> driver.goto("https://gleam.run/")
|> get.node(by.xpath(
"//div[@class='hero']//a[@href='https://tour.gleam.run/']",
))
|> node.do(action.click(key.LeftClick))
|> get.node(by.css("pre.log"))
|> node.get(node.text())
|> driver.close()
assert output == "Hello, Joe!\n"
}
```
NOTE: Because of test runner limitations, butterbee does not close the browser automatically when the test panics. If tests start randomly failing, check for any open browser processes in your system manager.
### Guides
- [Butterbee configuration](https://hexdocs.pm/butterbee/config)
- [Page modules](https://hexdocs.pm/butterbee/page-modules)
- [Other testrunners](https://hexdocs.pm/butterbee/test-runners)
- [Github actions](https://hexdocs.pm/butterbee/github-actions)