# Testing

## Wallaby

[Wallaby](https://github.com/elixir-wallaby/wallaby) allows you to write end-to-end tests as though you're operating a browser session. A test looks like this:

```elixir
session
|> visit("/register")
|> assert_has(Query.text("Register"))
|> fill_in(text_field("user[name]"), with: "Bob")
|> fill_in(text_field("user[email]"), with: "bob@example.com")
|> fill_in(text_field("user[password]"), with: "password")
|> click(button("Create account"))
|> assert_has(Query.text("Welcome"))
```

You can see the full test in `test/features/signup_test.exs`.

Wallaby tests don't run by default as they can be slow. We have hidden them behind a "feature" flag.

```bash
# Run all tests, including wallaby:
mix test --include feature

# Run only wallaby
mix test --only feature
```

#### v1.3.0 BUG WITH LIVE VIEW

We're sorry to report that since Live View 0.17.7, wallaby has stopped working properly. See the write-up [here](https://github.com/elixir-wallaby/wallaby#liveview) on how to fix it. We will be fixing this in the next version. Apologies about this.

If you really want e2e tests then we suggest either following the instructions in the link above or downgrading phoenix\_live\_view => 0.17.6.
