@creatoria/miniapp-mcp 0.2.0 → 0.2.2
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/README.md +127 -73
- package/dist/capabilities/assert/handlers/assert-handlers.d.ts +98 -0
- package/dist/capabilities/assert/handlers/assert-handlers.d.ts.map +1 -0
- package/dist/capabilities/assert/handlers/assert-handlers.js +179 -0
- package/dist/capabilities/assert/handlers/assert-handlers.js.map +1 -0
- package/dist/capabilities/assert/handlers/index.d.ts +7 -0
- package/dist/capabilities/assert/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/assert/handlers/index.js +7 -0
- package/dist/capabilities/assert/handlers/index.js.map +1 -0
- package/dist/capabilities/assert/index.d.ts +12 -2
- package/dist/capabilities/assert/index.d.ts.map +1 -1
- package/dist/capabilities/assert/index.js +87 -2
- package/dist/capabilities/assert/index.js.map +1 -1
- package/dist/capabilities/assert/schemas/index.d.ts +101 -0
- package/dist/capabilities/assert/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/assert/schemas/index.js +62 -0
- package/dist/capabilities/assert/schemas/index.js.map +1 -0
- package/dist/capabilities/automator/handlers/close.d.ts +18 -0
- package/dist/capabilities/automator/handlers/close.d.ts.map +1 -0
- package/dist/capabilities/automator/handlers/close.js +45 -0
- package/dist/capabilities/automator/handlers/close.js.map +1 -0
- package/dist/capabilities/automator/handlers/connect.d.ts +24 -0
- package/dist/capabilities/automator/handlers/connect.d.ts.map +1 -0
- package/dist/capabilities/automator/handlers/connect.js +51 -0
- package/dist/capabilities/automator/handlers/connect.js.map +1 -0
- package/dist/capabilities/automator/handlers/disconnect.d.ts +16 -0
- package/dist/capabilities/automator/handlers/disconnect.d.ts.map +1 -0
- package/dist/capabilities/automator/handlers/disconnect.js +44 -0
- package/dist/capabilities/automator/handlers/disconnect.js.map +1 -0
- package/dist/capabilities/automator/handlers/index.d.ts +8 -0
- package/dist/capabilities/automator/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/automator/handlers/index.js +8 -0
- package/dist/capabilities/automator/handlers/index.js.map +1 -0
- package/dist/capabilities/automator/handlers/launch.d.ts +25 -0
- package/dist/capabilities/automator/handlers/launch.d.ts.map +1 -0
- package/dist/capabilities/automator/handlers/launch.js +61 -0
- package/dist/capabilities/automator/handlers/launch.js.map +1 -0
- package/dist/capabilities/automator/index.d.ts +11 -2
- package/dist/capabilities/automator/index.d.ts.map +1 -1
- package/dist/capabilities/automator/index.js +51 -2
- package/dist/capabilities/automator/index.js.map +1 -1
- package/dist/capabilities/automator/schemas/index.d.ts +5 -0
- package/dist/capabilities/automator/schemas/index.d.ts.map +1 -1
- package/dist/capabilities/automator/schemas/index.js +6 -4
- package/dist/capabilities/automator/schemas/index.js.map +1 -1
- package/dist/capabilities/element/handlers/element-handlers.d.ts +212 -0
- package/dist/capabilities/element/handlers/element-handlers.d.ts.map +1 -0
- package/dist/capabilities/element/handlers/element-handlers.js +383 -0
- package/dist/capabilities/element/handlers/element-handlers.js.map +1 -0
- package/dist/capabilities/element/handlers/index.d.ts +7 -0
- package/dist/capabilities/element/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/element/handlers/index.js +27 -0
- package/dist/capabilities/element/handlers/index.js.map +1 -0
- package/dist/capabilities/element/index.d.ts +17 -2
- package/dist/capabilities/element/index.d.ts.map +1 -1
- package/dist/capabilities/element/index.js +196 -2
- package/dist/capabilities/element/index.js.map +1 -1
- package/dist/capabilities/element/schemas/index.d.ts +325 -0
- package/dist/capabilities/element/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/element/schemas/index.js +168 -0
- package/dist/capabilities/element/schemas/index.js.map +1 -0
- package/dist/capabilities/index.d.ts +23 -4
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/index.js +29 -3
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/loader.d.ts +61 -0
- package/dist/capabilities/loader.d.ts.map +1 -0
- package/dist/capabilities/loader.js +164 -0
- package/dist/capabilities/loader.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/call-wx.d.ts +24 -0
- package/dist/capabilities/miniprogram/handlers/call-wx.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/call-wx.js +37 -0
- package/dist/capabilities/miniprogram/handlers/call-wx.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/evaluate.d.ts +32 -0
- package/dist/capabilities/miniprogram/handlers/evaluate.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/evaluate.js +51 -0
- package/dist/capabilities/miniprogram/handlers/evaluate.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/index.d.ts +12 -0
- package/dist/capabilities/miniprogram/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/index.js +12 -0
- package/dist/capabilities/miniprogram/handlers/index.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/navigate.d.ts +26 -0
- package/dist/capabilities/miniprogram/handlers/navigate.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/navigate.js +56 -0
- package/dist/capabilities/miniprogram/handlers/navigate.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/page-stack.d.ts +20 -0
- package/dist/capabilities/miniprogram/handlers/page-stack.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/page-stack.js +37 -0
- package/dist/capabilities/miniprogram/handlers/page-stack.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/screenshot.d.ts +33 -0
- package/dist/capabilities/miniprogram/handlers/screenshot.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/screenshot.js +132 -0
- package/dist/capabilities/miniprogram/handlers/screenshot.js.map +1 -0
- package/dist/capabilities/miniprogram/handlers/system-info.d.ts +17 -0
- package/dist/capabilities/miniprogram/handlers/system-info.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/handlers/system-info.js +31 -0
- package/dist/capabilities/miniprogram/handlers/system-info.js.map +1 -0
- package/dist/capabilities/miniprogram/index.d.ts +12 -2
- package/dist/capabilities/miniprogram/index.d.ts.map +1 -1
- package/dist/capabilities/miniprogram/index.js +66 -2
- package/dist/capabilities/miniprogram/index.js.map +1 -1
- package/dist/capabilities/miniprogram/schemas/call-wx.d.ts +15 -0
- package/dist/capabilities/miniprogram/schemas/call-wx.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/call-wx.js +11 -0
- package/dist/capabilities/miniprogram/schemas/call-wx.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/evaluate.d.ts +15 -0
- package/dist/capabilities/miniprogram/schemas/evaluate.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/evaluate.js +11 -0
- package/dist/capabilities/miniprogram/schemas/evaluate.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/index.d.ts +10 -0
- package/dist/capabilities/miniprogram/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/index.js +10 -0
- package/dist/capabilities/miniprogram/schemas/index.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/navigate.d.ts +18 -0
- package/dist/capabilities/miniprogram/schemas/navigate.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/navigate.js +22 -0
- package/dist/capabilities/miniprogram/schemas/navigate.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/page-stack.d.ts +6 -0
- package/dist/capabilities/miniprogram/schemas/page-stack.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/page-stack.js +6 -0
- package/dist/capabilities/miniprogram/schemas/page-stack.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/screenshot.d.ts +18 -0
- package/dist/capabilities/miniprogram/schemas/screenshot.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/screenshot.js +21 -0
- package/dist/capabilities/miniprogram/schemas/screenshot.js.map +1 -0
- package/dist/capabilities/miniprogram/schemas/system-info.d.ts +6 -0
- package/dist/capabilities/miniprogram/schemas/system-info.d.ts.map +1 -0
- package/dist/capabilities/miniprogram/schemas/system-info.js +6 -0
- package/dist/capabilities/miniprogram/schemas/system-info.js.map +1 -0
- package/dist/capabilities/network/handlers/index.d.ts +7 -0
- package/dist/capabilities/network/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/network/handlers/index.js +7 -0
- package/dist/capabilities/network/handlers/index.js.map +1 -0
- package/dist/capabilities/network/handlers/network-handlers.d.ts +53 -0
- package/dist/capabilities/network/handlers/network-handlers.d.ts.map +1 -0
- package/dist/capabilities/network/handlers/network-handlers.js +127 -0
- package/dist/capabilities/network/handlers/network-handlers.js.map +1 -0
- package/dist/capabilities/network/index.d.ts +12 -2
- package/dist/capabilities/network/index.d.ts.map +1 -1
- package/dist/capabilities/network/index.js +66 -2
- package/dist/capabilities/network/index.js.map +1 -1
- package/dist/capabilities/network/schemas/index.d.ts +53 -0
- package/dist/capabilities/network/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/network/schemas/index.js +33 -0
- package/dist/capabilities/network/schemas/index.js.map +1 -0
- package/dist/capabilities/page/handlers/index.d.ts +7 -0
- package/dist/capabilities/page/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/page/handlers/index.js +7 -0
- package/dist/capabilities/page/handlers/index.js.map +1 -0
- package/dist/capabilities/page/handlers/page-handlers.d.ts +165 -0
- package/dist/capabilities/page/handlers/page-handlers.d.ts.map +1 -0
- package/dist/capabilities/page/handlers/page-handlers.js +258 -0
- package/dist/capabilities/page/handlers/page-handlers.js.map +1 -0
- package/dist/capabilities/page/index.d.ts +12 -2
- package/dist/capabilities/page/index.d.ts.map +1 -1
- package/dist/capabilities/page/index.js +80 -2
- package/dist/capabilities/page/index.js.map +1 -1
- package/dist/capabilities/page/schemas/index.d.ts +91 -0
- package/dist/capabilities/page/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/page/schemas/index.js +55 -0
- package/dist/capabilities/page/schemas/index.js.map +1 -0
- package/dist/capabilities/record/handlers/index.d.ts +7 -0
- package/dist/capabilities/record/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/record/handlers/index.js +7 -0
- package/dist/capabilities/record/handlers/index.js.map +1 -0
- package/dist/capabilities/record/handlers/record-handlers.d.ts +76 -0
- package/dist/capabilities/record/handlers/record-handlers.d.ts.map +1 -0
- package/dist/capabilities/record/handlers/record-handlers.js +255 -0
- package/dist/capabilities/record/handlers/record-handlers.js.map +1 -0
- package/dist/capabilities/record/index.d.ts +12 -2
- package/dist/capabilities/record/index.d.ts.map +1 -1
- package/dist/capabilities/record/index.js +66 -2
- package/dist/capabilities/record/index.js.map +1 -1
- package/dist/capabilities/record/schemas/index.d.ts +47 -0
- package/dist/capabilities/record/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/record/schemas/index.js +33 -0
- package/dist/capabilities/record/schemas/index.js.map +1 -0
- package/dist/capabilities/registry.d.ts +138 -0
- package/dist/capabilities/registry.d.ts.map +1 -0
- package/dist/capabilities/registry.js +261 -0
- package/dist/capabilities/registry.js.map +1 -0
- package/dist/capabilities/snapshot/handlers/index.d.ts +7 -0
- package/dist/capabilities/snapshot/handlers/index.d.ts.map +1 -0
- package/dist/capabilities/snapshot/handlers/index.js +7 -0
- package/dist/capabilities/snapshot/handlers/index.js.map +1 -0
- package/dist/capabilities/snapshot/handlers/snapshot-handlers.d.ts +75 -0
- package/dist/capabilities/snapshot/handlers/snapshot-handlers.d.ts.map +1 -0
- package/dist/capabilities/snapshot/handlers/snapshot-handlers.js +201 -0
- package/dist/capabilities/snapshot/handlers/snapshot-handlers.js.map +1 -0
- package/dist/capabilities/snapshot/index.d.ts +12 -2
- package/dist/capabilities/snapshot/index.d.ts.map +1 -1
- package/dist/capabilities/snapshot/index.js +45 -2
- package/dist/capabilities/snapshot/index.js.map +1 -1
- package/dist/capabilities/snapshot/schemas/index.d.ts +47 -0
- package/dist/capabilities/snapshot/schemas/index.d.ts.map +1 -0
- package/dist/capabilities/snapshot/schemas/index.js +28 -0
- package/dist/capabilities/snapshot/schemas/index.js.map +1 -0
- package/dist/runtime/index.d.ts +2 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +2 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/logging/tool-logger.js +2 -2
- package/dist/runtime/logging/tool-logger.js.map +1 -1
- package/dist/runtime/retry/index.d.ts +5 -0
- package/dist/runtime/retry/index.d.ts.map +1 -0
- package/dist/runtime/retry/index.js +5 -0
- package/dist/runtime/retry/index.js.map +1 -0
- package/dist/runtime/retry/retry.d.ts +61 -0
- package/dist/runtime/retry/retry.d.ts.map +1 -0
- package/dist/runtime/retry/retry.js +90 -0
- package/dist/runtime/retry/retry.js.map +1 -0
- package/dist/runtime/timeout/timeout.d.ts +10 -0
- package/dist/runtime/timeout/timeout.d.ts.map +1 -1
- package/dist/runtime/timeout/timeout.js +10 -0
- package/dist/runtime/timeout/timeout.js.map +1 -1
- package/dist/server.js +4 -4
- package/dist/server.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +7 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/miniprogram.d.ts +11 -1
- package/dist/tools/miniprogram.d.ts.map +1 -1
- package/dist/tools/miniprogram.js +102 -20
- package/dist/tools/miniprogram.js.map +1 -1
- package/docs/current/01-architecture-migration.md +337 -0
- package/docs/current/02-screenshot-timeout-fix.md +589 -0
- package/docs/current/README.md +226 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,12 +9,13 @@ Model Context Protocol (MCP) server for WeChat Mini Program automation using the
|
|
|
9
9
|
|
|
10
10
|
## Features
|
|
11
11
|
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
12
|
+
- **LLM-Friendly**: 65 AI-optimized tools for natural language automation
|
|
13
|
+
- **Complete Coverage**: Automator, MiniProgram, Page, Element, Assert, Snapshot, Record, Network tools
|
|
14
|
+
- **Robust Runtime**: Built-in timeout protection and retry mechanism for all async operations
|
|
15
|
+
- **Zero Config**: Auto-detects project path from `project.config.json` or `app.json`
|
|
16
|
+
- **npx Ready**: No installation needed, just `npx -y @creatoria/miniapp-mcp`
|
|
17
|
+
- **Test Automation**: Built-in assertion and recording capabilities
|
|
18
|
+
- **TypeScript**: Full type definitions with comprehensive test coverage
|
|
18
19
|
|
|
19
20
|
## Quick Start
|
|
20
21
|
|
|
@@ -127,107 +128,161 @@ The server automatically searches for mini program projects:
|
|
|
127
128
|
<details>
|
|
128
129
|
<summary><strong>Automator (4 tools)</strong> - Connection & Lifecycle</summary>
|
|
129
130
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
| Tool | Description |
|
|
132
|
+
|------|-------------|
|
|
133
|
+
| `miniprogram_launch` | Launch WeChat Mini Program with automator |
|
|
134
|
+
| `miniprogram_connect` | Connect to running DevTools instance |
|
|
135
|
+
| `miniprogram_disconnect` | Disconnect but keep IDE running |
|
|
136
|
+
| `miniprogram_close` | Close session and cleanup resources |
|
|
134
137
|
|
|
135
138
|
</details>
|
|
136
139
|
|
|
137
140
|
<details>
|
|
138
141
|
<summary><strong>MiniProgram (6 tools)</strong> - App-Level Operations</summary>
|
|
139
142
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
| Tool | Description |
|
|
144
|
+
|------|-------------|
|
|
145
|
+
| `miniprogram_navigate` | Navigate using navigateTo/redirectTo/reLaunch/switchTab/navigateBack |
|
|
146
|
+
| `miniprogram_call_wx` | Call WeChat API methods (wx.*) |
|
|
147
|
+
| `miniprogram_evaluate` | Execute JavaScript in mini program context |
|
|
148
|
+
| `miniprogram_screenshot` | Take screenshots (supports base64 return and fullPage mode) |
|
|
149
|
+
| `miniprogram_get_page_stack` | Get current page stack |
|
|
150
|
+
| `miniprogram_get_system_info` | Get system information |
|
|
146
151
|
|
|
147
152
|
</details>
|
|
148
153
|
|
|
149
154
|
<details>
|
|
150
155
|
<summary><strong>Page (8 tools)</strong> - Page-Level Operations</summary>
|
|
151
156
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
| Tool | Description |
|
|
158
|
+
|------|-------------|
|
|
159
|
+
| `page_query` | Query single element |
|
|
160
|
+
| `page_query_all` | Query all matching elements |
|
|
161
|
+
| `page_wait_for` | Wait for condition or selector |
|
|
162
|
+
| `page_get_data` | Get page data |
|
|
163
|
+
| `page_set_data` | Set page data |
|
|
164
|
+
| `page_call_method` | Call page methods |
|
|
165
|
+
| `page_get_size` | Get page dimensions |
|
|
166
|
+
| `page_get_scroll_top` | Get scroll position |
|
|
160
167
|
|
|
161
168
|
</details>
|
|
162
169
|
|
|
163
170
|
<details>
|
|
164
171
|
<summary><strong>Element (23 tools)</strong> - Element-Level Operations</summary>
|
|
165
172
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
173
|
+
| Tool | Description |
|
|
174
|
+
|------|-------------|
|
|
175
|
+
| `element_tap` | Tap/click element |
|
|
176
|
+
| `element_longpress` | Long press element |
|
|
177
|
+
| `element_input` | Input text (input/textarea) |
|
|
178
|
+
| `element_get_text` | Get text content |
|
|
179
|
+
| `element_get_attribute` | Get element attribute |
|
|
180
|
+
| `element_get_property` | Get element property |
|
|
181
|
+
| `element_get_value` | Get element value |
|
|
182
|
+
| `element_get_size` | Get element size |
|
|
183
|
+
| `element_get_offset` | Get element offset |
|
|
184
|
+
| `element_trigger` | Trigger custom events |
|
|
185
|
+
| `element_get_style` | Get element style |
|
|
186
|
+
| `element_touchstart` | Touch start event |
|
|
187
|
+
| `element_touchmove` | Touch move event |
|
|
188
|
+
| `element_touchend` | Touch end event |
|
|
189
|
+
| `element_scroll_to` | Scroll to position (ScrollView) |
|
|
190
|
+
| `element_scroll_width` | Get scroll width (ScrollView) |
|
|
191
|
+
| `element_scroll_height` | Get scroll height (ScrollView) |
|
|
192
|
+
| `element_swipe_to` | Swipe to index (Swiper) |
|
|
193
|
+
| `element_move_to` | Move to position (MovableView) |
|
|
194
|
+
| `element_slide_to` | Slide to value (Slider) |
|
|
195
|
+
| `element_call_context_method` | Call context method |
|
|
196
|
+
| `element_set_data` | Set data on custom element |
|
|
197
|
+
| `element_call_method` | Call method on custom element |
|
|
175
198
|
|
|
176
199
|
</details>
|
|
177
200
|
|
|
178
201
|
<details>
|
|
179
202
|
<summary><strong>Assert (9 tools)</strong> - Testing & Verification</summary>
|
|
180
203
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
204
|
+
| Tool | Description |
|
|
205
|
+
|------|-------------|
|
|
206
|
+
| `assert_exists` | Assert element exists |
|
|
207
|
+
| `assert_not_exists` | Assert element doesn't exist |
|
|
208
|
+
| `assert_text` | Assert text equals expected |
|
|
209
|
+
| `assert_text_contains` | Assert text contains substring |
|
|
210
|
+
| `assert_value` | Assert value equals expected |
|
|
211
|
+
| `assert_attribute` | Assert attribute equals expected |
|
|
212
|
+
| `assert_property` | Assert property equals expected |
|
|
213
|
+
| `assert_data` | Assert page data equals expected |
|
|
214
|
+
| `assert_visible` | Assert element is visible |
|
|
190
215
|
|
|
191
216
|
</details>
|
|
192
217
|
|
|
193
218
|
<details>
|
|
194
219
|
<summary><strong>Snapshot (3 tools)</strong> - State Capture</summary>
|
|
195
220
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
221
|
+
| Tool | Description |
|
|
222
|
+
|------|-------------|
|
|
223
|
+
| `snapshot_page` | Capture page snapshot (data + screenshot) |
|
|
224
|
+
| `snapshot_full` | Capture full app snapshot (system + page stack) |
|
|
225
|
+
| `snapshot_element` | Capture element snapshot |
|
|
199
226
|
|
|
200
227
|
</details>
|
|
201
228
|
|
|
202
229
|
<details>
|
|
203
230
|
<summary><strong>Record (6 tools)</strong> - Action Recording</summary>
|
|
204
231
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
232
|
+
| Tool | Description |
|
|
233
|
+
|------|-------------|
|
|
234
|
+
| `record_start` | Start recording actions |
|
|
235
|
+
| `record_stop` | Stop and save recording |
|
|
236
|
+
| `record_list` | List saved recordings |
|
|
237
|
+
| `record_get` | Get recording details |
|
|
238
|
+
| `record_delete` | Delete recording |
|
|
239
|
+
| `record_replay` | Replay recorded actions |
|
|
211
240
|
|
|
212
241
|
</details>
|
|
213
242
|
|
|
214
243
|
<details>
|
|
215
244
|
<summary><strong>Network (6 tools)</strong> - Mock & Testing</summary>
|
|
216
245
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
246
|
+
| Tool | Description |
|
|
247
|
+
|------|-------------|
|
|
248
|
+
| `network_mock_wx_method` | Mock WeChat API methods |
|
|
249
|
+
| `network_restore_wx_method` | Restore mocked methods |
|
|
250
|
+
| `network_mock_request` | Mock wx.request responses |
|
|
251
|
+
| `network_mock_request_failure` | Mock request failures |
|
|
252
|
+
| `network_restore_request` | Restore wx.request |
|
|
253
|
+
| `network_restore_all_mocks` | Restore all mocks |
|
|
223
254
|
|
|
224
255
|
</details>
|
|
225
256
|
|
|
257
|
+
## Runtime Features
|
|
258
|
+
|
|
259
|
+
### Timeout Protection
|
|
260
|
+
|
|
261
|
+
All async operations are protected with configurable timeouts to prevent hanging:
|
|
262
|
+
|
|
263
|
+
| Operation | Default Timeout |
|
|
264
|
+
|-----------|----------------|
|
|
265
|
+
| Navigation | 30s |
|
|
266
|
+
| Screenshot (viewport) | 10s |
|
|
267
|
+
| Screenshot (fullPage) | 30s |
|
|
268
|
+
| wx.* API calls | 10s |
|
|
269
|
+
| Page stack queries | 5s |
|
|
270
|
+
| System info queries | 5s |
|
|
271
|
+
| Element queries | 10s |
|
|
272
|
+
| Wait operations | 30s |
|
|
273
|
+
|
|
274
|
+
### Retry Mechanism
|
|
275
|
+
|
|
276
|
+
Transient errors are automatically retried with configurable strategies:
|
|
277
|
+
- Default: 2 retries with 1s delay
|
|
278
|
+
- Exponential backoff available
|
|
279
|
+
- Custom retry predicates supported
|
|
280
|
+
|
|
226
281
|
## Requirements
|
|
227
282
|
|
|
228
283
|
- **Node.js**: >= 18.0.0
|
|
229
284
|
- **WeChat DevTools**: [Download](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
|
|
230
|
-
- Enable CLI/HTTP calls in Settings
|
|
285
|
+
- Enable CLI/HTTP calls in Settings -> Security
|
|
231
286
|
- Default automation port: 9420
|
|
232
287
|
- **Mini Program Project**: Any WeChat mini program with `project.config.json` or `app.json`
|
|
233
288
|
|
|
@@ -239,14 +294,23 @@ The server automatically searches for mini program projects:
|
|
|
239
294
|
You: "Launch the mini program and navigate to the product list page"
|
|
240
295
|
|
|
241
296
|
Claude: [Calls miniprogram_connect + miniprogram_navigate]
|
|
242
|
-
|
|
243
|
-
|
|
297
|
+
Connected to DevTools
|
|
298
|
+
Navigated to pages/product/list
|
|
244
299
|
|
|
245
300
|
You: "Find the first product title and verify it contains 'iPhone'"
|
|
246
301
|
|
|
247
302
|
Claude: [Calls page_query + element_get_text + assert_text_contains]
|
|
248
|
-
|
|
249
|
-
|
|
303
|
+
Found element with text: "iPhone 15 Pro"
|
|
304
|
+
Assertion passed: text contains "iPhone"
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Screenshot with Base64 Return
|
|
308
|
+
|
|
309
|
+
```
|
|
310
|
+
You: "Take a screenshot and show me what the page looks like"
|
|
311
|
+
|
|
312
|
+
Claude: [Calls miniprogram_screenshot with returnBase64=true]
|
|
313
|
+
Screenshot captured successfully (base64 returned directly)
|
|
250
314
|
```
|
|
251
315
|
|
|
252
316
|
### Programmatic Usage
|
|
@@ -266,16 +330,6 @@ See [examples/](./examples/) directory for complete workflows:
|
|
|
266
330
|
- [Runtime Skeleton Mapping](./docs/migration/runtime-skeleton.md)
|
|
267
331
|
- [Tool Schema Strategy](./docs/migration/tool-schema-strategy.md)
|
|
268
332
|
- [Troubleshooting](./docs/troubleshooting.md) - Common issues and solutions
|
|
269
|
-
- [完整实现方案](./docs/完整实现方案.md) - Detailed implementation blueprint (ZH)
|
|
270
|
-
- [微信小程序自动化完整操作手册](./docs/微信小程序自动化完整操作手册.md) - Official automation guidance (ZH)
|
|
271
|
-
|
|
272
|
-
## Migration Planning
|
|
273
|
-
|
|
274
|
-
- Active branch: `migration-structure-prep`
|
|
275
|
-
- Current focus: stabilize 0.1.x while reshaping runtime/app/capability layers
|
|
276
|
-
- Task tracking: `.llm/task_cards/`, latest status in `.llm/state.json`
|
|
277
|
-
- Schema generation: `pnpm generate:schemas`(根据 Zod schema 生成工具 JSON Schema)
|
|
278
|
-
- Runtime layout: 详见 `docs/migration/runtime-skeleton.md`
|
|
279
333
|
|
|
280
334
|
## Development
|
|
281
335
|
|
|
@@ -314,4 +368,4 @@ MIT License - see [LICENSE](./LICENSE) file for details.
|
|
|
314
368
|
|
|
315
369
|
---
|
|
316
370
|
|
|
317
|
-
Made with
|
|
371
|
+
Made with love for the WeChat Mini Program developer community
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assert handlers - Testing and verification utilities
|
|
3
|
+
*/
|
|
4
|
+
import type { SessionState } from '../../../types.js';
|
|
5
|
+
export interface AssertExistsArgs {
|
|
6
|
+
selector: string;
|
|
7
|
+
pagePath?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface AssertExistsResult {
|
|
10
|
+
success: boolean;
|
|
11
|
+
message: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function assertExists(session: SessionState, args: AssertExistsArgs): Promise<AssertExistsResult>;
|
|
14
|
+
export interface AssertNotExistsArgs {
|
|
15
|
+
selector: string;
|
|
16
|
+
pagePath?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface AssertNotExistsResult {
|
|
19
|
+
success: boolean;
|
|
20
|
+
message: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function assertNotExists(session: SessionState, args: AssertNotExistsArgs): Promise<AssertNotExistsResult>;
|
|
23
|
+
export interface AssertTextArgs {
|
|
24
|
+
refId: string;
|
|
25
|
+
expected: string;
|
|
26
|
+
}
|
|
27
|
+
export interface AssertTextResult {
|
|
28
|
+
success: boolean;
|
|
29
|
+
message: string;
|
|
30
|
+
actual: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function assertText(session: SessionState, args: AssertTextArgs): Promise<AssertTextResult>;
|
|
33
|
+
export interface AssertTextContainsArgs {
|
|
34
|
+
refId: string;
|
|
35
|
+
expected: string;
|
|
36
|
+
}
|
|
37
|
+
export interface AssertTextContainsResult {
|
|
38
|
+
success: boolean;
|
|
39
|
+
message: string;
|
|
40
|
+
actual: string;
|
|
41
|
+
}
|
|
42
|
+
export declare function assertTextContains(session: SessionState, args: AssertTextContainsArgs): Promise<AssertTextContainsResult>;
|
|
43
|
+
export interface AssertValueArgs {
|
|
44
|
+
refId: string;
|
|
45
|
+
expected: string;
|
|
46
|
+
}
|
|
47
|
+
export interface AssertValueResult {
|
|
48
|
+
success: boolean;
|
|
49
|
+
message: string;
|
|
50
|
+
actual: string;
|
|
51
|
+
}
|
|
52
|
+
export declare function assertValue(session: SessionState, args: AssertValueArgs): Promise<AssertValueResult>;
|
|
53
|
+
export interface AssertAttributeArgs {
|
|
54
|
+
refId: string;
|
|
55
|
+
name: string;
|
|
56
|
+
expected: string;
|
|
57
|
+
}
|
|
58
|
+
export interface AssertAttributeResult {
|
|
59
|
+
success: boolean;
|
|
60
|
+
message: string;
|
|
61
|
+
actual: string;
|
|
62
|
+
}
|
|
63
|
+
export declare function assertAttribute(session: SessionState, args: AssertAttributeArgs): Promise<AssertAttributeResult>;
|
|
64
|
+
export interface AssertPropertyArgs {
|
|
65
|
+
refId: string;
|
|
66
|
+
name: string;
|
|
67
|
+
expected: any;
|
|
68
|
+
}
|
|
69
|
+
export interface AssertPropertyResult {
|
|
70
|
+
success: boolean;
|
|
71
|
+
message: string;
|
|
72
|
+
actual: any;
|
|
73
|
+
}
|
|
74
|
+
export declare function assertProperty(session: SessionState, args: AssertPropertyArgs): Promise<AssertPropertyResult>;
|
|
75
|
+
export interface AssertDataArgs {
|
|
76
|
+
path?: string;
|
|
77
|
+
expected: any;
|
|
78
|
+
pagePath?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface AssertDataResult {
|
|
81
|
+
success: boolean;
|
|
82
|
+
message: string;
|
|
83
|
+
actual: any;
|
|
84
|
+
}
|
|
85
|
+
export declare function assertData(session: SessionState, args: AssertDataArgs): Promise<AssertDataResult>;
|
|
86
|
+
export interface AssertVisibleArgs {
|
|
87
|
+
refId: string;
|
|
88
|
+
}
|
|
89
|
+
export interface AssertVisibleResult {
|
|
90
|
+
success: boolean;
|
|
91
|
+
message: string;
|
|
92
|
+
size: {
|
|
93
|
+
width: number;
|
|
94
|
+
height: number;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export declare function assertVisible(session: SessionState, args: AssertVisibleArgs): Promise<AssertVisibleResult>;
|
|
98
|
+
//# sourceMappingURL=assert-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-handlers.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/assert/handlers/assert-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assert handlers - Testing and verification utilities
|
|
3
|
+
*/
|
|
4
|
+
import { query, getData } from '../../page/handlers/index.js';
|
|
5
|
+
import { getText, getValue, getAttribute, getProperty, getSize } from '../../element/handlers/index.js';
|
|
6
|
+
export async function assertExists(session, args) {
|
|
7
|
+
const { selector, pagePath } = args;
|
|
8
|
+
const logger = session.logger;
|
|
9
|
+
try {
|
|
10
|
+
logger?.info('Asserting element exists', { selector, pagePath });
|
|
11
|
+
const result = await query(session, { selector, pagePath, save: false });
|
|
12
|
+
if (!result.exists) {
|
|
13
|
+
throw new Error(`Assertion failed: Element not found with selector: ${selector}`);
|
|
14
|
+
}
|
|
15
|
+
logger?.info('Element exists assertion passed', { selector });
|
|
16
|
+
return { success: true, message: `Element exists: ${selector}` };
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
20
|
+
logger?.error('Element exists assertion failed', { error: errorMessage, selector });
|
|
21
|
+
throw new Error(`Assertion failed: ${errorMessage}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export async function assertNotExists(session, args) {
|
|
25
|
+
const { selector, pagePath } = args;
|
|
26
|
+
const logger = session.logger;
|
|
27
|
+
try {
|
|
28
|
+
logger?.info('Asserting element does not exist', { selector, pagePath });
|
|
29
|
+
const result = await query(session, { selector, pagePath, save: false });
|
|
30
|
+
if (result.exists) {
|
|
31
|
+
throw new Error(`Assertion failed: Element should not exist but found with selector: ${selector}`);
|
|
32
|
+
}
|
|
33
|
+
logger?.info('Element not exists assertion passed', { selector });
|
|
34
|
+
return { success: true, message: `Element does not exist: ${selector}` };
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
38
|
+
if (errorMessage.includes('Element not found')) {
|
|
39
|
+
logger?.info('Element not exists assertion passed', { selector });
|
|
40
|
+
return { success: true, message: `Element does not exist: ${selector}` };
|
|
41
|
+
}
|
|
42
|
+
logger?.error('Element not exists assertion failed', { error: errorMessage, selector });
|
|
43
|
+
throw new Error(`Assertion failed: ${errorMessage}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export async function assertText(session, args) {
|
|
47
|
+
const { refId, expected } = args;
|
|
48
|
+
const logger = session.logger;
|
|
49
|
+
try {
|
|
50
|
+
logger?.info('Asserting element text', { refId, expected });
|
|
51
|
+
const result = await getText(session, { refId });
|
|
52
|
+
const actual = result.text;
|
|
53
|
+
if (actual !== expected) {
|
|
54
|
+
throw new Error(`Assertion failed: Text mismatch. Expected: "${expected}", Actual: "${actual}"`);
|
|
55
|
+
}
|
|
56
|
+
logger?.info('Text assertion passed', { refId, expected, actual });
|
|
57
|
+
return { success: true, message: `Text matches: "${expected}"`, actual };
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
61
|
+
logger?.error('Text assertion failed', { error: errorMessage, refId, expected });
|
|
62
|
+
throw new Error(`Assertion failed: ${errorMessage}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export async function assertTextContains(session, args) {
|
|
66
|
+
const { refId, expected } = args;
|
|
67
|
+
const logger = session.logger;
|
|
68
|
+
try {
|
|
69
|
+
logger?.info('Asserting element text contains', { refId, expected });
|
|
70
|
+
const result = await getText(session, { refId });
|
|
71
|
+
const actual = result.text;
|
|
72
|
+
if (!actual.includes(expected)) {
|
|
73
|
+
throw new Error(`Assertion failed: Text does not contain expected substring. Expected to contain: "${expected}", Actual: "${actual}"`);
|
|
74
|
+
}
|
|
75
|
+
logger?.info('Text contains assertion passed', { refId, expected, actual });
|
|
76
|
+
return { success: true, message: `Text contains: "${expected}"`, actual };
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
80
|
+
logger?.error('Text contains assertion failed', { error: errorMessage, refId, expected });
|
|
81
|
+
throw new Error(`Assertion failed: ${errorMessage}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
export async function assertValue(session, args) {
|
|
85
|
+
const { refId, expected } = args;
|
|
86
|
+
const logger = session.logger;
|
|
87
|
+
try {
|
|
88
|
+
logger?.info('Asserting element value', { refId, expected });
|
|
89
|
+
const result = await getValue(session, { refId });
|
|
90
|
+
const actual = result.value;
|
|
91
|
+
if (actual !== expected) {
|
|
92
|
+
throw new Error(`Assertion failed: Value mismatch. Expected: "${expected}", Actual: "${actual}"`);
|
|
93
|
+
}
|
|
94
|
+
logger?.info('Value assertion passed', { refId, expected, actual });
|
|
95
|
+
return { success: true, message: `Value matches: "${expected}"`, actual };
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
99
|
+
logger?.error('Value assertion failed', { error: errorMessage, refId, expected });
|
|
100
|
+
throw new Error(`Assertion failed: ${errorMessage}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export async function assertAttribute(session, args) {
|
|
104
|
+
const { refId, name, expected } = args;
|
|
105
|
+
const logger = session.logger;
|
|
106
|
+
try {
|
|
107
|
+
logger?.info('Asserting element attribute', { refId, name, expected });
|
|
108
|
+
const result = await getAttribute(session, { refId, name });
|
|
109
|
+
const actual = result.value;
|
|
110
|
+
if (actual !== expected) {
|
|
111
|
+
throw new Error(`Assertion failed: Attribute "${name}" mismatch. Expected: "${expected}", Actual: "${actual}"`);
|
|
112
|
+
}
|
|
113
|
+
logger?.info('Attribute assertion passed', { refId, name, expected, actual });
|
|
114
|
+
return { success: true, message: `Attribute "${name}" matches: "${expected}"`, actual: actual ?? '' };
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
118
|
+
logger?.error('Attribute assertion failed', { error: errorMessage, refId, name, expected });
|
|
119
|
+
throw new Error(`Assertion failed: ${errorMessage}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export async function assertProperty(session, args) {
|
|
123
|
+
const { refId, name, expected } = args;
|
|
124
|
+
const logger = session.logger;
|
|
125
|
+
try {
|
|
126
|
+
logger?.info('Asserting element property', { refId, name, expected });
|
|
127
|
+
const result = await getProperty(session, { refId, name });
|
|
128
|
+
const actual = result.value;
|
|
129
|
+
if (JSON.stringify(actual) !== JSON.stringify(expected)) {
|
|
130
|
+
throw new Error(`Assertion failed: Property "${name}" mismatch. Expected: ${JSON.stringify(expected)}, Actual: ${JSON.stringify(actual)}`);
|
|
131
|
+
}
|
|
132
|
+
logger?.info('Property assertion passed', { refId, name, expected, actual });
|
|
133
|
+
return { success: true, message: `Property "${name}" matches`, actual };
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
137
|
+
logger?.error('Property assertion failed', { error: errorMessage, refId, name, expected });
|
|
138
|
+
throw new Error(`Assertion failed: ${errorMessage}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
export async function assertData(session, args) {
|
|
142
|
+
const { path, expected, pagePath } = args;
|
|
143
|
+
const logger = session.logger;
|
|
144
|
+
try {
|
|
145
|
+
logger?.info('Asserting page data', { path, expected, pagePath });
|
|
146
|
+
const result = await getData(session, { path, pagePath });
|
|
147
|
+
const actual = result.data;
|
|
148
|
+
if (JSON.stringify(actual) !== JSON.stringify(expected)) {
|
|
149
|
+
throw new Error(`Assertion failed: Page data${path ? ` at path "${path}"` : ''} mismatch. Expected: ${JSON.stringify(expected)}, Actual: ${JSON.stringify(actual)}`);
|
|
150
|
+
}
|
|
151
|
+
logger?.info('Data assertion passed', { path, expected, actual, pagePath });
|
|
152
|
+
return { success: true, message: `Page data${path ? ` at "${path}"` : ''} matches`, actual };
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
156
|
+
logger?.error('Data assertion failed', { error: errorMessage, path, expected, pagePath });
|
|
157
|
+
throw new Error(`Assertion failed: ${errorMessage}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export async function assertVisible(session, args) {
|
|
161
|
+
const { refId } = args;
|
|
162
|
+
const logger = session.logger;
|
|
163
|
+
try {
|
|
164
|
+
logger?.info('Asserting element is visible', { refId });
|
|
165
|
+
const result = await getSize(session, { refId });
|
|
166
|
+
const size = result.size;
|
|
167
|
+
if (!size || size.width === 0 || size.height === 0) {
|
|
168
|
+
throw new Error(`Assertion failed: Element is not visible. Size: ${JSON.stringify(size)}`);
|
|
169
|
+
}
|
|
170
|
+
logger?.info('Visible assertion passed', { refId, size });
|
|
171
|
+
return { success: true, message: `Element is visible`, size };
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
175
|
+
logger?.error('Visible assertion failed', { error: errorMessage, refId });
|
|
176
|
+
throw new Error(`Assertion failed: ${errorMessage}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=assert-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert-handlers.js","sourceRoot":"","sources":["../../../../src/capabilities/assert/handlers/assert-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assert handlers exports
|
|
3
|
+
*
|
|
4
|
+
* All 9 handlers are now independently implemented in this directory.
|
|
5
|
+
*/
|
|
6
|
+
export { assertExists, assertNotExists, assertText, assertTextContains, assertValue, assertAttribute, assertProperty, assertData, assertVisible, type AssertExistsArgs, type AssertExistsResult, type AssertNotExistsArgs, type AssertNotExistsResult, type AssertTextArgs, type AssertTextResult, type AssertTextContainsArgs, type AssertTextContainsResult, type AssertValueArgs, type AssertValueResult, type AssertAttributeArgs, type AssertAttributeResult, type AssertPropertyArgs, type AssertPropertyResult, type AssertDataArgs, type AssertDataResult, type AssertVisibleArgs, type AssertVisibleResult, } from './assert-handlers.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/assert/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,cAAc,EACd,UAAU,EACV,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assert handlers exports
|
|
3
|
+
*
|
|
4
|
+
* All 9 handlers are now independently implemented in this directory.
|
|
5
|
+
*/
|
|
6
|
+
export { assertExists, assertNotExists, assertText, assertTextContains, assertValue, assertAttribute, assertProperty, assertData, assertVisible, } from './assert-handlers.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/capabilities/assert/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,cAAc,EACd,UAAU,EACV,aAAa,GAmBd,MAAM,sBAAsB,CAAA"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Assert
|
|
2
|
+
* Assert Capability Module
|
|
3
|
+
*
|
|
4
|
+
* Provides tools for testing and verification including element assertions,
|
|
5
|
+
* text validation, attribute/property checks, and data assertions.
|
|
3
6
|
*/
|
|
4
|
-
|
|
7
|
+
import type { CapabilityModule } from '../registry.js';
|
|
8
|
+
export * from './schemas/index.js';
|
|
9
|
+
export * from './handlers/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Assert capability module
|
|
12
|
+
*/
|
|
13
|
+
export declare const capability: CapabilityModule;
|
|
14
|
+
export default capability;
|
|
5
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/capabilities/assert/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/capabilities/assert/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAkB,MAAM,gBAAgB,CAAA;AAyBtE,cAAc,oBAAoB,CAAA;AAGlC,cAAc,qBAAqB,CAAA;AAuEnC;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,gBAIxB,CAAA;AAED,eAAe,UAAU,CAAA"}
|