Control a running Compose Desktop application via HTTP. Use when you need to interact with UI elements, click buttons, enter text, wait for elements to appear, or capture screenshots in a Compose Desktop app that has compose-ui-test-server enabled.
Instrucciones de origen · Vista previa de solo lectura
name
compose-ui-control
description
Control a running Compose Desktop application via HTTP. Use when you need to interact with UI elements, click buttons, enter text, wait for elements to appear, or capture screenshots in a Compose Desktop app that has compose-ui-test-server enabled.
argument-hint
[action] [target]
metadata
{"short-description":"Drive Compose Desktop apps over HTTP","author":"Forketyfork","source":"https://github.com/forketyfork/compose-ui-test-server/blob/main/SKILL.md"}
compose-ui-test-server
A library that enables AI coding agents to control Compose Desktop applications at runtime via HTTP.
# Normal mode (no server)
./gradlew run
# Agent-controlled mode (server enabled)
COMPOSE_UI_TEST_SERVER_ENABLED=true ./gradlew run
# With custom port (default is 54345)
COMPOSE_UI_TEST_SERVER_ENABLED=true COMPOSE_UI_TEST_SERVER_PORT=8080 ./gradlew run
GET /onNodeWithTag/{tag}/performTextInput?text=...
Enter text (URL-encode the text!)
GET /onNodeWithText/{text}/performClick
Click element by display text
GET /waitUntilExactlyOneExists/tag/{tag}?timeout=5000
Wait for element by tag
GET /waitUntilExactlyOneExists/text/{text}?exact=true&timeout=5000
Wait for element by text
GET /waitForIdle
Wait for UI to stabilize
GET /captureScreenshot?path=screenshot.png
Capture screenshot
Workflow Pattern
Follow this sequence for reliable interactions:
# 1. Verify server is running
curl http://localhost:54345/health
# 2. Wait for UI to be ready
curl http://localhost:54345/waitForIdle
# 3. Perform action
curl "http://localhost:54345/onNodeWithTag/username/performTextInput?text=myuser"# 4. Wait for UI to settle
curl http://localhost:54345/waitForIdle
# 5. Perform next action
curl http://localhost:54345/onNodeWithTag/login_button/performClick
# 6. Wait for result
curl "http://localhost:54345/waitUntilExactlyOneExists/tag/dashboard?timeout=10000"# 7. Capture screenshot to verify
curl "http://localhost:54345/captureScreenshot?path=result.png"