@ytspar/sweetlink 1.16.1 → 1.18.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-skills/screenshot/SKILL.md +2 -0
- package/dist/cli/sweetlink-dev.js +0 -0
- package/dist/cli/sweetlink.js +338 -29
- package/dist/cli/sweetlink.js.map +1 -1
- package/dist/daemon/browser.d.ts +12 -0
- package/dist/daemon/browser.d.ts.map +1 -1
- package/dist/daemon/browser.js +62 -12
- package/dist/daemon/browser.js.map +1 -1
- package/dist/daemon/cursor.d.ts.map +1 -1
- package/dist/daemon/cursor.js +39 -8
- package/dist/daemon/cursor.js.map +1 -1
- package/dist/daemon/devices.d.ts +9 -4
- package/dist/daemon/devices.d.ts.map +1 -1
- package/dist/daemon/devices.js +25 -4
- package/dist/daemon/devices.js.map +1 -1
- package/dist/daemon/diff.d.ts +6 -0
- package/dist/daemon/diff.d.ts.map +1 -1
- package/dist/daemon/diff.js +46 -26
- package/dist/daemon/diff.js.map +1 -1
- package/dist/daemon/index.js +0 -0
- package/dist/daemon/listeners.d.ts +8 -2
- package/dist/daemon/listeners.d.ts.map +1 -1
- package/dist/daemon/listeners.js +39 -6
- package/dist/daemon/listeners.js.map +1 -1
- package/dist/daemon/recording.d.ts +28 -3
- package/dist/daemon/recording.d.ts.map +1 -1
- package/dist/daemon/recording.js +159 -17
- package/dist/daemon/recording.js.map +1 -1
- package/dist/daemon/refs.d.ts.map +1 -1
- package/dist/daemon/refs.js +7 -2
- package/dist/daemon/refs.js.map +1 -1
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +326 -19
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/session.d.ts +2 -0
- package/dist/daemon/session.d.ts.map +1 -1
- package/dist/daemon/summary.d.ts.map +1 -1
- package/dist/daemon/summary.js +57 -11
- package/dist/daemon/summary.js.map +1 -1
- package/dist/daemon/types.d.ts +1 -1
- package/dist/daemon/types.d.ts.map +1 -1
- package/dist/daemon/types.js.map +1 -1
- package/dist/daemon/viewer.d.ts +7 -0
- package/dist/daemon/viewer.d.ts.map +1 -1
- package/dist/daemon/viewer.js +12 -4
- package/dist/daemon/viewer.js.map +1 -1
- package/dist/daemon/visualDiff.d.ts +2 -0
- package/dist/daemon/visualDiff.d.ts.map +1 -1
- package/dist/daemon/visualDiff.js +61 -2
- package/dist/daemon/visualDiff.js.map +1 -1
- package/dist/ruler.d.ts +1 -1
- package/dist/ruler.d.ts.map +1 -1
- package/dist/ruler.js +53 -32
- package/dist/ruler.js.map +1 -1
- package/package.json +10 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/daemon/browser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/daemon/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/daemon/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,KAAK,IAAI,GAAG,OAAO,YAAY,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/daemon/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,KAAK,IAAI,GAAG,OAAO,YAAY,EAAE,IAAI,CAAC;AA4FtC;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtE"}
|
package/dist/daemon/cursor.js
CHANGED
|
@@ -33,33 +33,64 @@ const CURSOR_HIGHLIGHT_SCRIPT = `
|
|
|
33
33
|
dot.style.top = e.clientY + 'px';
|
|
34
34
|
});
|
|
35
35
|
|
|
36
|
-
// Click ripple
|
|
36
|
+
// Click ripple + persistent center mark — both are tuned to be highly
|
|
37
|
+
// visible in recordings. The ripple expands to 8x over 1.2s; the center
|
|
38
|
+
// dot stays fully opaque for the first frame and fades over 600ms so
|
|
39
|
+
// viewers can clearly see WHERE the click landed even if they're not
|
|
40
|
+
// watching the exact frame of mousedown.
|
|
37
41
|
const style = document.createElement('style');
|
|
38
42
|
style.textContent = \`
|
|
39
43
|
@keyframes sweetlink-ripple {
|
|
40
|
-
0%
|
|
41
|
-
|
|
44
|
+
0% { transform: translate(-50%, -50%) scale(1); opacity: 0.95; }
|
|
45
|
+
30% { transform: translate(-50%, -50%) scale(3); opacity: 0.7; }
|
|
46
|
+
100% { transform: translate(-50%, -50%) scale(8); opacity: 0; }
|
|
47
|
+
}
|
|
48
|
+
@keyframes sweetlink-pulse {
|
|
49
|
+
0% { opacity: 1; }
|
|
50
|
+
100% { opacity: 0; }
|
|
42
51
|
}
|
|
43
52
|
\`;
|
|
44
53
|
document.head.appendChild(style);
|
|
45
54
|
|
|
46
55
|
document.addEventListener('mousedown', (e) => {
|
|
56
|
+
// Expanding ring
|
|
47
57
|
const ripple = document.createElement('div');
|
|
48
58
|
ripple.style.cssText = [
|
|
49
59
|
'position: fixed',
|
|
50
60
|
'pointer-events: none',
|
|
51
61
|
'z-index: 999998',
|
|
52
|
-
'width:
|
|
53
|
-
'height:
|
|
62
|
+
'width: 24px',
|
|
63
|
+
'height: 24px',
|
|
54
64
|
'border-radius: 50%',
|
|
55
|
-
'border:
|
|
65
|
+
'border: 4px solid rgba(255, 64, 32, 0.95)',
|
|
66
|
+
'box-shadow: 0 0 12px rgba(255, 64, 32, 0.7)',
|
|
56
67
|
'left: ' + e.clientX + 'px',
|
|
57
68
|
'top: ' + e.clientY + 'px',
|
|
58
69
|
'transform: translate(-50%, -50%) scale(1)',
|
|
59
|
-
'animation: sweetlink-ripple
|
|
70
|
+
'animation: sweetlink-ripple 1200ms ease-out forwards',
|
|
60
71
|
].join(';');
|
|
61
72
|
document.body.appendChild(ripple);
|
|
62
|
-
setTimeout(() => ripple.remove(),
|
|
73
|
+
setTimeout(() => ripple.remove(), 1200);
|
|
74
|
+
|
|
75
|
+
// Persistent center dot that fades over 600ms.
|
|
76
|
+
const center = document.createElement('div');
|
|
77
|
+
center.style.cssText = [
|
|
78
|
+
'position: fixed',
|
|
79
|
+
'pointer-events: none',
|
|
80
|
+
'z-index: 999999',
|
|
81
|
+
'width: 14px',
|
|
82
|
+
'height: 14px',
|
|
83
|
+
'border-radius: 50%',
|
|
84
|
+
'background: rgba(255, 64, 32, 1)',
|
|
85
|
+
'border: 2px solid #fff',
|
|
86
|
+
'box-shadow: 0 0 0 2px rgba(255, 64, 32, 0.5)',
|
|
87
|
+
'left: ' + e.clientX + 'px',
|
|
88
|
+
'top: ' + e.clientY + 'px',
|
|
89
|
+
'transform: translate(-50%, -50%)',
|
|
90
|
+
'animation: sweetlink-pulse 600ms ease-out forwards',
|
|
91
|
+
].join(';');
|
|
92
|
+
document.body.appendChild(center);
|
|
93
|
+
setTimeout(() => center.remove(), 600);
|
|
63
94
|
});
|
|
64
95
|
})();
|
|
65
96
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/daemon/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,uBAAuB,GAAG
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/daemon/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwF/B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAU;IACrD,MAAM,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAClD,iDAAiD;IACjD,MAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACxD,CAAC"}
|
package/dist/daemon/devices.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export interface DeviceConfig {
|
|
|
21
21
|
* covering the most common testing targets.
|
|
22
22
|
*/
|
|
23
23
|
export declare const DEVICE_PRESETS: Record<string, DeviceConfig>;
|
|
24
|
+
/** Names a user might type (presets + aliases) for help/error messages. */
|
|
25
|
+
export declare function listDeviceNames(): string[];
|
|
24
26
|
/**
|
|
25
27
|
* Parse a device name (case-insensitive) to a DeviceConfig.
|
|
26
28
|
* Falls back to custom viewport parsing for "WIDTHxHEIGHT" format.
|
|
@@ -31,9 +33,12 @@ export declare function parseDevice(name: string): DeviceConfig | null;
|
|
|
31
33
|
*/
|
|
32
34
|
export declare function takeDeviceScreenshots(page: Page, devices: string[], options?: {
|
|
33
35
|
fullPage?: boolean;
|
|
34
|
-
}): Promise<
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
}): Promise<{
|
|
37
|
+
results: Array<{
|
|
38
|
+
device: DeviceConfig;
|
|
39
|
+
buffer: Buffer;
|
|
40
|
+
}>;
|
|
41
|
+
unknown: string[];
|
|
42
|
+
}>;
|
|
38
43
|
export {};
|
|
39
44
|
//# sourceMappingURL=devices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../src/daemon/devices.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,KAAK,IAAI,GAAG,OAAO,YAAY,EAAE,IAAI,CAAC;AAMtC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgDvD,CAAC;
|
|
1
|
+
{"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../src/daemon/devices.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,KAAK,IAAI,GAAG,OAAO,YAAY,EAAE,IAAI,CAAC;AAMtC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgDvD,CAAC;AAeF,2EAA2E;AAC3E,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAK1C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAmB7D;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,OAAO,CAAC;IACT,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC,CAsBD"}
|
package/dist/daemon/devices.js
CHANGED
|
@@ -57,15 +57,35 @@ export const DEVICE_PRESETS = {
|
|
|
57
57
|
isMobile: false,
|
|
58
58
|
},
|
|
59
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* Short aliases that resolve to a canonical preset key. Lets users say
|
|
62
|
+
* `ipad` instead of remembering `ipad-mini` vs `ipad-pro-11`.
|
|
63
|
+
*/
|
|
64
|
+
const DEVICE_ALIASES = {
|
|
65
|
+
iphone: 'iphone-14',
|
|
66
|
+
ipad: 'ipad-mini',
|
|
67
|
+
pixel: 'pixel-7',
|
|
68
|
+
android: 'pixel-7',
|
|
69
|
+
mobile: 'iphone-14',
|
|
70
|
+
tablet: 'ipad-mini',
|
|
71
|
+
};
|
|
72
|
+
/** Names a user might type (presets + aliases) for help/error messages. */
|
|
73
|
+
export function listDeviceNames() {
|
|
74
|
+
return [
|
|
75
|
+
...Object.keys(DEVICE_PRESETS),
|
|
76
|
+
...Object.keys(DEVICE_ALIASES).map((a) => `${a} (→${DEVICE_ALIASES[a]})`),
|
|
77
|
+
].sort();
|
|
78
|
+
}
|
|
60
79
|
/**
|
|
61
80
|
* Parse a device name (case-insensitive) to a DeviceConfig.
|
|
62
81
|
* Falls back to custom viewport parsing for "WIDTHxHEIGHT" format.
|
|
63
82
|
*/
|
|
64
83
|
export function parseDevice(name) {
|
|
65
84
|
const normalized = name.toLowerCase().replace(/\s+/g, '-');
|
|
85
|
+
const resolved = DEVICE_ALIASES[normalized] ?? normalized;
|
|
66
86
|
// Check presets
|
|
67
|
-
if (DEVICE_PRESETS[
|
|
68
|
-
return DEVICE_PRESETS[
|
|
87
|
+
if (DEVICE_PRESETS[resolved]) {
|
|
88
|
+
return DEVICE_PRESETS[resolved];
|
|
69
89
|
}
|
|
70
90
|
// Try WIDTHxHEIGHT format
|
|
71
91
|
const match = name.match(/^(\d+)x(\d+)$/);
|
|
@@ -82,11 +102,12 @@ export function parseDevice(name) {
|
|
|
82
102
|
*/
|
|
83
103
|
export async function takeDeviceScreenshots(page, devices, options) {
|
|
84
104
|
const results = [];
|
|
105
|
+
const unknown = [];
|
|
85
106
|
const originalViewport = page.viewportSize() ?? { width: 1440, height: 900 };
|
|
86
107
|
for (const deviceName of devices) {
|
|
87
108
|
const device = parseDevice(deviceName);
|
|
88
109
|
if (!device) {
|
|
89
|
-
|
|
110
|
+
unknown.push(deviceName);
|
|
90
111
|
continue;
|
|
91
112
|
}
|
|
92
113
|
await page.setViewportSize(device.viewport);
|
|
@@ -96,6 +117,6 @@ export async function takeDeviceScreenshots(page, devices, options) {
|
|
|
96
117
|
}
|
|
97
118
|
// Restore original viewport
|
|
98
119
|
await page.setViewportSize(originalViewport);
|
|
99
|
-
return results;
|
|
120
|
+
return { results, unknown };
|
|
100
121
|
}
|
|
101
122
|
//# sourceMappingURL=devices.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/daemon/devices.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiC;IAC1D,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;QACrC,iBAAiB,EAAE,CAAC;QACpB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;QACrC,iBAAiB,EAAE,CAAC;QACpB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;QACrC,iBAAiB,EAAE,KAAK;QACxB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf;IACD,aAAa,EAAE;QACb,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;QACtC,iBAAiB,EAAE,CAAC;QACpB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;QACtC,iBAAiB,EAAE,CAAC;QACpB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;QACtC,iBAAiB,EAAE,CAAC;QACpB,QAAQ,EAAE,KAAK;KAChB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QACvC,iBAAiB,EAAE,CAAC;QACpB,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/daemon/devices.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/diff.d.ts
CHANGED
|
@@ -14,6 +14,12 @@ export declare function diffSnapshots(baseline: RefMap, current: RefMap): string
|
|
|
14
14
|
/**
|
|
15
15
|
* Take an annotated screenshot with ref labels overlaid on elements.
|
|
16
16
|
* Injects temporary overlay divs, captures screenshot, then removes them.
|
|
17
|
+
*
|
|
18
|
+
* - Captures the full page so annotations below the fold are visible.
|
|
19
|
+
* - Skips elements with zero bounding-box (avoids stray labels at 0,0).
|
|
20
|
+
* - Positions labels above the element (or below if at the page top),
|
|
21
|
+
* uses absolute (document-relative) coordinates so they line up in
|
|
22
|
+
* the full-page image.
|
|
17
23
|
*/
|
|
18
24
|
export declare function annotateScreenshot(page: Page, refMap: RefMap): Promise<Buffer>;
|
|
19
25
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/daemon/diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,KAAK,IAAI,GAAG,OAAO,YAAY,EAAE,IAAI,CAAC;AAEtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMxC;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAkDvE;AA2CD
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/daemon/diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,KAAK,IAAI,GAAG,OAAO,YAAY,EAAE,IAAI,CAAC;AAEtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMxC;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAkDvE;AA2CD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAuGjB"}
|
package/dist/daemon/diff.js
CHANGED
|
@@ -100,13 +100,24 @@ function computeLCS(a, b) {
|
|
|
100
100
|
/**
|
|
101
101
|
* Take an annotated screenshot with ref labels overlaid on elements.
|
|
102
102
|
* Injects temporary overlay divs, captures screenshot, then removes them.
|
|
103
|
+
*
|
|
104
|
+
* - Captures the full page so annotations below the fold are visible.
|
|
105
|
+
* - Skips elements with zero bounding-box (avoids stray labels at 0,0).
|
|
106
|
+
* - Positions labels above the element (or below if at the page top),
|
|
107
|
+
* uses absolute (document-relative) coordinates so they line up in
|
|
108
|
+
* the full-page image.
|
|
103
109
|
*/
|
|
104
110
|
export async function annotateScreenshot(page, refMap) {
|
|
105
111
|
// Inject overlay elements
|
|
106
112
|
await page.evaluate((refs) => {
|
|
107
113
|
const container = document.createElement('div');
|
|
108
114
|
container.id = '__sweetlink_annotations__';
|
|
109
|
-
|
|
115
|
+
// Absolute positioning so labels stay attached to elements as the
|
|
116
|
+
// page scrolls — matters for full-page screenshots.
|
|
117
|
+
container.style.cssText =
|
|
118
|
+
'position: absolute; top: 0; left: 0; width: 100%; pointer-events: none; z-index: 2147483647;';
|
|
119
|
+
const sx = window.scrollX;
|
|
120
|
+
const sy = window.scrollY;
|
|
110
121
|
for (const refEntry of refs) {
|
|
111
122
|
// Find element by role + name using ARIA
|
|
112
123
|
let element = null;
|
|
@@ -115,7 +126,6 @@ export async function annotateScreenshot(page, refMap) {
|
|
|
115
126
|
const role = el.getAttribute('role') ?? el.tagName?.toLowerCase();
|
|
116
127
|
const name = el.getAttribute('aria-label') ??
|
|
117
128
|
el.textContent?.trim().substring(0, 50) ?? '';
|
|
118
|
-
// Match by role keyword and name substring
|
|
119
129
|
const roleMatch = role === refEntry.role ||
|
|
120
130
|
(refEntry.role === 'button' && el.tagName === 'BUTTON') ||
|
|
121
131
|
(refEntry.role === 'link' && el.tagName === 'A') ||
|
|
@@ -131,47 +141,57 @@ export async function annotateScreenshot(page, refMap) {
|
|
|
131
141
|
if (!element)
|
|
132
142
|
continue;
|
|
133
143
|
const rect = element.getBoundingClientRect();
|
|
134
|
-
//
|
|
144
|
+
// Skip elements without a real visual presence — these were
|
|
145
|
+
// producing stray labels at (0,0) on the screenshot.
|
|
146
|
+
if (rect.width < 1 || rect.height < 1)
|
|
147
|
+
continue;
|
|
148
|
+
// Document-space coords (so labels line up with the captured
|
|
149
|
+
// full-page image, not the viewport).
|
|
150
|
+
const docLeft = rect.left + sx;
|
|
151
|
+
const docTop = rect.top + sy;
|
|
152
|
+
const labelHeight = 18;
|
|
153
|
+
const padX = 6;
|
|
154
|
+
// Place the label above the element when possible, else below.
|
|
155
|
+
const goAbove = docTop >= labelHeight + 2;
|
|
156
|
+
const labelTop = goAbove ? docTop - labelHeight - 2 : docTop + rect.height + 2;
|
|
135
157
|
const label = document.createElement('div');
|
|
136
158
|
label.style.cssText = `
|
|
137
|
-
position:
|
|
138
|
-
left: ${
|
|
139
|
-
top: ${
|
|
140
|
-
background: rgba(16, 185, 129, 0.
|
|
159
|
+
position: absolute;
|
|
160
|
+
left: ${docLeft}px;
|
|
161
|
+
top: ${labelTop}px;
|
|
162
|
+
background: rgba(16, 185, 129, 0.95);
|
|
141
163
|
color: #0a0f1a;
|
|
142
|
-
font-size:
|
|
164
|
+
font-size: 12px;
|
|
143
165
|
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
144
|
-
font-weight:
|
|
145
|
-
padding:
|
|
146
|
-
border-radius:
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
166
|
+
font-weight: 700;
|
|
167
|
+
padding: 2px ${padX}px;
|
|
168
|
+
border-radius: 3px;
|
|
169
|
+
height: ${labelHeight}px;
|
|
170
|
+
line-height: ${labelHeight - 4}px;
|
|
171
|
+
box-shadow: 0 1px 2px rgba(0,0,0,0.25);
|
|
172
|
+
white-space: nowrap;
|
|
150
173
|
`;
|
|
151
174
|
label.textContent = refEntry.ref;
|
|
152
|
-
// Create outline
|
|
153
175
|
const outline = document.createElement('div');
|
|
154
176
|
outline.style.cssText = `
|
|
155
|
-
position:
|
|
156
|
-
left: ${
|
|
157
|
-
top: ${
|
|
177
|
+
position: absolute;
|
|
178
|
+
left: ${docLeft}px;
|
|
179
|
+
top: ${docTop}px;
|
|
158
180
|
width: ${rect.width}px;
|
|
159
181
|
height: ${rect.height}px;
|
|
160
|
-
border: 2px solid rgba(16, 185, 129, 0.
|
|
161
|
-
border-radius:
|
|
162
|
-
|
|
163
|
-
pointer-events: none;
|
|
182
|
+
border: 2px solid rgba(16, 185, 129, 0.8);
|
|
183
|
+
border-radius: 3px;
|
|
184
|
+
box-sizing: border-box;
|
|
164
185
|
`;
|
|
165
186
|
container.appendChild(label);
|
|
166
187
|
container.appendChild(outline);
|
|
167
188
|
}
|
|
168
189
|
document.body.appendChild(container);
|
|
169
190
|
}, refMap.entries.map(e => ({ ref: e.ref, role: e.role, name: e.name })));
|
|
170
|
-
// Small wait for rendering
|
|
171
191
|
await page.waitForTimeout(50);
|
|
172
|
-
//
|
|
173
|
-
|
|
174
|
-
|
|
192
|
+
// Capture full page so refs below the fold are visible. Without this
|
|
193
|
+
// the annotated screenshot misses anything past the viewport.
|
|
194
|
+
const buffer = await page.screenshot({ fullPage: true });
|
|
175
195
|
await page.evaluate(() => {
|
|
176
196
|
const container = document.getElementById('__sweetlink_annotations__');
|
|
177
197
|
container?.remove();
|
package/dist/daemon/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/daemon/diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC7D,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElD,kEAAkE;IAClE,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IAEX,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACtD,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YACtE,yBAAyB;YACzB,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC;YACP,CAAC;YACD,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC;YACP,CAAC;YACD,6BAA6B;YAC7B,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC5B,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC;YACP,CAAC;QACH,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC;YACP,CAAC;YACD,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,CAAW,EAAE,CAAW;IAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,EAAE,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAErF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC1B,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;YACvB,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,CAAC;YAC3C,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/daemon/diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC7D,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElD,kEAAkE;IAClE,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IAEX,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACtD,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YACtE,yBAAyB;YACzB,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC;YACP,CAAC;YACD,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC;YACP,CAAC;YACD,6BAA6B;YAC7B,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC5B,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC;YACP,CAAC;QACH,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC;YACP,CAAC;YACD,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,CAAW,EAAE,CAAW;IAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,EAAE,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAErF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC1B,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;YACvB,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,CAAC;YAC3C,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAU,EACV,MAAc;IAEd,0BAA0B;IAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAwD,EAAE,EAAE;QAC/E,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,SAAS,CAAC,EAAE,GAAG,2BAA2B,CAAC;QAC3C,kEAAkE;QAClE,oDAAoD;QACpD,SAAS,CAAC,KAAK,CAAC,OAAO;YACrB,8FAA8F,CAAC;QAEjG,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAE1B,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC5B,yCAAyC;YACzC,IAAI,OAAO,GAAmB,IAAI,CAAC;YACnC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAK,EAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;gBACnF,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC;oBACvC,EAAkB,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;gBAEjE,MAAM,SAAS,GAAG,IAAI,KAAK,QAAQ,CAAC,IAAI;oBACtC,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC;oBACvD,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,OAAO,KAAK,GAAG,CAAC;oBAChD,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,OAAO,KAAK,OAAO,IAAI,EAAE,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC;oBACtF,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;oBAC5D,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC;oBACjD,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;gBAE3E,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC/D,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAC7C,4DAA4D;YAC5D,qDAAqD;YACrD,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS;YAEhD,6DAA6D;YAC7D,sCAAsC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,CAAC,CAAC;YAEf,+DAA+D;YAC/D,MAAM,OAAO,GAAG,MAAM,IAAI,WAAW,GAAG,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAE/E,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG;;gBAEZ,OAAO;eACR,QAAQ;;;;;;uBAMA,IAAI;;kBAET,WAAW;uBACN,WAAW,GAAG,CAAC;;;OAG/B,CAAC;YACF,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC;YAEjC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG;;gBAEd,OAAO;eACR,MAAM;iBACJ,IAAI,CAAC,KAAK;kBACT,IAAI,CAAC,MAAM;;;;OAItB,CAAC;YAEF,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC7B,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1E,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAE9B,qEAAqE;IACrE,8DAA8D;IAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAC;QACvE,SAAS,EAAE,MAAM,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/daemon/index.js
CHANGED
|
File without changes
|
|
@@ -20,7 +20,13 @@ export interface NetworkEntry {
|
|
|
20
20
|
duration: number;
|
|
21
21
|
contentType?: string;
|
|
22
22
|
size?: number;
|
|
23
|
+
/** Request body (truncated to 4KB) — only present when withBody capture is enabled. */
|
|
24
|
+
requestBody?: string;
|
|
25
|
+
/** Response body (truncated to 4KB) — only present when withBody capture is enabled. */
|
|
26
|
+
responseBody?: string;
|
|
23
27
|
}
|
|
28
|
+
export declare function setCaptureBodies(enabled: boolean): void;
|
|
29
|
+
export declare function isCapturingBodies(): boolean;
|
|
24
30
|
export interface DialogEntry {
|
|
25
31
|
timestamp: number;
|
|
26
32
|
type: string;
|
|
@@ -31,8 +37,8 @@ export declare const consoleBuffer: RingBuffer<ConsoleEntry>;
|
|
|
31
37
|
export declare const networkBuffer: RingBuffer<NetworkEntry>;
|
|
32
38
|
export declare const dialogBuffer: RingBuffer<DialogEntry>;
|
|
33
39
|
/**
|
|
34
|
-
* Install event listeners on
|
|
35
|
-
*
|
|
40
|
+
* Install event listeners on a page. Safe to call multiple times for the
|
|
41
|
+
* same page (no-op on re-install) and supports multiple distinct pages.
|
|
36
42
|
*/
|
|
37
43
|
export declare function installListeners(page: Page): void;
|
|
38
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listeners.d.ts","sourceRoot":"","sources":["../../src/daemon/listeners.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,KAAK,IAAI,GAAG,OAAO,YAAY,EAAE,IAAI,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"listeners.d.ts","sourceRoot":"","sources":["../../src/daemon/listeners.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,KAAK,IAAI,GAAG,OAAO,YAAY,EAAE,IAAI,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEvD;AACD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,eAAO,MAAM,aAAa,0BAAuC,CAAC;AAClE,eAAO,MAAM,aAAa,0BAAuC,CAAC;AAClE,eAAO,MAAM,YAAY,yBAAsC,CAAC;AAahE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAwFjD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAWpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAapE"}
|
package/dist/daemon/listeners.js
CHANGED
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
* from the daemon's persistent Playwright page into ring buffers.
|
|
6
6
|
*/
|
|
7
7
|
import { RingBuffer } from './ringBuffer.js';
|
|
8
|
+
const BODY_CAPTURE_LIMIT = 4 * 1024;
|
|
9
|
+
let captureBodies = false;
|
|
10
|
+
export function setCaptureBodies(enabled) {
|
|
11
|
+
captureBodies = enabled;
|
|
12
|
+
}
|
|
13
|
+
export function isCapturingBodies() {
|
|
14
|
+
return captureBodies;
|
|
15
|
+
}
|
|
8
16
|
// ============================================================================
|
|
9
17
|
// Buffers (50K entries each)
|
|
10
18
|
// ============================================================================
|
|
@@ -16,15 +24,17 @@ const pendingRequests = new Map();
|
|
|
16
24
|
// ============================================================================
|
|
17
25
|
// Setup
|
|
18
26
|
// ============================================================================
|
|
19
|
-
|
|
27
|
+
// Track installed pages so a daemon with both a main page and a recording
|
|
28
|
+
// page captures events from both into the shared ring buffers.
|
|
29
|
+
const installedPages = new WeakSet();
|
|
20
30
|
/**
|
|
21
|
-
* Install event listeners on
|
|
22
|
-
*
|
|
31
|
+
* Install event listeners on a page. Safe to call multiple times for the
|
|
32
|
+
* same page (no-op on re-install) and supports multiple distinct pages.
|
|
23
33
|
*/
|
|
24
34
|
export function installListeners(page) {
|
|
25
|
-
if (
|
|
35
|
+
if (installedPages.has(page))
|
|
26
36
|
return;
|
|
27
|
-
|
|
37
|
+
installedPages.add(page);
|
|
28
38
|
// Console events
|
|
29
39
|
page.on('console', (msg) => {
|
|
30
40
|
consoleBuffer.push({
|
|
@@ -38,16 +48,37 @@ export function installListeners(page) {
|
|
|
38
48
|
});
|
|
39
49
|
// Network events
|
|
40
50
|
page.on('request', (request) => {
|
|
51
|
+
let requestBody;
|
|
52
|
+
if (captureBodies) {
|
|
53
|
+
try {
|
|
54
|
+
const data = request.postData();
|
|
55
|
+
if (data)
|
|
56
|
+
requestBody = data.slice(0, BODY_CAPTURE_LIMIT);
|
|
57
|
+
}
|
|
58
|
+
catch { /* postData may be unavailable */ }
|
|
59
|
+
}
|
|
41
60
|
pendingRequests.set(request.url(), {
|
|
42
61
|
startTime: Date.now(),
|
|
43
62
|
method: request.method(),
|
|
44
63
|
url: request.url(),
|
|
64
|
+
requestBody,
|
|
45
65
|
});
|
|
46
66
|
});
|
|
47
|
-
page.on('response', (response) => {
|
|
67
|
+
page.on('response', async (response) => {
|
|
48
68
|
const pending = pendingRequests.get(response.url());
|
|
49
69
|
const startTime = pending?.startTime ?? Date.now();
|
|
50
70
|
pendingRequests.delete(response.url());
|
|
71
|
+
let responseBody;
|
|
72
|
+
if (captureBodies) {
|
|
73
|
+
try {
|
|
74
|
+
const buf = await response.body();
|
|
75
|
+
if (buf) {
|
|
76
|
+
// Slice on the buffer (UTF-8 boundary safe enough for first 4KB)
|
|
77
|
+
responseBody = buf.subarray(0, BODY_CAPTURE_LIMIT).toString('utf-8');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch { /* body may not be available (e.g. redirect) */ }
|
|
81
|
+
}
|
|
51
82
|
networkBuffer.push({
|
|
52
83
|
timestamp: Date.now(),
|
|
53
84
|
method: pending?.method ?? 'GET',
|
|
@@ -55,6 +86,8 @@ export function installListeners(page) {
|
|
|
55
86
|
status: response.status(),
|
|
56
87
|
duration: Date.now() - startTime,
|
|
57
88
|
contentType: response.headers()['content-type'],
|
|
89
|
+
requestBody: pending?.requestBody,
|
|
90
|
+
responseBody,
|
|
58
91
|
});
|
|
59
92
|
});
|
|
60
93
|
page.on('requestfailed', (request) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listeners.js","sourceRoot":"","sources":["../../src/daemon/listeners.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"listeners.js","sourceRoot":"","sources":["../../src/daemon/listeners.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,17 @@ type Page = import('playwright').Page;
|
|
|
18
18
|
* Start recording a session with real video capture.
|
|
19
19
|
* Creates a new BrowserContext with recordVideo enabled.
|
|
20
20
|
*/
|
|
21
|
-
export declare function startRecording(browser: Browser, url: string, outputDir: string
|
|
21
|
+
export declare function startRecording(browser: Browser, url: string, outputDir: string, options?: {
|
|
22
|
+
viewport?: {
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
};
|
|
26
|
+
label?: string;
|
|
27
|
+
/** Path to a Playwright storageState JSON (cookies + localStorage) — for testing logged-in flows. */
|
|
28
|
+
storageState?: string;
|
|
29
|
+
/** Enable Playwright trace recording (writes trace.zip on stop). */
|
|
30
|
+
trace?: boolean;
|
|
31
|
+
}): Promise<{
|
|
22
32
|
sessionId: string;
|
|
23
33
|
}>;
|
|
24
34
|
/**
|
|
@@ -35,14 +45,29 @@ export declare function logAction(action: string, args: string[], page: Page, bo
|
|
|
35
45
|
y: number;
|
|
36
46
|
width: number;
|
|
37
47
|
height: number;
|
|
38
|
-
}): Promise<void>;
|
|
48
|
+
}, durationMs?: number): Promise<void>;
|
|
39
49
|
/**
|
|
40
50
|
* Stop recording and generate session manifest.
|
|
41
51
|
* Closes the recording context which finalizes the video file.
|
|
42
52
|
*/
|
|
43
53
|
export declare function stopRecording(): Promise<SessionManifest | null>;
|
|
44
|
-
/** Check if recording is in progress. */
|
|
54
|
+
/** Check if recording is in progress (returns true even when paused). */
|
|
45
55
|
export declare function isRecording(): boolean;
|
|
56
|
+
/** Check if recording is paused. */
|
|
57
|
+
export declare function isRecordingPaused(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Pause the active recording. Subsequent action logs are skipped, and the
|
|
60
|
+
* paused window is subtracted from the manifest duration. The video
|
|
61
|
+
* stream from Playwright keeps recording (Playwright's video API has no
|
|
62
|
+
* pause primitive), but the action timeline is gapped honestly.
|
|
63
|
+
*/
|
|
64
|
+
export declare function pauseRecording(): {
|
|
65
|
+
pausedAt: number;
|
|
66
|
+
} | null;
|
|
67
|
+
/** Resume a paused recording. */
|
|
68
|
+
export declare function resumeRecording(): {
|
|
69
|
+
pausedDurationMs: number;
|
|
70
|
+
} | null;
|
|
46
71
|
/** Get recording status info. */
|
|
47
72
|
export declare function getRecordingStatus(): {
|
|
48
73
|
recording: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recording.d.ts","sourceRoot":"","sources":["../../src/daemon/recording.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"recording.d.ts","sourceRoot":"","sources":["../../src/daemon/recording.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,cAAc,CAAC;AAKjE,KAAK,OAAO,GAAG,OAAO,YAAY,EAAE,OAAO,CAAC;AAE5C,KAAK,IAAI,GAAG,OAAO,YAAY,EAAE,IAAI,CAAC;AAsDtC;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qGAAqG;IACrG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAiEhC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAE9C;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,IAAI,EACV,WAAW,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACrE,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Ef;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA0GrE;AAED,yEAAyE;AACzE,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,oCAAoC;AACpC,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAK5D;AAED,iCAAiC;AACjC,wBAAgB,eAAe,IAAI;IAAE,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOrE;AAED,iCAAiC;AACjC,wBAAgB,kBAAkB,IAAI;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,CAOA"}
|