flutter-skill-testing
Flutter Skill — AI E2E Testing
Give your AI agent eyes and hands inside any running app.
Description
This skill teaches you how to use flutter-skill to perform end-to-end testing on running applications across 8 platforms: Flutter, iOS, Android, Web, Electron, Tauri, KMP Desktop, React Native, and .NET MAUI.
flutter-skill is an MCP server that connects AI agents to running apps via a bridge protocol. The agent can see screenshots, tap elements, enter text, scroll, navigate, and verify UI state — all without writing test code.
Install
npm install -g flutter-skill
MCP Configuration
Add to your MCP config (Claude Desktop, Cursor, Windsurf, etc.):
{
"mcpServers": {
"flutter-skill": {
"command": "flutter-skill",
"args": ["server"]
}
}
}
Available Tools
| Tool | Description |
|---|---|
screenshot |
Capture current screen state |
tap |
Tap an element by key or text |
enter_text |
Type text into a field |
scroll |
Scroll in any direction |
go_back |
Navigate back |
get_element_properties |
Inspect element details |
wait_for_element |
Wait for element to appear |
get_elements |
List all interactive elements |
swipe |
Swipe gesture |
long_press |
Long press an element |
drag |
Drag from one point to another |
set_text |
Replace text in a field |
clear_text |
Clear a text field |
How to Test an App
Step 1: Launch the app
flutter-skill launch /path/to/your/app
Step 2: Ask your AI agent to test it
Just describe what to test in natural language:
"Test the login flow — enter test@example.com and password123, tap Login, verify Dashboard appears"
The agent will:
screenshot()→ see the current screenenter_text("email", "test@example.com")→ type emailenter_text("password", "password123")→ type passwordtap("Login")→ tap the buttonwait_for_element("Dashboard")→ verify navigationscreenshot()→ confirm final state
Step 3: Complex testing
For comprehensive testing, describe the full flow:
"Explore every screen of this app. Test all buttons, forms, navigation, and edge cases. Report any bugs."
The agent will systematically navigate every screen, interact with every element, and report findings.
Best Practices
- Always start with
screenshot()— see what's on screen before acting - Use
wait_for_element()after navigation — apps need time to transition - Use
get_elements()when unsure — discover available interactive elements - Take screenshots after actions — verify the action had the expected effect
- Use element keys when available — more reliable than text matching
Supported Platforms
| Platform | SDK Setup |
|---|---|
| Flutter | flutter pub add flutter_skill + wrap with FlutterSkillBinding |
| iOS (Swift) | Add FlutterSkillSDK SPM package |
| Android (Kotlin) | Add flutter-skill-android dependency |
| React Native | npm install flutter-skill-react-native |
| Electron | npm install flutter-skill-electron |
| Tauri | cargo add flutter-skill-tauri |
| KMP Desktop | Add Gradle dependency |
| .NET MAUI | Add NuGet package |