Drive an Android emulator from your LLM. Build, install, launch, and test a feature end-to-end — get a unified logcat-and-actions timeline back.
FAQ
playwright-for-android is a Claude Code plugin with 1 hand-picked skill for testing work, indexed on Flowy. Install it with the command on its page. It includes playwright-for-android. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add fclab-skku/playwright_for_android> /plugin install playwright-for-android@FCLab.SKKU
Repo: fclab-skku/playwright_for_android
Drive an Android emulator from your LLM. Build, install, launch, and test a feature end-to-end — get a unified logcat-and-actions timeline back.
playwright-for-android is a Model Context Protocol server that turns one structured test task ("verify the login screen rejects an empty password") into one auditable debug run — APK built, AVD booted, app launched, UI driven through adb, logcat captured, screenshots saved, verdict written.
Every UI action lands as a typed MCP tool call, so the entire decision trail is visible in your LLM client's chat history and reproducible from trace.jsonl and logcat.log on disk.
start_debug_session call.<<< MARVIS_DEV ... >>> marker into the live logcat stream, so cause and effect sit next to each other in timeline.md.<project_root>/playwright-for-android/<timestamp>/.# Inside Claude Code:
/plugin marketplace add /path/to/playwright-for-android
/plugin install playwright-for-android@FCLab.SKKU
The bundled plugin manifest registers the MCP server automatically via ${CLAUDE_PLUGIN_ROOT}/scripts/server.py.
claude mcp add marvis-dev -- uv run --project /absolute/path/to/playwright-for-android python /absolute/path/to/playwright-for-android/scripts/server.py
Or copy .mcp.json.example to .mcp.json in your project root and edit the path.
uv on PATH — manages Python and dependencies automatically (brew install uv or curl -LsSf https://astral.sh/uv/install.sh | sh).adb and emulator on PATH (default lookup ~/Library/Android/sdk).uv reads pyproject.toml and installs mcp + pillow into an isolated environment on first launch — no manual pip install step, no global Python pollution.
python3 scripts/onboard.py
Writes ~/.config/playwright-for-android/config.json with non-secret defaults (SDK path, default AVD).
| Tool | Purpose |
|---|---|
precheck | JSON readiness report — AVDs, devices, SDK paths |
start_debug_session | Build, boot, install, launch; returns first observation |
observe_screen | Re-capture the current screen without firing input |
tap, long_press, type_text | Touch and keyboard input |
scroll_dir, scroll_to_text_tool | Scrolling |
press_home, press_back | Hardware-key navigation |
wait | Sleep, then re-observe |
finish_test | Write report.md + timeline.md, stop logcat, return the report markdown |
abort_session | Stop logcat without writing a verdict report |
Each action tool returns one text block (task metadata, step counter, UI element list) and one image block (raw screenshot). Coordinates are in image space (half device resolution); the server scales them up before invoking adb input.
See SKILL.md for the full agent-facing contract: workflow, information-trust hierarchy, coordinate conventions, UX-observation rubric, and the report markdown template.
Each start_debug_session invocation writes one directory under <project_root>/playwright-for-android/<YYYY-MM-DDTHH-MM-SS>/ (override with $PLAYWRIGHT_FOR_ANDROID_RUNS_DIR):
playwright-for-android/2026-05-28T22-15-04/
├── logcat.log # annotated logcat with inline <<< MARVIS_DEV ... >>> markers
├── trace.jsonl # one row per step with the action JSON
├── screenshots/
│ ├── step01_raw.jpg
│ └── ...
├── report.md # verdict supplied to finish_test
├── timeline.md # report + logcat in one file — the file to read after a run
└── build_error.log # only if Gradle failed
Add playwright-for-android/ to your project's .gitignore.
Built by Team Marvis at SungKyunKwan University.
MIT — see LICENSE.
.claude-plugin/
marketplace.json
plugin.json
.gitignore
.mcp.json.example
.python-version
LICENSE
pyproject.toml
README.md
scripts/
android_ops.py
emulator.py
logcat_writer.py
marvis/
__init__.pyc
base_parser.pyc
marvis_parser.pyc
observe.py
onboard.py
paths.py
server.py
session.py
skills/
playwright-for-android/
SKILL.md
uv.lock© 2026 Flowy · Free and open source
Built for Claude Code · Not affiliated with Anthropic