> For the complete documentation index, see [llms.txt](https://docs.drizz.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.drizz.dev/writing-tests/chat.md).

# Drizz AI

Chat takes a plain-language description of a flow, runs it on a live device, works out each step as it goes, and produces a script.

|                   |                                                                 |
| ----------------- | --------------------------------------------------------------- |
| **Platforms**     | Android · iOS                                                   |
| **Where it runs** | A local Android emulator connected to the desktop app           |
| **Best length**   | \~20–25 steps per run                                           |
| **Not generated** | API steps, module calls, `Store` and `SET` — add those yourself |
| **Watch out**     | The output is a first draft, not a finished test                |

Drizz AI is also referred to as Fathom.

## Prerequisites

* Drizz desktop app installed and signed in
* A local Android emulator running
* The emulator connected to the desktop app
* The app under test installed and open on that emulator

## Run a test with Chat

1. Click the chat icon at the top left of the editor.
2. Intent: one or two sentences describing the scenario, including any data the flow needs, such as a phone number, a search term or an address.
3. End Condition: state the condition to end the test execution
4. Watch the run. Drizz executes on the emulator one step at a time, looking at the current screen, deciding the next action and performing it.
5. Answer any question Drizz asks. It pauses on an unexpected screen, a navigation loop or an ambiguous path, and resumes once you reply.
6. Review the generated script, which opens in the editor when the run finishes.

## What gets generated

| Included            | Detail                                                                                                                                   |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| UI actions          | The full sequence performed during the run                                                                                               |
| `IF` blocks         | Where the intent implied conditional behavior, so the script reflects the app's real branching rather than the single path this run took |
| Validation commands | Where checks were specified in the intent or during the run                                                                              |
| Navigation steps    | The steps needed to reach the flow                                                                                                       |

## Edit and save the output

The output is an ordinary Drizz script. Before saving:

1. Tighten any description that reads vaguely against the app's exact wording.
2. Add waits after anything that navigates or calls the network.
3. Add the validations that matter. Generated scripts under-validate.
4. Replace repeated setup with a `CALL` to a shared module.
5. Add any `Store`, `SET` or `API:` steps the flow needs.
6. End the script with `CLEAR_APP`.
7. Save the test and run it once from the editor to confirm it passes unattended.

A saved Chat script behaves like any other test — add it to a test plan, run it on the device cloud, use it for regression.

## Limits

| Limit                       | Detail                                                                                                                                                                                                                       |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| API/Variable/Module support | Only fuctional UI testing is supported                                                                                                                                                                                       |
| Run length                  | \~20–25 steps. Beyond that Drizz loses track of the flow and produces missed steps or inconsistent behavior. Split a long journey into two or three runs and stitch the scripts together, or make the shared prefix a module |
| Not generated               | API steps, module calls, `Store` and `SET`. Add them afterwards                                                                                                                                                              |
| Conventions                 | Chat has no knowledge of your naming, your module library or your validation depth                                                                                                                                           |
| Not suited to               | Long regression journeys, flows needing API setup, and any test that must be exactly right on the first pass                                                                                                                 |

## Common mistakes

| What you write                                    | What happens                                                             |
| ------------------------------------------------- | ------------------------------------------------------------------------ |
| An intent covering a 40-step journey              | Drizz loses context partway. Split it                                    |
| `test the checkout flow`                          | Too vague. Name the screens, the data and the end check                  |
| Expecting `API` `SET` or `CALL` in the output     | Not generated. Add them in the editor                                    |
| Saving the generated script unedited              | Under-validated, and descriptions may not match your app's exact wording |
| Waiting for Chat while it's asking you a question | It pauses for clarification. Answer it and the run resumes               |

## Next

* [The shape of a test](/writing-tests/writing-tests.md)
* [Modules](/writing-tests/modules.md)
* [Authoring rules](/writing-tests/authoring-rules.md)

***

*Last updated: 6 August 2026*
