ui-verify

Screenshot and drive the running Tauri desktop app through WebKit's remote inspector.

31|2|Updated Feb 25, 2026
One-click install
npx skills add https://github.com/shaharia-lab/agento --skill ui-verify-shaharia-lab
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ui-verify
Source: https://github.com/shaharia-lab/agento/tree/main/.claude/skills/ui-verify
Command: npx skills add https://github.com/shaharia-lab/agento --skill ui-verify-shaharia-lab

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Verifying a UI change in a Tauri desktop app normally requires manual clicking or heavy E2E frameworks; this Skill lets an agent see and drive the real running webview so visual claims are backed by actual screenshots. ## Core Features & Use Cases - Real webview screenshots: Capture the full viewport or a single element as a PNG through WebKit's remote inspector, with no second app instance or browser. - UI automation: Click by visible text or CSS selector, type React-safe input, send key events, wait on DOM predicates, and read the console — batched through one connection with the do command. - Native input tier: Relaunch under XWayland to use xdotool and import for OS-level clicks and window captures when DOM clicks are not enough. - Use Case: After changing the Insights page, run app.sh to ensure the app is up, then batch a click, a wait on loaded content, and an element screenshot to prove the view renders before claiming the fix works. ## Quick Start Ask the agent to start the app with the ui-verify app.sh script and take a screenshot of the view you just changed to confirm it renders correctly.

Frequently Asked Questions about ui-verify

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I screenshot a Tauri app from an automated script?

Launch the app with WEBKIT_INSPECTOR_HTTP_SERVER set, then run node ui.mjs shot with an output path and optional CSS selector. The script connects to WebKit's remote inspector over WebSocket and writes a PNG of the viewport or a single element.

How do I click and type in a Tauri webview for testing?

Use ui.mjs click with a CSS selector or text= prefix, and ui.mjs type for input. Typing goes through the native value setter plus an input event because React ignores a plain value assignment, and batch steps with the do command over one connection.

Why does my screenshot show a loading spinner instead of the view?

The screenshot was taken before the data arrived. Always wait on content that only exists after loading, such as a row count predicate, rather than shooting immediately after a navigation click.

Does this work with Playwright or WebdriverIO instead?

Playwright drives Chromium, which is not the engine this Linux Tauri app ships on, and WebdriverIO needs its own build and app instance per run. The inspector approach reuses the running app with no extra processes, while WebdriverIO remains the right choice for a cross-platform CI suite.

Why does awaitPromise not work over the WebKit inspector protocol?

WebKit answers awaitPromise with an empty object and wasThrown false, which is indistinguishable from a call returning nothing. The await command instead parks the promise on window and polls its state from outside.

When do I need real OS input instead of DOM clicks?

DOM clicks prove handlers and state changes but skip hit-testing, drag regions, and the native titlebar. Relaunch with app.sh --x11 under XWayland and use xdotool and import for reachability, window dragging, and native captures.