> 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/command-index.md).

# Command index

Every command Drizz understands, in one table. A command that isn't here isn't a command — press `/` in the editor to confirm.

## Prerequisites

* A connected device or emulator
* An open test file

## Commands

<table data-search="false"><thead><tr><th>Command</th><th>What it does</th><th>Page</th></tr></thead><tbody><tr><td><code># &#x3C;text></code></td><td>A comment. The line is skipped</td><td><a href="/pages/gtld3Y4Opi5xwkqoem4Z">The shape of a test</a></td></tr><tr><td><code>Tap on &#x3C;description></code></td><td>Tap an element described in plain English</td><td><a href="/pages/d27nnpfmF71JEaTqASja">Tap</a></td></tr><tr><td><code>Type &#x3C;text> in &#x3C;field></code></td><td>Enter text into a field, focusing it for you</td><td><a href="/pages/fmEafMB0dQcmof1UPSdo">Type</a></td></tr><tr><td><code>Validate &#x3C;condition></code></td><td>Assert something is true on screen</td><td><a href="/pages/iVT5httbNhMFAZxSuOuq">Validate</a></td></tr><tr><td><code>Scroll &#x3C;direction></code></td><td>Scroll by a fixed amount </td><td><a href="/pages/jLN1iZOjukUTycp1izVt">Scroll</a></td></tr><tr><td><code>Scroll &#x3C;direction> by &#x3C;n>%</code></td><td>Scroll by a specific amount</td><td><a href="/pages/jLN1iZOjukUTycp1izVt">Scroll</a></td></tr><tr><td><code>Scroll &#x3C;direction> until "&#x3C;target>" is visible</code></td><td>Scroll until something comes into view</td><td><a href="/pages/jLN1iZOjukUTycp1izVt">Scroll</a></td></tr><tr><td><code>Swipe</code> / <code>Drag</code> / <code>Slide</code></td><td>Synonyms of <code>Scroll</code> — same directional behavior</td><td><a href="/pages/jLN1iZOjukUTycp1izVt">Scroll</a></td></tr><tr><td><code>Wait Until &#x3C;n> Seconds</code></td><td>Pause for a fixed time</td><td><a href="/pages/ZvXqPjs8xSPAZoh7A12r">Waits &#x26; timing</a></td></tr><tr><td><code>IF &#x3C;condition> { … }</code></td><td>Run steps only when the condition holds</td><td><a href="/pages/Oeivxm4efPdtz01deJCa">Conditionals</a></td></tr><tr><td><code>ELSE IF &#x3C;condition> { … }</code></td><td>Next branch when the <code>IF</code> doesn't match</td><td><a href="/pages/Oeivxm4efPdtz01deJCa">Conditionals</a></td></tr><tr><td><code>ELSE { … }</code></td><td>Fallback branch</td><td><a href="/pages/Oeivxm4efPdtz01deJCa">Conditionals</a></td></tr><tr><td><code>MAP_ACTION Tap on &#x3C;description></code></td><td>Coordinate-based tap for unlabeled or canvas elements</td><td><a href="/pages/1Glmb1RT149RLaMImgFg">MAP_ACTION</a></td></tr><tr><td><code>MAP_ACTION Drag &#x3C;from> to &#x3C;to></code></td><td>Drag a slider, seekbar, map pin or swipe-to-confirm control</td><td><a href="/pages/1Glmb1RT149RLaMImgFg">MAP_ACTION</a></td></tr><tr><td><code>OPEN_APP &#x3C;package></code></td><td>Launch an app</td><td><a href="/pages/zKdcFjpjI2RcnV1dKT5U">System commands</a></td></tr><tr><td><code>KILL_APP &#x3C;package></code></td><td>Force-stop an app</td><td><a href="/pages/zKdcFjpjI2RcnV1dKT5U">System commands</a></td></tr><tr><td><code>CLEAR_APP &#x3C;package></code></td><td>Wipe app data and reset to first launch</td><td><a href="/pages/zKdcFjpjI2RcnV1dKT5U">System commands</a></td></tr><tr><td><code>MINIMISE_APP &#x3C;package></code></td><td>Send the app to the background</td><td><a href="/pages/zKdcFjpjI2RcnV1dKT5U">System commands</a></td></tr><tr><td><code>PRESS_DEVICE_BACK_BUTTON</code></td><td>Android hardware back</td><td><a href="/pages/zKdcFjpjI2RcnV1dKT5U">System commands</a></td></tr><tr><td><code>SET_GPS(latitude=&#x3C;lat>, longitude=&#x3C;lon>)</code></td><td>Mock the device location</td><td><a href="/pages/zKdcFjpjI2RcnV1dKT5U">System commands</a></td></tr><tr><td><code>ENABLE_WIFI</code> / <code>DISABLE_WIFI</code></td><td>Turn wifi on or off</td><td><a href="/pages/zKdcFjpjI2RcnV1dKT5U">System commands</a></td></tr><tr><td><code>TOGGLE_LOCATION</code></td><td>Toggle location services</td><td><a href="/pages/zKdcFjpjI2RcnV1dKT5U">System commands</a></td></tr><tr><td><code>SET &#x3C;var> = "&#x3C;value>"</code></td><td>Assign a variable</td><td><a href="/pages/IH55nOeZirs6dxVNXT7B">Store &#x26; SET</a></td></tr><tr><td><code>SET &#x3C;var> = screen(&#x3C;description>)</code></td><td>Capture structured data off the screen</td><td><a href="/pages/IH55nOeZirs6dxVNXT7B">Store &#x26; SET</a></td></tr><tr><td><code>{{var}}</code></td><td>Reference a variable in any command</td><td><a href="/pages/ZFNpIL6ghiA6xGSY7MqS">Which variable do I use?</a></td></tr><tr><td><code>{{var.field}}</code></td><td>Reference one field of a structured variable</td><td><a href="/pages/ZFNpIL6ghiA6xGSY7MqS">Which variable do I use?</a></td></tr><tr><td><code>CALL &#x3C;module></code></td><td>Run a reusable module</td><td><a href="/pages/92D9ohPqc6eyuPm4vkQJ">Modules</a></td></tr><tr><td><code>CALL &#x3C;module>(&#x3C;param>={{value}})</code></td><td>Run a module with parameters</td><td><a href="/pages/92D9ohPqc6eyuPm4vkQJ">Modules</a></td></tr><tr><td><code>PARAM &#x3C;name></code></td><td>Declare a module parameter, inside the module</td><td><a href="/pages/92D9ohPqc6eyuPm4vkQJ">Modules</a></td></tr><tr><td><code>API:&#x3C;api_name></code></td><td>Call a registered API</td><td><a href="/pages/jmLw5Bvdq3wPMMWtRzkY">API steps</a></td></tr></tbody></table>

## Syntax conventions

| Convention                                  | Detail                                                           |
| ------------------------------------------- | ---------------------------------------------------------------- |
| **Angle brackets are placeholders**         | `<package>` means you type `com.shopease.android`                |
| **Keywords are case-insensitive**           | `Validate`, `validate` and `VALIDATE` all work                   |
| **System commands are written in capitals** | `OPEN_APP`, not `open_app`                                       |
| **Validation keywords**                     | `Validate`, `Verify`, `Confirm` and `Check` are the same command |
| **Scroll conjunctions**                     | `until`, `till` and `untill` are all accepted after `Scroll`     |
| **Variables**                               | Anything in `{{ }}` is substituted before the step runs          |

## Common mistakes

| What you wrote                    | What happens                                                                                               |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `OPEN_APP` with no package name   | Fails by design. The package argument is required                                                          |
| `OPEN_APP:(com.shopease.android)` | Not supported. Use a space: `OPEN_APP com.shopease.android`                                                |
| `open_app com.shopease.android`   | System commands are written in capitals — write `OPEN_APP`                                                 |
| `Wait until the cart loads`       | Accepted by the editor, but only fixed-duration waits are confirmed to wait. Write `Wait Until 10 Seconds` |

## Next

* [The shape of a test](/writing-tests/writing-tests.md) — how the commands fit together
* [Tap](/writing-tests/tap.md) — the most-used command
* [Waits & timing](/writing-tests/waits-and-timing.md) — fixed waits and where they go

***

*Last updated: 6 August 2026*
