FinalRun: AI-powered Android and iOS test automation
Let Claude Code, Cursor, or Codex write, run, and fix Android and iOS tests for you in plain English.
FinalRun lets you test Android and iOS apps with natural language. You describe scenarios in plain English, and AI agent skills for Claude Code, Cursor, and Codex turn them into YAML test cases. FinalRun then launches your app on a real device, emulator, or simulator and uses an AI model to see the screen and perform each action — tapping, swiping, typing, and verifying results. When the run finishes, you get a pass/fail report with video, screenshots, and device logs. Watch a full run below.
Install the FinalRun CLI on macOS, Linux, or Windows and verify your host.
⌘I
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"FinalRun","colors":{"primary":"#3f4fe8","light":"#d0a7f7","dark":"#6c4cfc"},"logo":{"light":"https://mintcdn.com/finalrun-b48292a0/V0Wl2ejfM3RK3zk3/logo/finalrun-logo.png?fit=max\u0026auto=format\u0026n=V0Wl2ejfM3RK3zk3\u0026q=85\u0026s=a300a2660268bff88e26033f96a49771","dark":"https://mintcdn.com/finalrun-b48292a0/V0Wl2ejfM3RK3zk3/logo/finalrun-logo-dark-theme.png?fit=max\u0026auto=format\u0026n=V0Wl2ejfM3RK3zk3\u0026q=85\u0026s=34adb5050f18f444314f2397cc34c57b"},"favicon":"https://media.brand.dev/31164f48-397c-4036-929b-8153e11d15c1.jpg","navbar":{"primary":{"type":"github","href":"https://github.com/final-run/finalrun-agent"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"finalrun-b48292a0","hasAudioNarration":false,"actualSubdomain":"finalrun-b48292a0","customDomains":["docs.finalrun.app"],"gitSource":{"type":"github","owner":"final-run","repo":"finalrun-agent","deployBranch":"main","contentDirectory":"mintlify-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21dd364aebf57141debc2b","collectionId":"3c42d3f8-551f-4fdf-b011-5b158550ab11","schemaVersion":"v2"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a21dd364aebf57141debc2b:success","clientVersion":"0.0.3894","searchFilterCounts":[{"language":"default","tag":"Docs","count":15},{"language":"default","tag":"Configuration","count":4},{"language":"default","tag":"Get Started","count":3},{"language":"default","tag":"Running Tests","count":3},{"language":"default","tag":"Writing Tests","count":3},{"language":"default","tag":"Help","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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":"editor-v7-file-tree","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":"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":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-branches-v2-autocommit","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2","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":"editor-private-page-search","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":"teamspace","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","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":"byok-sep-25","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":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"client-snapshot-docs-config","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"index","slug":"/","pageMetadata":{"title":"FinalRun: AI-powered Android and iOS test automation","sidebarTitle":"Introduction","description":"Let Claude Code, Cursor, or Codex write, run, and fix Android and iOS tests for you in plain English.","href":"/index"},"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: \"Let Claude Code, Cursor, or Codex write, run, and fix Android and iOS tests for you in plain English.\"\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`,p:`p`,..._provideComponents(),...props.components},{Card,Heading,OptimizedFrame}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedFrame)_missingMdxReference(`OptimizedFrame`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`FinalRun lets you test Android and iOS apps with natural language. You describe scenarios in plain English, and `,_jsx(_components.a,{href:`/running/ai-agent-skills`,children:`AI agent skills`}),` for Claude Code, Cursor, and Codex turn them into YAML test cases. FinalRun then launches your app on a real device, emulator, or simulator and uses an AI model to see the screen and perform each action — tapping, swiping, typing, and verifying results. When the run finishes, you get a pass/fail report with video, screenshots, and device logs. Watch a full run below.`]}),`\n`,_jsx(OptimizedFrame,{className:`mint-w-full mint-aspect-video mint-rounded-xl`,src:`https://www.youtube.com/embed/tG8sRh_XJRw`,title:`FinalRun demo`,frameBorder:`0`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture`,allowFullScreen:true}),`\n`,_jsx(Heading,{level:`2`,id:`get-started`,children:`Get started`}),`\n`,_jsx(Card,{title:`Installation`,icon:`download`,href:`/installation`,children:_jsx(_components.p,{children:`Install the FinalRun CLI on macOS, Linux, or Windows and verify your host.`})})]})}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":"FinalRun: AI-powered Android and iOS test automation","sidebarTitle":"Introduction","description":"Let Claude Code, Cursor, or Codex write, run, and fix Android and iOS tests for you in plain English.","href":"/index"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Get started","slug":"get-started","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-aspect-video {\n aspect-ratio: 16 / 9\n}\n.mint-w-full {\n width: 100%\n}\n.mint-rounded-xl {\n border-radius: 0.75rem\n}","subdomain":"finalrun-b48292a0","siteName":"FinalRun","title":"FinalRun: AI-powered Android and iOS test automation - FinalRun","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-30T00:29:16.735Z","originalFileLocation":"index.mdx"},"headHtml":"\u003cmeta data-mint-head name=\"description\" content=\"Let Claude Code, Cursor, or Codex write, run, and fix Android and iOS tests for you in plain English.\">\u003cmeta data-mint-head name=\"application-name\" content=\"FinalRun\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/jpeg\" sizes=\"180x180\" href=\"https://media.brand.dev/31164f48-397c-4036-929b-8153e11d15c1.jpg\">\u003clink data-mint-head rel=\"icon\" type=\"image/jpeg\" sizes=\"32x32\" href=\"https://media.brand.dev/31164f48-397c-4036-929b-8153e11d15c1.jpg\">\u003clink data-mint-head rel=\"icon\" type=\"image/jpeg\" sizes=\"16x16\" href=\"https://media.brand.dev/31164f48-397c-4036-929b-8153e11d15c1.jpg\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/jpeg\" href=\"https://media.brand.dev/31164f48-397c-4036-929b-8153e11d15c1.jpg\">\u003cmeta data-mint-head property=\"og:title\" content=\"FinalRun: AI-powered Android and iOS test automation - FinalRun\">\u003cmeta data-mint-head property=\"og:description\" content=\"Let Claude Code, Cursor, or Codex write, run, and fix Android and iOS tests for you in plain English.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FinalRun\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.finalrun.app\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"FinalRun: AI-powered Android and iOS test automation - FinalRun\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Let Claude Code, Cursor, or Codex write, run, and fix Android and iOS tests for you in plain English.\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/finalrun-b48292a0/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FinalRun\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3f4fe8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.finalrun.app\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/index.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.finalrun.app/#organization\",\"name\":\"FinalRun\",\"url\":\"https://docs.finalrun.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/finalrun-b48292a0/V0Wl2ejfM3RK3zk3/logo/finalrun-logo.png?fit=max\u0026auto=format\u0026n=V0Wl2ejfM3RK3zk3\u0026q=85\u0026s=a300a2660268bff88e26033f96a49771\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.finalrun.app#website\",\"name\":\"FinalRun\",\"url\":\"https://docs.finalrun.app\",\"publisher\":{\"@id\":\"https://docs.finalrun.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.finalrun.app/#webpage\",\"url\":\"https://docs.finalrun.app/\",\"name\":\"FinalRun: AI-powered Android and iOS test automation\",\"description\":\"Let Claude Code, Cursor, or Codex write, run, and fix Android and iOS tests for you in plain English.\",\"dateModified\":\"2026-04-30T00:29:16.735Z\",\"isPartOf\":{\"@id\":\"https://docs.finalrun.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.finalrun.app/#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.finalrun.app/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Get Started\",\"item\":\"https://docs.finalrun.app/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FinalRun: AI-powered Android and iOS test automation\",\"item\":\"https://docs.finalrun.app/\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.finalrun.app/#article\",\"headline\":\"FinalRun: AI-powered Android and iOS test automation\",\"name\":\"FinalRun: AI-powered Android and iOS test automation\",\"description\":\"Let Claude Code, Cursor, or Codex write, run, and fix Android and iOS tests for you in plain English.\",\"url\":\"https://docs.finalrun.app/\",\"mainEntityOfPage\":{\"@id\":\"https://docs.finalrun.app/#webpage\"},\"dateModified\":\"2026-04-30T00:29:16.735Z\",\"publisher\":{\"@id\":\"https://docs.finalrun.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.finalrun.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FinalRun\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FinalRun","nav":{"global":null,"tabs":[{"tab":"Docs","groups":[{"group":"Get Started","pages":[{"title":"FinalRun: AI-powered Android and iOS test automation","sidebarTitle":"Introduction","href":""},{"title":"Install FinalRun on macOS, Linux, or Windows","sidebarTitle":"Installation","description":"Run the one-line installer for your OS and verify your host with finalrun doctor.","href":"/installation"},{"title":"Quickstart: write your first FinalRun test from your AI coding agent","sidebarTitle":"Quickstart","href":"/quickstart"}]},{"group":"Writing Tests","pages":[{"title":"FinalRun YAML test format: fields, phases, examples","sidebarTitle":"YAML Format","href":"/tests/yaml-format"},{"title":"FinalRun suite manifests: run groups of tests together","sidebarTitle":"Suites","href":"/tests/suites"},{"title":"Inject secrets and variables into FinalRun test specs","sidebarTitle":"Placeholders","href":"/tests/placeholders"}]},{"group":"Configuration","pages":[{"title":"FinalRun workspace config: app identity and defaults","sidebarTitle":"Workspace","href":"/configuration/workspace"},{"title":"FinalRun environments: secrets, variables, and overrides","sidebarTitle":"Environments","href":"/configuration/environments"},{"title":"Connect FinalRun to Google, OpenAI, or Anthropic AI","sidebarTitle":"AI Providers","href":"/configuration/ai-providers"},{"title":"Get your FinalRun Cloud API key","sidebarTitle":"Cloud API Key","href":"/configuration/cloud-api-key"}]},{"group":"Running Tests","pages":[{"title":"FinalRun CLI reference: all commands, flags, and options","sidebarTitle":"CLI Reference","href":"/running/cli-reference"},{"title":"FinalRun AI agent skills: generate, run, and fix tests","sidebarTitle":"AI Agent Skills","href":"/running/ai-agent-skills"},{"title":"FinalRun test reports: browse artifacts, video, and logs","sidebarTitle":"Reports","href":"/running/reports"}]},{"group":"Help","pages":[{"title":"Troubleshoot FinalRun: common errors and device setup","sidebarTitle":"Troubleshooting","href":"/troubleshooting"},{"title":"FinalRun FAQ: accounts, AI providers, pricing, and CI/CD","sidebarTitle":"FAQ","href":"/faq"}]}]}]},"title":"FinalRun: AI-powered Android and iOS test automation - FinalRun","buildId":"dpl_8LJVMfxYNq6LJkohTrn2iyWT8umj","deploymentId":"dpl_8LJVMfxYNq6LJkohTrn2iyWT8umj","dynamics":[],"chunks":[]}