{"version":1,"pages":[{"id":"7OhzRIsD04hZV7AaZ10H","title":"Drizz Docs","pathname":"/","siteSpaceId":"sitesp_6PjiA","description":"Drizz automates mobile apps with Vision AI. Write tests in plain English and run them on Android and iOS."},{"id":"MhXGPLNR3LvWADu07Apr","title":"Introduction","pathname":"/start-here/introduction","siteSpaceId":"sitesp_6PjiA","description":"How Drizz works — Vision AI, plain-English commands, and the five stages every test step runs through.","breadcrumbs":[{"label":"Start here"}]},{"id":"lwTvp1Ou3PHFX5JZ2elP","title":"Quickstart: Your first test","pathname":"/start-here/quickstart","siteSpaceId":"sitesp_6PjiA","description":"Write and run your first Drizz test in about 10 minutes, on a device connected to the desktop app.","breadcrumbs":[{"label":"Start here"}]},{"id":"AOLyGN2LD5CYTlyGA0vd","title":"Platform & Device support","pathname":"/start-here/platform-support","siteSpaceId":"sitesp_6PjiA","description":"Which platforms and device types Drizz supports, and where each one runs — locally, in the Drizz cloud, or on private devices.","breadcrumbs":[{"label":"Start here"}]},{"id":"BkKkzde7bDyLY07muNRf","title":"Use cases","pathname":"/start-here/use-cases","siteSpaceId":"sitesp_6PjiA","description":"The scenarios teams automate with Drizz — onboarding, authentication, search, checkout, navigation and full regression suites.","breadcrumbs":[{"label":"Start here"}]},{"id":"HSWpEkrd2hVRwYDeKG0t","title":"Download & install","pathname":"/desktop-app/download-and-install","siteSpaceId":"sitesp_6PjiA","description":"Download the Drizz desktop app, check your Mac meets the requirements, and install it.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"dIGV2BPFPvsBEl7NCoQZ","title":"Sign in & get access","pathname":"/desktop-app/sign-in-and-access","siteSpaceId":"sitesp_6PjiA","description":"Sign in to the desktop app with your work email, how your organization is created, and what to do when you see nothing.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"V4Ahq2H6ctkSpVdVJjet","title":"Updates","pathname":"/desktop-app/updates","siteSpaceId":"sitesp_6PjiA","description":"How the desktop app updates itself, what a forced update does, and how to install one by hand if the download fails.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"46eLuix1kFt98c6iz5NM","title":"Set up a device: Guided wizard","pathname":"/desktop-app/device-setup-wizard","siteSpaceId":"sitesp_6PjiA","description":"The guided wizard installs and configures everything needed to run an Android emulator or an iOS simulator on your Mac.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"ttwuSsQLLtd4sNLrJzgU","title":"Android setup","pathname":"/desktop-app/android-setup","siteSpaceId":"sitesp_6PjiA","description":"Set up an Android emulator and the command-line tools by hand, when the guided wizard isn't the right path.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"vcGm3MsjnkOoyQwZR4N2","title":"Android real device","pathname":"/desktop-app/android-real-device","siteSpaceId":"sitesp_6PjiA","description":"Connect a real Android phone or tablet over USB — developer options, USB debugging, and the adb check that answers most problems.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"m1VD0qlavHhv6oYWiAP3","title":"iOS simulator setup","pathname":"/desktop-app/ios-simulator-setup","siteSpaceId":"sitesp_6PjiA","description":"Install Xcode, open it once, launch a simulator, and connect it to Drizz. What happens on the first connect.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"MC2EjnPorey32nxWREph","title":"iOS physical device","pathname":"/desktop-app/ios-physical-device","siteSpaceId":"sitesp_6PjiA","description":"Connect a real iPhone or iPad — developer mode, the Apple team picker, signing, and the free-account limits.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"rOgdyOBQsCOvPDqU0IFr","title":"Networks, proxies & preflight","pathname":"/desktop-app/networks-and-preflight","siteSpaceId":"sitesp_6PjiA","description":"Run the network preflight check, read its results, and work with corporate proxies and TLS inspection.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"4TR6jayAU4ONaaq6Wdvw","title":"Tour of the interface","pathname":"/desktop-app/interface-tour","siteSpaceId":"sitesp_6PjiA","description":"A map of the desktop app window — what each panel does and what each control means.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"rxxbXkiRO47BTKVlJMkZ","title":"Projects, tests & modules","pathname":"/desktop-app/projects-tests-and-modules","siteSpaceId":"sitesp_6PjiA","description":"How the file explorer organizes work — tests, modules, folders, the green M badge, and the Online/Local toggle.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"E1GfnGfJfYLBYVj8r9gk","title":"Report an issue","pathname":"/desktop-app/report-an-issue","siteSpaceId":"sitesp_6PjiA","description":"Report Issue bundles your logs, screenshots and device state and sends them to Drizz support in one click.","breadcrumbs":[{"label":"Desktop app"}]},{"id":"3nUw8u8kwiVJKAwh4JZa","title":"Drizz AI","pathname":"/writing-tests/chat","siteSpaceId":"sitesp_6PjiA","description":"Describe a flow in plain language and Drizz explores the app and writes the script for you. Android only, best under 25 steps.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"gtld3Y4Opi5xwkqoem4Z","title":"The shape of a test","pathname":"/writing-tests/writing-tests","siteSpaceId":"sitesp_6PjiA","description":"The structure of a Drizz test: one instruction per line, five beats, and the command palette that lists everything Drizz understands.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"tOwn3l4aEfybJuOcrp7J","title":"Command index","pathname":"/writing-tests/command-index","siteSpaceId":"sitesp_6PjiA","description":"Every command Drizz understands, in one table — syntax, what it does, and where the detail lives.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"d27nnpfmF71JEaTqASja","title":"Actions","pathname":"/writing-tests/tap","siteSpaceId":"sitesp_6PjiA","description":"Tap an element by describing it in plain English, and the six ways to describe it so only one element matches.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"fmEafMB0dQcmof1UPSdo","title":"Type","pathname":"/writing-tests/tap/type","siteSpaceId":"sitesp_6PjiA","description":"Enter text into a field. Drizz focuses the field, clears what's there, and dismisses the keyboard afterwards.","breadcrumbs":[{"label":"Writing tests"},{"label":"Actions"}]},{"id":"iVT5httbNhMFAZxSuOuq","title":"Validate","pathname":"/writing-tests/tap/validate","siteSpaceId":"sitesp_6PjiA","description":"Assert that something is true on screen — presence, state, numbers, or a value you captured earlier.","breadcrumbs":[{"label":"Writing tests"},{"label":"Actions"}]},{"id":"jLN1iZOjukUTycp1izVt","title":"Scroll","pathname":"/writing-tests/tap/scroll","siteSpaceId":"sitesp_6PjiA","description":"Scroll by a fixed amount, or scroll until a target comes into view. Quote the target, give a direction, validate afterwards.","breadcrumbs":[{"label":"Writing tests"},{"label":"Actions"}]},{"id":"1Glmb1RT149RLaMImgFg","title":"MAP_ACTION","pathname":"/writing-tests/tap/map-action","siteSpaceId":"sitesp_6PjiA","description":"Coordinate-based taps, drags and pinches for map surfaces, canvases and sliders — the least deterministic command in Drizz.","breadcrumbs":[{"label":"Writing tests"},{"label":"Actions"}]},{"id":"zKdcFjpjI2RcnV1dKT5U","title":"System commands","pathname":"/writing-tests/system-commands","siteSpaceId":"sitesp_6PjiA","description":"The nine commands that control the app lifecycle and the device — OPEN_APP, KILL_APP, CLEAR_APP and the rest, in one table.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"ZvXqPjs8xSPAZoh7A12r","title":"Waits & timing","pathname":"/writing-tests/waits-and-timing","siteSpaceId":"sitesp_6PjiA","description":"Drizz supports fixed-duration waits: where to put them, how to spell them, and why element-conditioned wording is not a substitute.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"Oeivxm4efPdtz01deJCa","title":"Conditionals","pathname":"/writing-tests/conditionals","siteSpaceId":"sitesp_6PjiA","description":"IF / ELSE IF / ELSE blocks let one script survive apps that show different screens to different users.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"ZFNpIL6ghiA6xGSY7MqS","title":"Variables & data","pathname":"/writing-tests/which-variable","siteSpaceId":"sitesp_6PjiA","description":"The four mechanisms that hold a value in Drizz — Store, SET, dataset variables and placeholders — compared in one table.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"IH55nOeZirs6dxVNXT7B","title":"Variables","pathname":"/writing-tests/which-variable/store-and-set","siteSpaceId":"sitesp_6PjiA","description":"Capture a value from the screen with Store, or assign one with SET. The four right-hand sides SET accepts, and what it rejects.","breadcrumbs":[{"label":"Writing tests"},{"label":"Variables & data"}]},{"id":"CsiV89Ddzx5dxM3QnXJQ","title":"Datasets","pathname":"/writing-tests/which-variable/datasets","siteSpaceId":"sitesp_6PjiA","description":"Datasets supply {{variable}} values from outside your script, bound when a test plan runs. Same script, different data.","breadcrumbs":[{"label":"Writing tests"},{"label":"Variables & data"}]},{"id":"DwytwMXHbHvEK4i4MMlA","title":"Lockable pools","pathname":"/writing-tests/which-variable/lockable-pools","siteSpaceId":"sitesp_6PjiA","description":"Lease test data that two runs can't share — logins, phone numbers, accounts. One row per run, released at the end.","breadcrumbs":[{"label":"Writing tests"},{"label":"Variables & data"}]},{"id":"92D9ohPqc6eyuPm4vkQJ","title":"Modules","pathname":"/writing-tests/modules","siteSpaceId":"sitesp_6PjiA","description":"Write a flow once and call it from every test. Module definition, CALL, parameters, and the limits that apply to them.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"jmLw5Bvdq3wPMMWtRzkY","title":"API","pathname":"/writing-tests/api-steps","siteSpaceId":"sitesp_6PjiA","description":"Call a registered API mid-test to seed data, fetch an expected value, or check the UI against the backend.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"wl2GqBAWrbDmrlNZGHGT","title":"Memory & Blockers","pathname":"/writing-tests/memory-and-blockers","siteSpaceId":"sitesp_6PjiA","description":"Memory is org-level context attached to your app. Blocker rules dismiss popups automatically, with no step in any script.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"IoGaVRlHyZqMKuvgITRb","title":"Authoring rules","pathname":"/writing-tests/authoring-rules","siteSpaceId":"sitesp_6PjiA","description":"The rule list for writing Drizz tests — what to do and what to avoid, with the reason each rule exists.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"WEu6vqEqV1UEDvyBp8lA","title":"Recipes","pathname":"/writing-tests/recipes","siteSpaceId":"sitesp_6PjiA","description":"Six complete, runnable Drizz tests — login, checkout, multi-app, mobile web, location and data-driven runs.","breadcrumbs":[{"label":"Writing tests"}]},{"id":"Hz2KuVwTW68L1pWMShr2","title":"Running locally","pathname":"/running-tests/running-locally","siteSpaceId":"sitesp_6PjiA","description":"Run a test on the device connected to your Mac, watch each step execute, and stop the run.","breadcrumbs":[{"label":"Running tests"}]},{"id":"vThWqLQMHIlnE1l3Avr6","title":"Test plans","pathname":"/running-tests/test-plans","siteSpaceId":"sitesp_6PjiA","description":"A test plan is a set of tests plus how to run them — devices, app build, dataset, concurrency and a quality gate.","breadcrumbs":[{"label":"Running tests"}]},{"id":"mTvzpIaTaOK29R3vkRV7","title":"Creating & Running a plan","pathname":"/running-tests/creating-and-running-a-plan","siteSpaceId":"sitesp_6PjiA","description":"Create a test plan, add tests, pick devices and data, set concurrency and a quality gate, run it, and read the run screen.","breadcrumbs":[{"label":"Running tests"}]},{"id":"VVqSsKwCSmcNlUyKnWkE","title":"Devices","pathname":"/running-tests/devices","siteSpaceId":"sitesp_6PjiA","description":"The three places a Drizz test runs — your Mac, the Drizz device cloud, or your org's private devices — and what happens when none is free.","breadcrumbs":[{"label":"Running tests"}]},{"id":"WhpvSc0GZjCheriEDXSF","title":"Self-healing","pathname":"/running-tests/self-healing","siteSpaceId":"sitesp_6PjiA","description":"When a step fails, Drizz repairs it mid-run instead of failing the whole test. Healed steps are badged in the report.","breadcrumbs":[{"label":"Running tests"}]},{"id":"4NRiHtnuovujdAZq5Ptr","title":"Caching","pathname":"/running-tests/caching","siteSpaceId":"sitesp_6PjiA","description":"Drizz reuses how it resolved a step on a screen it has seen before. Cached steps run faster and cost less.","breadcrumbs":[{"label":"Running tests"}]},{"id":"ZU3LdPdxSXGdTSz2gQPq","title":"Game mode","pathname":"/running-tests/game-mode","siteSpaceId":"sitesp_6PjiA","description":"Games don't expose a normal view hierarchy, so Drizz can run vision-only. Game mode is enabled per app by Drizz.","breadcrumbs":[{"label":"Running tests"}]},{"id":"qC96GvGE12idQRroobOL","title":"Reading a Report","pathname":"/reports-and-debugging/reading-a-report","siteSpaceId":"sitesp_6PjiA","description":"Every run produces a report — per-step screenshots, timestamped logs, a video recording and DT usage.","breadcrumbs":[{"label":"Reports & debugging"}]},{"id":"75PJpg9l527HNAFO85yu","title":"Statuses","pathname":"/reports-and-debugging/statuses","siteSpaceId":"sitesp_6PjiA","description":"What Passed, Passed (healed), Failed, Error and Blocked each mean, and why infrastructure failures now report as Error.","breadcrumbs":[{"label":"Reports & debugging"}]},{"id":"rEJqcs58GKC5MbH1NSX5","title":"When a step fails","pathname":"/reports-and-debugging/when-a-step-fails","siteSpaceId":"sitesp_6PjiA","description":"Triage procedure for a failed step, and the before-screenshot table that maps symptom to cause to fix.","breadcrumbs":[{"label":"Reports & debugging"}]},{"id":"Onl26mFWqJAl1AZpukq2","title":"Recordings","pathname":"/reports-and-debugging/recordings","siteSpaceId":"sitesp_6PjiA","description":"Every run is recorded end to end. Download the video, screenshots and logs from the Actions section of a test attempt.","breadcrumbs":[{"label":"Reports & debugging"}]},{"id":"8w7MpWz9VceDUKnAHjqa","title":"Troubleshooting","pathname":"/reports-and-debugging/troubleshooting","siteSpaceId":"sitesp_6PjiA","description":"Symptom to fix, in three tables: devices that won't connect, sign-in and network problems, and runs that misbehave.","breadcrumbs":[{"label":"Reports & debugging"}]},{"id":"dEuCJHrOmJ1OeLlmU0FD","title":"Organizations & Access","pathname":"/your-account/organizations-and-access","siteSpaceId":"sitesp_6PjiA","description":"How a Drizz organization is created, what is shared inside one, and what to do when files are missing after sign-in.","breadcrumbs":[{"label":"Your account"}]},{"id":"wO93UDumZZuCQ72kJzR0","title":"Billing & Tokens","pathname":"/your-account/billing-and-tokens","siteSpaceId":"sitesp_6PjiA","description":"How Drizz meters test runs in DT, what drives the cost of a step, what each wallet state means, and how to top up.","breadcrumbs":[{"label":"Your account"}]},{"id":"3KV2PPCyEF2ZYpbwIcYD","title":"Managing Apps","pathname":"/your-account/managing-apps","siteSpaceId":"sitesp_6PjiA","description":"Register app builds with Drizz so test plans and Memory can use them — the 500 MB cap, iOS build types, and what cannot be downloaded back.","breadcrumbs":[{"label":"Your account"}]},{"id":"c2aUnaHj5rO3el5cfrmL","title":"API Overview","pathname":"/automate-and-integrate/api-overview","siteSpaceId":"sitesp_6PjiA","description":"The Drizz REST API in one page — the auth model, the 24-hour token, rate limits, and the three calls that get a build running.","breadcrumbs":[{"label":"Automate & integrate"}]},{"id":"c9RiUjuMnW6vMnSmicmb","title":"Authenticate","pathname":"/automate-and-integrate/authenticate","siteSpaceId":"sitesp_6PjiA","description":"Exchange client credentials for a Drizz access token and send it on every API call. Tokens are valid for 24 hours.","breadcrumbs":[{"label":"Automate & integrate"}]},{"id":"wNsJIxhMoERQbjutAC61","title":"Upload a build","pathname":"/automate-and-integrate/upload-a-build","siteSpaceId":"sitesp_6PjiA","description":"Upload an app binary to Drizz over the API so test plans can run against it. Multipart form, one file, 500 MB cap.","breadcrumbs":[{"label":"Automate & integrate"}]},{"id":"wBdx7Zlzi6xQKAJEstD0","title":"Trigger a run","pathname":"/automate-and-integrate/trigger-a-run","siteSpaceId":"sitesp_6PjiA","description":"Start one test plan or a batch over the API. Returns an execution_id and nothing else — there is no status endpoint.","breadcrumbs":[{"label":"Automate & integrate"}]},{"id":"dPM3GcShCwBCIO5s5Ekj","title":"Errors & limits","pathname":"/automate-and-integrate/errors-and-limits","siteSpaceId":"sitesp_6PjiA","description":"Every status code the Drizz API returns, what each common failure means, and the rate limits to design around.","breadcrumbs":[{"label":"Automate & integrate"}]},{"id":"A6KYFlw6WBBa8ZPCXVbM","title":"CI/CD","pathname":"/automate-and-integrate/ci-cd","siteSpaceId":"sitesp_6PjiA","description":"Trigger Drizz test plans from GitHub Actions, Jenkins, GitLab CI and others — and what a pipeline cannot do yet.","breadcrumbs":[{"label":"Automate & integrate"}]},{"id":"GxjXzDwY1XsfQA2hUgDe","title":"Jira","pathname":"/automate-and-integrate/jira","siteSpaceId":"sitesp_6PjiA","description":"Create Jira issues from failed Drizz tests, and the shared-token attribution caveat that applies to every generated ticket.","breadcrumbs":[{"label":"Automate & integrate"}]},{"id":"aAEYzeJO16KYPamsz0Dv","title":"Glossary","pathname":"/reference/glossary","siteSpaceId":"sitesp_6PjiA","description":"Every Drizz term in one place — DT, Memory, modules, datasets, lockable pools, MAP_ACTION, Vision AI and the rest.","breadcrumbs":[{"label":"Reference"}]},{"id":"qBOSXOcELeUwsWd3yrot","title":"Known Limitations","pathname":"/reference/known-limitations","siteSpaceId":"sitesp_6PjiA","description":"What Drizz doesn't do — platform gaps, language limits, Chat's scope, the accessibility boundary, and what's missing from the API.","breadcrumbs":[{"label":"Reference"}]},{"id":"F6JFQiIVgEzlFqUDdwwL","title":"Changelog","pathname":"/reference/changelog","siteSpaceId":"sitesp_6PjiA","description":"User-visible changes to Drizz, newest first — new features, changed behavior, and anything affecting tests already written.","breadcrumbs":[{"label":"Reference"}]}]}