{"version":1,"pages":[{"id":"IIMjwKjJnXPLCcR9j2tb","title":"Maestro documentation","pathname":"/","siteSpaceId":"sitesp_vu9Eo","description":"Overview of Maestro documentation with links to guides, tutorials, and community resources.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"}]},{"id":"yd3YLUukE5M8wZT1CE5D","title":"What is Maestro?","pathname":"/get-started/what-is-maestro","siteSpaceId":"sitesp_vu9Eo","description":"Maestro is an open-source UI automation framework for mobile and web with built-in tolerance, zero-wait intelligence, and declarative YAML syntax.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"}]},{"id":"P05NwN6Aox1FpJgtQRoy","title":"How Maestro works","pathname":"/get-started/how-maestro-works","siteSpaceId":"sitesp_vu9Eo","description":"Learn how Maestro simulates user interactions using the accessibility tree and device-level commands.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"}]},{"id":"IyVjUYlja4evcymb2uG3","title":"QuickStart","pathname":"/get-started/quickstart","siteSpaceId":"sitesp_vu9Eo","description":"Install Maestro Studio, set up your environment, and run your first automated test in five minutes.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"}]},{"id":"epPDXejAMuAN8YhVc0iR","title":"Maestro solutions","pathname":"/get-started/maestro-solutions","siteSpaceId":"sitesp_vu9Eo","description":"Explore Maestro's ecosystem: Studio, CLI, Cloud, and Flows, plus how they fit into local automation and CI/CD workflows.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"}]},{"id":"Yji3ZRqXunrjvcov0BhZ","title":"Supported platforms","pathname":"/get-started/supported-platform","siteSpaceId":"sitesp_vu9Eo","description":"Platforms supported by Maestro: Android, iOS, React Native, Flutter, and web applications via UI-layer automation.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"}]},{"id":"U38saNroCdx9RMc0Egrj","title":"Android","pathname":"/get-started/supported-platform/android","siteSpaceId":"sitesp_vu9Eo","description":"Configure Maestro for Android app testing with emulators or physical devices.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"},{"label":"Supported platforms"}]},{"id":"bm7OQUJHZwsyWRYCkGNB","title":"Android Native","pathname":"/get-started/supported-platform/android/android-native","siteSpaceId":"sitesp_vu9Eo","description":"Black-box testing for Android Views and Jetpack Compose via the Accessibility layer. Target elements by text, Resource ID, Content Description, or testTag.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"},{"label":"Supported platforms"},{"label":"Android"}]},{"id":"Xz2oiL6ykpo1nKgbJQNP","title":"Jetpack Compose","pathname":"/get-started/supported-platform/android/jetpack","siteSpaceId":"sitesp_vu9Eo","description":"Black-box testing for Jetpack Compose via AccessibilityService. Prioritizes text-based matching and semantics over testTag for refactoring resilience.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"},{"label":"Supported platforms"},{"label":"Android"}]},{"id":"ZpJw5BlSLoh8Kg9bz99a","title":"iOS","pathname":"/get-started/supported-platform/ios","siteSpaceId":"sitesp_vu9Eo","description":"Black-box iOS testing via the Accessibility layer. Run on Xcode Simulators, handle permissions, test multi-app journeys, and parallelize with Cloud.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"},{"label":"Supported platforms"}]},{"id":"niS72SJn63Dd5F8SC63B","title":"SwiftUI","pathname":"/get-started/supported-platform/ios/swiftui","siteSpaceId":"sitesp_vu9Eo","description":"Configure SwiftUI apps for Maestro testing with proper accessibility identifiers.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"},{"label":"Supported platforms"},{"label":"iOS"}]},{"id":"M7bgYTCHxiHOZq5nndLw","title":"UIKit","pathname":"/get-started/supported-platform/ios/uikit","siteSpaceId":"sitesp_vu9Eo","description":"Black-box testing for UIKit via the accessibility layer. Use accessibilityLabel for text and accessibilityIdentifier (gold standard) for id selectors.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"},{"label":"Supported platforms"},{"label":"iOS"}]},{"id":"LTqFJUvvvElq6H10aO9M","title":"React Native","pathname":"/get-started/supported-platform/react-native","siteSpaceId":"sitesp_vu9Eo","description":"Configure React Native apps for Maestro testing on both Android and iOS platforms.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"},{"label":"Supported platforms"}]},{"id":"zYQoqTY0bgNIOJHSkVCY","title":"Flutter","pathname":"/get-started/supported-platform/flutter","siteSpaceId":"sitesp_vu9Eo","description":"Test Flutter apps via the Semantics Tree. Use semanticLabel, Semantics widget, or identifier (Flutter 3.19+) instead of Keys for stable automation.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"},{"label":"Supported platforms"}]},{"id":"WEi3EP8w4LfyKXrUtFf1","title":"Web Browsers","pathname":"/get-started/supported-platform/web-browser","siteSpaceId":"sitesp_vu9Eo","description":"Test web applications in desktop browsers using Maestro's web automation capabilities.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"},{"label":"Supported platforms"}]},{"id":"dr3yZHDmssNeo5eYHFOP","title":"Maestro MCP Server","pathname":"/get-started/maestro-mcp","siteSpaceId":"sitesp_vu9Eo","description":"Use Maestro's Model Context Protocol (MCP) server to let your coding agent write, run, and debug mobile and web UI tests.","breadcrumbs":[{"label":"Introduction"},{"label":"Get Started"}]},{"id":"PMN77L6mcVjVj3D45fAQ","title":"Maestro Studio overview","pathname":"/maestro-studio","siteSpaceId":"sitesp_EBJx5","description":"Maestro Studio is the desktop app for writing, running, and debugging mobile UI tests visually, using simple YAML files and a live connection to your device.","breadcrumbs":[{"label":"Maestro Studio"}]},{"id":"vHXB8Xrw3dMdftwT9363","title":"Run tests with Maestro Studio","pathname":"/maestro-studio/run-tests-with-maestro-studio","siteSpaceId":"sitesp_EBJx5","description":"Build and run mobile tests visually with Maestro Studio. Install the app, create tests via screen inspection, and automate without writing code from scratch.","breadcrumbs":[{"label":"Maestro Studio"}]},{"id":"GPOdLRjekz5Tngde4znJ","title":"Environments and variables","pathname":"/maestro-studio/environments-and-variables","siteSpaceId":"sitesp_EBJx5","description":"Manage dynamic test configurations in Maestro Studio. Use Environment Variables and Tags to run tests across different platforms and environments.","breadcrumbs":[{"label":"Maestro Studio"}]},{"id":"MQ02HMQgWKQPvrTA7Wvw","title":"Run cloud tests from Maestro Studio","pathname":"/maestro-studio/run-cloud-tests-from-maestro-studio","siteSpaceId":"sitesp_EBJx5","description":"Execute mobile tests on cloud devices directly from Maestro Studio. Select apps, pick device models, and monitor live results from the editor.","breadcrumbs":[{"label":"Maestro Studio"}]},{"id":"UMDNt4KrEJZiJGxd7a1K","title":"Maestro CLI overview","pathname":"/maestro-cli","siteSpaceId":"sitesp_shCFx","description":"Open-source CLI for mobile and web UI testing. Run tests, manage devices, use Continuous Mode, and scale to Maestro Cloud from your terminal.","breadcrumbs":[{"label":"Maestro CLI"}]},{"id":"qq6ESk3CGKbvxD7f35Fc","title":"How to install Maestro CLI","pathname":"/maestro-cli/how-to-install-maestro-cli","siteSpaceId":"sitesp_shCFx","description":"Step-by-step installation guide for Maestro CLI on macOS, Windows, and Linux.","breadcrumbs":[{"label":"Maestro CLI"}]},{"id":"YhveJDUNOtnmUfo2dVn2","title":"Update the Maestro CLI","pathname":"/maestro-cli/how-to-install-maestro-cli/update-the-maestro-cli","siteSpaceId":"sitesp_shCFx","description":"Update Maestro CLI via curl, Homebrew, or manual download. Set MAESTRO_VERSION to install a specific version for team or CI/CD compatibility.","breadcrumbs":[{"label":"Maestro CLI"},{"label":"How to install Maestro CLI"}]},{"id":"aNsvjPmpnqUPRaOYqKGv","title":"Run your first test with the Maestro CLI","pathname":"/maestro-cli/run-your-first-test-with-the-maestro-cli","siteSpaceId":"sitesp_shCFx","description":"Write and execute your first Maestro Flow using the CLI. Automate the Contacts app on an Android emulator with YAML commands and recording.","breadcrumbs":[{"label":"Maestro CLI"}]},{"id":"0HTxmNsxsfCUUcjfYjFa","title":"Maestro CLI commands and options","pathname":"/maestro-cli/maestro-cli-commands-and-options","siteSpaceId":"sitesp_shCFx","description":"Complete reference for Maestro CLI global options and subcommands including test, cloud, record, start-device, and their specific options.","breadcrumbs":[{"label":"Maestro CLI"}]},{"id":"LVuiPHnsabHNnoEdq4A6","title":"Environment variables","pathname":"/maestro-cli/environment-variables","siteSpaceId":"sitesp_shCFx","description":"Reference for all environment variables supported by the Maestro CLI, covering   logging, analytics, cloud authentication, and driver behavior.","breadcrumbs":[{"label":"Maestro CLI"}]},{"id":"lMUA9Amz4ZoRpWO9IwJT","title":"Using a proxy with Maestro CLI","pathname":"/maestro-cli/using-a-proxy-with-maestro-cli","siteSpaceId":"sitesp_shCFx","description":"How to configure system environment variables that Maestro CLI can read to enable it to use a proxy server when it needs to connect to the internet.","breadcrumbs":[{"label":"Maestro CLI"}]},{"id":"C54ANLVbWffSqhNsoSZU","title":"Maestro Cloud overview","pathname":"/maestro-cloud","siteSpaceId":"sitesp_RPgZG","description":"Maestro Cloud provides enterprise-grade infrastructure for parallel mobile test execution.","breadcrumbs":[{"label":"Maestro Cloud"}]},{"id":"TccAV2v9kobPsmknjQQr","title":"Run tests on Maestro Cloud","pathname":"/maestro-cloud/run-tests-on-maestro-cloud","siteSpaceId":"sitesp_RPgZG","description":"Upload and execute your Maestro tests on Cloud infrastructure using the CLI.","breadcrumbs":[{"label":"Maestro Cloud"}]},{"id":"i6Xi2pZEPreK4Z7K9y7u","title":"Build your app for the cloud","pathname":"/maestro-cloud/build-your-app-for-the-cloud","siteSpaceId":"sitesp_RPgZG","description":"Build Android APKs and iOS .app bundles for Simulator to run on Maestro Cloud.","breadcrumbs":[{"label":"Maestro Cloud"}]},{"id":"Dpy5yLV6Bp7RRLfxjhKB","title":"CI/CD integration","pathname":"/maestro-cloud/ci-cd-integration","siteSpaceId":"sitesp_RPgZG","description":"","breadcrumbs":[{"label":"Maestro Cloud"}]},{"id":"t7PxLfnihC3XF0qihMvD","title":"GitHub Actions","pathname":"/maestro-cloud/ci-cd-integration/github-actions","siteSpaceId":"sitesp_RPgZG","description":"Official GitHub Action for Maestro Cloud. Run mobile tests on push or PR, pass env variables, and access outputs like console URL.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"CI/CD integration"}]},{"id":"5X2y3iO7bWHWUW19R7Of","title":"Platform guides","pathname":"/maestro-cloud/ci-cd-integration/github-actions/platform-guides","siteSpaceId":"sitesp_RPgZG","description":"Set up Maestro Cloud GitHub Actions for Android, iOS, and Flutter.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"CI/CD integration"},{"label":"GitHub Actions"}]},{"id":"205C5FCqeoFbXeCFyDUQ","title":"Advanced configuration","pathname":"/maestro-cloud/ci-cd-integration/github-actions/advanced-configuration","siteSpaceId":"sitesp_RPgZG","description":"Customize Maestro Cloud runs with advanced settings for custom workspaces, upload naming, async mode, environment variables, and tag filtering.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"CI/CD integration"},{"label":"GitHub Actions"}]},{"id":"fMrd9cnd0Xm9xzyxEZtV","title":"Outputs and triggers","pathname":"/maestro-cloud/ci-cd-integration/github-actions/outputs-and-triggers","siteSpaceId":"sitesp_RPgZG","description":"Configure GitHub Action triggers and use output variables to integrate Maestro Cloud into your CI/CD pipeline.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"CI/CD integration"},{"label":"GitHub Actions"}]},{"id":"nIuVmhk2YmvFyYCXhz9e","title":"Bitrise","pathname":"/maestro-cloud/ci-cd-integration/bitrise","siteSpaceId":"sitesp_RPgZG","description":"Native Bitrise integration for Maestro Cloud. Set API Key, Project ID, and app binary path to trigger tests automatically.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"CI/CD integration"}]},{"id":"baHfHQA12iaOdnXwvPyy","title":"Bitbucket Pipelines","pathname":"/maestro-cloud/ci-cd-integration/bitbucket-pipelines","siteSpaceId":"sitesp_RPgZG","description":"Native Bitbucket Pipe for Maestro Cloud. Set API key and Project ID to upload app binary and run Flows on cloud infrastructure.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"CI/CD integration"}]},{"id":"i03ABGnYoVVYfmAnNcCc","title":"CircleCI","pathname":"/maestro-cloud/ci-cd-integration/circleci","siteSpaceId":"sitesp_RPgZG","description":"Integrate Maestro Cloud into CircleCI pipelines to automate mobile testing. Set up API keys, organize flows, and configure your .circleci/config.yml.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"CI/CD integration"}]},{"id":"9R97R49kaTVktd0y9XjW","title":"Generic CI platform","pathname":"/maestro-cloud/ci-cd-integration/generic-ci-platform","siteSpaceId":"sitesp_RPgZG","description":"Integrate Maestro Cloud with any CI/CD provider using the CLI. Works with Jenkins, GitLab CI, Azure DevOps, and more.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"CI/CD integration"}]},{"id":"qqO4EQR8u1f81mhbTHIy","title":"Pull request integration","pathname":"/maestro-cloud/ci-cd-integration/pull-request-integration","siteSpaceId":"sitesp_RPgZG","description":"Native pull request integration runs Maestro tests asynchronously and blocks merges on failures. Supports GitHub Enterprise.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"CI/CD integration"}]},{"id":"d7SmB7kH9d4mLyX52ILm","title":"Environment configuration","pathname":"/maestro-cloud/environment-configuration","siteSpaceId":"sitesp_RPgZG","description":"","breadcrumbs":[{"label":"Maestro Cloud"}]},{"id":"XS8xIsrjei6HByYct2LJ","title":"Configure the OS","pathname":"/maestro-cloud/environment-configuration/configure-the-os","siteSpaceId":"sitesp_RPgZG","description":"Set OS versions and device models for Maestro Cloud tests using the `--device-os` and `--device-model` flags.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"Environment configuration"}]},{"id":"5LCb6H5XPCILicPYdLWq","title":"App locales and device timezones","pathname":"/maestro-cloud/environment-configuration/app-locales-and-device-timezones","siteSpaceId":"sitesp_RPgZG","description":"Configure app locales and understand default device timezones in Maestro Cloud to test internationalization and time-dependent features.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"Environment configuration"}]},{"id":"QC1m0NWtZBleLWW5iF8i","title":"Notifications","pathname":"/maestro-cloud/notifications","siteSpaceId":"sitesp_RPgZG","description":"","breadcrumbs":[{"label":"Maestro Cloud"}]},{"id":"S4FBkQgGKjjoEQEzqETM","title":"Set Slack notification","pathname":"/maestro-cloud/notifications/set-slack-notification","siteSpaceId":"sitesp_RPgZG","description":"Connect Slack to Maestro Cloud for test result notifications after each upload. Option to notify on failed flows only.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"Notifications"}]},{"id":"lK3eJYGSCjhlZRkw0BAB","title":"Set email notification","pathname":"/maestro-cloud/notifications/set-email-notification","siteSpaceId":"sitesp_RPgZG","description":"Configure email notifications in config.yaml for Maestro Cloud. Default sends on failure only; add onSuccess for successful runs.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"Notifications"}]},{"id":"TrKSi0YyKyYpSoP3j750","title":"Configure webhooks","pathname":"/maestro-cloud/notifications/configure-webhooks","siteSpaceId":"sitesp_RPgZG","description":"Enable webhooks for real-time POST notifications of Maestro Cloud upload results to external services. Supports multiple webhooks and token auth.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"Notifications"}]},{"id":"ZWoPcodT867FNYxBehLy","title":"Advanced features","pathname":"/maestro-cloud/advanced-features","siteSpaceId":"sitesp_RPgZG","description":"","breadcrumbs":[{"label":"Maestro Cloud"}]},{"id":"d35ZUjJv9mvuNRegfsnb","title":"Manage secrets","pathname":"/maestro-cloud/advanced-features/manage-secrets","siteSpaceId":"sitesp_RPgZG","description":"Pass sensitive parameters like usernames and passwords to Maestro Cloud tests via environment variables using the -e CLI option.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"Advanced features"}]},{"id":"9jqCyX7IGujyy1C613er","title":"Reuse app binary","pathname":"/maestro-cloud/advanced-features/reuse-app-binary","siteSpaceId":"sitesp_RPgZG","description":"Use --app-binary-id to skip re-uploading your app and save time. Find the binary ID in CLI output or Maestro dashboard.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"Advanced features"}]},{"id":"G5jPDZCNF6I6skCdaEPw","title":"IP allowlist","pathname":"/maestro-cloud/advanced-features/ip-allowlist","siteSpaceId":"sitesp_RPgZG","description":"Static IP addresses used by Maestro Cloud to connect to your services. Add to your firewall or ACLs for access.","breadcrumbs":[{"label":"Maestro Cloud"},{"label":"Advanced features"}]},{"id":"vaK2EYv74WkEJE9nNgcz","title":"Limits","pathname":"/maestro-cloud/limits","siteSpaceId":"sitesp_RPgZG","description":"Maestro Cloud applies a 15-minute soft limit per test execution. Break longer suites into smaller, parallelizable Flows.","breadcrumbs":[{"label":"Maestro Cloud"}]},{"id":"9DC1QxBeJ7ZJ1MAJIMf1","title":"Cloud commands","pathname":"/maestro-cloud/cloud-commands","siteSpaceId":"sitesp_RPgZG","description":"Upload and execute your mobile tests on hosted cloud infrastructure using the Maestro CLI cloud subcommand.","breadcrumbs":[{"label":"Maestro Cloud"}]},{"id":"dZRQTpDL7GvikT3UYR9t","title":"Maestro Flows overview","pathname":"/maestro-flows","siteSpaceId":"sitesp_027OT","description":"Maestro Flows are YAML-based test scripts that define user journeys for UI automation.","breadcrumbs":[{"label":"Flows"}]},{"id":"KsAwaeHz7lKgM9s7EMkI","title":"Flow control and logic overview","pathname":"/maestro-flows/flow-control-and-logic/flow-control-and-logic-overview","siteSpaceId":"sitesp_027OT","description":"Overview of flow control: conditions, loops, nested flows, and hooks.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"GTSq1C63HMvK90mFPPFu","title":"How to use Selectors","pathname":"/maestro-flows/flow-control-and-logic/how-to-use-selectors","siteSpaceId":"sitesp_027OT","description":"Learn to identify UI elements using text, ID, position, and state selectors.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"VemcYLm2haPWTOYzGo2j","title":"Nested flows","pathname":"/maestro-flows/flow-control-and-logic/nested-flows","siteSpaceId":"sitesp_027OT","description":"Reuse test logic by calling subflows from parent flows with runFlow.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"Fr52MduU6A7ys8e0ZG9J","title":"Wait commands","pathname":"/maestro-flows/flow-control-and-logic/wait-commands","siteSpaceId":"sitesp_027OT","description":"Control timing with wait commands for animations, network calls, and UI updates.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"8PJkiachwYCD8qE1EMEe","title":"Loops","pathname":"/maestro-flows/flow-control-and-logic/loops","siteSpaceId":"sitesp_027OT","description":"Repeat actions using the repeat command for iterative test scenarios.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"PSh3jkLSoQSvjzMpuuNY","title":"Conditions","pathname":"/maestro-flows/flow-control-and-logic/conditions","siteSpaceId":"sitesp_027OT","description":"Execute commands conditionally based on visibility, platform, or custom expressions.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"rkcuFaC8gOuSlWcM5u42","title":"Parameters and constants","pathname":"/maestro-flows/flow-control-and-logic/parameters-and-constants","siteSpaceId":"sitesp_027OT","description":"Pass dynamic values to flows using CLI parameters and inline constants.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"pZBAEbS4tZAHGTKAp1QE","title":"Specify and start devices","pathname":"/maestro-flows/flow-control-and-logic/specify-and-start-devices","siteSpaceId":"sitesp_027OT","description":"Learn how to launch Android and iOS virtual devices using the Maestro CLI, identify connected hardware, and target specific devices for local testing.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"dHluRgqRrG5V3dTMJAHB","title":"Hooks","pathname":"/maestro-flows/flow-control-and-logic/hooks","siteSpaceId":"sitesp_027OT","description":"Learn how to use onFlowStart and onFlowComplete hooks for setup and cleanup automation.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"paq4WsWcBrsgyU2QAuYs","title":"Test in different locales","pathname":"/maestro-flows/flow-control-and-logic/test-in-different-locales","siteSpaceId":"sitesp_027OT","description":"Test your app in multiple languages and regions using locale configuration.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"ekPBYkw0BR5yjTnhQ6HZ","title":"Locales supported by Maestro","pathname":"/maestro-flows/flow-control-and-logic/test-in-different-locales/locales-supported-by-maestro","siteSpaceId":"sitesp_027OT","description":"Complete list of locale codes supported by Maestro for internationalization testing.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"},{"label":"Test in different locales"}]},{"id":"T7QsxQz2S3GvwHP2GwFN","title":"Permissions","pathname":"/maestro-flows/flow-control-and-logic/permissions","siteSpaceId":"sitesp_027OT","description":"Configure app permissions on launch or mid-flow for iOS and Android testing.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"TISYx4Mmo1GDUH7hS5gx","title":"Detect Maestro","pathname":"/maestro-flows/flow-control-and-logic/detect-maestro","siteSpaceId":"sitesp_027OT","description":"Detect when your app is running under Maestro automation for test-specific behavior.","breadcrumbs":[{"label":"Flows"},{"label":"Flow Control and Logic"}]},{"id":"N72iCVWiRWYBZ8BruPC7","title":"JavaScript overview","pathname":"/maestro-flows/javascript/javascript-overview","siteSpaceId":"sitesp_027OT","description":"Extend Maestro flows with JavaScript for complex logic and data manipulation.","breadcrumbs":[{"label":"Flows"},{"label":"JavaScript"}]},{"id":"b2J6riw7rRE79CWZa34R","title":"Run and debug JavaScript","pathname":"/maestro-flows/javascript/run-and-debug-javascript","siteSpaceId":"sitesp_027OT","description":"Execute JavaScript in Flows using inline expressions, evalScript, or runScript with console.log debugging.","breadcrumbs":[{"label":"Flows"},{"label":"JavaScript"}]},{"id":"dHoMmmxSR76KnJYxgXiH","title":"Manage data and states","pathname":"/maestro-flows/javascript/manage-data-and-states","siteSpaceId":"sitesp_027OT","description":"Share data between scripts using the global output object, namespaces, and the maestro.copiedText property.","breadcrumbs":[{"label":"Flows"},{"label":"JavaScript"}]},{"id":"B0lkhJcMqO303bhgpePp","title":"Make HTTP requests","pathname":"/maestro-flows/javascript/make-http-requests","siteSpaceId":"sitesp_027OT","description":"Make HTTP API calls from your flows to set up test data or verify backend state.","breadcrumbs":[{"label":"Flows"},{"label":"JavaScript"}]},{"id":"lGswsRpMKJwogIhF1iLA","title":"Generate synthetic data","pathname":"/maestro-flows/javascript/generate-synthetic-data","siteSpaceId":"sitesp_027OT","description":"Generate random test data with the built-in faker object for names, emails, numbers, and more.","breadcrumbs":[{"label":"Flows"},{"label":"JavaScript"}]},{"id":"KFSFrrC0ZCkU35FT0Y7B","title":"Workspace management overview","pathname":"/maestro-flows/workspace-management/workspace-management-overview","siteSpaceId":"sitesp_027OT","description":"Organize your Maestro workspace with config.yaml, test architecture, tags, and reporting for scalable automation.","breadcrumbs":[{"label":"Flows"},{"label":"Workspace Management"}]},{"id":"nQdq1RGC0rglaYRzXtwx","title":"Project configuration","pathname":"/maestro-flows/workspace-management/project-configuration","siteSpaceId":"sitesp_027OT","description":"Configure your Maestro workspace with config.yaml for test suite settings.","breadcrumbs":[{"label":"Flows"},{"label":"Workspace Management"}]},{"id":"qE2CBaxfqp4YC768cb0o","title":"Design your test architecture","pathname":"/maestro-flows/workspace-management/design-your-test-architecture","siteSpaceId":"sitesp_027OT","description":"Plan your test architecture with guides on repository configuration and test suite structure.","breadcrumbs":[{"label":"Flows"},{"label":"Workspace Management"}]},{"id":"Q6erkCHwMJkOehAp3kw8","title":"Repository configuration","pathname":"/maestro-flows/workspace-management/design-your-test-architecture/repository-configuration","siteSpaceId":"sitesp_027OT","description":"Organize your test repository using User Journey or Feature Test patterns for scalable automation.","breadcrumbs":[{"label":"Flows"},{"label":"Workspace Management"},{"label":"Design your test architecture"}]},{"id":"EnrMffgnaxnURNxqZFPS","title":"Test discovery and tags","pathname":"/maestro-flows/workspace-management/test-discovery-and-tags","siteSpaceId":"sitesp_027OT","description":"Organize tests with tags and control which flows run using include/exclude filters.","breadcrumbs":[{"label":"Flows"},{"label":"Workspace Management"}]},{"id":"kARlVwVsfP05QyGPpgmr","title":"Sequential execution","pathname":"/maestro-flows/workspace-management/sequential-execution","siteSpaceId":"sitesp_027OT","description":"Run flows in a specific order using executionOrder for dependent test scenarios.","breadcrumbs":[{"label":"Flows"},{"label":"Workspace Management"}]},{"id":"xOY8pCA0PqRUqLYT9WBw","title":"Test reports and artifacts","pathname":"/maestro-flows/workspace-management/test-reports-and-artifacts","siteSpaceId":"sitesp_027OT","description":"Generate test reports, screenshots, and logs for debugging and CI integration.","breadcrumbs":[{"label":"Flows"},{"label":"Workspace Management"}]},{"id":"Y9PTKkbXoJ5QQkp4uJVm","title":"Record your Flow","pathname":"/maestro-flows/workspace-management/record-your-flow","siteSpaceId":"sitesp_027OT","description":"Record a Flow as an MP4 with Maestro CLI and share runs for debugging or demos.","breadcrumbs":[{"label":"Flows"},{"label":"Workspace Management"}]},{"id":"gpwlXyxTazKfyE9fXaUg","title":"AI test analysis","pathname":"/maestro-flows/workspace-management/ai-test-analysis","siteSpaceId":"sitesp_027OT","description":"Use AI-powered analysis to understand test failures and improve test coverage.","breadcrumbs":[{"label":"Flows"},{"label":"Workspace Management"}]},{"id":"vqtuE23NINrwgOxb6LGs","title":"Commands overview","pathname":"/reference","siteSpaceId":"sitesp_LqjmH","description":"API Reference covering Maestro commands, selectors for UI elements, and workspace configuration for global settings.","breadcrumbs":[{"label":"API Reference"}]},{"id":"EhKJmG3upspLn0J3rvEd","title":"Commands available","pathname":"/reference/commands-available","siteSpaceId":"sitesp_LqjmH","breadcrumbs":[{"label":"API Reference"}]},{"id":"tZLG5k4ZkICqstrkJq5A","title":"addMedia","pathname":"/reference/commands-available/addmedia","siteSpaceId":"sitesp_LqjmH","description":"Add images or videos to the device gallery for media picker testing.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"3rPEyeM7T7eqVDxV0fyL","title":"assertNoDefectsWithAI","pathname":"/reference/commands-available/assertnodefectswithai","siteSpaceId":"sitesp_LqjmH","description":"AI-powered visual testing to detect UI defects and anomalies.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"wZJvfobGl1LMO9nkiSm1","title":"assertNotVisible","pathname":"/reference/commands-available/assertnotvisible","siteSpaceId":"sitesp_LqjmH","description":"Assert that a UI element is not present or visible on the screen.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"cxeWDbozP9VQCOTUP8NU","title":"assertScreenshot","pathname":"/reference/commands-available/assertscreenshot","siteSpaceId":"sitesp_LqjmH","description":"Perform visual regression testing of your application against existing screenshots","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"MUfPI0s2cX82DsmWi2sA","title":"assertTrue","pathname":"/reference/commands-available/asserttrue","siteSpaceId":"sitesp_LqjmH","description":"Assert that a JavaScript expression evaluates to true.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"OBdaTpiUeF3JApo5FBBN","title":"assertVisible","pathname":"/reference/commands-available/assertvisible","siteSpaceId":"sitesp_LqjmH","description":"Assert that a UI element is visible on screen with automatic retry.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"srIk5FNSoHBJhnPezKCo","title":"assertWithAI","pathname":"/reference/commands-available/assertwithai","siteSpaceId":"sitesp_LqjmH","description":"Use AI to verify complex UI states with natural language assertions.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"yd0tfwbpHQ5lascBh7MY","title":"back","pathname":"/reference/commands-available/back","siteSpaceId":"sitesp_LqjmH","description":"Press the system back button to navigate to the previous screen.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"6IhT7DkfxJGj3a5GzVBQ","title":"clearKeychain","pathname":"/reference/commands-available/clearkeychain","siteSpaceId":"sitesp_LqjmH","description":"Clear iOS keychain data for the app under test.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"1nXFYMAGvjHSfIWzSHjI","title":"clearState","pathname":"/reference/commands-available/clearstate","siteSpaceId":"sitesp_LqjmH","description":"Clear app data, cache, and preferences to reset to fresh install state.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"ofeX8hcMPYs7QIWqhuxF","title":"copyTextFrom","pathname":"/reference/commands-available/copytextfrom","siteSpaceId":"sitesp_LqjmH","description":"Copy text content from a UI element to clipboard or variable.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"01pbUE72CSiBJUm7z6Th","title":"doubleTapOn","pathname":"/reference/commands-available/doubletapon","siteSpaceId":"sitesp_LqjmH","description":"Perform a double-tap gesture on a UI element or screen coordinates.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"iawK3KK2mGdJ8VGIBAKK","title":"eraseText","pathname":"/reference/commands-available/erasetext","siteSpaceId":"sitesp_LqjmH","description":"Delete text from input fields by character count or clear entirely.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"HJgsWnuIq6lofetMUsNL","title":"evalScript","pathname":"/reference/commands-available/evalscript","siteSpaceId":"sitesp_LqjmH","description":"Evaluate inline JavaScript expressions within the flow context.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"Z5Gnt2LrBcxoXBtWUoyc","title":"extendedWaitUntil","pathname":"/reference/commands-available/extendedwaituntil","siteSpaceId":"sitesp_LqjmH","description":"Wait for an element with a custom timeout longer than the default.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"gYRkwop37803i00k8ULZ","title":"extractTextWithAI","pathname":"/reference/commands-available/extracttextwithai","siteSpaceId":"sitesp_LqjmH","description":"Extract structured data from the screen using AI vision capabilities.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"EdaqvvEjuEBkgPgdsaBC","title":"hideKeyboard","pathname":"/reference/commands-available/hidekeyboard","siteSpaceId":"sitesp_LqjmH","description":"Dismiss the on-screen keyboard if currently visible.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"jX0uhfTZYfAHBGtCKFsR","title":"inputText","pathname":"/reference/commands-available/inputtext","siteSpaceId":"sitesp_LqjmH","description":"Type text into focused input fields with optional keyboard handling.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"L260vxmx7F8Bi2MKGARF","title":"killApp","pathname":"/reference/commands-available/killapp","siteSpaceId":"sitesp_LqjmH","description":"Force stop an app and optionally clear all its data and cache.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"m83JPqvYCABkYQ2TYvjL","title":"launchApp","pathname":"/reference/commands-available/launchapp","siteSpaceId":"sitesp_LqjmH","description":"Launch an app with optional permission configuration and clear state.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"AtQOj5mVWzbAOwWksvDt","title":"longPressOn","pathname":"/reference/commands-available/longpresson","siteSpaceId":"sitesp_LqjmH","description":"Long press on elements for context menus or drag-and-drop operations.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"vzSMkkFsxbJErueH6xAP","title":"openLink","pathname":"/reference/commands-available/openlink","siteSpaceId":"sitesp_LqjmH","description":"Open a URL or deep link in the app or system browser.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"YWYkUtznpFVkhfNITLDI","title":"pasteText","pathname":"/reference/commands-available/pastetext","siteSpaceId":"sitesp_LqjmH","description":"Paste text from clipboard into the currently focused input field.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"fdOneHuiGYeH5WDABZo2","title":"pressKey","pathname":"/reference/commands-available/presskey","siteSpaceId":"sitesp_LqjmH","description":"Press hardware keys like home, back, enter, or volume buttons.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"hP4pwFPap3PW7Jn8rz9B","title":"repeat","pathname":"/reference/commands-available/repeat","siteSpaceId":"sitesp_LqjmH","description":"Repeat a block of commands a specified number of times.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"lUDoAKV6QPAPbHiVGJN7","title":"retry","pathname":"/reference/commands-available/retry","siteSpaceId":"sitesp_LqjmH","description":"Retry a block of commands on failure with configurable attempts.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"eVtHMq14lRgaBn5rCjhB","title":"runFlow","pathname":"/reference/commands-available/runflow","siteSpaceId":"sitesp_LqjmH","description":"Execute a subflow file with optional environment variables.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"WCqDIjAJKhBhJj0Bi1MP","title":"runScript","pathname":"/reference/commands-available/runscript","siteSpaceId":"sitesp_LqjmH","description":"Run an external JavaScript file and capture its output.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"GE97h9nUXXZcRPKsaZck","title":"scroll","pathname":"/reference/commands-available/scroll","siteSpaceId":"sitesp_LqjmH","description":"A simple vertical scroll to move down the screen to see the content below","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"DXEA8V1YRw2VOGi21uec","title":"scrollUntilVisible","pathname":"/reference/commands-available/scrolluntilvisible","siteSpaceId":"sitesp_LqjmH","description":"Automatically scroll until a target element becomes visible on screen.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"SVA3YqEXXjKl6VDdgYXe","title":"setAirplaneMode","pathname":"/reference/commands-available/setairplanemode","siteSpaceId":"sitesp_LqjmH","description":"Enable airplane mode to test offline behavior.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"Tz3pEVss5oada21M1Cr7","title":"setClipboard","pathname":"/reference/commands-available/setclipboard","siteSpaceId":"sitesp_LqjmH","description":"Set the device clipboard content to a specified text value.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"SaadBSUU7rktjKnfx7vo","title":"setLocation","pathname":"/reference/commands-available/setlocation","siteSpaceId":"sitesp_LqjmH","description":"Set device GPS location to specific coordinates for location testing.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"GhUg53tP8a32Of3mhkvd","title":"setOrientation","pathname":"/reference/commands-available/setorientation","siteSpaceId":"sitesp_LqjmH","description":"Change device orientation between portrait and landscape modes.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"0CuSsWN5EaCMBJj3HvbZ","title":"setPermissions","pathname":"/reference/commands-available/setpermissions","siteSpaceId":"sitesp_LqjmH","description":"Grant or deny app permissions during flow execution.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"515L01YcrNCwXJAZUxgu","title":"startRecording","pathname":"/reference/commands-available/startrecording","siteSpaceId":"sitesp_LqjmH","description":"Start recording the screen for video documentation of test runs.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"QijR6tIRt5GDQEWWBwBv","title":"stopApp","pathname":"/reference/commands-available/stopapp","siteSpaceId":"sitesp_LqjmH","description":"Stop a running app without clearing its data or state.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"NiVIknccqbOjd4LaYtWL","title":"stopRecording","pathname":"/reference/commands-available/stoprecording","siteSpaceId":"sitesp_LqjmH","description":"Stop the current screen recording and save the video file.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"5JY0JJiifIPLv5nYdKcf","title":"swipe","pathname":"/reference/commands-available/swipe","siteSpaceId":"sitesp_LqjmH","description":"Swipe gestures in any direction with customizable speed and distance.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"b2QQLxtO6ivGKGwDhetB","title":"takeScreenshot","pathname":"/reference/commands-available/takescreenshot","siteSpaceId":"sitesp_LqjmH","description":"Capture a screenshot and save it to the test output directory.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"eji7jsxGp1CxrqEIuf14","title":"tapOn","pathname":"/reference/commands-available/tapon","siteSpaceId":"sitesp_LqjmH","description":"Tap on UI elements by text, ID, or coordinates with optional repeat and delay.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"OBdGoQIydszkpzIC5IXy","title":"toggleAirplaneMode","pathname":"/reference/commands-available/toggleairplanemode","siteSpaceId":"sitesp_LqjmH","description":"Toggle airplane mode on or off during test execution.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"fzrHUhtgeoG7ZPX3F4GN","title":"travel","pathname":"/reference/commands-available/travel","siteSpaceId":"sitesp_LqjmH","description":"Simulate time travel by adjusting the device system clock.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"9InWLJnZDT4niSsGKxgw","title":"waitForAnimationToEnd","pathname":"/reference/commands-available/waitforanimationtoend","siteSpaceId":"sitesp_LqjmH","description":"Wait for UI animations to complete before proceeding.","breadcrumbs":[{"label":"API Reference"},{"label":"Commands available"}]},{"id":"5WlrDHblGj9kwJw5bTLR","title":"Selectors","pathname":"/reference/selectors","siteSpaceId":"sitesp_LqjmH","breadcrumbs":[{"label":"API Reference"}]},{"id":"XhKVCXBZbNDwvNVnrmmK","title":"Core Selectors","pathname":"/reference/selectors/core-selectors","siteSpaceId":"sitesp_LqjmH","description":"Core selectors: text, id, index, point, and css for identifying UI elements.","breadcrumbs":[{"label":"API Reference"},{"label":"Selectors"}]},{"id":"e9GNpFPbnKkiFYRYBQOG","title":"Relational Selectors","pathname":"/reference/selectors/relational-selectors","siteSpaceId":"sitesp_LqjmH","description":"Identify elements by position (above, below, leftOf, rightOf) or parent-child relationships (containsChild, childOf, containsDescendants).","breadcrumbs":[{"label":"API Reference"},{"label":"Selectors"}]},{"id":"PBd7CwvBBJhPWGb3DECE","title":"Element Traits","pathname":"/reference/selectors/element-traits","siteSpaceId":"sitesp_LqjmH","description":"Filter elements by traits like square, long-text, and other physical characteristics.","breadcrumbs":[{"label":"API Reference"},{"label":"Selectors"}]},{"id":"vyWVygkWg4JwdGo1oyHL","title":"State Selectors","pathname":"/reference/selectors/state-selectors","siteSpaceId":"sitesp_LqjmH","description":"Select elements by state: enabled, checked, focused, or selected properties.","breadcrumbs":[{"label":"API Reference"},{"label":"Selectors"}]},{"id":"SvC9j9vSzhlqfVmghAdX","title":"Dimension matchers","pathname":"/reference/selectors/dimension-matchers","siteSpaceId":"sitesp_LqjmH","description":"Match elements by width and height with optional tolerance values.","breadcrumbs":[{"label":"API Reference"},{"label":"Selectors"}]},{"id":"WDWCAl6raG6I9MiguTCg","title":"Workspace configuration","pathname":"/reference/workspace-configuration","siteSpaceId":"sitesp_LqjmH","description":"Reference for all config.yaml properties: appId, flows, env, and platform settings.","breadcrumbs":[{"label":"API Reference"}]},{"id":"JGyhAk9z2F7hOCwXpbVP","title":"Examples overview","pathname":"/examples","siteSpaceId":"sitesp_1oRrN","description":"Real-world examples and recipes for common Maestro automation scenarios.","breadcrumbs":[{"label":"Examples"}]},{"id":"brajCZCMqMiHqDUUzgcJ","title":"Check the clipboard content","pathname":"/examples/recipes/check-the-clipboard-content","siteSpaceId":"sitesp_1oRrN","description":"Validate OS clipboard by pasting into system search (Spotlight/Android) and asserting expected text with Maestro.","breadcrumbs":[{"label":"Examples"},{"label":"Recipes"}]},{"id":"3xoPTWVNil1SGT0Kiar0","title":"Choose images from the gallery","pathname":"/examples/recipes/choose-images-from-the-gallery","siteSpaceId":"sitesp_1oRrN","description":"Select images from the device gallery in automated tests using addMedia.","breadcrumbs":[{"label":"Examples"},{"label":"Recipes"}]},{"id":"iuDcsddhGSPEyVIFLRX4","title":"Download and open a file","pathname":"/examples/recipes/download-and-open-a-file","siteSpaceId":"sitesp_1oRrN","description":"Automate file download and open workflows on mobile devices with Maestro.","breadcrumbs":[{"label":"Examples"},{"label":"Recipes"}]},{"id":"UWQIQzgttcGhtNgGZibD","title":"Reset device state (Android)","pathname":"/examples/recipes/reset-device-state-android","siteSpaceId":"sitesp_1oRrN","description":"Automate the Android Files app to purge stale media and downloads. Ensure a clean device state for every test run to prevent false results.","breadcrumbs":[{"label":"Examples"},{"label":"Recipes"}]},{"id":"Z1w4HNpdoAsLSdS5KdFJ","title":"Get the last matching element","pathname":"/examples/recipes/get-the-last-matching-element","siteSpaceId":"sitesp_1oRrN","description":"Select the last element in a list using index selectors and JavaScript.","breadcrumbs":[{"label":"Examples"},{"label":"Recipes"}]},{"id":"SpzJV3Xo478PYDUq6i0g","title":"Custom scrolling for screen fragments","pathname":"/examples/recipes/custom-scrolling-for-screen-fragments","siteSpaceId":"sitesp_1oRrN","description":"Scroll to elements inside fragments using custom swipe logic when scrollUntilVisible fails on partial screens.","breadcrumbs":[{"label":"Examples"},{"label":"Recipes"}]},{"id":"FKoPUwVUUFCPj1ERignh","title":"Implementing the Page Object Model (POM)","pathname":"/examples/recipes/implementing-the-page-object-model-pom","siteSpaceId":"sitesp_1oRrN","description":"Implement the Page Object Model pattern for maintainable Maestro test suites.","breadcrumbs":[{"label":"Examples"},{"label":"Recipes"}]},{"id":"Uct5vUZNT6cyQ1tIZCfR","title":"Automate Android Contacts Flow","pathname":"/examples/real-world-examples/automate-android-contacts-flow","siteSpaceId":"sitesp_1oRrN","description":"Automate the Android Contacts app to create contacts with random data using Maestro commands.","breadcrumbs":[{"label":"Examples"},{"label":"Real world examples"}]},{"id":"3PNfhpICaRevU8NLEHIS","title":"Automate Facebook Sign-Up (Android)","pathname":"/examples/real-world-examples/automate-facebook-sign-up-android","siteSpaceId":"sitesp_1oRrN","description":"Automate Facebook sign-up on Android with random data, permission dialogs, and native date picker interactions.","breadcrumbs":[{"label":"Examples"},{"label":"Real world examples"}]},{"id":"AUDodhj9tsfYOE6lhmiN","title":"Advanced: Wikipedia on Android","pathname":"/examples/real-world-examples/advanced-wikipedia-on-android","siteSpaceId":"sitesp_1oRrN","description":"Explore a complete example using Maestro and Wikipedia App. Use subflows, interactive scrolling, and JavaScript for robust, data-driven mobile automation.","breadcrumbs":[{"label":"Examples"},{"label":"Real world examples"}]},{"id":"eXhnhpZqgpRnuFisLVqF","title":"Resources overview","pathname":"/extra-materials","siteSpaceId":"sitesp_68RHx","description":"Additional resources: community projects, articles, and troubleshooting guides.","breadcrumbs":[{"label":"Resources"}]},{"id":"3YuvLYFJ0ObzYbGVs09a","title":"Known issues","pathname":"/extra-materials/troubleshooting/known-issues","siteSpaceId":"sitesp_68RHx","description":"Known limitations and workarounds for Maestro on different platforms.","breadcrumbs":[{"label":"Resources"},{"label":"Troubleshooting"}]},{"id":"ig0EY6mcvmz1jnqhKZWD","title":"FAQ","pathname":"/extra-materials/troubleshooting/faq","siteSpaceId":"sitesp_68RHx","description":"Frequently asked questions about Maestro installation and usage.","breadcrumbs":[{"label":"Resources"},{"label":"Troubleshooting"}]},{"id":"48kBr1ejRYcNM4bbgWl3","title":"Bug report","pathname":"/extra-materials/troubleshooting/bug-report","siteSpaceId":"sitesp_68RHx","description":"How to report bugs and contribute to Maestro's open-source development.","breadcrumbs":[{"label":"Resources"},{"label":"Troubleshooting"}]},{"id":"DlkzL5O0WJX77R2QnWF4","title":"Community projects","pathname":"/extra-materials/community/community-projects","siteSpaceId":"sitesp_68RHx","description":"VSCode extensions, plugins, and tools built by the Maestro community.","breadcrumbs":[{"label":"Resources"},{"label":"Community"}]},{"id":"1QHDegQRkO1BKEg341mL","title":"Articles","pathname":"/extra-materials/community/articles","siteSpaceId":"sitesp_68RHx","description":"Articles, blog posts, and tutorials about Maestro from the community and the Maestro team.","breadcrumbs":[{"label":"Resources"},{"label":"Community"}]},{"id":"ONBmKZIrglKc4g8863cw","title":"Showcase","pathname":"/extra-materials/community/showcase","siteSpaceId":"sitesp_68RHx","description":"Customer success stories from teams using Maestro for mobile testing.","breadcrumbs":[{"label":"Resources"},{"label":"Community"}]}]}