Commands and AI instructions available for test steps
Test steps in MobileBoost can be either command-based or AI-powered. Command-based steps execute directly against the UI hierarchy for fast, deterministic results. AI instructions use natural language and are more flexible, handling complex or non-standard interactions. If a command-based step fails at runtime, the AI automatically takes over as a fallback.
Command-based steps
Command-based steps run directly without AI, resulting in faster execution and lower cost. AI is only used as a backup when unexpected elements appear, such as popups, notifications, UI changes, or missing element IDs.Commands can be created manually or generated automatically using the test recorder.
WebView automation through commands currently has limited support. Use AI instructions for WebView interactions instead.
Gestures
Command
Description
Tap
Tap on an element by ID or text
Type
Type text into a field
Scroll (up/down)
Scroll in a direction
Scroll down until visible
Scroll down until a specific element or text appears
Scroll up until visible
Scroll up until a specific element or text appears
Swipe (left/right)
Swipe in a direction
Slide (left/right/up/down)
Slide a specific element in a direction by a percentage
Long press (by text)
Long press on an element identified by text
Long press (by ID)
Long press on an element identified by ID
Remove text
Clear text from an input field
Wait
Wait for a specified duration
Navigation
Command
Description
Navigate to screen
Navigate to a specific screen in the app
Open deep link
Open a deep link URL on the device
Launch app by ID
Launch a specific app by its bundle/package ID
Press Android back button
Press the system back button (Android only)
Restart app
Close and relaunch the app
Assertions
Command
Description
Assert visibility (element ID)
Verify that an element with a specific ID is visible
Assert visibility (text)
Verify that specific text is visible on screen
Detect audio playback
Verify that audio is currently playing
Device actions
Command
Description
Set location
Set the device GPS location
Shake device
Simulate a device shake (iOS only)
Match biometry
Simulate a biometric authentication match
Network
Command
Description
Execute cURL request
Run an HTTP request via cURL
Execute network call by selector
Make a network call and extract data using a JSON selector
Email
Command
Description
Verify email
Check for an email and follow a link matching a pattern
AI instructions
AI instructions use natural language to describe the action. They handle more complex scenarios and are the recommended approach for WebViews, visual assertions, and flows that are difficult to express as commands.
Instruction
Description
Example
Tap on
Taps on a specified element, text, or icon
Tap on "Login"
Type
Types out specified text
Type "hello@example.com"
Scroll
Scrolls up or down
Scroll down, one screen at a time, until you see "Settings"
Swipe
Swipes in a chosen direction
Swipe left on the screen
Slide
Slides a specified element in a direction
Slide right, by 50% on the volume slider
Check
Verifies an element or text is visible (fails the test if not)
Check that you are on a screen that displays "Welcome"
If / Otherwise
Conditional logic based on screen state
If "Accept" is displayed, tap on it, otherwise continue to the next step
RemoveText
Removes existing text from an input field
RemoveText: old value
Remember
Stores a value for use in later steps
Remember the code visible on the screen then later Type the remembered code
Task Complete
Succeeds the test when a condition is met
Task Complete: when "Order confirmed" is visible
Error Detected
Fails the test when a condition is met
Error Detected: when "Error" is visible on the screen
Enables visual assertions and actions based on visual cues
withVision: Verify the background color is red or withVision: Tap on any red Live button
Continue with next step
Skips to the next step
Continue with next step
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"MobileBoost","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/mobileboost-321ad6a9/OGuA69W71_lGnu9x/logo/light.png?fit=max\u0026auto=format\u0026n=OGuA69W71_lGnu9x\u0026q=85\u0026s=b6a6cc5ef5708fb7e589eb22c4e758e5","dark":"https://mintcdn.com/mobileboost-321ad6a9/BUpecZhwuqipr6rG/logo/dark.png?fit=max\u0026auto=format\u0026n=BUpecZhwuqipr6rG\u0026q=85\u0026s=fa051814a401e3fac77cd87f86f198b5"},"favicon":"https://mintcdn.com/mobileboost-321ad6a9/6v1OHjEJe7b4HZwT/favicon.png?fit=max\u0026auto=format\u0026n=6v1OHjEJe7b4HZwT\u0026q=85\u0026s=f0fa31f2c8ddd8d4e252cd3702d4f0c4","api":{"playground":{"display":"interactive"}},"footer":{"socials":{}},"seo":{},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mobileboost-321ad6a9","hasAudioNarration":false,"actualSubdomain":"mobileboost-321ad6a9","customDomains":["docs.mobileboost.io"],"gitSource":{"type":"github","owner":"mobileboosthq","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{},"buildId":"6af450ddbc2b4cf012828780","clientVersion":"0.0.4131","searchFilterCounts":[{"language":"default","tag":"Local Tooling","count":21},{"language":"default","tag":"API","count":19},{"language":"default","tag":"SDK","count":18},{"language":"default","tag":"Test Agent","count":15},{"language":"default","tag":"QA Studio","count":14},{"language":"default","tag":"Appium","count":11},{"language":"default","tag":"No-code test editor","count":7},{"language":"default","tag":"Test execution","count":7},{"language":"default","tag":"Tests","count":6},{"language":"default","tag":"Folders","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"changelog.css","content":".changelog-filters{display:flex;flex-wrap:wrap;gap:0.5rem;margin:1.5rem 0 2rem}.changelog-chip{padding:0.25rem 0.75rem;font-size:0.8125rem;line-height:1.4;border-radius:9999px;border:1px solid rgb(229 231 235);background:transparent;color:rgb(75 85 99);cursor:pointer;transition:background-color 0.12s ease, color 0.12s ease, border-color 0.12s ease}.changelog-chip:hover{background:rgb(243 244 246);color:rgb(17 24 39)}.changelog-chip.is-active{background:#16a34a;background:rgb(var(--primary));border-color:#16a34a;border-color:rgb(var(--primary));color:#fff}.changelog-list{border-top:1px solid rgb(229 231 235)}.changelog-row{display:block;padding:1rem 0.75rem;margin:0 -0.75rem;border-bottom:1px solid rgb(229 231 235);text-decoration:none!important;color:inherit;border-radius:0.375rem;transition:background-color 0.12s ease}.changelog-row:hover{background:rgb(249 250 251)}.changelog-row-head{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem}.changelog-row-title{font-weight:600;font-size:1rem;line-height:1.5;color:rgb(17 24 39)}.changelog-row:hover .changelog-row-title{color:#16a34a;color:rgb(var(--primary))}.changelog-row-date{flex:none;font-size:0.8125rem;color:rgb(107 114 128);white-space:nowrap}.changelog-row-desc{margin:0.25rem 0 0;font-size:0.875rem;font-weight:400;line-height:1.6;color:rgb(107 114 128);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.changelog-meta{display:flex;flex-wrap:wrap;align-items:center;gap:0.75rem;margin-bottom:2rem;font-size:0.8125rem;color:rgb(107 114 128)}.changelog-meta span{padding:0.125rem 0.5rem;border-radius:9999px;background:rgb(243 244 246);color:rgb(75 85 99)}.changelog-back{margin-top:3rem;padding-top:1.5rem;border-top:1px solid rgb(229 231 235);font-size:0.875rem}.changelog-back p{margin:0}.changelog-back a::before{content:\"\\2190\\00a0\"}.dark .changelog-chip{border-color:rgb(55 65 81);color:rgb(156 163 175)}.dark .changelog-chip:hover{background:rgb(31 41 55);color:rgb(243 244 246)}.dark .changelog-chip.is-active{color:#fff}.dark .changelog-list,.dark .changelog-row,.dark .changelog-back{border-color:rgb(38 45 58)}.dark .changelog-row:hover{background:rgb(24 30 40)}.dark .changelog-row-title{color:rgb(243 244 246)}.dark .changelog-row-date,.dark .changelog-row-desc,.dark .changelog-meta{color:rgb(148 156 168)}.dark .changelog-meta span{background:rgb(31 41 55);color:rgb(203 213 225)}@media (max-width: 640px){.changelog-row-head{display:block}.changelog-row-date{display:block;margin-top:0.25rem}}.changelog-pager{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:2rem;flex-wrap:wrap}.changelog-pager-pages{display:flex;gap:0.25rem;flex-wrap:wrap}.changelog-pager-step,.changelog-pager-page{min-width:2rem;padding:0.3rem 0.75rem;font-size:0.8125rem;line-height:1.4;border-radius:0.375rem;border:1px solid rgb(229 231 235);background:transparent;color:rgb(75 85 99);cursor:pointer;transition:background-color 0.12s ease, color 0.12s ease, border-color 0.12s ease}.changelog-pager-step:hover:not(:disabled),.changelog-pager-page:hover:not(.is-active){background:rgb(243 244 246);color:rgb(17 24 39)}.changelog-pager-step:disabled{opacity:0.4;cursor:default}.changelog-pager-page.is-active{background:#16a34a;background:rgb(var(--primary));border-color:#16a34a;border-color:rgb(var(--primary));color:#fff}.dark .changelog-pager-step,.dark .changelog-pager-page{border-color:rgb(55 65 81);color:rgb(156 163 175)}.dark .changelog-pager-step:hover:not(:disabled),.dark .changelog-pager-page:hover:not(.is-active){background:rgb(31 41 55);color:rgb(243 244 246)}.dark .changelog-pager-page.is-active{color:#fff}"}],"page":{"pagePath":"qa-studio/supported-instructions","slug":"/qa-studio/supported-instructions","pageMetadata":{"title":"Supported instructions","description":"Commands and AI instructions available for test steps","href":"/qa-studio/supported-instructions"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Commands and AI instructions available for test steps\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Note,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Test steps in MobileBoost can be either `,_jsx(_components.strong,{children:`command-based`}),` or `,_jsx(_components.strong,{children:`AI-powered`}),`. Command-based steps execute directly against the UI hierarchy for fast, deterministic results. AI instructions use natural language and are more flexible, handling complex or non-standard interactions. If a command-based step fails at runtime, the AI automatically takes over as a fallback.`]}),`\n`,_jsx(Heading,{level:`2`,id:`command-based-steps`,children:`Command-based steps`}),`\n`,_jsx(_components.p,{children:`Command-based steps run directly without AI, resulting in faster execution and lower cost. AI is only used as a backup when unexpected elements appear, such as popups, notifications, UI changes, or missing element IDs.`}),`\n`,_jsxs(_components.p,{children:[`Commands can be created manually or generated automatically using the `,_jsx(_components.a,{href:`/qa-studio/test-recorder`,children:`test recorder`}),`.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`WebView automation through commands currently has limited support. Use AI instructions for WebView interactions instead.`})}),`\n`,_jsx(Heading,{level:`3`,id:`gestures`,children:`Gestures`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Command`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Tap`}),_jsx(_components.td,{children:`Tap on an element by ID or text`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Type`}),_jsx(_components.td,{children:`Type text into a field`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Scroll (up/down)`}),_jsx(_components.td,{children:`Scroll in a direction`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Scroll down until visible`}),_jsx(_components.td,{children:`Scroll down until a specific element or text appears`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Scroll up until visible`}),_jsx(_components.td,{children:`Scroll up until a specific element or text appears`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Swipe (left/right)`}),_jsx(_components.td,{children:`Swipe in a direction`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Slide (left/right/up/down)`}),_jsx(_components.td,{children:`Slide a specific element in a direction by a percentage`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Long press (by text)`}),_jsx(_components.td,{children:`Long press on an element identified by text`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Long press (by ID)`}),_jsx(_components.td,{children:`Long press on an element identified by ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Remove text`}),_jsx(_components.td,{children:`Clear text from an input field`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Wait`}),_jsx(_components.td,{children:`Wait for a specified duration`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`navigation`,children:`Navigation`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Command`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Navigate to screen`}),_jsx(_components.td,{children:`Navigate to a specific screen in the app`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Open deep link`}),_jsx(_components.td,{children:`Open a deep link URL on the device`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Launch app by ID`}),_jsx(_components.td,{children:`Launch a specific app by its bundle/package ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Press Android back button`}),_jsx(_components.td,{children:`Press the system back button (Android only)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Restart app`}),_jsx(_components.td,{children:`Close and relaunch the app`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`assertions`,children:`Assertions`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Command`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Assert visibility (element ID)`}),_jsx(_components.td,{children:`Verify that an element with a specific ID is visible`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Assert visibility (text)`}),_jsx(_components.td,{children:`Verify that specific text is visible on screen`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Detect audio playback`}),_jsx(_components.td,{children:`Verify that audio is currently playing`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`device-actions`,children:`Device actions`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Command`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Set location`}),_jsx(_components.td,{children:`Set the device GPS location`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Shake device`}),_jsx(_components.td,{children:`Simulate a device shake (iOS only)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Match biometry`}),_jsx(_components.td,{children:`Simulate a biometric authentication match`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`network`,children:`Network`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Command`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Execute cURL request`}),_jsx(_components.td,{children:`Run an HTTP request via cURL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Execute network call by selector`}),_jsx(_components.td,{children:`Make a network call and extract data using a JSON selector`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`email`,children:`Email`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Command`}),_jsx(_components.th,{children:`Description`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Verify email`}),_jsx(_components.td,{children:`Check for an email and follow a link matching a pattern`})]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`ai-instructions`,children:`AI instructions`}),`\n`,_jsx(_components.p,{children:`AI instructions use natural language to describe the action. They handle more complex scenarios and are the recommended approach for WebViews, visual assertions, and flows that are difficult to express as commands.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Instruction`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`Example`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Tap on`}),_jsx(_components.td,{children:`Taps on a specified element, text, or icon`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Tap on \"Login\"`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Type`}),_jsx(_components.td,{children:`Types out specified text`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Type \"hello@example.com\"`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Scroll`}),_jsx(_components.td,{children:`Scrolls up or down`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Scroll down, one screen at a time, until you see \"Settings\"`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Swipe`}),_jsx(_components.td,{children:`Swipes in a chosen direction`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Swipe left on the screen`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Slide`}),_jsx(_components.td,{children:`Slides a specified element in a direction`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Slide right, by 50% on the volume slider`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Check`}),_jsx(_components.td,{children:`Verifies an element or text is visible (fails the test if not)`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Check that you are on a screen that displays \"Welcome\"`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`If / Otherwise`}),_jsx(_components.td,{children:`Conditional logic based on screen state`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`If \"Accept\" is displayed, tap on it, otherwise continue to the next step`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`RemoveText`}),_jsx(_components.td,{children:`Removes existing text from an input field`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`RemoveText: old value`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Remember`}),_jsx(_components.td,{children:`Stores a value for use in later steps`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`Remember the code visible on the screen`}),` then later `,_jsx(_components.code,{children:`Type the remembered code`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Task Complete`}),_jsx(_components.td,{children:`Succeeds the test when a condition is met`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Task Complete: when \"Order confirmed\" is visible`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Error Detected`}),_jsx(_components.td,{children:`Fails the test when a condition is met`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Error Detected: when \"Error\" is visible on the screen`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Execute: network request`}),_jsx(_components.td,{children:`Performs an HTTP request`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Execute: network request GET;url=...;json selector=...`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Open Deeplink`}),_jsx(_components.td,{children:`Opens a deep link on the device`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Open Deeplink: myapp://settings`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Double Tap`}),_jsx(_components.td,{children:`Taps twice on an element`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Double tap on \"Like\"`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Tap in sequence`}),_jsx(_components.td,{children:`Fast taps multiple times on an element`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Tap in sequence 7 times on \"+\"`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Long Press`}),_jsx(_components.td,{children:`Holds down on an element`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Long Press on \"Message\"`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Press Enter`}),_jsx(_components.td,{children:`Presses the Enter key`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Press Enter`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Go to Device Home Screen`}),_jsx(_components.td,{children:`Navigates to the device home screen`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Go to Device Home Screen`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Shake the device`}),_jsx(_components.td,{children:`Shakes the device (iOS only)`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Shake the device`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Verify Email`}),_jsx(_components.td,{children:`Checks email and follows a link`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Verify email: email=test@example.com;link_pattern=verify`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`withVision`}),_jsx(_components.td,{children:`Enables visual assertions and actions based on visual cues`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`withVision: Verify the background color is red`}),` or `,_jsx(_components.code,{children:`withVision: Tap on any red Live button`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Continue with next step`}),_jsx(_components.td,{children:`Skips to the next step`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`Continue with next step`})})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Supported instructions","description":"Commands and AI instructions available for test steps","href":"/qa-studio/supported-instructions"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Command-based steps","slug":"command-based-steps","depth":2,"children":[{"title":"Gestures","slug":"gestures","depth":3,"children":[]},{"title":"Navigation","slug":"navigation","depth":3,"children":[]},{"title":"Assertions","slug":"assertions","depth":3,"children":[]},{"title":"Device actions","slug":"device-actions","depth":3,"children":[]},{"title":"Network","slug":"network","depth":3,"children":[]},{"title":"Email","slug":"email","depth":3,"children":[]}]},{"title":"AI instructions","slug":"ai-instructions","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"mobileboost-321ad6a9","siteName":"MobileBoost","title":"Supported instructions - MobileBoost","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-01T22:28:35.732Z","originalFileLocation":"qa-studio/supported-instructions.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Commands and AI instructions available for test steps\">\u003cmeta data-mint-head name=\"application-name\" content=\"MobileBoost\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mobileboost-321ad6a9/OkIIS1ivp_fMe1gq/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/mobileboost-321ad6a9/OkIIS1ivp_fMe1gq/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mobileboost-321ad6a9/OkIIS1ivp_fMe1gq/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mobileboost-321ad6a9/OkIIS1ivp_fMe1gq/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mobileboost-321ad6a9/OkIIS1ivp_fMe1gq/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mobileboost-321ad6a9/OkIIS1ivp_fMe1gq/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mobileboost-321ad6a9/OkIIS1ivp_fMe1gq/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/mobileboost-321ad6a9/OkIIS1ivp_fMe1gq/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/mobileboost-321ad6a9/OkIIS1ivp_fMe1gq/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Supported instructions - MobileBoost\">\u003cmeta data-mint-head property=\"og:description\" content=\"Commands and AI instructions available for test steps\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"MobileBoost\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mobileboost.io/qa-studio/supported-instructions\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mobileboost-321ad6a9.mintlify.site/_mintlify/api/og/v2?division=No-code+test+editor\u0026amp;title=Supported+instructions\u0026amp;description=Commands+and+AI+instructions+available+for+test+steps\u0026amp;theme=9bbbaeabc0a28eadb8dda608\u0026amp;signature=6b637d83da1609f0ad8ae465303bb88bfeb1b00b43a659b8650afebf39604056\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Supported instructions - MobileBoost\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Commands and AI instructions available for test steps\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mobileboost-321ad6a9.mintlify.site/_mintlify/api/og/v2?division=No-code+test+editor\u0026amp;title=Supported+instructions\u0026amp;description=Commands+and+AI+instructions+available+for+test+steps\u0026amp;theme=9bbbaeabc0a28eadb8dda608\u0026amp;signature=6b637d83da1609f0ad8ae465303bb88bfeb1b00b43a659b8650afebf39604056\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/mobileboost-321ad6a9/OkIIS1ivp_fMe1gq/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"MobileBoost\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mobileboost.io/qa-studio/supported-instructions\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/qa-studio/supported-instructions.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mobileboost.io/#organization\",\"name\":\"MobileBoost\",\"url\":\"https://docs.mobileboost.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mobileboost-321ad6a9/OGuA69W71_lGnu9x/logo/light.png?fit=max\u0026auto=format\u0026n=OGuA69W71_lGnu9x\u0026q=85\u0026s=b6a6cc5ef5708fb7e589eb22c4e758e5\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mobileboost.io#website\",\"name\":\"MobileBoost\",\"url\":\"https://docs.mobileboost.io\",\"publisher\":{\"@id\":\"https://docs.mobileboost.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mobileboost.io/qa-studio/supported-instructions#webpage\",\"url\":\"https://docs.mobileboost.io/qa-studio/supported-instructions\",\"name\":\"Supported instructions\",\"description\":\"Commands and AI instructions available for test steps\",\"dateModified\":\"2026-04-01T22:28:35.732Z\",\"isPartOf\":{\"@id\":\"https://docs.mobileboost.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mobileboost.io/qa-studio/supported-instructions#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mobileboost.io/qa-studio/supported-instructions#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"No-code test editor\",\"item\":\"https://docs.mobileboost.io/qa-studio/ondemand-device\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Supported instructions\",\"item\":\"https://docs.mobileboost.io/qa-studio/supported-instructions\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.mobileboost.io/qa-studio/supported-instructions#article\",\"headline\":\"Supported instructions\",\"name\":\"Supported instructions\",\"description\":\"Commands and AI instructions available for test steps\",\"url\":\"https://docs.mobileboost.io/qa-studio/supported-instructions\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mobileboost.io/qa-studio/supported-instructions#webpage\"},\"dateModified\":\"2026-04-01T22:28:35.732Z\",\"publisher\":{\"@id\":\"https://docs.mobileboost.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mobileboost.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"MobileBoost\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"MobileBoost\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/qa-studio/supported-instructions.md","siteName":"MobileBoost","nav":{"global":null,"tabs":[{"tab":"Test Agent","icon":"robot","pages":[{"title":"Test Agent","href":"/test-agent/overview"}]},{"tab":"Local Tooling","icon":"code","pages":[{"title":"Local Tooling","href":"/engineer-tooling/overview"}]},{"tab":"QA Studio","icon":"flask-vial","groups":[{"group":"Builds","pages":[{"title":"Requirements","href":"/qa-studio/build-requirements"},{"title":"GitHub Actions","href":"/qa-studio/github-actions"}]},{"group":"Test cases","pages":[{"title":"Overview","href":"/qa-studio/overview"},{"title":"Maintaining tests","href":"/qa-studio/maintaining-tests"}]},{"group":"No-code test editor","pages":[{"title":"Cloud devices","href":"/qa-studio/ondemand-device"},{"title":"Test recorder","description":"Record user interactions to automatically generate test steps","href":"/qa-studio/test-recorder"},{"title":"Supported instructions","href":"/qa-studio/supported-instructions"},{"title":"Available commands","description":"Local commands available in the no-code test editor","href":"/qa-studio/available-commands"},{"title":"Launch parameters","href":"/qa-studio/launch-parameters"},{"title":"Environment variables","href":"/qa-studio/environment-variables"},{"title":"Network requests","href":"/qa-studio/network-requests"}]},{"group":"Test results","pages":[{"title":"Artifacts","href":"/qa-studio/artifacts"},{"title":"Slack notifications","href":"/qa-studio/slack-reports"},{"title":"Webhooks","href":"/qa-studio/webhook"}]}]},{"tab":"API","icon":"square-terminal","pages":[{"title":"API","href":"/api/getting-started"}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Supported instructions - MobileBoost","buildId":"dpl_5joLUXmnJgwqjrHAS4dxZrQTdxgh","deploymentId":"dpl_5joLUXmnJgwqjrHAS4dxZrQTdxgh","dynamics":[],"chunks":[]}