{"slug": "maestro-agentic-mobile-ui-testing", "title": "Maestro: Agentic Mobile UI Testing", "summary": "Mobile Dev Inc. released Maestro, an open-source, AI-native mobile UI testing tool that enables agentic velocity with human-readable YAML tests and easy CI integration. The tool, battle-tested and time-tested, allows developers to generate deterministic end-to-end tests and close the agentic loop using its AI toolkit.", "body_md": "AGENTIC UI TESTING\n\n# Go ahead.Code at 150mph.\n\nMaestro is mobile UI testing at agentic velocity. Open source, human-readable code, easy CI integrations, and powerful CLI and desktop apps.\n\nMaestro in action\n\nFeatures\n\n### Battle-tested, AI-native\n\nRobust, open-source, time-tested - and now fully primed for human+AI development.\n\n#### Close the agentic loop\n\nUnlock high-velocity mobile development by powering up your agents with Maestro's AI toolkit.\n\n> write Maestro tests for the new settings screen, including setting/testing each setting within\n\nwith full test plan, pls\n\n● Let me look at the live screen and existing Maestro tests to understand what needs testing.\n\nRead emulator screen hierarchy, searched for 1 pattern, read 4 files, listed 1 directory\n\n● Now I have a clear picture of the settings screen. Let me write a suite of focused Maestro tests.\n\n---\n\nHere are the tests I propose:\n\nStructure / Smoke\n\n1. settings_sections_visible - scroll through the full screen and assert every section header is present\n\nContent Correctness\n\n2. settings_about_shows_version - About section shows Version and Build rows\n\n3. settings_voice_section_no_api_key - voice section shows no voices loaded\n\nPickers\n\n4. settings_sample_rate_picker - verify sample rate options\n\n5. settings_effects_profile_picker - verify effects profile options\n\nPersistence\n\n6. settings_toggles_persist - toggle every switch, restart app, verify saved state\n\n7. settings_voice_rate_persists - adjust speaking rate and verify value after relaunch\n\n8. settings_audio_encoding_persists - choose MP3 and confirm selection survives restart\n\nReset\n\n9. settings_reset_to_defaults - reset all TTS settings and verify confirmation\n\n10. settings_reset_cancel - cancel reset flow and verify settings remain unchanged\n\nNavigation\n\n11. settings_history_button_navigates - tap History and verify empty state or recent sessions\n\n12. settings_back_returns_home - navigate back and assert the home screen is visible\n\nAccessibility\n\n13. settings_controls_accessible_labels - verify controls expose stable accessible labels\n\n14. settings_dynamic_type_layout - increase text size and verify rows remain tappable\n\n15. settings_voiceover_order - assert VoiceOver traversal follows visual order\n\n#### Generate deterministic E2E tests\n\nMaestro tests are human-readable YAML files, not black boxes. Repeatable, auditable, trustworthy.\n\n#### Build on open-source integrity\n\nExtensible and with no vendor lock-in, Maestro is the foundation for thousands of teams’ mobile testing.\n\nt@macbookpro Code % git clone https://github.com/mobile-dev-inc/Maestro.git\n\n---\n\nCloning into 'Maestro'...\n\nremote: Enumerating objects: 32693, done.\n\nremote: Counting objects: 100% (1379/1379), done.\n\nremote: Compressing objects: 100% (652/652), done.\n\nremote: Total 32693 (delta 1101), reused 743 (delta 723), pack-reused 31314\n\nReceiving objects: 100% (32693/32693), 925.09 MiB | 13.99 MiB/s, done.\n\nResolving deltas: 100% (14496/14496), done.\n\n---\n\nt@macbookpro Code %\n\nSurfaces\n\n### Build like the wind\n\nWrite and manage tests wherever you like, however fast you like.\n\nI’m turning that exact proof into an iOS Maestro test now, with the one-time education popups handled so it can run from clean state.\n\nExplored 2 files, 2 searches, 1 list\n\nI’m adding a dedicated ios-saved-flow.yaml rather than burying this inside the general smoke flow.\n\nCreated 1 file, edited 1 file\n\nThe new flow is in place and wired into ios-advanced-flow.yaml. I’m going to syntax-check it, then run the dedicated Saved flow.\n\nUsed Maestro MCP to inspect emulator hierarchy\n\nI can see the onboarding card and the logged-out modal. I’m adding guarded runFlow steps so the test handles either clean or warm app state.\n\nTapped through emulator prompts, ran 1 flow\n\nThe Saved tab is reachable now. I’m asserting the article appears after restart so the test proves persistence, not just a successful tap.\n\nios-advanced-flow.yaml +1 -0\n\n39 unmodified lines\n\n40-eraseText\n\n41-inputText: qwerty\n\n42-assertVisible: ${output.result}\n\n43-runFlow: ios-saved-flow.yaml\n\nios-saved-flow.yaml +71 -0\n\n1-appId: org.wikimedia.wikipedia\n\n2-tags:\n\n3- - ios\n\n4----\n\n5-\n\n6-- launchApp:\n\n7- clearState: true\n\n8-- runFlow: subflows/onboarding-ios.yaml\n\n9-- runFlow:\n\n10- when:\n\n11- visible:\n\n12- text: Explore your Wikipedia Year in Review\n\n13- commands:\n\n14- - tapOn: Done\n\n15- label: Dismiss Year In Review popup, if visible\n\n16-- runFlow:\n\n17- when:\n\n18- visible: \"You have been logged out\"\n\n19- commands:\n\n20- - tapOn:\n\n21- text: \"Continue without logging in\"\n\n22- label: Dismiss the auth modal if visible\n\n#### Maestro MCP\n\nPower up your favorite agent with our official MCP server. Give agents the \"eyes and hands\" to build and verify E2E coverage locally, fast and efficient, ensuring every change is fully tested before you ever open a PR.\n\n1appId: com.apple.Maps\n\n2---\n\n3- launchApp:\n\n4 clearState: true\n\n5- runFlow:\n\n6 when:\n\n7 visible: \"Allow “Maps” to use your location?\"\n\n8 commands:\n\n9 - tapOn: \"Allow While Using App\"\n\n10 label: Handle location permission if prompted\n\n11\n\n12- runFlow:\n\n13 when:\n\n14 visible: \"What’s New in Maps\"\n\n15 commands:\n\n16 - tapOn: \"Continue\"\n\n17 label: Dismiss onboarding splash screen\n\n18\n\n19- tapOn:\n\n20 id: \"Search\"\n\n21- inputText: \"Space Needle\"\n\n22- waitForAnimationToEnd\n\n23- tapOn: \"Space Needle, Broad St, Seattle, WA\"\n\n24\n\n25- assertVisible: \"Space Needle\"\n\n26- assertVisible: \"Observation deck\"\n\n27\n\n28- runFlow:\n\n29 when:\n\n30 visible:\n\n31 id: \"More\"\n\n32 commands:\n\n33 - tapOn:\n\n34 id: \"More\"\n\n35 label: Open more options if action bar is collapsed\n\n36\n\n37- tapOn: \"Add to Favorites\"\n\n38\n\n39- runFlow:\n\n40 when:\n\n41 visible: \"Done\"\n\n42 commands:\n\n43 - tapOn: \"Done\"\n\n44 label: Close the detail card to return to map\n\n45\n\n46- tapOn:\n\n47 id: \"Search\"\n\n48- scrollUntilVisible:\n\n49 element: \"Favorites\"\n\n50 direction: DOWN\n\n51- tapOn: \"See All\"\n\n52\n\n53- assertVisible: \"Space Needle\"\n\n54- assertVisible: \"400 Broad St\"\n\nmaestro\n\n.maestro\n\nscripts\n\nsubflows\n\nios-flow.yaml\n\nios-saved-flow.yaml\n\nsimple-navigation-flow.yaml\n\nNew file\n\n#### Maestro Studio\n\nBuild tests in a visual IDE for Mac and Windows that makes manual test creation feel like magic. Contextual autocomplete, \"tap-tap-tap\" YAML generation, deep selector inspection, and an embedded emulator.\n\nt@macbookpro ~ % maestro\n\nUsage: maestro [-hv] [--[no-]ansi] [--verbose] [-p=<platform>] [--udid=<deviceId>] [COMMAND]\n\n-h, --help Display help message\n\n--[no-]color Enable / disable colors and ansi output\n\n--p=<platform> (Optional) Select a platform to run on\n\n--d=<deviceId> (Optional) Device ID to run on explicitly, can be a comma separated list of IDs\n\n-v, --version Display CLI version\n\n--verbose Enable verbose logging\n\nCommands:\n\ntest Test a Flow or set of Flows on a local iOS Simulator or Android Emulator\n\ncloud Upload your flows on Cloud by using `maestro cloud sample/app.apk flows_folder/\n\nrecord Render a beautiful video of your Flow - Great for demos and bug reports\n\ndownload-samples Download sample apps and flows for trying out maestro without setting up your own app\n\nlogin Log into Maestro Cloud\n\nlogout Log out of Maestro Cloud\n\nbugreport Report a bug - Help us improve your experience!\n\nstart-device Starts or creates an iOS Simulator or Android Emulator similar to the ones on the cloud\n\nchat Use Maestro GPT to help you with Maestro documentation and code questions\n\nmcp Starts the Maestro MCP server, exposing the device/commands as Model Context Protocol\n\nt@macbookpro ~ %\n\n#### Maestro CLI\n\nThe lightweight, open-source engine for developers who prefer to bring their own IDE. Run human-readable YAML tests with the fastest, best runner in mobile - whether iterating locally or executing at scale in CI.\n\nMaestro Cloud\n\n### Scale in our cloud\n\nMaestro Cloud provides high-speed, test-tuned infrastructure.\n\napp.maestro.dev/test-runs\n\nTotal flow runs\n\n3069+1% m/m\n\nAverage run time\n\n3min\n\nFailed flow runs\n\n23\n\nPassing rate\n\n99.25%+1% m/m\n\nRun history\n\n#### Parallel execution\n\nRun your entire test suite across simulators and emulators simultaneously to cut CI wait times down to minutes. Enterprise-grade.\n\n#### Test with context\n\nEvery run includes step-by-step video playback, detailed logs, and flake detection so you can diagnose and fix bugs efficiently.\n\n#### Seamless CI integration\n\nPlug Maestro into your existing pipeline with a single command to get instant reporting and deep diagnostic context.", "url": "https://wpnews.pro/news/maestro-agentic-mobile-ui-testing", "canonical_source": "https://maestro.dev/", "published_at": "2026-07-07 05:12:42+00:00", "updated_at": "2026-07-07 05:29:36.224457+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents"], "entities": ["Maestro", "Mobile Dev Inc.", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/maestro-agentic-mobile-ui-testing", "markdown": "https://wpnews.pro/news/maestro-agentic-mobile-ui-testing.md", "text": "https://wpnews.pro/news/maestro-agentic-mobile-ui-testing.txt", "jsonld": "https://wpnews.pro/news/maestro-agentic-mobile-ui-testing.jsonld"}}