Agentic UX testing for real Electron apps through the Model Context Protocol. Launch, inspect, interact, assert, and capture evidence through MCP.
Electron Stagewright provides 30 well-structured tools with consistent naming (verb_noun pattern: launch, snapshot, click, type, key, assert, etc.) and complete JSON Schema definitions. All tools have descriptions (avg ~80 chars) and typed parameters with descriptions. However, output schemas are not documented in the visible source, only input schemas are shown. Error handling guidance is minimal; most tools lack recovery hints or actionable error messages. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Parameter descriptions are adequate but could be more prescriptive about constraints and dependencies. The plugin architecture and framework-agnostic design are strengths, but documentation of return types and error codes is absent.
Assert that an element exists or has specific properties in the Electron app
Run accessibility audit on the current surface using axe-core
Click on an element in the Electron app by selector or accessibility identifier
Advance the virtual clock by a specified duration
Freeze the virtual clock at a specific time
Install a virtual clock for deterministic time control in the Electron app
Close the Electron app session
Capture IPC traffic on a specific channel
Output schemas not documented. Tool descriptions state what is captured (DOM tree, accessibility tree, visual representation) but do not specify the structure of returned data. LLMs cannot plan downstream tool calls without knowing what fields to extract.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite explicit risk classifications (READ_ONLY, WRITE). Agents cannot infer safety properties from tool definitions alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Invoke an IPC channel with arguments
Stub an IPC channel to return a specific response
Press a keyboard key or key combination in the Electron app
Launch an Electron app with optional arguments and environment variables
Invoke a menu item by path
Read the application menu structure
Capture network requests matching a URL pattern
Stub network requests matching a URL pattern to return a specific response
Read notifications that have been shown
Check notarization status of a macOS app
Check code signing status of a macOS app
Validate a packaged macOS app bundle structure and metadata
Capture a screenshot of the Electron app window
Capture a snapshot of the current state of an Electron app window, including DOM tree, accessibility tree, and visual representation
Read storage data (cookies, localStorage, sessionStorage, IndexedDB)
Seed storage with initial data
Record a driving session to JSONL for later replay
Report token usage and statistics from a recorded trace
Invoke a tray menu item
Read the system tray menu structure
Type text into a focused input element in the Electron app
Capture a screenshot with visual baseline comparison
Error handling guidance absent. Tools do not document error codes, recovery steps, or actionable messages. E.g., 'snapshot' may fail if sessionId is invalid, but no guidance on how to recover or what to try next.
Parameter descriptions lack prescriptive constraints. E.g., 'selector' in click/assert accepts 'CSS selector or accessibility identifier' but does not specify format, length limits, or examples. LLMs may pass invalid selectors.
No pagination or result-limiting guidance. Tools like 'menu_read', 'tray_read', 'storage_read' may return large structures without documented limits. No mention of max items, pagination tokens, or truncation behavior.