# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.petal.build/petal-pro-documentation/v1.4.0/fundamentals/testing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
