# Maestro Docs

## Introduction

- [Maestro documentation](https://docs.maestro.dev/get-started/readme.md): Overview of Maestro documentation with links to guides, tutorials, and community resources.
- [What is Maestro?](https://docs.maestro.dev/get-started/what-is-maestro.md): Maestro is an open-source UI automation framework for mobile and web with built-in tolerance, zero-wait intelligence, and declarative YAML syntax.
- [How Maestro works](https://docs.maestro.dev/get-started/how-maestro-works.md): Learn how Maestro simulates user interactions using the accessibility tree and device-level commands.
- [QuickStart](https://docs.maestro.dev/get-started/quickstart.md): Install Maestro Studio, set up your environment, and run your first automated test in five minutes.
- [Maestro solutions](https://docs.maestro.dev/get-started/maestro-solutions.md): Explore Maestro's ecosystem: Studio, CLI, Cloud, and Flows, plus how they fit into local automation and CI/CD workflows.
- [Supported platforms](https://docs.maestro.dev/get-started/supported-platform.md): Platforms supported by Maestro: Android, iOS, React Native, Flutter, and web applications via UI-layer automation.
- [Android](https://docs.maestro.dev/get-started/supported-platform/android.md): Configure Maestro for Android app testing with emulators or physical devices.
- [Android Native](https://docs.maestro.dev/get-started/supported-platform/android/android-native.md): Black-box testing for Android Views and Jetpack Compose via the Accessibility layer. Target elements by text, Resource ID, Content Description, or testTag.
- [Jetpack Compose](https://docs.maestro.dev/get-started/supported-platform/android/jetpack.md): Black-box testing for Jetpack Compose via AccessibilityService. Prioritizes text-based matching and semantics over testTag for refactoring resilience.
- [iOS](https://docs.maestro.dev/get-started/supported-platform/ios.md): Black-box iOS testing via the Accessibility layer. Run on Xcode Simulators, handle permissions, test multi-app journeys, and parallelize with Cloud.
- [SwiftUI](https://docs.maestro.dev/get-started/supported-platform/ios/swiftui.md): Configure SwiftUI apps for Maestro testing with proper accessibility identifiers.
- [UIKit](https://docs.maestro.dev/get-started/supported-platform/ios/uikit.md): Black-box testing for UIKit via the accessibility layer. Use accessibilityLabel for text and accessibilityIdentifier (gold standard) for id selectors.
- [React Native](https://docs.maestro.dev/get-started/supported-platform/react-native.md): Configure React Native apps for Maestro testing on both Android and iOS platforms.
- [Flutter](https://docs.maestro.dev/get-started/supported-platform/flutter.md): Test Flutter apps via the Semantics Tree. Use semanticLabel, Semantics widget, or identifier (Flutter 3.19+) instead of Keys for stable automation.
- [Web Browsers](https://docs.maestro.dev/get-started/supported-platform/web-browser.md): Test web applications in desktop browsers using Maestro's web automation capabilities.
- [Maestro MCP Server](https://docs.maestro.dev/get-started/maestro-mcp.md): Use Maestro's MCP server to let your coding agent write, run, and debug mobile and web UI tests.

## Maestro Studio

- [Maestro Studio overview](https://docs.maestro.dev/maestro-studio/maestro-studio-overview.md): 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.
- [Run tests with Maestro Studio](https://docs.maestro.dev/maestro-studio/run-tests-with-maestro-studio.md): Build and run mobile tests visually with Maestro Studio. Install the app, create tests via screen inspection, and automate without writing code from scratch.
- [Environments and variables](https://docs.maestro.dev/maestro-studio/environments-and-variables.md): Manage dynamic test configurations in Maestro Studio. Use Environment Variables and Tags to run tests across different platforms and environments.
- [Run cloud tests from Maestro Studio](https://docs.maestro.dev/maestro-studio/run-cloud-tests-from-maestro-studio.md): Execute mobile tests on cloud devices directly from Maestro Studio. Select apps, pick device models, and monitor live results from the editor.

## Maestro CLI

- [Maestro CLI overview](https://docs.maestro.dev/maestro-cli/readme.md): Open-source CLI for mobile and web UI testing. Run tests, manage devices, use Continuous Mode, and scale to Maestro Cloud from your terminal.
- [How to install Maestro CLI](https://docs.maestro.dev/maestro-cli/how-to-install-maestro-cli.md): Step-by-step installation guide for Maestro CLI on macOS, Windows, and Linux.
- [Update the Maestro CLI](https://docs.maestro.dev/maestro-cli/how-to-install-maestro-cli/update-the-maestro-cli.md): Update Maestro CLI via curl, Homebrew, or manual download. Set MAESTRO\_VERSION to install a specific version for team or CI/CD compatibility.
- [Run your first test with the Maestro CLI](https://docs.maestro.dev/maestro-cli/run-your-first-test-with-the-maestro-cli.md): Write and execute your first Maestro Flow using the CLI. Automate the Contacts app on an Android emulator with YAML commands and recording.
- [Maestro CLI commands and options](https://docs.maestro.dev/maestro-cli/maestro-cli-commands-and-options.md): Complete reference for Maestro CLI global options and subcommands including test, cloud, record, start-device, and their specific options.
- [Environment variables](https://docs.maestro.dev/maestro-cli/environment-variables.md): Reference for all environment variables supported by the Maestro CLI, covering   logging, analytics, cloud authentication, and driver behavior.
- [Using a proxy with Maestro CLI](https://docs.maestro.dev/maestro-cli/using-a-proxy-with-maestro-cli.md): 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.

## Maestro Cloud

- [Maestro Cloud overview](https://docs.maestro.dev/maestro-cloud/readme.md): Maestro Cloud provides enterprise-grade infrastructure for parallel mobile test execution.
- [Run tests on Maestro Cloud](https://docs.maestro.dev/maestro-cloud/run-tests-on-maestro-cloud.md): Upload and execute your Maestro tests on Cloud infrastructure using the CLI.
- [Build your app for the cloud](https://docs.maestro.dev/maestro-cloud/build-your-app-for-the-cloud.md): Build Android APKs and iOS .app bundles for Simulator to run on Maestro Cloud.
- [CI/CD integration](https://docs.maestro.dev/maestro-cloud/ci-cd-integration.md)
- [GitHub Actions](https://docs.maestro.dev/maestro-cloud/ci-cd-integration/github-actions.md): Official GitHub Action for Maestro Cloud. Run mobile tests on push or PR, pass env variables, and access outputs like console URL.
- [Platform guides](https://docs.maestro.dev/maestro-cloud/ci-cd-integration/github-actions/platform-guides.md): Set up Maestro Cloud GitHub Actions for Android, iOS, and Flutter.
- [Advanced configuration](https://docs.maestro.dev/maestro-cloud/ci-cd-integration/github-actions/advanced-configuration.md): Customize Maestro Cloud runs with advanced settings for custom workspaces, upload naming, async mode, environment variables, and tag filtering.
- [Outputs and triggers](https://docs.maestro.dev/maestro-cloud/ci-cd-integration/github-actions/outputs-and-triggers.md): Configure GitHub Action triggers and use output variables to integrate Maestro Cloud into your CI/CD pipeline.
- [Bitrise](https://docs.maestro.dev/maestro-cloud/ci-cd-integration/bitrise.md): Native Bitrise integration for Maestro Cloud. Set API Key, Project ID, and app binary path to trigger tests automatically.
- [Bitbucket Pipelines](https://docs.maestro.dev/maestro-cloud/ci-cd-integration/bitbucket-pipelines.md): Native Bitbucket Pipe for Maestro Cloud. Set API key and Project ID to upload app binary and run Flows on cloud infrastructure.
- [CircleCI](https://docs.maestro.dev/maestro-cloud/ci-cd-integration/circleci.md): Integrate Maestro Cloud into CircleCI pipelines to automate mobile testing. Set up API keys, organize flows, and configure your .circleci/config.yml.
- [Generic CI platform](https://docs.maestro.dev/maestro-cloud/ci-cd-integration/generic-ci-platform.md): Integrate Maestro Cloud with any CI/CD provider using the CLI. Works with Jenkins, GitLab CI, Azure DevOps, and more.
- [Pull request integration](https://docs.maestro.dev/maestro-cloud/ci-cd-integration/pull-request-integration.md): Native pull request integration runs Maestro tests asynchronously and blocks merges on failures. Supports GitHub Enterprise.
- [Environment configuration](https://docs.maestro.dev/maestro-cloud/environment-configuration.md)
- [Configure the OS](https://docs.maestro.dev/maestro-cloud/environment-configuration/configure-the-os.md): Set OS versions and device models for Maestro Cloud tests using the \`--device-os\` and \`--device-model\` flags.
- [App locales and device timezones](https://docs.maestro.dev/maestro-cloud/environment-configuration/app-locales-and-device-timezones.md): Configure app locales and understand default device timezones in Maestro Cloud to test internationalization and time-dependent features.
- [Notifications](https://docs.maestro.dev/maestro-cloud/notifications.md)
- [Set Slack notification](https://docs.maestro.dev/maestro-cloud/notifications/set-slack-notification.md): Connect Slack to Maestro Cloud for test result notifications after each upload. Option to notify on failed flows only.
- [Set email notification](https://docs.maestro.dev/maestro-cloud/notifications/set-email-notification.md): Configure email notifications in config.yaml for Maestro Cloud. Default sends on failure only; add onSuccess for successful runs.
- [Configure webhooks](https://docs.maestro.dev/maestro-cloud/notifications/configure-webhooks.md): Enable webhooks for real-time POST notifications of Maestro Cloud upload results to external services. Supports multiple webhooks and token auth.
- [Advanced features](https://docs.maestro.dev/maestro-cloud/advanced-features.md)
- [Manage secrets](https://docs.maestro.dev/maestro-cloud/advanced-features/manage-secrets.md): Pass sensitive parameters like usernames and passwords to Maestro Cloud tests via environment variables using the -e CLI option.
- [Reuse app binary](https://docs.maestro.dev/maestro-cloud/advanced-features/reuse-app-binary.md): Use --app-binary-id to skip re-uploading your app and save time. Find the binary ID in CLI output or Maestro dashboard.
- [IP allowlist](https://docs.maestro.dev/maestro-cloud/advanced-features/ip-allowlist.md): Static IP addresses used by Maestro Cloud to connect to your services. Add to your firewall or ACLs for access.
- [Limits](https://docs.maestro.dev/maestro-cloud/limits.md): Maestro Cloud applies a 15-minute soft limit per test execution. Break longer suites into smaller, parallelizable Flows.
- [Cloud commands](https://docs.maestro.dev/maestro-cloud/cloud-commands.md): Upload and execute your mobile tests on hosted cloud infrastructure using the Maestro CLI cloud subcommand.

## Flows

- [Maestro Flows overview](https://docs.maestro.dev/maestro-flows/readme.md): Maestro Flows are YAML-based test scripts that define user journeys for UI automation.
- [Flow control and logic overview](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/flow-control-and-logic-overview.md): Overview of flow control: conditions, loops, nested flows, and hooks.
- [How to use Selectors](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/how-to-use-selectors.md): Learn to identify UI elements using text, ID, position, and state selectors.
- [Nested flows](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/nested-flows.md): Reuse test logic by calling subflows from parent flows with runFlow.
- [Wait commands](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/wait-commands.md): Control timing with wait commands for animations, network calls, and UI updates.
- [Loops](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/loops.md): Repeat actions using the repeat command for iterative test scenarios.
- [Conditions](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/conditions.md): Execute commands conditionally based on visibility, platform, or custom expressions.
- [Parameters and constants](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/parameters-and-constants.md): Pass dynamic values to flows using CLI parameters and inline constants.
- [Specify and start devices](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/specify-and-start-devices.md): Learn how to launch Android and iOS virtual devices using the Maestro CLI, identify connected hardware, and target specific devices for local testing.
- [Hooks](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/hooks.md): Learn how to use onFlowStart and onFlowComplete hooks for setup and cleanup automation.
- [Test in different locales](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/test-in-different-locales.md): Test your app in multiple languages and regions using locale configuration.
- [Locales supported by Maestro](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/test-in-different-locales/locales-supported-by-maestro.md): Complete list of locale codes supported by Maestro for internationalization testing.
- [Permissions](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/permissions.md): Configure app permissions on launch or mid-flow for iOS and Android testing.
- [Labeling and error handling](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/labeling-and-error-handling.md): Configure label and optional in Maestro to improve test reporting, documentation, and resilient error handling for UI flows.
- [Detect Maestro](https://docs.maestro.dev/maestro-flows/flow-control-and-logic/detect-maestro.md): Detect when your app is running under Maestro automation for test-specific behavior.
- [JavaScript overview](https://docs.maestro.dev/maestro-flows/javascript/javascript-overview.md): Extend Maestro flows with JavaScript for complex logic and data manipulation.
- [Run and debug JavaScript](https://docs.maestro.dev/maestro-flows/javascript/run-and-debug-javascript.md): Execute JavaScript in Flows using inline expressions, evalScript, or runScript with console.log debugging.
- [Manage data and states](https://docs.maestro.dev/maestro-flows/javascript/manage-data-and-states.md): Share data between scripts using the global output object, namespaces, and the maestro.copiedText property.
- [Make HTTP requests](https://docs.maestro.dev/maestro-flows/javascript/make-http-requests.md): Make HTTP API calls from your flows to set up test data or verify backend state.
- [Generate synthetic data](https://docs.maestro.dev/maestro-flows/javascript/generate-synthetic-data.md): Generate random test data with the built-in faker object for names, emails, numbers, and more.
- [Workspace management overview](https://docs.maestro.dev/maestro-flows/workspace-management/workspace-management-overview.md): Organize your Maestro workspace with config.yaml, test architecture, tags, and reporting for scalable automation.
- [Project configuration](https://docs.maestro.dev/maestro-flows/workspace-management/project-configuration.md): Configure your Maestro workspace with config.yaml for test suite settings.
- [Design your test architecture](https://docs.maestro.dev/maestro-flows/workspace-management/design-your-test-architecture.md): Plan your test architecture with guides on repository configuration and test suite structure.
- [Repository configuration](https://docs.maestro.dev/maestro-flows/workspace-management/design-your-test-architecture/repository-configuration.md): Organize your test repository using User Journey or Feature Test patterns for scalable automation.
- [Test discovery and tags](https://docs.maestro.dev/maestro-flows/workspace-management/test-discovery-and-tags.md): Organize tests with tags and control which flows run using include/exclude filters.
- [Sequential execution](https://docs.maestro.dev/maestro-flows/workspace-management/sequential-execution.md): Run flows in a specific order using executionOrder for dependent test scenarios.
- [Test reports and artifacts](https://docs.maestro.dev/maestro-flows/workspace-management/test-reports-and-artifacts.md): Generate test reports, screenshots, and logs for debugging and CI integration.
- [Record your Flow](https://docs.maestro.dev/maestro-flows/workspace-management/record-your-flow.md): Record a Flow as an MP4 with Maestro CLI and share runs for debugging or demos.
- [AI test analysis](https://docs.maestro.dev/maestro-flows/workspace-management/ai-test-analysis.md): Use AI-powered analysis to understand test failures and improve test coverage.

## API Reference

- [Commands overview](https://docs.maestro.dev/reference/readme.md): API Reference covering Maestro commands, selectors for UI elements, and workspace configuration for global settings.
- [Commands available](https://docs.maestro.dev/reference/commands-available.md)
- [addMedia](https://docs.maestro.dev/reference/commands-available/addmedia.md): Add images or videos to the device gallery for media picker testing.
- [assertNoDefectsWithAI](https://docs.maestro.dev/reference/commands-available/assertnodefectswithai.md): AI-powered visual testing to detect UI defects and anomalies.
- [assertNotVisible](https://docs.maestro.dev/reference/commands-available/assertnotvisible.md): Assert that a UI element is not present or visible on the screen.
- [assertScreenshot](https://docs.maestro.dev/reference/commands-available/assertscreenshot.md): Perform visual regression testing of your application against existing screenshots
- [assertTrue](https://docs.maestro.dev/reference/commands-available/asserttrue.md): Assert that a JavaScript expression evaluates to true.
- [assertVisible](https://docs.maestro.dev/reference/commands-available/assertvisible.md): Assert that a UI element is visible on screen with automatic retry.
- [assertWithAI](https://docs.maestro.dev/reference/commands-available/assertwithai.md): Use AI to verify complex UI states with natural language assertions.
- [back](https://docs.maestro.dev/reference/commands-available/back.md): Press the system back button to navigate to the previous screen.
- [clearKeychain](https://docs.maestro.dev/reference/commands-available/clearkeychain.md): Clear iOS keychain data for the app under test.
- [clearState](https://docs.maestro.dev/reference/commands-available/clearstate.md): Clear app data, cache, and preferences to reset to fresh install state.
- [copyTextFrom](https://docs.maestro.dev/reference/commands-available/copytextfrom.md): Copy text content from a UI element to clipboard or variable.
- [doubleTapOn](https://docs.maestro.dev/reference/commands-available/doubletapon.md): Perform a double-tap gesture on a UI element or screen coordinates.
- [eraseText](https://docs.maestro.dev/reference/commands-available/erasetext.md): Delete text from input fields by character count or clear entirely.
- [evalScript](https://docs.maestro.dev/reference/commands-available/evalscript.md): Evaluate inline JavaScript expressions within the flow context.
- [extendedWaitUntil](https://docs.maestro.dev/reference/commands-available/extendedwaituntil.md): Wait for an element with a custom timeout longer than the default.
- [extractTextWithAI](https://docs.maestro.dev/reference/commands-available/extracttextwithai.md): Extract structured data from the screen using AI vision capabilities.
- [hideKeyboard](https://docs.maestro.dev/reference/commands-available/hidekeyboard.md): Dismiss the on-screen keyboard if currently visible.
- [inputText](https://docs.maestro.dev/reference/commands-available/inputtext.md): Type text into focused input fields with optional keyboard handling.
- [killApp](https://docs.maestro.dev/reference/commands-available/killapp.md): Force stop an app and optionally clear all its data and cache.
- [launchApp](https://docs.maestro.dev/reference/commands-available/launchapp.md): Launch an app with optional permission configuration and clear state.
- [longPressOn](https://docs.maestro.dev/reference/commands-available/longpresson.md): Long press on elements for context menus or drag-and-drop operations.
- [openLink](https://docs.maestro.dev/reference/commands-available/openlink.md): Open a URL or deep link in the app or system browser.
- [pasteText](https://docs.maestro.dev/reference/commands-available/pastetext.md): Paste text from clipboard into the currently focused input field.
- [pressKey](https://docs.maestro.dev/reference/commands-available/presskey.md): Press hardware keys like home, back, enter, or volume buttons.
- [repeat](https://docs.maestro.dev/reference/commands-available/repeat.md): Repeat a block of commands a specified number of times.
- [retry](https://docs.maestro.dev/reference/commands-available/retry.md): Retry a block of commands on failure with configurable attempts.
- [runFlow](https://docs.maestro.dev/reference/commands-available/runflow.md): Execute a subflow file with optional environment variables.
- [runScript](https://docs.maestro.dev/reference/commands-available/runscript.md): Run an external JavaScript file and capture its output.
- [scroll](https://docs.maestro.dev/reference/commands-available/scroll.md): A simple vertical scroll to move down the screen to see the content below
- [scrollUntilVisible](https://docs.maestro.dev/reference/commands-available/scrolluntilvisible.md): Automatically scroll until a target element becomes visible on screen.
- [setAirplaneMode](https://docs.maestro.dev/reference/commands-available/setairplanemode.md): Enable airplane mode to test offline behavior.
- [setClipboard](https://docs.maestro.dev/reference/commands-available/setclipboard.md): Set the device clipboard content to a specified text value.
- [setLocation](https://docs.maestro.dev/reference/commands-available/setlocation.md): Set device GPS location to specific coordinates for location testing.
- [setOrientation](https://docs.maestro.dev/reference/commands-available/setorientation.md): Change device orientation between portrait and landscape modes.
- [setPermissions](https://docs.maestro.dev/reference/commands-available/setpermissions.md): Grant or deny app permissions during flow execution.
- [startRecording](https://docs.maestro.dev/reference/commands-available/startrecording.md): Start recording the screen for video documentation of test runs.
- [stopApp](https://docs.maestro.dev/reference/commands-available/stopapp.md): Stop a running app without clearing its data or state.
- [stopRecording](https://docs.maestro.dev/reference/commands-available/stoprecording.md): Stop the current screen recording and save the video file.
- [swipe](https://docs.maestro.dev/reference/commands-available/swipe.md): Swipe gestures in any direction with customizable speed and distance.
- [takeScreenshot](https://docs.maestro.dev/reference/commands-available/takescreenshot.md): Capture a screenshot and save it to the test output directory.
- [tapOn](https://docs.maestro.dev/reference/commands-available/tapon.md): Tap on UI elements by text, ID, or coordinates with optional repeat and delay.
- [toggleAirplaneMode](https://docs.maestro.dev/reference/commands-available/toggleairplanemode.md): Toggle airplane mode on or off during test execution.
- [travel](https://docs.maestro.dev/reference/commands-available/travel.md): Simulate time travel by adjusting the device system clock.
- [waitForAnimationToEnd](https://docs.maestro.dev/reference/commands-available/waitforanimationtoend.md): Wait for UI animations to complete before proceeding.
- [Selectors](https://docs.maestro.dev/reference/selectors.md)
- [Core Selectors](https://docs.maestro.dev/reference/selectors/core-selectors.md): Core selectors: text, id, index, point, and css for identifying UI elements.
- [Relational Selectors](https://docs.maestro.dev/reference/selectors/relational-selectors.md): Identify elements by position (above, below, leftOf, rightOf) or parent-child relationships (containsChild, childOf, containsDescendants).
- [Element Traits](https://docs.maestro.dev/reference/selectors/element-traits.md): Filter elements by traits like square, long-text, and other physical characteristics.
- [State Selectors](https://docs.maestro.dev/reference/selectors/state-selectors.md): Select elements by state: enabled, checked, focused, or selected properties.
- [Dimension matchers](https://docs.maestro.dev/reference/selectors/dimension-matchers.md): Match elements by width and height with optional tolerance values.
- [Workspace configuration](https://docs.maestro.dev/reference/workspace-configuration.md): Reference for all config.yaml properties: appId, flows, env, and platform settings.

## Examples

- [Examples overview](https://docs.maestro.dev/examples/readme.md): Real-world examples and recipes for common Maestro automation scenarios.
- [Check the clipboard content](https://docs.maestro.dev/examples/recipes/check-the-clipboard-content.md): Validate OS clipboard by pasting into system search (Spotlight/Android) and asserting expected text with Maestro.
- [Choose images from the gallery](https://docs.maestro.dev/examples/recipes/choose-images-from-the-gallery.md): Select images from the device gallery in automated tests using addMedia.
- [Download and open a file](https://docs.maestro.dev/examples/recipes/download-and-open-a-file.md): Automate file download and open workflows on mobile devices with Maestro.
- [Reset device state (Android)](https://docs.maestro.dev/examples/recipes/reset-device-state-android.md): Automate the Android Files app to purge stale media and downloads. Ensure a clean device state for every test run to prevent false results.
- [Get the last matching element](https://docs.maestro.dev/examples/recipes/get-the-last-matching-element.md): Select the last element in a list using index selectors and JavaScript.
- [Custom scrolling for screen fragments](https://docs.maestro.dev/examples/recipes/custom-scrolling-for-screen-fragments.md): Scroll to elements inside fragments using custom swipe logic when scrollUntilVisible fails on partial screens.
- [Implementing the Page Object Model (POM)](https://docs.maestro.dev/examples/recipes/implementing-the-page-object-model-pom.md): Implement the Page Object Model pattern for maintainable Maestro test suites.
- [Automate Android Contacts Flow](https://docs.maestro.dev/examples/real-world-examples/automate-android-contacts-flow.md): Automate the Android Contacts app to create contacts with random data using Maestro commands.
- [Automate Facebook Sign-Up (Android)](https://docs.maestro.dev/examples/real-world-examples/automate-facebook-sign-up-android.md): Automate Facebook sign-up on Android with random data, permission dialogs, and native date picker interactions.
- [Advanced: Wikipedia on Android](https://docs.maestro.dev/examples/real-world-examples/advanced-wikipedia-on-android.md): Explore a complete example using Maestro and Wikipedia App. Use subflows, interactive scrolling, and JavaScript for robust, data-driven mobile automation.

## Resources

- [Resources overview](https://docs.maestro.dev/extra-materials/readme.md): Additional resources: community projects, articles, and troubleshooting guides.
- [Known issues](https://docs.maestro.dev/extra-materials/troubleshooting/known-issues.md): Known limitations and workarounds for Maestro on different platforms.
- [FAQ](https://docs.maestro.dev/extra-materials/troubleshooting/faq.md): Frequently asked questions about Maestro installation and usage.
- [Bug report](https://docs.maestro.dev/extra-materials/troubleshooting/bug-report.md): How to report bugs and contribute to Maestro's open-source development.
- [Community projects](https://docs.maestro.dev/extra-materials/community/community-projects.md): VSCode extensions, plugins, and tools built by the Maestro community.
- [Articles](https://docs.maestro.dev/extra-materials/community/articles.md): Articles, blog posts, and tutorials about Maestro from the community and the Maestro team.
- [Showcase](https://docs.maestro.dev/extra-materials/community/showcase.md): Customer success stories from teams using Maestro for mobile testing.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information, you can query the documentation dynamically by asking a question.
Perform an HTTP GET request on a page URL with the `ask` query parameter:
```
GET https://docs.maestro.dev/get-started/readme.md?ask=<question>
```
The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.
Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
