@juangadm/pre-post 0.2.0 → 0.3.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/README.md +46 -28
- package/dist/bin/cli.js +190 -84
- package/dist/bin/cli.js.map +1 -1
- package/dist/browser.d.ts +17 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +69 -45
- package/dist/browser.js.map +1 -1
- package/dist/capture.d.ts.map +1 -1
- package/dist/capture.js +9 -8
- package/dist/capture.js.map +1 -1
- package/dist/filename.d.ts +2 -0
- package/dist/filename.d.ts.map +1 -1
- package/dist/filename.js +2 -1
- package/dist/filename.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/upload.d.ts.map +1 -1
- package/dist/upload.js +12 -2
- package/dist/upload.js.map +1 -1
- package/dist/video.d.ts +19 -0
- package/dist/video.d.ts.map +1 -0
- package/dist/video.js +263 -0
- package/dist/video.js.map +1 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ Visual diff tool that captures pre/post screenshots for PRs. Use it as a Claude
|
|
|
10
10
|
|------|-----------------|----------|
|
|
11
11
|
| Browser engine | `agent-browser` (Vercel-proprietary) | **Playwright** (direct dependency) |
|
|
12
12
|
| Screenshot quality | 1x | **2x retina** (`deviceScaleFactor: 2`) |
|
|
13
|
-
| Route detection | Manual | **Automatic** from `git diff` (Next.js App/Pages Router,
|
|
13
|
+
| Route detection | Manual | **Automatic** from `git diff` (Next.js App/Pages Router, generic fallback) |
|
|
14
14
|
| Responsive capture | Single viewport | **Desktop + mobile** per route (`--responsive`) |
|
|
15
15
|
| CLI subcommands | URL pairs only | `detect`, `compare`, `run` subcommands |
|
|
16
16
|
| Skill orchestration | Basic capture | Full workflow: route detection, Claude refinement, user approval, PR posting |
|
|
@@ -23,41 +23,55 @@ flowchart TD
|
|
|
23
23
|
A[pre-post] --> B{Mode?}
|
|
24
24
|
|
|
25
25
|
B -->|Manual| C["pre-post url1 url2"]
|
|
26
|
-
B -->|
|
|
26
|
+
B -->|Subcommand| D{"detect | compare | run"}
|
|
27
27
|
B -->|Claude Code Skill| E["/pre-post"]
|
|
28
28
|
|
|
29
|
-
D
|
|
29
|
+
D -->|detect| F["Git: diff, staged, unstaged, untracked"]
|
|
30
|
+
D -->|compare| J
|
|
31
|
+
D -->|run| F
|
|
32
|
+
|
|
30
33
|
F --> G{Detect framework}
|
|
31
34
|
G -->|Next.js App Router| H[Map files → routes]
|
|
32
35
|
G -->|Next.js Pages Router| H
|
|
33
|
-
G -->|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
G -->|Generic| H
|
|
37
|
+
H --> I{Routes found?}
|
|
38
|
+
I -->|Yes| J[Route list with confidence]
|
|
39
|
+
I -->|No| J2["Default to /"]
|
|
40
|
+
J2 --> J
|
|
41
|
+
|
|
42
|
+
E --> E1[Pre-flight checks]
|
|
43
|
+
E1 --> F
|
|
44
|
+
E1 --> K[Claude refines routes]
|
|
45
|
+
K --> K1[User approves routes]
|
|
46
|
+
K1 --> J
|
|
40
47
|
|
|
41
48
|
C --> L[Playwright]
|
|
42
49
|
J --> L
|
|
43
50
|
|
|
44
|
-
L --> M{
|
|
45
|
-
M -->|
|
|
46
|
-
M -->|
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
L --> M{Launch Chromium}
|
|
52
|
+
M -->|"PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH"| M1[Custom path — fail hard if invalid]
|
|
53
|
+
M -->|Auto-detect| M2[System Chrome → Bundled → Cached]
|
|
54
|
+
M1 --> P[Navigate + wait for network idle]
|
|
55
|
+
M2 --> P
|
|
49
56
|
|
|
50
|
-
P --> Q[Disable animations]
|
|
51
|
-
Q --> R[Wait for fonts]
|
|
57
|
+
P --> Q[Disable CSS animations]
|
|
58
|
+
Q --> R[Wait for document.fonts.ready]
|
|
52
59
|
R --> S[Take 2x retina screenshot]
|
|
53
60
|
|
|
54
|
-
S --> T
|
|
55
|
-
T
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
V
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
S --> T[Save to ~/Downloads]
|
|
62
|
+
T --> T1{--markdown?}
|
|
63
|
+
T1 -->|No| U[Done]
|
|
64
|
+
T1 -->|Yes| V{Upload method}
|
|
65
|
+
V -->|Default| W["git-native: commit to .pre-post/"]
|
|
66
|
+
V -->|--upload-url| Y["HTTP: 0x0.st / Vercel Blob / PUT"]
|
|
67
|
+
W --> X[Build blob+SHA URL]
|
|
68
|
+
Y --> X
|
|
69
|
+
X --> Z[Markdown table]
|
|
70
|
+
|
|
71
|
+
Z --> Z1{Skill mode?}
|
|
72
|
+
Z1 -->|Yes| Z2[User approves screenshots]
|
|
73
|
+
Z2 --> Z3["gh pr edit — append to PR body"]
|
|
74
|
+
Z1 -->|No| Z4[Copy to clipboard]
|
|
61
75
|
|
|
62
76
|
style A fill:#4f46e5,color:#fff
|
|
63
77
|
style L fill:#2563eb,color:#fff
|
|
@@ -231,20 +245,24 @@ Pre-post automatically maps `git diff --name-only` to affected UI routes:
|
|
|
231
245
|
Supports:
|
|
232
246
|
- **Next.js App Router** (route groups, dynamic segments, parallel routes, catch-all)
|
|
233
247
|
- **Next.js Pages Router** (`pages/`, `_app.tsx`, `_document.tsx`)
|
|
234
|
-
- **Remix** (`routes/` directory)
|
|
235
|
-
- **SvelteKit** (`src/routes/+page.svelte`)
|
|
236
248
|
- **Generic fallback** (defaults to `/`)
|
|
237
249
|
|
|
238
250
|
## Add Skill
|
|
239
251
|
|
|
240
|
-
Install as
|
|
252
|
+
Install as an agent skill using the [`skills` CLI](https://github.com/vercel-labs/skills):
|
|
241
253
|
|
|
242
254
|
```bash
|
|
243
|
-
npx skills add juangadm/pre-post
|
|
255
|
+
npx skills add juangadm/pre-post # interactive — pick your agent(s)
|
|
256
|
+
npx skills add juangadm/pre-post -y # auto-install to all universal agents
|
|
257
|
+
npx skills add juangadm/pre-post -y -g # install globally (all projects)
|
|
244
258
|
```
|
|
245
259
|
|
|
260
|
+
This copies `skill/SKILL.md` into the appropriate directory for your agent (e.g., `.claude/skills/` for Claude Code, `.agents/skills/` for Amp/Codex/Gemini CLI, etc.).
|
|
261
|
+
|
|
246
262
|
The skill uses `gh` to detect the associated PR and Playwright for screenshots.
|
|
247
263
|
|
|
264
|
+
> **Note:** The npm package (`@juangadm/pre-post`) is published on [npmjs.com](https://www.npmjs.com/package/@juangadm/pre-post), not GitHub Packages — so the "Packages" section on the GitHub repo page will show none.
|
|
265
|
+
|
|
248
266
|
## Credits
|
|
249
267
|
|
|
250
268
|
- Original [before-and-after](https://github.com/vercel-labs/before-and-after) by [James Clements](https://github.com/jamesclement) at [Vercel Labs](https://github.com/vercel-labs)
|
package/dist/bin/cli.js
CHANGED
|
@@ -6,9 +6,11 @@ import { BeforeAndAfter, generateFilename } from '../index.js';
|
|
|
6
6
|
import { VIEWPORT_PRESETS } from '../types.js';
|
|
7
7
|
import { closeBrowser } from '../browser.js';
|
|
8
8
|
import { captureScreenshot } from '../capture.js';
|
|
9
|
+
import { captureVideo } from '../video.js';
|
|
9
10
|
import { uploadBeforeAfter } from '../upload.js';
|
|
10
11
|
import { copyToClipboard } from '../clipboard.js';
|
|
11
12
|
import { detectRoutes, getChangedFiles, detectFramework } from '../routes.js';
|
|
13
|
+
import { resolveViewport } from '../viewport.js';
|
|
12
14
|
// Determine subcommand
|
|
13
15
|
const subcommand = process.argv[2];
|
|
14
16
|
const isSubcommand = ['detect', 'compare', 'run'].includes(subcommand);
|
|
@@ -38,6 +40,11 @@ const { values, positionals } = parseArgs({
|
|
|
38
40
|
framework: { type: 'string' },
|
|
39
41
|
'before-base': { type: 'string' },
|
|
40
42
|
'after-base': { type: 'string' },
|
|
43
|
+
// Video/GIF options
|
|
44
|
+
video: { type: 'boolean' },
|
|
45
|
+
duration: { type: 'string' },
|
|
46
|
+
fps: { type: 'string' },
|
|
47
|
+
delay: { type: 'string' },
|
|
41
48
|
},
|
|
42
49
|
});
|
|
43
50
|
function printHelp() {
|
|
@@ -78,6 +85,12 @@ COMPARE OPTIONS:
|
|
|
78
85
|
--before-base <url> Base URL for "before" state (production)
|
|
79
86
|
--after-base <url> Base URL for "after" state (localhost)
|
|
80
87
|
|
|
88
|
+
VIDEO OPTIONS:
|
|
89
|
+
--video Capture animated GIF instead of static screenshot
|
|
90
|
+
--duration <seconds> Recording duration (default: 3, max: 10)
|
|
91
|
+
--fps <n> Target frames per second (default: 5, max: 10)
|
|
92
|
+
--delay <ms> Wait after page load before recording (default: 0)
|
|
93
|
+
|
|
81
94
|
OUTPUT OPTIONS:
|
|
82
95
|
-o, --output <dir> Output directory (default: ~/Downloads)
|
|
83
96
|
--markdown Upload images & output markdown table
|
|
@@ -105,6 +118,13 @@ EXAMPLES:
|
|
|
105
118
|
# Responsive capture (desktop + mobile)
|
|
106
119
|
pre-post compare --before-base url1 --after-base url2 --responsive
|
|
107
120
|
|
|
121
|
+
# Capture animated GIFs instead of static screenshots
|
|
122
|
+
pre-post google.com facebook.com --video
|
|
123
|
+
pre-post google.com facebook.com --video --duration 5 --fps 8
|
|
124
|
+
|
|
125
|
+
# GIF capture with compare mode
|
|
126
|
+
pre-post compare --before-base url1 --after-base url2 --video --delay 500
|
|
127
|
+
|
|
108
128
|
# Use existing images (auto-detected)
|
|
109
129
|
pre-post before.png after.png --markdown
|
|
110
130
|
`);
|
|
@@ -123,6 +143,58 @@ function normalizeUrl(url) {
|
|
|
123
143
|
}
|
|
124
144
|
return `https://${url}`;
|
|
125
145
|
}
|
|
146
|
+
function parseStrictNumber(value, flag) {
|
|
147
|
+
if (!/^-?\d+(?:\.\d+)?$/.test(value.trim())) {
|
|
148
|
+
console.error(`Invalid value for ${flag}: ${value}. Expected a number.`);
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
const parsed = Number(value);
|
|
152
|
+
if (!Number.isFinite(parsed)) {
|
|
153
|
+
console.error(`Invalid value for ${flag}: ${value}. Expected a finite number.`);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
return parsed;
|
|
157
|
+
}
|
|
158
|
+
function parseStrictInteger(value, flag) {
|
|
159
|
+
if (!/^-?\d+$/.test(value.trim())) {
|
|
160
|
+
console.error(`Invalid value for ${flag}: ${value}. Expected an integer.`);
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
const parsed = Number(value);
|
|
164
|
+
if (!Number.isSafeInteger(parsed)) {
|
|
165
|
+
console.error(`Invalid value for ${flag}: ${value}. Expected a safe integer.`);
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
return parsed;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Validate --video flag combinations and parse video-related options.
|
|
172
|
+
* Returns parsed options if --video is set, undefined otherwise.
|
|
173
|
+
*/
|
|
174
|
+
function validateVideoFlags() {
|
|
175
|
+
if (!values.video)
|
|
176
|
+
return undefined;
|
|
177
|
+
if (values.full) {
|
|
178
|
+
console.error('--full (fullPage) is not supported with --video');
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
181
|
+
const duration = values.duration ? parseStrictNumber(values.duration, '--duration') : undefined;
|
|
182
|
+
if (duration !== undefined && (duration <= 0 || duration > 10)) {
|
|
183
|
+
console.error('Duration must be between 0.1 and 10 seconds');
|
|
184
|
+
process.exit(1);
|
|
185
|
+
}
|
|
186
|
+
const fps = values.fps ? parseStrictInteger(values.fps, '--fps') : undefined;
|
|
187
|
+
if (fps !== undefined && (fps < 1 || fps > 10)) {
|
|
188
|
+
console.error('FPS must be between 1 and 10');
|
|
189
|
+
process.exit(1);
|
|
190
|
+
}
|
|
191
|
+
const delay = values.delay ? parseStrictInteger(values.delay, '--delay') : undefined;
|
|
192
|
+
if (delay !== undefined && delay < 0) {
|
|
193
|
+
console.error('Delay must be a non-negative integer in milliseconds');
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
return { duration, fps, delay };
|
|
197
|
+
}
|
|
126
198
|
function resolveViewportFlag() {
|
|
127
199
|
if (values.mobile)
|
|
128
200
|
return 'mobile';
|
|
@@ -160,63 +232,80 @@ async function runDetect() {
|
|
|
160
232
|
// ============================================================
|
|
161
233
|
// Subcommand: compare
|
|
162
234
|
// ============================================================
|
|
163
|
-
async function runCompare() {
|
|
235
|
+
async function runCompare(routeOverrides, videoOpts) {
|
|
164
236
|
const beforeBase = values['before-base'];
|
|
165
237
|
const afterBase = values['after-base'];
|
|
166
238
|
if (!beforeBase || !afterBase) {
|
|
167
239
|
console.error('Both --before-base and --after-base are required for compare.');
|
|
168
240
|
process.exit(1);
|
|
169
241
|
}
|
|
170
|
-
const routeList =
|
|
171
|
-
? values.routes.split(',').map(r => r.trim())
|
|
172
|
-
: ['/'];
|
|
242
|
+
const routeList = routeOverrides
|
|
243
|
+
?? (values.routes ? values.routes.split(',').map(r => r.trim()) : ['/']);
|
|
173
244
|
const responsive = values.responsive ?? false;
|
|
174
|
-
const
|
|
245
|
+
const isVideo = values.video ?? false;
|
|
246
|
+
const ext = isVideo ? 'gif' : 'png';
|
|
247
|
+
const captureType = isVideo ? 'GIF' : 'screenshot';
|
|
175
248
|
const outputDir = values.output || path.join(process.env.HOME || '~', 'Downloads');
|
|
176
249
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
177
250
|
const timestamp = new Date();
|
|
251
|
+
const viewports = responsive
|
|
252
|
+
? ['desktop', 'mobile'].map(p => ({ label: p, size: VIEWPORT_PRESETS[p] }))
|
|
253
|
+
: [{ size: resolveViewport(resolveViewportFlag()) }];
|
|
254
|
+
const tasks = [];
|
|
255
|
+
for (const route of routeList) {
|
|
256
|
+
const beforeUrl = normalizeUrl(beforeBase.replace(/\/$/, '') + route);
|
|
257
|
+
const afterUrl = normalizeUrl(afterBase.replace(/\/$/, '') + route);
|
|
258
|
+
const routeSlug = route === '/' ? 'home' : route.replace(/^\//, '').replace(/\//g, '-');
|
|
259
|
+
for (const { label: presetLabel, size: vp } of viewports) {
|
|
260
|
+
const filePrefix = presetLabel ? `${routeSlug}-${presetLabel}` : routeSlug;
|
|
261
|
+
tasks.push({
|
|
262
|
+
route,
|
|
263
|
+
presetLabel,
|
|
264
|
+
vp,
|
|
265
|
+
beforeUrl,
|
|
266
|
+
afterUrl,
|
|
267
|
+
beforeFilename: `${filePrefix}-before-${formatTimestamp(timestamp)}.${ext}`,
|
|
268
|
+
afterFilename: `${filePrefix}-after-${formatTimestamp(timestamp)}.${ext}`,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
const totalCaptures = tasks.length * 2;
|
|
273
|
+
console.log(`Capturing ${totalCaptures} ${captureType}s across ${routeList.length} route(s)...`);
|
|
178
274
|
try {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
fullPage: values.full,
|
|
191
|
-
selector: values.selector,
|
|
192
|
-
});
|
|
193
|
-
const afterResult = await captureScreenshot({
|
|
194
|
-
url: afterUrl,
|
|
195
|
-
viewport: preset,
|
|
196
|
-
fullPage: values.full,
|
|
197
|
-
selector: values.selector,
|
|
198
|
-
});
|
|
199
|
-
const routeSlug = route === '/' ? 'home' : route.replace(/^\//, '').replace(/\//g, '-');
|
|
200
|
-
const beforeFilename = `${routeSlug}-${preset}-before-${formatTimestamp(timestamp)}.png`;
|
|
201
|
-
const afterFilename = `${routeSlug}-${preset}-after-${formatTimestamp(timestamp)}.png`;
|
|
202
|
-
fs.writeFileSync(path.join(outputDir, beforeFilename), beforeResult.image);
|
|
203
|
-
fs.writeFileSync(path.join(outputDir, afterFilename), afterResult.image);
|
|
204
|
-
console.log(` Saved: ${beforeFilename}, ${afterFilename}`);
|
|
205
|
-
}
|
|
275
|
+
// Execute all tasks in parallel (pool limits concurrency)
|
|
276
|
+
const results = await Promise.allSettled(tasks.map(async (task) => {
|
|
277
|
+
if (isVideo) {
|
|
278
|
+
const opts = { viewport: task.vp, ...videoOpts, selector: values.selector };
|
|
279
|
+
const [beforeResult, afterResult] = await Promise.all([
|
|
280
|
+
captureVideo(task.beforeUrl, opts),
|
|
281
|
+
captureVideo(task.afterUrl, opts),
|
|
282
|
+
]);
|
|
283
|
+
fs.writeFileSync(path.join(outputDir, task.beforeFilename), beforeResult.gif);
|
|
284
|
+
fs.writeFileSync(path.join(outputDir, task.afterFilename), afterResult.gif);
|
|
285
|
+
console.log(` Done: ${task.route}${task.presetLabel ? ` @ ${task.presetLabel}` : ''} (${beforeResult.frameCount}f + ${afterResult.frameCount}f)`);
|
|
206
286
|
}
|
|
207
287
|
else {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
288
|
+
const [beforeResult, afterResult] = await Promise.all([
|
|
289
|
+
captureScreenshot({
|
|
290
|
+
url: task.beforeUrl, viewport: task.vp, fullPage: values.full, selector: values.selector,
|
|
291
|
+
}),
|
|
292
|
+
captureScreenshot({
|
|
293
|
+
url: task.afterUrl, viewport: task.vp, fullPage: values.full, selector: values.selector,
|
|
294
|
+
}),
|
|
295
|
+
]);
|
|
296
|
+
fs.writeFileSync(path.join(outputDir, task.beforeFilename), beforeResult.image);
|
|
297
|
+
fs.writeFileSync(path.join(outputDir, task.afterFilename), afterResult.image);
|
|
298
|
+
console.log(` Done: ${task.route}${task.presetLabel ? ` @ ${task.presetLabel}` : ''}`);
|
|
217
299
|
}
|
|
300
|
+
}));
|
|
301
|
+
const failures = results.filter((r) => r.status === 'rejected');
|
|
302
|
+
if (failures.length > 0) {
|
|
303
|
+
for (const f of failures)
|
|
304
|
+
console.error(` Failed: ${f.reason}`);
|
|
305
|
+
if (failures.length === results.length)
|
|
306
|
+
throw new Error('All captures failed');
|
|
218
307
|
}
|
|
219
|
-
console.log(`\nAll
|
|
308
|
+
console.log(`\nAll ${captureType}s saved to: ${outputDir}`);
|
|
220
309
|
}
|
|
221
310
|
finally {
|
|
222
311
|
await closeBrowser();
|
|
@@ -225,14 +314,13 @@ async function runCompare() {
|
|
|
225
314
|
// ============================================================
|
|
226
315
|
// Subcommand: run (detect + compare)
|
|
227
316
|
// ============================================================
|
|
228
|
-
async function runFull() {
|
|
317
|
+
async function runFull(videoOpts) {
|
|
229
318
|
const beforeBase = values['before-base'];
|
|
230
319
|
const afterBase = values['after-base'];
|
|
231
320
|
if (!beforeBase || !afterBase) {
|
|
232
321
|
console.error('Both --before-base and --after-base are required for run.');
|
|
233
322
|
process.exit(1);
|
|
234
323
|
}
|
|
235
|
-
// Detect routes
|
|
236
324
|
const framework = values.framework;
|
|
237
325
|
const maxRoutes = values['max-routes'] ? parseInt(values['max-routes']) : undefined;
|
|
238
326
|
const changedFiles = getChangedFiles();
|
|
@@ -255,14 +343,12 @@ async function runFull() {
|
|
|
255
343
|
console.log('No changed files detected. Defaulting to /');
|
|
256
344
|
routeList = ['/'];
|
|
257
345
|
}
|
|
258
|
-
|
|
259
|
-
values.routes = routeList.join(',');
|
|
260
|
-
await runCompare();
|
|
346
|
+
await runCompare(routeList, videoOpts);
|
|
261
347
|
}
|
|
262
348
|
// ============================================================
|
|
263
349
|
// Default mode (original before-and-after behavior)
|
|
264
350
|
// ============================================================
|
|
265
|
-
async function runDefault() {
|
|
351
|
+
async function runDefault(videoOpts) {
|
|
266
352
|
if (values.help) {
|
|
267
353
|
printHelp();
|
|
268
354
|
return;
|
|
@@ -305,40 +391,59 @@ async function runDefault() {
|
|
|
305
391
|
}
|
|
306
392
|
const outputDir = values.output || path.join(process.env.HOME || '~', 'Downloads');
|
|
307
393
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
394
|
+
const isVideo = values.video ?? false;
|
|
395
|
+
const captureType = isVideo ? 'GIF' : 'screenshot';
|
|
396
|
+
console.log(`Capturing ${captureType} before: ${beforeUrl}${beforeSelector ? ` (${beforeSelector})` : ''}`);
|
|
397
|
+
console.log(`Capturing ${captureType} after: ${afterUrl}${afterSelector ? ` (${afterSelector})` : ''}`);
|
|
398
|
+
if (isVideo) {
|
|
399
|
+
// Video/GIF mode
|
|
400
|
+
const resolvedViewport = resolveViewport(viewport);
|
|
401
|
+
const opts = {
|
|
402
|
+
viewport: resolvedViewport,
|
|
403
|
+
...videoOpts,
|
|
313
404
|
selector: beforeSelector,
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
405
|
+
};
|
|
406
|
+
const beforeResult = await captureVideo(beforeUrl, opts);
|
|
407
|
+
const afterResult = await captureVideo(afterUrl, { ...opts, selector: afterSelector });
|
|
408
|
+
const timestamp = new Date();
|
|
409
|
+
const beforeFilename = generateFilename({ url: beforeUrl, suffix: 'before', timestamp, format: 'gif' });
|
|
410
|
+
const afterFilename = generateFilename({ url: afterUrl, suffix: 'after', timestamp, format: 'gif' });
|
|
411
|
+
const beforePath = path.join(outputDir, beforeFilename);
|
|
412
|
+
const afterPath = path.join(outputDir, afterFilename);
|
|
413
|
+
fs.writeFileSync(beforePath, beforeResult.gif);
|
|
414
|
+
fs.writeFileSync(afterPath, afterResult.gif);
|
|
415
|
+
console.log(`\nSaved: ${beforePath} (${beforeResult.frameCount} frames)`);
|
|
416
|
+
console.log(`Saved: ${afterPath} (${afterResult.frameCount} frames)`);
|
|
417
|
+
if (values.markdown) {
|
|
418
|
+
await uploadAndOutputMarkdown(beforeResult.gif, afterResult.gif, beforeFilename, afterFilename);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
// Static screenshot mode
|
|
423
|
+
const result = await ba.captureBeforeAfter({
|
|
424
|
+
before: {
|
|
425
|
+
url: beforeUrl,
|
|
426
|
+
selector: beforeSelector,
|
|
427
|
+
fullPage: values.full,
|
|
428
|
+
},
|
|
429
|
+
after: {
|
|
430
|
+
url: afterUrl,
|
|
431
|
+
selector: afterSelector,
|
|
432
|
+
fullPage: values.full,
|
|
433
|
+
},
|
|
434
|
+
});
|
|
435
|
+
const timestamp = new Date();
|
|
436
|
+
const beforeFilename = generateFilename({ url: beforeUrl, suffix: 'before', timestamp });
|
|
437
|
+
const afterFilename = generateFilename({ url: afterUrl, suffix: 'after', timestamp });
|
|
438
|
+
const beforePath = path.join(outputDir, beforeFilename);
|
|
439
|
+
const afterPath = path.join(outputDir, afterFilename);
|
|
440
|
+
fs.writeFileSync(beforePath, result.before.image);
|
|
441
|
+
fs.writeFileSync(afterPath, result.after.image);
|
|
442
|
+
console.log(`\nSaved: ${beforePath}`);
|
|
443
|
+
console.log(`Saved: ${afterPath}`);
|
|
444
|
+
if (values.markdown) {
|
|
445
|
+
await uploadAndOutputMarkdown(result.before.image, result.after.image, beforeFilename, afterFilename);
|
|
446
|
+
}
|
|
342
447
|
}
|
|
343
448
|
}
|
|
344
449
|
finally {
|
|
@@ -372,15 +477,16 @@ async function main() {
|
|
|
372
477
|
printHelp();
|
|
373
478
|
return;
|
|
374
479
|
}
|
|
480
|
+
const videoOpts = validateVideoFlags();
|
|
375
481
|
switch (subcommand) {
|
|
376
482
|
case 'detect':
|
|
377
483
|
return runDetect();
|
|
378
484
|
case 'compare':
|
|
379
|
-
return runCompare();
|
|
485
|
+
return runCompare(undefined, videoOpts);
|
|
380
486
|
case 'run':
|
|
381
|
-
return runFull();
|
|
487
|
+
return runFull(videoOpts);
|
|
382
488
|
default:
|
|
383
|
-
return runDefault();
|
|
489
|
+
return runDefault(videoOpts);
|
|
384
490
|
}
|
|
385
491
|
}
|
|
386
492
|
main()
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/browser.d.ts
CHANGED
|
@@ -2,7 +2,22 @@
|
|
|
2
2
|
* Browser automation via Playwright.
|
|
3
3
|
* Launches headless Chromium for screenshot capture.
|
|
4
4
|
*/
|
|
5
|
+
import { Browser, Page } from 'playwright';
|
|
5
6
|
import { ViewportSize } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Get the shared Browser instance (creating it if needed).
|
|
9
|
+
* Used by video.ts to create fresh pages without animation-killing CSS.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getBrowser(): Promise<Browser>;
|
|
12
|
+
/**
|
|
13
|
+
* Acquire a page from the pool. Blocks if MAX_CONCURRENT_PAGES are in use.
|
|
14
|
+
* Each page gets its own viewport and deviceScaleFactor.
|
|
15
|
+
*/
|
|
16
|
+
export declare function acquirePage(viewport: ViewportSize): Promise<Page>;
|
|
17
|
+
/**
|
|
18
|
+
* Release a page back to the pool (closes it).
|
|
19
|
+
*/
|
|
20
|
+
export declare function releasePage(pg: Page): Promise<void>;
|
|
6
21
|
export interface ScreenshotOptions {
|
|
7
22
|
viewport: ViewportSize;
|
|
8
23
|
fullPage?: boolean;
|
|
@@ -10,7 +25,8 @@ export interface ScreenshotOptions {
|
|
|
10
25
|
}
|
|
11
26
|
/**
|
|
12
27
|
* Capture a screenshot using Playwright.
|
|
13
|
-
*
|
|
28
|
+
* Acquires a page from the pool, captures, and releases.
|
|
29
|
+
* Safe to call concurrently — pool limits parallelism.
|
|
14
30
|
*/
|
|
15
31
|
export declare function captureScreenshot(url: string, options: ScreenshotOptions): Promise<Buffer>;
|
|
16
32
|
/**
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU1C;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAKnD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAyFD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,CAoCjB;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKvD"}
|