
test-app
Run integration tests on the Claude Code Orchestrator app. Use this skill to interact with the runni
Test App Skill
This skill allows you to interact with the running Claude Code Orchestrator application for integration testing.
IMPORTANT: This is a native desktop Avalonia app, NOT a web app. Do NOT use Chrome DevTools MCP or any browser-based tools. Use the app's built-in CLI automation commands described below.
Prerequisites
The app must be running. Start it with:
cd ./src/ClaudeCodeOrchestrator.App && dotnet run
Or if already built (Windows):
./src/ClaudeCodeOrchestrator.App/bin/Debug/net8.0/ClaudeCodeOrchestrator.App.exe
Or on macOS/Linux:
./src/ClaudeCodeOrchestrator.App/bin/Debug/net8.0/ClaudeCodeOrchestrator.App
Targeting a Specific Instance (Required)
Since multiple instances of the app can run simultaneously, you must specify which instance to interact with using the --pid flag.
Finding the PID
On Windows:
Get-Process -Name "ClaudeCodeOrchestrator.App" | Select-Object Id
On macOS/Linux:
pgrep -f "ClaudeCodeOrchestrator.App"
Using the PID
All CLI commands require the --pid flag to target a specific instance:
$APP --pid $APP_PID --ping
$APP --pid $APP_PID --click FileMenu
$APP --pid $APP_PID --screenshot ./test.png
CLI Commands
The app binary supports automation commands when passed CLI arguments.
Set up the APP variable first:
# Windows
APP="./src/ClaudeCodeOrchestrator.App/bin/Debug/net8.0/ClaudeCodeOrchestrator.App.exe"
# macOS/Linux
APP="./src/ClaudeCodeOrchestrator.App/bin/Debug/net8.0/ClaudeCodeOrchestrator.App"
Check if app is running
$APP --pid $APP_PID --ping
Click an element
# By automation ID
$APP --pid $APP_PID --click FileMenu
# By coordinates
$APP --pid $APP_PID --click --x 100 --y 50
Type text
# Into focused element
$APP --pid $APP_PID --type "Hello World"
# Into specific element
$APP --pid $APP_PID --type "Task description" --id TaskDescriptionInput
Press keys
# Single key
$APP --pid $APP_PID --key Enter
# Key combination
$APP --pid $APP_PID --key Ctrl+S
Take screenshot
# Save to file
$APP --pid $APP_PID --screenshot ./test-screenshot.png
# Get base64 (for inline viewing)
$APP --pid $APP_PID --screenshot
List elements with automation IDs
$APP --pid $APP_PID --elements
# Filter by type
$APP --pid $APP_PID --elements Button
Wait
# Wait for duration
$APP --pid $APP_PID --wait 1000
# Wait for element to appear
$APP --pid $APP_PID --wait --for NewTaskDialog --timeout 5000
Focus element
$APP --pid $APP_PID --focus TaskDescriptionInput
Available Automation IDs
Main Window
MainMenu- The menu barFileMenu- File menuOpenRepositoryMenuItem- File > Open RepositoryCloseRepositoryMenuItem- File > Close RepositoryExitMenuItem- File > ExitTaskMenu- Task menuNewTaskMenuItem- Task > New TaskViewMenu- View menuHelpMenu- Help menu
Worktrees Panel
WorktreesPanel- The worktrees panelNewTaskButton- "+ New Task" buttonRefreshWorktreesButton- Refresh button
New Task Dialog
NewTaskDialog- The dialog windowTaskDescriptionInput- Task description text boxTaskCreateButton- Create buttonTaskCancelButton- Cancel buttonTaskErrorText- Error message text
Example Test Workflows
Test: Open a repository
# Set up APP variable (adjust for your OS)
APP="./src/ClaudeCodeOrchestrator.App/bin/Debug/net8.0/ClaudeCodeOrchestrator.App.exe"
# Find running instance PID
APP_PID=$(pgrep -f "ClaudeCodeOrchestrator.App" | head -1)
# Verify app is running
$APP --pid $APP_PID --ping
# Click File menu
$APP --pid $APP_PID --click FileMenu
# Click Open Repository
$APP --pid $APP_PID --click OpenRepositoryMenuItem
# Take screenshot to verify dialog opened
$APP --pid $APP_PID --screenshot ./open-repo-dialog.png
Test: Create a new task (requires open repository)
APP="./src/ClaudeCodeOrchestrator.App/bin/Debug/net8.0/ClaudeCodeOrchestrator.App.exe"
APP_PID=$(pgrep -f "ClaudeCodeOrchestrator.App" | head -1)
# Click Task menu
$APP --pid $APP_PID --click TaskMenu
# Click New Task
$APP --pid $APP_PID --click NewTaskMenuItem
# Wait for dialog
$APP --pid $APP_PID --wait --for NewTaskDialog --timeout 3000
# Type task description
$APP --pid $APP_PID --type "Add user authentication" --id TaskDescriptionInput
# Click Create
$APP --pid $APP_PID --click TaskCreateButton
Tips
- Always specify
--pidto target the correct app instance when multiple are running - Always check
--pingfirst to ensure the app is running and responsive - Use
--screenshotto capture state for verification - Use
--wait --for <id>when expecting dialogs to appear - Menu items need the menu to be open first (click FileMenu, then click OpenRepositoryMenuItem)
- On Windows, use
.exeextension for the binary path - Use relative paths from the repository root for portability