@ytspar/sweetlink 1.10.0 → 1.11.1
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 +32 -23
- package/claude-skills/screenshot/SKILL.md +381 -0
- package/dist/browser/SweetlinkBridge.d.ts.map +1 -1
- package/dist/browser/SweetlinkBridge.js +1 -1
- package/dist/browser/SweetlinkBridge.js.map +1 -1
- package/dist/browser/commands/exec.d.ts.map +1 -1
- package/dist/browser/commands/exec.js +5 -2
- package/dist/browser/commands/exec.js.map +1 -1
- package/dist/browser/commands/index.d.ts +2 -2
- package/dist/browser/commands/index.d.ts.map +1 -1
- package/dist/browser/commands/index.js +2 -2
- package/dist/browser/commands/index.js.map +1 -1
- package/dist/browser/commands/outline.js.map +1 -1
- package/dist/browser/commands/schema.d.ts.map +1 -1
- package/dist/browser/commands/schema.js +10 -10
- package/dist/browser/commands/schema.js.map +1 -1
- package/dist/browser/commands/screenshot.d.ts.map +1 -1
- package/dist/browser/commands/screenshot.js +21 -3
- package/dist/browser/commands/screenshot.js.map +1 -1
- package/dist/browser/consoleCapture.d.ts.map +1 -1
- package/dist/browser/consoleCapture.js +3 -1
- package/dist/browser/consoleCapture.js.map +1 -1
- package/dist/browser.js +2 -3
- package/dist/browser.js.map +1 -1
- package/dist/cdp.d.ts +1 -1
- package/dist/cdp.d.ts.map +1 -1
- package/dist/cdp.js +1 -1
- package/dist/cdp.js.map +1 -1
- package/dist/cli/sweetlink.js +479 -256
- package/dist/cli/sweetlink.js.map +1 -1
- package/dist/playwright.d.ts.map +1 -1
- package/dist/playwright.js.map +1 -1
- package/dist/server/handlers/index.d.ts +2 -2
- package/dist/server/handlers/index.d.ts.map +1 -1
- package/dist/server/handlers/index.js +1 -1
- package/dist/server/handlers/index.js.map +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/index.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/viewportUtils.js.map +1 -1
- package/package.json +12 -3
- package/scripts/setup-claude-context.mjs +105 -68
package/README.md
CHANGED
|
@@ -55,6 +55,16 @@ yarn add @ytspar/sweetlink
|
|
|
55
55
|
pnpm add @ytspar/sweetlink@canary
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
+
### Claude Code Integration
|
|
59
|
+
|
|
60
|
+
If you use [Claude Code](https://claude.com/claude-code), run the setup command to install the screenshot skill and context files:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
pnpm sweetlink setup
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
This creates symlinks in your `.claude/` directory so Claude can use the `/screenshot` skill automatically. Re-run after upgrading sweetlink to pick up any skill updates.
|
|
67
|
+
|
|
58
68
|
## Quick Start
|
|
59
69
|
|
|
60
70
|
### For Vite Apps (Recommended)
|
|
@@ -318,13 +328,13 @@ export CHROME_CDP_PORT=9222
|
|
|
318
328
|
### Server
|
|
319
329
|
|
|
320
330
|
```typescript
|
|
321
|
-
import { initSweetlink, closeSweetlink } from '@ytspar/sweetlink';
|
|
331
|
+
import { initSweetlink, closeSweetlink } from '@ytspar/sweetlink/server';
|
|
322
332
|
|
|
323
333
|
// Start server
|
|
324
|
-
const wss = initSweetlink({ port: 9223 });
|
|
334
|
+
const wss = await initSweetlink({ port: 9223 });
|
|
325
335
|
|
|
326
336
|
// Close server
|
|
327
|
-
closeSweetlink();
|
|
337
|
+
await closeSweetlink();
|
|
328
338
|
```
|
|
329
339
|
|
|
330
340
|
### CDP Integration
|
|
@@ -352,32 +362,31 @@ const requests = await getNetworkRequestsViaCDP({
|
|
|
352
362
|
});
|
|
353
363
|
```
|
|
354
364
|
|
|
355
|
-
### Browser
|
|
365
|
+
### Browser Bridge (Vanilla JS)
|
|
356
366
|
|
|
357
|
-
|
|
358
|
-
import { SweetlinkBridge } from '@ytspar/sweetlink/browser';
|
|
359
|
-
import type { SweetlinkBridgeProps } from '@ytspar/sweetlink/browser';
|
|
367
|
+
The browser bridge is a vanilla JS class (not a React component). For most setups, use the Vite plugin or auto-import instead of initializing manually.
|
|
360
368
|
|
|
361
|
-
|
|
362
|
-
|
|
369
|
+
```typescript
|
|
370
|
+
import { initSweetlinkBridge } from '@ytspar/sweetlink/browser';
|
|
363
371
|
|
|
364
|
-
//
|
|
365
|
-
|
|
366
|
-
connectedStyles="bg-terminal-green/20 border-terminal-green text-terminal-green"
|
|
367
|
-
disconnectedStyles="bg-gray-700/20 border-gray-600 text-gray-400"
|
|
368
|
-
/>
|
|
372
|
+
// Initialize with defaults (auto-detects port from devbar)
|
|
373
|
+
initSweetlinkBridge();
|
|
369
374
|
|
|
370
|
-
//
|
|
371
|
-
|
|
375
|
+
// Or with explicit config
|
|
376
|
+
initSweetlinkBridge({
|
|
377
|
+
basePort: 9223,
|
|
378
|
+
debug: true,
|
|
379
|
+
});
|
|
372
380
|
```
|
|
373
381
|
|
|
374
|
-
####
|
|
382
|
+
#### SweetlinkBridgeConfig
|
|
375
383
|
|
|
376
|
-
|
|
|
377
|
-
|
|
378
|
-
| `
|
|
379
|
-
| `
|
|
380
|
-
| `
|
|
384
|
+
| Option | Type | Default | Description |
|
|
385
|
+
|--------|------|---------|-------------|
|
|
386
|
+
| `basePort` | `number` | Auto-detected | WebSocket server port |
|
|
387
|
+
| `maxPortRetries` | `number` | `10` | Max port scan attempts |
|
|
388
|
+
| `hmrScreenshots` | `boolean` | `false` | Auto-capture on HMR updates |
|
|
389
|
+
| `debug` | `boolean` | `false` | Enable verbose connection logging |
|
|
381
390
|
|
|
382
391
|
## Environment Variables
|
|
383
392
|
|
|
@@ -571,7 +580,7 @@ SWEETLINK_WS_PORT=9224 pnpm dev
|
|
|
571
580
|
|
|
572
581
|
### Browser Not Connected
|
|
573
582
|
|
|
574
|
-
1. Ensure
|
|
583
|
+
1. Ensure Sweetlink bridge is initialized (Vite plugin, auto-import, or `initSweetlinkBridge()`)
|
|
575
584
|
2. Check browser console for connection errors
|
|
576
585
|
3. Verify WebSocket server is running (`[Sweetlink] WebSocket server started...`)
|
|
577
586
|
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: screenshot
|
|
3
|
+
description: Take screenshots of running applications for visual verification. Use when implementing UI changes, debugging visual issues, or when the user asks to take a screenshot. Supports two methods - Sweetlink (preferred for dev servers) and Agent-Browser (fallback for any URL).
|
|
4
|
+
allowed-tools: Bash, Read
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Screenshot Skill
|
|
8
|
+
|
|
9
|
+
Take screenshots of running applications using the best available tool. Always saves to project-relative paths.
|
|
10
|
+
|
|
11
|
+
## What is Sweetlink?
|
|
12
|
+
|
|
13
|
+
Sweetlink (`@ytspar/sweetlink`) is a WebSocket-based bridge that enables Claude to autonomously interact with a running web application. It connects a CLI tool to the browser via WebSocket, allowing screenshots, DOM inspection, console log capture, JavaScript execution, and network monitoring - all without human intervention.
|
|
14
|
+
|
|
15
|
+
**Package**: `@ytspar/sweetlink` — [Full README](node_modules/@ytspar/sweetlink/README.md)
|
|
16
|
+
|
|
17
|
+
### Architecture
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
CLI (pnpm sweetlink) <--> WebSocket (port 9223) <--> Browser (SweetlinkBridge component)
|
|
21
|
+
|
|
|
22
|
+
html2canvas (screenshots)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Optionally, if Chrome is launched with `--remote-debugging-port=9222`, Sweetlink uses CDP (Puppeteer) for higher quality screenshots and network inspection.
|
|
26
|
+
|
|
27
|
+
### Prerequisites
|
|
28
|
+
|
|
29
|
+
For Sweetlink to work, the target app must:
|
|
30
|
+
|
|
31
|
+
1. Have `@ytspar/sweetlink` installed
|
|
32
|
+
2. Initialize the bridge (Vite plugin, `@ytspar/sweetlink/auto`, or `initSweetlinkBridge()`)
|
|
33
|
+
3. Initialize the WebSocket server in the dev server entry (`initSweetlink({ port: 9223 })`)
|
|
34
|
+
4. Be open in a browser (the browser tab is the execution context)
|
|
35
|
+
|
|
36
|
+
### Token Efficiency
|
|
37
|
+
|
|
38
|
+
- **html2canvas screenshots**: ~131KB (~1,000 tokens) — default, preferred
|
|
39
|
+
- **CDP screenshots**: ~2.0MB (~15,000 tokens) — use only when needed (`--force-cdp`)
|
|
40
|
+
|
|
41
|
+
This 15x token savings enables 10+ autonomous iterations per session.
|
|
42
|
+
|
|
43
|
+
## Tool Priority
|
|
44
|
+
|
|
45
|
+
1. **Sweetlink** (preferred for dev servers) - Fast, lightweight, token-efficient. Handles screenshots, page navigation (`--url`), scrolling, clicking, DOM queries, console logs, JS execution. Works with dev servers that have the SweetlinkBridge component.
|
|
46
|
+
2. **Agent-Browser** (fallback) - Works with any URL, installs automatically if missing. Use only when Sweetlink is unavailable or for complex multi-step form interactions.
|
|
47
|
+
|
|
48
|
+
**Playwright MCP is NOT available.** It has been removed from the project config due to excessive token usage (~15,000 tokens per screenshot vs Sweetlink's ~1,000). Never attempt to use `mcp__playwright__*` tools.
|
|
49
|
+
|
|
50
|
+
**NEVER write raw Playwright/Puppeteer scripts** (e.g., `node -e "require('playwright')..."`) as a workaround. If Sweetlink can't handle a task, use Agent-Browser — that's what it's for.
|
|
51
|
+
|
|
52
|
+
## CRITICAL: Output Paths
|
|
53
|
+
|
|
54
|
+
**NEVER save screenshots to `/tmp/` or any global path.**
|
|
55
|
+
|
|
56
|
+
Always use project-relative paths:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
.tmp/screenshots/ # Primary location
|
|
60
|
+
.tmp/sweetlink-screenshots/ # Legacy sweetlink location (also acceptable)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The directory will be created automatically if it doesn't exist.
|
|
64
|
+
|
|
65
|
+
## Quick Reference
|
|
66
|
+
|
|
67
|
+
### Sweetlink (Development Servers)
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Full page screenshot
|
|
71
|
+
pnpm sweetlink screenshot --output .tmp/screenshots/page.png
|
|
72
|
+
|
|
73
|
+
# Specific element
|
|
74
|
+
pnpm sweetlink screenshot --selector "header" --output .tmp/screenshots/header.png
|
|
75
|
+
|
|
76
|
+
# With viewport emulation
|
|
77
|
+
pnpm sweetlink screenshot --viewport mobile --force-cdp --output .tmp/screenshots/mobile.png
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Agent-Browser (Any URL)
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# Open page and screenshot
|
|
84
|
+
agent-browser open http://localhost:3000
|
|
85
|
+
agent-browser screenshot .tmp/screenshots/page.png
|
|
86
|
+
agent-browser close
|
|
87
|
+
|
|
88
|
+
# With interactions
|
|
89
|
+
agent-browser open http://localhost:3000
|
|
90
|
+
agent-browser snapshot # Get element refs (@e1, @e2, etc.)
|
|
91
|
+
agent-browser click @e7 # Click element
|
|
92
|
+
agent-browser screenshot .tmp/screenshots/after-click.png
|
|
93
|
+
agent-browser close
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Decision Flow
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
Need screenshot or browser interaction?
|
|
100
|
+
|
|
|
101
|
+
|-> Known Sweetlink limitation? (see list below)
|
|
102
|
+
| |
|
|
103
|
+
| --> YES: Skip to Agent-Browser directly
|
|
104
|
+
|
|
|
105
|
+
|-> Is dev server running with DevBar?
|
|
106
|
+
| |
|
|
107
|
+
| |-> YES: Use Sweetlink (single-command operations only)
|
|
108
|
+
| | Screenshots: pnpm sweetlink screenshot --url <url> --output .tmp/screenshots/name.png
|
|
109
|
+
| | DOM query: pnpm sweetlink query --selector ".component"
|
|
110
|
+
| | Console: pnpm sweetlink logs --filter error
|
|
111
|
+
| |
|
|
112
|
+
| | <-- Sweetlink failed or produced wrong result?
|
|
113
|
+
| | --> Fall back to Agent-Browser (NEVER write raw Playwright scripts)
|
|
114
|
+
| |
|
|
115
|
+
| --> NO: Use Agent-Browser
|
|
116
|
+
| agent-browser open [URL]
|
|
117
|
+
| agent-browser screenshot .tmp/screenshots/name.png
|
|
118
|
+
| agent-browser close
|
|
119
|
+
|
|
|
120
|
+
--> Need complex multi-step form interactions (type + submit + wait)?
|
|
121
|
+
|
|
|
122
|
+
--> Use Agent-Browser (better for sequential multi-step flows)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Known Sweetlink Limitations — Use Agent-Browser Instead
|
|
126
|
+
|
|
127
|
+
These scenarios require multi-step browser state that Sweetlink cannot maintain across commands (each Sweetlink CLI call may open a fresh page):
|
|
128
|
+
|
|
129
|
+
| Scenario | Why Sweetlink fails | Agent-Browser approach |
|
|
130
|
+
|----------|--------------------|-----------------------|
|
|
131
|
+
| **Scroll then screenshot** | `exec` (scroll) and `screenshot` are separate page loads in Playwright fallback — scroll state is lost | `open` -> `scroll down` -> `screenshot` (single session) |
|
|
132
|
+
| **Click then screenshot** (when click triggers navigation/animation) | Same statefulness issue — click and screenshot may not share the same page | `open` -> `click` -> `screenshot` |
|
|
133
|
+
| **Multi-step interactions** (type + submit + wait for result) | Each command is stateless | `open` -> `type` -> `press Enter` -> `screenshot` |
|
|
134
|
+
| **Custom viewport dimensions** (not `mobile`/`tablet` presets) | `--viewport` only supports named presets | `agent-browser open --viewport 1600x900` or use Sweetlink `--force-cdp` with preset |
|
|
135
|
+
|
|
136
|
+
> **Self-updating rule:** When you encounter a NEW Sweetlink failure mode not listed above — i.e., you try Sweetlink, it fails or produces incorrect results for a reason that would apply generally (not a transient network/server issue) — you MUST append a new row to this table before continuing with the Agent-Browser fallback. This keeps the list exhaustive and prevents future sessions from repeating the same mistake.
|
|
137
|
+
|
|
138
|
+
## Installing Agent-Browser
|
|
139
|
+
|
|
140
|
+
If `agent-browser` is not found:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
npm install -g agent-browser
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Sweetlink CLI Reference
|
|
147
|
+
|
|
148
|
+
All commands use `pnpm sweetlink <command> [options]`.
|
|
149
|
+
|
|
150
|
+
### screenshot — Capture page or element screenshots
|
|
151
|
+
|
|
152
|
+
| Option | Description |
|
|
153
|
+
|--------|-------------|
|
|
154
|
+
| `--output <path>` | Output file path (default: auto-generated in `.tmp/sweetlink-screenshots/`) |
|
|
155
|
+
| `--url <url>` | Navigate to a specific URL before taking the screenshot. **Use this to target specific pages.** |
|
|
156
|
+
| `--selector <css>` | CSS selector to screenshot a specific element |
|
|
157
|
+
| `--full-page` | Capture full scrollable page |
|
|
158
|
+
| `--viewport <size>` | Emulate viewport: `mobile`, `tablet` (requires `--force-cdp`) |
|
|
159
|
+
| `--hover` | Capture hover state (requires `--selector`) |
|
|
160
|
+
| `--force-cdp` | Force Chrome DevTools Protocol method (higher quality, more tokens) |
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
pnpm sweetlink screenshot --output .tmp/screenshots/full.png
|
|
164
|
+
pnpm sweetlink screenshot --url http://localhost:3000/blog --output .tmp/screenshots/blog.png
|
|
165
|
+
pnpm sweetlink screenshot --selector ".card" --output .tmp/screenshots/card.png
|
|
166
|
+
pnpm sweetlink screenshot --viewport mobile --force-cdp --output .tmp/screenshots/mobile.png
|
|
167
|
+
pnpm sweetlink screenshot --selector "button" --hover --output .tmp/screenshots/hover.png
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### logs — Capture browser console output
|
|
171
|
+
|
|
172
|
+
| Option | Description |
|
|
173
|
+
|--------|-------------|
|
|
174
|
+
| `--filter <level>` | Filter by level: `error`, `warning`, `log` |
|
|
175
|
+
| `--format <fmt>` | Output format: `text` (default), `json`, `summary` (LLM-optimized, deduplicated) |
|
|
176
|
+
| `--dedupe` | Deduplicate repeated messages in text format |
|
|
177
|
+
| `--output <path>` | Save output to file |
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
pnpm sweetlink logs # All logs
|
|
181
|
+
pnpm sweetlink logs --filter error # Only errors
|
|
182
|
+
pnpm sweetlink logs --format summary # LLM-optimized JSON with deduplication
|
|
183
|
+
pnpm sweetlink logs --dedupe # Remove duplicate messages
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### query — Inspect DOM elements
|
|
187
|
+
|
|
188
|
+
| Option | Description |
|
|
189
|
+
|--------|-------------|
|
|
190
|
+
| `--selector <css>` | CSS selector to query |
|
|
191
|
+
| `--property <prop>` | Specific property to return (e.g., `offsetWidth`, `innerText`, `disabled`) |
|
|
192
|
+
| `--url <url>` | Navigate browser to URL before querying |
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
pnpm sweetlink query --selector ".card"
|
|
196
|
+
pnpm sweetlink query --selector "button" --property "disabled"
|
|
197
|
+
pnpm sweetlink query --selector "h1" --url "http://localhost:3000/about"
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### click — Click elements in the browser
|
|
201
|
+
|
|
202
|
+
| Option | Description |
|
|
203
|
+
|--------|-------------|
|
|
204
|
+
| `--selector <css>` | CSS selector of element to click |
|
|
205
|
+
| `--text <string>` | Click element matching text content |
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
pnpm sweetlink click --selector "button.submit"
|
|
209
|
+
pnpm sweetlink click --text "Submit"
|
|
210
|
+
pnpm sweetlink click --selector "th" --text "Rank"
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### exec — Execute JavaScript in browser context
|
|
214
|
+
|
|
215
|
+
| Option | Description |
|
|
216
|
+
|--------|-------------|
|
|
217
|
+
| `--code <js>` | JavaScript expression to evaluate |
|
|
218
|
+
| `--url <url>` | Navigate browser to URL before executing |
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
pnpm sweetlink exec --code "document.title"
|
|
222
|
+
pnpm sweetlink exec --code "document.querySelectorAll('.card').length"
|
|
223
|
+
pnpm sweetlink exec --code "document.title" --url "http://localhost:3000/about"
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### refresh — Reload the browser page
|
|
227
|
+
|
|
228
|
+
| Option | Description |
|
|
229
|
+
|--------|-------------|
|
|
230
|
+
| `--hard` | Hard refresh (clear cache and reload) |
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
pnpm sweetlink refresh # Soft refresh
|
|
234
|
+
pnpm sweetlink refresh --hard # Hard refresh (clear cache)
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### network — Monitor network requests (CDP required)
|
|
238
|
+
|
|
239
|
+
| Option | Description |
|
|
240
|
+
|--------|-------------|
|
|
241
|
+
| `--filter <pattern>` | Filter requests by URL pattern |
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
pnpm sweetlink network # All requests
|
|
245
|
+
pnpm sweetlink network --filter "/api/" # Filter by URL pattern
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Agent-Browser Commands
|
|
249
|
+
|
|
250
|
+
### Basic Usage
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
agent-browser open http://localhost:3000 # Open URL
|
|
254
|
+
agent-browser snapshot # Get element refs
|
|
255
|
+
agent-browser screenshot .tmp/screenshots/page.png # Screenshot
|
|
256
|
+
agent-browser close # Close browser
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Interactions
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
agent-browser click @e7 # Click by ref
|
|
263
|
+
agent-browser click "Submit" # Click by text
|
|
264
|
+
agent-browser type @e5 "search text" # Type into input
|
|
265
|
+
agent-browser press Enter # Press key
|
|
266
|
+
agent-browser scroll down # Scroll
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Navigation
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
agent-browser open http://localhost:3000/about
|
|
273
|
+
agent-browser navigate http://localhost:3000/
|
|
274
|
+
agent-browser back
|
|
275
|
+
agent-browser forward
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## Workflow Examples
|
|
279
|
+
|
|
280
|
+
### Visual Verification After Code Changes
|
|
281
|
+
|
|
282
|
+
**Every screenshot must be paired with a console check.** Do not consider a change complete until both the screenshot looks correct AND the console is clean.
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# 1. Take screenshot
|
|
286
|
+
pnpm sweetlink screenshot --url http://localhost:3000/page --output .tmp/screenshots/after.png
|
|
287
|
+
|
|
288
|
+
# 2. ALWAYS check console errors and warnings alongside the screenshot
|
|
289
|
+
pnpm sweetlink logs --filter error
|
|
290
|
+
pnpm sweetlink logs --filter warning
|
|
291
|
+
|
|
292
|
+
# 3. Fix any issues found in screenshot or console, then re-verify
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Multi-Page Screenshot Session
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# Using Agent-Browser for reliable navigation
|
|
299
|
+
agent-browser open http://localhost:3000
|
|
300
|
+
|
|
301
|
+
# Homepage
|
|
302
|
+
agent-browser screenshot .tmp/screenshots/homepage.png
|
|
303
|
+
|
|
304
|
+
# Navigate to another page
|
|
305
|
+
agent-browser click "About"
|
|
306
|
+
agent-browser screenshot .tmp/screenshots/about.png
|
|
307
|
+
|
|
308
|
+
# Navigate to a section
|
|
309
|
+
agent-browser click "Features"
|
|
310
|
+
agent-browser screenshot .tmp/screenshots/features.png
|
|
311
|
+
|
|
312
|
+
agent-browser close
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Debug Workflow
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
# 1. Check console errors
|
|
319
|
+
pnpm sweetlink logs --filter error
|
|
320
|
+
|
|
321
|
+
# 2. Take screenshot of problem area
|
|
322
|
+
pnpm sweetlink screenshot --selector ".broken-component" --output .tmp/screenshots/bug.png
|
|
323
|
+
|
|
324
|
+
# 3. Query DOM state
|
|
325
|
+
pnpm sweetlink query --selector ".broken-component"
|
|
326
|
+
|
|
327
|
+
# 4. Fix code...
|
|
328
|
+
|
|
329
|
+
# 5. Verify fix
|
|
330
|
+
pnpm sweetlink logs --filter error
|
|
331
|
+
pnpm sweetlink screenshot --selector ".fixed-component" --output .tmp/screenshots/fixed.png
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
## When to Use Each Tool
|
|
335
|
+
|
|
336
|
+
| Scenario | Tool | Notes |
|
|
337
|
+
|----------|------|-------|
|
|
338
|
+
| Screenshot of dev server page | Sweetlink (`--url`) | Single-command, preferred |
|
|
339
|
+
| Screenshot after scrolling | **Agent-Browser** | Sweetlink loses scroll state between commands |
|
|
340
|
+
| Check console logs | Sweetlink (`logs`) | |
|
|
341
|
+
| DOM queries | Sweetlink (`query`) | |
|
|
342
|
+
| Click then screenshot same page | **Agent-Browser** | Sweetlink can't guarantee state between commands |
|
|
343
|
+
| Navigate to specific page | Sweetlink (`--url` flag) | |
|
|
344
|
+
| Viewport testing (mobile/tablet) | Sweetlink (`--force-cdp --viewport`) | |
|
|
345
|
+
| Custom viewport dimensions | **Agent-Browser** | Sweetlink only supports named presets |
|
|
346
|
+
| Non-dev-server URL | Agent-Browser | |
|
|
347
|
+
| Complex multi-step form flows | Agent-Browser | |
|
|
348
|
+
| Sequential type + submit + wait | Agent-Browser | |
|
|
349
|
+
|
|
350
|
+
## Troubleshooting
|
|
351
|
+
|
|
352
|
+
### Sweetlink: "No browser client connected"
|
|
353
|
+
|
|
354
|
+
The dev server needs DevBar and a browser connected:
|
|
355
|
+
|
|
356
|
+
1. Ensure dev server is running: `pnpm run dev`
|
|
357
|
+
2. Open the URL in browser
|
|
358
|
+
3. Look for Sweetlink indicator (bottom-right)
|
|
359
|
+
|
|
360
|
+
### Agent-Browser: Command not found
|
|
361
|
+
|
|
362
|
+
Install globally:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
npm install -g agent-browser
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### Screenshots saved to wrong location
|
|
369
|
+
|
|
370
|
+
**ALWAYS** use `.tmp/screenshots/` path. If you accidentally use `/tmp/`:
|
|
371
|
+
|
|
372
|
+
1. Stop and correct the path
|
|
373
|
+
2. Use `.tmp/screenshots/` instead
|
|
374
|
+
3. The skill should NEVER accept `/tmp/` paths
|
|
375
|
+
|
|
376
|
+
### Large screenshot files
|
|
377
|
+
|
|
378
|
+
Sweetlink auto-optimizes to ~200-300KB. For Agent-Browser:
|
|
379
|
+
|
|
380
|
+
- Screenshots are PNG by default
|
|
381
|
+
- Keep viewport reasonable (don't screenshot giant pages)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SweetlinkBridge.d.ts","sourceRoot":"","sources":["../../src/browser/SweetlinkBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAc,UAAU,EAAuC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SweetlinkBridge.d.ts","sourceRoot":"","sources":["../../src/browser/SweetlinkBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAc,UAAU,EAAuC,MAAM,aAAa,CAAC;AA2C/F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,gBAAgB,CAA8C;IACtE,OAAO,CAAC,sBAAsB,CAA8C;IAC5E,OAAO,CAAC,kBAAkB,CAA8C;IAGxE,OAAO,CAAC,QAAQ,CAId;IAGF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAGhC,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,OAAO,CAAwB;gBAE3B,MAAM,GAAE,qBAA0B;IAiC9C,2DAA2D;IAC3D,OAAO,CAAC,GAAG;IAIX;;OAEG;IACH,IAAI,IAAI,IAAI;IA8BZ;;OAEG;IACH,OAAO,IAAI,IAAI;IA0Cf;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,IAAI;IAQlC,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,gBAAgB;YAiIV,aAAa;CAqC5B;AAQD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe,CAQnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C;AAGD,eAAe,eAAe,CAAC"}
|
|
@@ -14,7 +14,7 @@ import { captureHmrScreenshot, setupHmrDetection, } from './hmr.js';
|
|
|
14
14
|
// ============================================================================
|
|
15
15
|
// Constants
|
|
16
16
|
// ============================================================================
|
|
17
|
-
import { DEFAULT_WS_PORT, MAX_PORT_RETRIES, PORT_RETRY_DELAY_MS, WS_PORT_OFFSET as SWEETLINK_PORT_OFFSET } from '../types.js';
|
|
17
|
+
import { DEFAULT_WS_PORT, MAX_PORT_RETRIES, PORT_RETRY_DELAY_MS, WS_PORT_OFFSET as SWEETLINK_PORT_OFFSET, } from '../types.js';
|
|
18
18
|
/** HMR settings */
|
|
19
19
|
const DEFAULT_HMR_DEBOUNCE_MS = 300;
|
|
20
20
|
const DEFAULT_HMR_CAPTURE_DELAY_MS = 100;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SweetlinkBridge.js","sourceRoot":"","sources":["../../src/browser/SweetlinkBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,0BAA0B;AAC1B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,uBAAuB;AACvB,OAAO,EACL,oBAAoB,EAGpB,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAElB,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,
|
|
1
|
+
{"version":3,"file":"SweetlinkBridge.js","sourceRoot":"","sources":["../../src/browser/SweetlinkBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/browser/commands/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/browser/commands/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AA6EvE;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkDrF"}
|
|
@@ -54,10 +54,13 @@ function maybeWrapReturn(code) {
|
|
|
54
54
|
* If the result is a thenable (Promise), await it with a timeout.
|
|
55
55
|
*/
|
|
56
56
|
async function maybeAwaitResult(result, timeoutMs = 10000) {
|
|
57
|
-
if (result &&
|
|
57
|
+
if (result &&
|
|
58
|
+
typeof result === 'object' &&
|
|
59
|
+
'then' in result &&
|
|
60
|
+
typeof result.then === 'function') {
|
|
58
61
|
return Promise.race([
|
|
59
62
|
result,
|
|
60
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error(
|
|
63
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Async result timed out after ${timeoutMs}ms`)), timeoutMs)),
|
|
61
64
|
]);
|
|
62
65
|
}
|
|
63
66
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/browser/commands/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAEtD,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5C,IACE,KAAK,YAAY,KAAK;QACtB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,EAC5F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,MAAM,GAAG,MAA4C,CAAC;IAC5D,OAAO,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAEjC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,WAAW,GAAG,WAAW,iBAAiB,6BAA6B,IAAI,SAAS,CAAC;IAC5F,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,kFAAkF;IAClF,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,gBAAgB,IAAI,OAAO,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,MAAe,EAAE,SAAS,GAAG,KAAK;IAChE,
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/browser/commands/exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@ export { handleGetA11y } from './a11y.js';
|
|
|
7
7
|
export { handleQueryDOM } from './dom.js';
|
|
8
8
|
export { handleExecJS } from './exec.js';
|
|
9
9
|
export { handleGetLogs } from './logs.js';
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
10
|
+
export { extractDocumentOutline, handleGetOutline, outlineToMarkdown } from './outline.js';
|
|
11
|
+
export { extractPageSchema, handleGetSchema, schemaToMarkdown } from './schema.js';
|
|
12
12
|
export { handleRequestScreenshot, handleScreenshot } from './screenshot.js';
|
|
13
13
|
export { handleGetVitals } from './vitals.js';
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -7,8 +7,8 @@ export { handleGetA11y } from './a11y.js';
|
|
|
7
7
|
export { handleQueryDOM } from './dom.js';
|
|
8
8
|
export { handleExecJS } from './exec.js';
|
|
9
9
|
export { handleGetLogs } from './logs.js';
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
10
|
+
export { extractDocumentOutline, handleGetOutline, outlineToMarkdown } from './outline.js';
|
|
11
|
+
export { extractPageSchema, handleGetSchema, schemaToMarkdown } from './schema.js';
|
|
12
12
|
export { handleRequestScreenshot, handleScreenshot } from './screenshot.js';
|
|
13
13
|
export { handleGetVitals } from './vitals.js';
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|