---
slug: "maestro-dev-skills"
source_type: "skill_md"
source_url: "https://cdn.jsdelivr.net/gh/raphaelbarbosaqwerty/maestro-dev-skills@main/SKILL.md"
repo: "https://github.com/raphaelbarbosaqwerty/maestro-dev-skills"
source_file: "SKILL.md"
branch: "main"
---
---
name: maestro-e2e
description: E2E UI testing with Maestro for iOS, Android, Flutter, React Native, and Web
metadata:
  tags: maestro, e2e, testing, ui, automation, flutter, react-native, ios, android, web
---

## When to use

Use this skill whenever you are:

- Creating E2E, UI, or integration tests
- Testing login, registration, or navigation flows
- Handling permission dialogs (camera, location, notifications)
- Debugging test failures or exploring UI hierarchy
- Working with Maestro test files (.yaml)

## Captions

When dealing with native permission dialogs, load the [./rules/permissions.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/permissions.md) file for platform-specific information.

When working with Flutter apps, load the [./rules/platforms/flutter.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/platforms/flutter.md) file for Semantics patterns.

## How to use

Read individual rule files for detailed explanations and code examples:

### Core

- [rules/installation.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/installation.md) - Installing Maestro on macOS, Linux, and Windows
- [rules/test-structure.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/test-structure.md) - YAML test structure, appId, env variables, and flow definition
- [rules/commands.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/commands.md) - Complete reference of 40+ Maestro commands
- [rules/selectors.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/selectors.md) - Element targeting with id, text, index, and matchers
- [rules/assertions.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/assertions.md) - assertVisible, assertNotVisible, assertTrue, and AI assertions
- [rules/interactions.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/interactions.md) - tapOn, inputText, scroll, swipe, and gesture commands
- [rules/permissions.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/permissions.md) - iOS vs Android permission configuration and dialog handling

### Platforms

- [rules/platforms/android.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/platforms/android.md) - Android-specific: ADB, permission dialogs, emulators
- [rules/platforms/ios.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/platforms/ios.md) - iOS-specific: auto-dismiss dialogs, simulators, limitations
- [rules/platforms/flutter.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/platforms/flutter.md) - Flutter integration using Semantics and identifier
- [rules/platforms/react-native.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/platforms/react-native.md) - React Native with testID and accessibilityLabel
- [rules/platforms/web.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/platforms/web.md) - Desktop browser testing with Chromium

### Advanced

- [rules/advanced/parameters.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/advanced/parameters.md) - Environment variables, external params, ${} syntax
- [rules/advanced/conditions.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/advanced/conditions.md) - Conditional execution with when: visible, platform
- [rules/advanced/nested-flows.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/advanced/nested-flows.md) - Reusable subflows with runFlow command
- [rules/advanced/javascript.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/advanced/javascript.md) - evalScript, runScript, and GraalJS support
- [rules/advanced/waiting.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/advanced/waiting.md) - extendedWaitUntil, waitForAnimationToEnd
- [rules/advanced/repeat-retry.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/advanced/repeat-retry.md) - Repeat and retry patterns for flaky tests

### Additional

- [rules/debugging.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/debugging.md) - Maestro Studio, hierarchy inspection, troubleshooting
- [rules/screenshots.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/screenshots.md) - Screenshots, video recording, and visual evidence
- [rules/ci-integration.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/ci-integration.md) - GitHub Actions, GitLab CI, Maestro Cloud
- [rules/best-practices.md](https://github.com/raphaelbarbosaqwerty/maestro-dev-skills/blob/HEAD/rules/best-practices.md) - Semantic identifiers, atomic tests, project structure
