@rolepod/uiproof 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +3 -3
- package/.cursor-plugin/plugin.json +2 -2
- package/CHANGELOG.md +99 -0
- package/README.md +11 -7
- package/dist/bin/rolepod-uiproof.js +1434 -32
- package/dist/bin/rolepod-uiproof.js.map +1 -1
- package/dist/index.d.ts +590 -2
- package/dist/index.js +1456 -32
- package/dist/index.js.map +1 -1
- package/dist/schemas/tools.json +34 -1
- package/package.json +1 -1
- package/skills/check-errors/SKILL.md +114 -0
- package/skills/scaffold-e2e/SKILL.md +14 -0
- package/skills/verify-ui/SKILL.md +137 -70
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
|
|
3
3
|
"name": "rolepod-uiproof",
|
|
4
|
-
"description": "Multi-platform UI / mobile automation MCP server +
|
|
4
|
+
"description": "Multi-platform UI / mobile automation MCP server + 5 shipped skills (verify-ui, audit-a11y, visual-diff, scaffold-e2e, check-errors) for AI coding agents.",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "nuttaruj",
|
|
7
7
|
"url": "https://github.com/nuttaruj"
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
{
|
|
11
11
|
"name": "rolepod-uiproof",
|
|
12
12
|
"source": "./",
|
|
13
|
-
"description": "
|
|
14
|
-
"version": "0.
|
|
13
|
+
"description": "26 MCP tools (21 atomic browser/mobile primitives + 5 composite workflows) + 5 user-invocable skills. v0.5 completes the UI verification surface — console + network observability, hover/drag/fill_form/upload/dialog, runtime emulation, multi-page, gated JS eval — replacing chrome-devtools-mcp and playwright-mcp for UI testing. Web production-ready via Playwright; mobile (iOS/Android) via Appium scaffolded — see `rolepod-uiproof doctor` for readiness.",
|
|
14
|
+
"version": "0.5.0",
|
|
15
15
|
"author": {
|
|
16
16
|
"name": "nuttaruj"
|
|
17
17
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rolepod-uiproof",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Multi-platform UI/mobile automation for AI agents —
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Multi-platform UI/mobile automation for AI agents — 5 shipped skills (verify-ui, audit-a11y, visual-diff, scaffold-e2e, check-errors) + MCP server with 26 tools. v0.5 completes the UI verification surface: console + network observability, hover/drag/fill_form/upload/dialog, runtime emulation, multi-page support, gated JS eval — replacing chrome-devtools-mcp and playwright-mcp for UI testing.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "nuttaruj",
|
|
7
7
|
"url": "https://github.com/nuttaruj"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rolepod-uiproof",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Multi-platform UI/mobile automation for AI agents —
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Multi-platform UI/mobile automation for AI agents — 5 shipped skills (verify-ui, audit-a11y, visual-diff, scaffold-e2e, check-errors) + MCP server with 26 tools. v0.5 completes the UI verification surface: console + network observability, hover/drag/fill_form/upload/dialog, runtime emulation, multi-page, gated JS eval.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "nuttaruj",
|
|
7
7
|
"url": "https://github.com/nuttaruj"
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"interface": {
|
|
26
26
|
"displayName": "Rolepod UIProof",
|
|
27
27
|
"shortDescription": "UI verification, a11y audits, visual diff, e2e scaffolding — for AI coding agents.",
|
|
28
|
-
"longDescription": "rolepod-uiproof ships an MCP server with
|
|
28
|
+
"longDescription": "rolepod-uiproof ships an MCP server with 26 tools (21 atomic + 5 composite) and 5 user-invocable skills (/verify-ui, /audit-a11y, /visual-diff, /scaffold-e2e, /check-errors). Web is fully supported via Playwright; mobile (iOS/Android via Appium) supports basic input. v0.5 completes the UI verification surface — console logs, network requests, HAR/video/trace capture, runtime emulation, multi-page popups.",
|
|
29
29
|
"developerName": "nuttaruj",
|
|
30
30
|
"category": "Productivity",
|
|
31
31
|
"capabilities": ["Read", "Write", "Bash"],
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rolepod-uiproof",
|
|
3
3
|
"displayName": "Rolepod UIProof",
|
|
4
|
-
"version": "0.
|
|
5
|
-
"description": "Multi-platform UI / mobile automation MCP server +
|
|
4
|
+
"version": "0.5.0",
|
|
5
|
+
"description": "Multi-platform UI / mobile automation MCP server + 5 shipped skills (verify-ui, audit-a11y, visual-diff, scaffold-e2e, check-errors) for AI coding agents. v0.5 completes the UI verification surface: console + network observability, hover/drag/fill_form/upload/dialog, runtime emulation, multi-page, gated JS eval — replacing chrome-devtools-mcp and playwright-mcp.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "nuttaruj"
|
|
8
8
|
},
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,105 @@ release.
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.5.0] — 2026-05-27
|
|
11
|
+
|
|
12
|
+
**Complete UI verification surface — one MCP replaces chrome-devtools-mcp
|
|
13
|
+
and playwright-mcp for UI testing use cases.**
|
|
14
|
+
|
|
15
|
+
Tool count: 15 → 26 (atomic 10 → 21, composite 5 unchanged). The five
|
|
16
|
+
"out of scope for `uiproof`" families (Lighthouse, performance traces,
|
|
17
|
+
heap snapshots, extensions, third-party page tools) are intentionally
|
|
18
|
+
**not** added — those belong to future `rolepod-perfproof` and
|
|
19
|
+
`rolepod-secproof` MCPs.
|
|
20
|
+
|
|
21
|
+
### Added — 11 new atomic tools
|
|
22
|
+
|
|
23
|
+
Cross-platform (work on chromium/firefox/webkit; mobile stubs throw
|
|
24
|
+
`engine_error` until gestures land):
|
|
25
|
+
|
|
26
|
+
- `rolepod_browser_hover` — `locator.hover()`; refs stay valid
|
|
27
|
+
- `rolepod_browser_drag` — `locator.dragTo()`
|
|
28
|
+
- `rolepod_browser_fill_form` — batch input/select/checkbox/radio
|
|
29
|
+
- `rolepod_browser_upload_file` — `locator.setInputFiles()`, abs path required
|
|
30
|
+
|
|
31
|
+
Web-only (cast to `PlaywrightEngine`):
|
|
32
|
+
|
|
33
|
+
- `rolepod_browser_handle_dialog` — pre-arm one-shot accept/dismiss
|
|
34
|
+
- `rolepod_browser_console` — list/filter/clear ring-buffered console
|
|
35
|
+
messages (1000-entry cap, errors+warnings default)
|
|
36
|
+
- `rolepod_browser_network` — list/filter network requests, optional HAR export
|
|
37
|
+
- `rolepod_browser_set_env` — runtime viewport / offline / geolocation /
|
|
38
|
+
color_scheme / reduced_motion / extra_headers / network_throttle (CDP) /
|
|
39
|
+
cpu_throttle (CDP)
|
|
40
|
+
- `rolepod_browser_evaluate` — arbitrary JS in page context.
|
|
41
|
+
**Disabled by default** — opt in via `ROLEPOD_ALLOW_EVAL=1` env var
|
|
42
|
+
- `rolepod_browser_pages` — list pages in active context (popups,
|
|
43
|
+
target=_blank, OAuth windows)
|
|
44
|
+
- `rolepod_browser_switch_page` — set active page index
|
|
45
|
+
|
|
46
|
+
### Added — verify_ui_flow capture lifecycle (impl)
|
|
47
|
+
|
|
48
|
+
The `capture` array has accepted these values since v0.1, but only
|
|
49
|
+
`screenshot` was wired. v0.5 fills in the rest:
|
|
50
|
+
|
|
51
|
+
- `console` → `{runDir}/console.json`
|
|
52
|
+
- `har` → `{runDir}/network.har`
|
|
53
|
+
- `video` → `{runDir}/videos/*.webm`
|
|
54
|
+
- `trace` → `{runDir}/trace.zip` (view with `npx playwright show-trace`)
|
|
55
|
+
- `a11y_tree` → `{runDir}/a11y_tree.json`
|
|
56
|
+
|
|
57
|
+
### Added — 8 new verify_ui_flow step kinds
|
|
58
|
+
|
|
59
|
+
`hover`, `drag`, `fill_form`, `upload`, `dialog`, `set_env`,
|
|
60
|
+
`switch_page`, `evaluate`. All get first-class codegen in
|
|
61
|
+
`scaffold_e2e` for playwright-test and pytest+selenium.
|
|
62
|
+
|
|
63
|
+
### Added — 4 new verify_ui_flow expect kinds
|
|
64
|
+
|
|
65
|
+
- `no_console_errors` — filter level=error, drop excludes, count must be 0
|
|
66
|
+
- `no_failed_requests` — filter `failure || status>=400` (or `>=500`
|
|
67
|
+
when `allow_4xx`), drop excludes, count must be 0
|
|
68
|
+
- `request_made` — URL regex + optional method must match `min_count`
|
|
69
|
+
(default 1) times
|
|
70
|
+
- `response_status` — URL regex + exact status code must match
|
|
71
|
+
|
|
72
|
+
### Added — multi-page support
|
|
73
|
+
|
|
74
|
+
A session is now a `context` (was a single page). Popups and
|
|
75
|
+
`target="_blank"` links are auto-tracked. Use `browser_pages` to list,
|
|
76
|
+
`browser_switch_page` to activate. Default active = page 0.
|
|
77
|
+
|
|
78
|
+
### Added — new skill `/check-errors`
|
|
79
|
+
|
|
80
|
+
Thin wrapper over `rolepod_verify_ui_flow` with strict assertions baked
|
|
81
|
+
in. Use case: PR-gate or post-merge smoke.
|
|
82
|
+
|
|
83
|
+
### Changed — `/verify-ui` and `/scaffold-e2e` skills
|
|
84
|
+
|
|
85
|
+
Documented every new step / expect / capture kind. Default suggestion
|
|
86
|
+
in `/verify-ui`: include `no_console_errors` and `no_failed_requests`
|
|
87
|
+
in `expect` for any user-visible flow.
|
|
88
|
+
|
|
89
|
+
### Changed — Engine interface
|
|
90
|
+
|
|
91
|
+
Adds four cross-platform input methods: `hover`, `drag`, `fillForm`,
|
|
92
|
+
`uploadFile`. `OpenOptions.capture` accepts `{ har, video, trace }`.
|
|
93
|
+
`WebSession.page` renamed to `mainPage`; internal call sites go through
|
|
94
|
+
`activePage(s)`.
|
|
95
|
+
|
|
96
|
+
### Non-changes (intentional)
|
|
97
|
+
|
|
98
|
+
- `screencast_*` not added — Playwright `trace.zip` is strictly better.
|
|
99
|
+
- `click_at` not added — use refs from `snapshot`.
|
|
100
|
+
- Lighthouse not added — axe-core covers a11y.
|
|
101
|
+
- Performance traces / heap snapshots not added — `rolepod-perfproof` scope.
|
|
102
|
+
- Extension management not added — out of scope.
|
|
103
|
+
|
|
104
|
+
### Migration from 0.4
|
|
105
|
+
|
|
106
|
+
Pure additions; no behavioral changes on existing tools or
|
|
107
|
+
step/expect/capture kinds. Existing replay bundles play back unchanged.
|
|
108
|
+
|
|
10
109
|
## [0.4.1] — 2026-05-27
|
|
11
110
|
|
|
12
111
|
### Fixed
|
package/README.md
CHANGED
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
# rolepod-uiproof
|
|
2
2
|
|
|
3
|
-
**rolepod-uiproof gives Claude Code, Cursor, Codex CLI, and Gemini CLI a real browser/mobile driver — so the AI can actually click through your UI, audit accessibility, diff screenshots, and scaffold e2e tests instead of guessing.**
|
|
3
|
+
**rolepod-uiproof gives Claude Code, Cursor, Codex CLI, and Gemini CLI a real browser/mobile driver — so the AI can actually click through your UI, audit accessibility, check console errors, inspect network requests, diff screenshots, and scaffold e2e tests instead of guessing.**
|
|
4
4
|
|
|
5
|
-
One MCP server, one tool surface,
|
|
5
|
+
One MCP server, one tool surface, five skills you invoke from chat. Web is production-ready via Playwright; iOS and Android use Appium (same client as alumnium — needs a local Appium daemon + simulator/emulator, or a real device). No internal LLM — your Lead agent drives every action.
|
|
6
|
+
|
|
7
|
+
**v0.5 completes the UI verification surface — replacing `chrome-devtools-mcp` and `playwright-mcp` for UI testing.** 26 tools total (21 atomic + 5 composite). New in v0.5: console + network observability, hover / drag / fill_form / upload / dialog, runtime emulation (resize / offline / geolocation / color_scheme / network + CPU throttle), multi-page support, gated JS eval, and impl of HAR / video / trace capture in `/verify-ui`.
|
|
6
8
|
|
|
7
9
|
## What it helps with
|
|
8
10
|
|
|
9
|
-
- **Verify a UI change in seconds.** `/verify-ui` opens a real browser, runs your steps, checks your assertions, saves a screenshot + replay bundle.
|
|
11
|
+
- **Verify a UI change in seconds.** `/verify-ui` opens a real browser, runs your steps, checks your assertions, saves a screenshot + replay bundle (optionally HAR + video + trace + console logs).
|
|
12
|
+
- **Gate merges on "no regressions during this flow".** `/check-errors` runs a flow with strict `no_console_errors` + `no_failed_requests` assertions baked in. PR-gate or post-merge smoke check.
|
|
10
13
|
- **Catch a11y regressions before merge.** `/audit-a11y` runs axe-core against WCAG-A / AA / AAA and returns issues grouped by severity, with WCAG references and fix links.
|
|
11
14
|
- **Lock down the visual contract.** `/visual-diff` captures a screenshot and compares against a named baseline under `./.rolepod-uiproof/baselines/`. First call seeds; subsequent calls diff.
|
|
12
|
-
- **Turn an interactive verify run into a real test file.** `/scaffold-e2e` transcribes a replay bundle into Playwright Test, Vitest+Playwright, or pytest+selenium.
|
|
15
|
+
- **Turn an interactive verify run into a real test file.** `/scaffold-e2e` transcribes a replay bundle into Playwright Test, Vitest+Playwright, or pytest+selenium — with first-class codegen for every step + expect kind.
|
|
13
16
|
- **Reproduce + minimize a bug deterministically.** `/verify-ui` with `mode: "reproduce"` runs ddmin step-elimination to find the shortest still-reproducing sequence.
|
|
14
17
|
|
|
15
|
-
## The
|
|
18
|
+
## The five skills
|
|
16
19
|
|
|
17
20
|
| Skill | Wraps | What it does |
|
|
18
21
|
|---|---|---|
|
|
19
|
-
| `/verify-ui` | `rolepod_verify_ui_flow` | Drive a session through steps, evaluate assertions, save evidence + replay bundle. `mode: assert`
|
|
22
|
+
| `/verify-ui` | `rolepod_verify_ui_flow` | Drive a session through steps, evaluate assertions (incl. console errors / failed requests / specific request made / response status), save evidence (screenshot / console / HAR / video / trace / a11y_tree) + replay bundle. `mode: assert` or `reproduce` with optional ddmin minimization. |
|
|
23
|
+
| `/check-errors` | `rolepod_verify_ui_flow` | Thin wrapper with strict `no_console_errors` + `no_failed_requests` baked in. Use as PR-gate or post-merge smoke. |
|
|
20
24
|
| `/audit-a11y` | `rolepod_audit_a11y` | axe-core audit at WCAG-A / AA / AAA. `scope: "page"` or `scope: { ref }`. Markdown or JSON report. |
|
|
21
25
|
| `/visual-diff` | `rolepod_visual_diff` | Pixel diff against a named baseline. Auto-seeds on first call. Configurable threshold + pixelmatch sensitivity. |
|
|
22
|
-
| `/scaffold-e2e` | `rolepod_scaffold_e2e` | Generate a runnable test file from a scenario + optional replay bundle. Three target frameworks. |
|
|
26
|
+
| `/scaffold-e2e` | `rolepod_scaffold_e2e` | Generate a runnable test file from a scenario + optional replay bundle. Three target frameworks. v0.5 codegen handles every step + expect kind. |
|
|
23
27
|
|
|
24
28
|
Every skill is **single-backend** (D-024) — it calls the rolepod-uiproof server and only the rolepod-uiproof server. If the server is unavailable, the skill fails with a clear diagnostic. Multi-backend routing belongs in the parent [`rolepod`](https://github.com/nuttaruj/rolepod) plugin's phase skills, not here.
|
|
25
29
|
|