@juangadm/pre-post 1.4.0 → 1.6.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.
Files changed (77) hide show
  1. package/README.md +2 -1
  2. package/assets/labels/post.png +0 -0
  3. package/assets/labels/pre.png +0 -0
  4. package/dist/attach.d.ts +60 -0
  5. package/dist/attach.d.ts.map +1 -0
  6. package/dist/attach.js +138 -0
  7. package/dist/attach.js.map +1 -0
  8. package/dist/bin/cli.js +25 -17
  9. package/dist/bin/cli.js.map +1 -1
  10. package/dist/browser.d.ts +48 -2
  11. package/dist/browser.d.ts.map +1 -1
  12. package/dist/browser.js +60 -31
  13. package/dist/browser.js.map +1 -1
  14. package/dist/commands/doctor.d.ts +6 -0
  15. package/dist/commands/doctor.d.ts.map +1 -1
  16. package/dist/commands/doctor.js +14 -0
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/pr.d.ts +20 -0
  19. package/dist/commands/pr.d.ts.map +1 -1
  20. package/dist/commands/pr.js +95 -30
  21. package/dist/commands/pr.js.map +1 -1
  22. package/dist/comparison.d.ts.map +1 -1
  23. package/dist/comparison.js +10 -4
  24. package/dist/comparison.js.map +1 -1
  25. package/dist/compose.d.ts +72 -0
  26. package/dist/compose.d.ts.map +1 -0
  27. package/dist/compose.js +237 -0
  28. package/dist/compose.js.map +1 -0
  29. package/dist/doctor.d.ts +6 -0
  30. package/dist/doctor.d.ts.map +1 -1
  31. package/dist/doctor.js +5 -1
  32. package/dist/doctor.js.map +1 -1
  33. package/dist/ffmpeg.d.ts +35 -0
  34. package/dist/ffmpeg.d.ts.map +1 -0
  35. package/dist/ffmpeg.js +143 -0
  36. package/dist/ffmpeg.js.map +1 -0
  37. package/dist/github.d.ts +7 -0
  38. package/dist/github.d.ts.map +1 -1
  39. package/dist/github.js +18 -0
  40. package/dist/github.js.map +1 -1
  41. package/dist/index.d.ts +4 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +2 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/moments.d.ts +83 -0
  46. package/dist/moments.d.ts.map +1 -0
  47. package/dist/moments.js +170 -0
  48. package/dist/moments.js.map +1 -0
  49. package/dist/record.d.ts +69 -0
  50. package/dist/record.d.ts.map +1 -0
  51. package/dist/record.js +223 -0
  52. package/dist/record.js.map +1 -0
  53. package/dist/report.d.ts +9 -0
  54. package/dist/report.d.ts.map +1 -1
  55. package/dist/report.js +60 -3
  56. package/dist/report.js.map +1 -1
  57. package/dist/run.d.ts +2 -0
  58. package/dist/run.d.ts.map +1 -1
  59. package/dist/run.js +2 -1
  60. package/dist/run.js.map +1 -1
  61. package/dist/timeline.d.ts +46 -0
  62. package/dist/timeline.d.ts.map +1 -0
  63. package/dist/timeline.js +80 -0
  64. package/dist/timeline.js.map +1 -0
  65. package/dist/types.d.ts +34 -0
  66. package/dist/types.d.ts.map +1 -1
  67. package/dist/types.js.map +1 -1
  68. package/dist/video.d.ts +19 -0
  69. package/dist/video.d.ts.map +1 -0
  70. package/dist/video.js +109 -0
  71. package/dist/video.js.map +1 -0
  72. package/dist/viewport.d.ts +13 -0
  73. package/dist/viewport.d.ts.map +1 -1
  74. package/dist/viewport.js +16 -0
  75. package/dist/viewport.js.map +1 -1
  76. package/package.json +4 -2
  77. package/skill/SKILL.md +25 -6
package/dist/browser.js CHANGED
@@ -71,17 +71,21 @@ function releaseSlot() {
71
71
  export function playwrightCoreDir() {
72
72
  return path.dirname(require.resolve('playwright-core/package.json'));
73
73
  }
74
- /**
75
- * Scan Playwright's browser cache for installed Chromium executables.
76
- */
77
- function findCachedChromium() {
74
+ /** Where Playwright keeps the browsers (and the ffmpeg) it installs. */
75
+ export function playwrightCacheDir() {
78
76
  const home = process.env.HOME || process.env.USERPROFILE || '';
79
- const cacheDir = process.env.PLAYWRIGHT_BROWSERS_PATH
77
+ return process.env.PLAYWRIGHT_BROWSERS_PATH
80
78
  || (process.platform === 'darwin'
81
79
  ? path.join(home, 'Library', 'Caches', 'ms-playwright')
82
80
  : process.platform === 'win32'
83
81
  ? path.join(process.env.LOCALAPPDATA || path.join(home, 'AppData', 'Local'), 'ms-playwright')
84
82
  : path.join(home, '.cache', 'ms-playwright'));
83
+ }
84
+ /**
85
+ * Scan Playwright's browser cache for installed Chromium executables.
86
+ */
87
+ function findCachedChromium() {
88
+ const cacheDir = playwrightCacheDir();
85
89
  let entries;
86
90
  try {
87
91
  entries = fs.readdirSync(cacheDir);
@@ -205,6 +209,7 @@ export async function launchBrowser(opts = {}) {
205
209
  }
206
210
  throw new BrowserNotFoundError(lastError);
207
211
  }
212
+ const INSTALL_SIZE_MB = { 'chromium-headless-shell': 80, chromium: 170, ffmpeg: 2 };
208
213
  /**
209
214
  * Install a browser through playwright-core's CLI. Resolves true on success.
210
215
  *
@@ -213,7 +218,7 @@ export async function launchBrowser(opts = {}) {
213
218
  */
214
219
  export function installBrowser(kind) {
215
220
  const cli = path.join(playwrightCoreDir(), 'cli.js');
216
- console.error(`Installing ${kind} (one-time, ~${kind === 'chromium' ? '170' : '80'} MB)...`);
221
+ console.error(`Installing ${kind} (one-time, ~${INSTALL_SIZE_MB[kind]} MB)...`);
217
222
  return new Promise(resolve => {
218
223
  const child = spawn(process.execPath, [cli, 'install', kind], { stdio: ['ignore', 'inherit', 'inherit'] });
219
224
  child.on('error', () => resolve(false));
@@ -304,7 +309,7 @@ const DEV_OVERLAY_SELECTORS = [
304
309
  * portal is mounted after hydration, so there is nothing to find at document
305
310
  * start.
306
311
  */
307
- async function hideDevIndicator(page) {
312
+ export async function hideDevIndicator(page) {
308
313
  await page.evaluate(() => {
309
314
  const hosts = Array.prototype.slice.call(document.querySelectorAll('nextjs-portal'));
310
315
  for (const host of hosts) {
@@ -394,23 +399,13 @@ const INIT_SCRIPT = `
394
399
  if (document.head) attach(); else document.addEventListener('DOMContentLoaded', attach, { once: true });
395
400
  })();
396
401
  `;
397
- /**
398
- * A context per capture, not per viewport.
399
- *
400
- * Playwright's clock belongs to the browser context and is replayed into every
401
- * page opened in it, so pages that share a context do not share a starting
402
- * point: the second page inherits the timeline the first one ran. An animated
403
- * page then lands on a different frame depending on how many captures came
404
- * before it. One context per capture makes every page start from the same
405
- * paused instant — and keeps storage and caches from leaking between the two
406
- * sides of a comparison.
407
- */
408
- async function createContext(viewport, scale, auth) {
402
+ async function createContext(viewport, scale, { auth, motion = false } = {}) {
409
403
  const b = await getBrowser();
410
404
  const ctx = await b.newContext({
411
405
  viewport,
412
406
  deviceScaleFactor: scale,
413
- reducedMotion: 'reduce',
407
+ // A recording exists to show motion, so it asks for the page's own.
408
+ reducedMotion: motion ? 'no-preference' : 'reduce',
414
409
  colorScheme: 'light',
415
410
  locale: 'en-US',
416
411
  timezoneId: 'UTC',
@@ -425,8 +420,13 @@ async function createContext(viewport, scale, auth) {
425
420
  // land on whatever frame the network happened to deliver. With the clock
426
421
  // installed and paused, the page's timeline does not move until
427
422
  // `advanceTimeline` moves it — by the same amount on both sides.
428
- await ctx.clock.install({ time: FIXED_TIME });
429
- await ctx.clock.pauseAt(FIXED_TIME);
423
+ //
424
+ // A recording runs on the real clock instead: its whole point is time
425
+ // passing, and CSS transitions follow the compositor, not these timers.
426
+ if (!motion) {
427
+ await ctx.clock.install({ time: FIXED_TIME });
428
+ await ctx.clock.pauseAt(FIXED_TIME);
429
+ }
430
430
  await ctx.addInitScript(INIT_SCRIPT);
431
431
  if (auth?.cookies?.length) {
432
432
  await ctx.addCookies(auth.cookies.map(c => ({
@@ -448,7 +448,7 @@ async function createContext(viewport, scale, auth) {
448
448
  * frozen throughout, so waiting longer here — on a slow host, a cold cache, a
449
449
  * busy machine — never advances an animation. Bounded by `timeout` ms.
450
450
  */
451
- async function settlePage(page, timeout, options = {}) {
451
+ export async function settlePage(page, timeout, options = {}) {
452
452
  const deadline = Date.now() + timeout;
453
453
  const left = () => Math.max(0, deadline - Date.now());
454
454
  // Fonts and images resolve off the loading pipeline, not off page timers.
@@ -605,6 +605,26 @@ async function primeLazyContent(page, maxHeight) {
605
605
  await page.evaluate(() => window.scrollTo(0, 0));
606
606
  await advanceTimeline(page, FRAME_MS);
607
607
  }
608
+ /**
609
+ * Run `fn` on a fresh page whose clock runs in real time and whose motion
610
+ * preferences are left alone — what a recording needs, and the opposite of a
611
+ * screenshot. Shares the page pool with captures, so a run's recordings and
612
+ * screenshots together never open more pages than the pool allows.
613
+ */
614
+ export async function withMotionPage(viewport, auth, fn) {
615
+ await acquireSlot();
616
+ let ctx;
617
+ try {
618
+ ctx = await createContext(viewport, 1, { auth, motion: true });
619
+ const page = await ctx.newPage();
620
+ trackRequests(page);
621
+ return await fn(page, ctx);
622
+ }
623
+ finally {
624
+ await ctx?.close().catch(() => undefined);
625
+ releaseSlot();
626
+ }
627
+ }
608
628
  // ============================================================
609
629
  // Capture
610
630
  // ============================================================
@@ -625,16 +645,10 @@ export async function captureScreenshot(url, options) {
625
645
  let ctx;
626
646
  let page;
627
647
  try {
628
- ctx = await createContext(options.viewport, scale, options.auth);
648
+ ctx = await createContext(options.viewport, scale, { auth: options.auth });
629
649
  page = await ctx.newPage();
630
650
  trackRequests(page);
631
- const response = await page.goto(url, { waitUntil: 'domcontentloaded' }).catch(err => {
632
- throw new NavigationError(classifyNavigationError(err), url, err);
633
- });
634
- const status = response?.status();
635
- const vercel = response ? isVercelResponse({ get: n => response.headers()[n] ?? null }) : false;
636
- if (status === 401 || status === 403)
637
- throw new HttpStatusError(status, url, vercel);
651
+ const { status, vercel } = await gotoChecked(page, url);
638
652
  await settlePage(page, settleTimeout);
639
653
  if (options.fullPage) {
640
654
  await primeLazyContent(page, maxHeight);
@@ -712,6 +726,21 @@ export async function captureScreenshot(url, options) {
712
726
  releaseSlot();
713
727
  }
714
728
  }
729
+ /**
730
+ * Load `url`. Throws NavigationError when no document arrives and
731
+ * HttpStatusError for 401/403 (auth required); any other status is returned
732
+ * for the caller to judge — a 404 on Pre is a legitimately new page.
733
+ */
734
+ export async function gotoChecked(page, url) {
735
+ const response = await page.goto(url, { waitUntil: 'domcontentloaded' }).catch(err => {
736
+ throw new NavigationError(classifyNavigationError(err), url, err);
737
+ });
738
+ const status = response?.status();
739
+ const vercel = response ? isVercelResponse({ get: n => response.headers()[n] ?? null }) : false;
740
+ if (status === 401 || status === 403)
741
+ throw new HttpStatusError(status, url, vercel);
742
+ return { status, vercel };
743
+ }
715
744
  function classifyNavigationError(err) {
716
745
  const msg = err.message || '';
717
746
  if (err.name === 'TimeoutError' || /Timeout .* exceeded/.test(msg))
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
@@ -38,5 +38,11 @@ export declare function doctorExitCode(checks: DoctorCheck[]): number;
38
38
  * "ready" there is exactly the lie the exit-code contract exists to prevent.
39
39
  */
40
40
  export declare function repoIdentityCheck(root: string): DoctorCheck;
41
+ /**
42
+ * Advisory, like everything about video: a run with Moments still records
43
+ * without either (ffmpeg installs itself on first use), and a clip that cannot
44
+ * play inline is linked instead.
45
+ */
46
+ export declare function videoCheck(): DoctorCheck;
41
47
  export declare function runDoctor(cwd?: string): Promise<DoctorCheck[]>;
42
48
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAE5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAM3D;AAkCD,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA0CpE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAE5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAM3D;AAkCD;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAKxC;AAED,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA2CpE"}
@@ -11,6 +11,8 @@ import { servableDir } from '../baseline.js';
11
11
  import { cannotPublishHint, checkWriteAccess, findToken, GitHub, loginHint } from '../github.js';
12
12
  import { closeBrowser } from '../browser.js';
13
13
  import { driftNotes, ownVersion } from '../drift.js';
14
+ import { findFfmpeg } from '../ffmpeg.js';
15
+ import { ghAttachSupport } from '../attach.js';
14
16
  /**
15
17
  * doctor's contract, relied on by anything that runs it before a run:
16
18
  *
@@ -76,6 +78,17 @@ async function githubCheck(cwd) {
76
78
  return { name: 'github', ok: false, detail: cannotPublishHint(ownerRepo, found.source), required: true };
77
79
  return { name: 'github', ok: false, detail: `could not reach GitHub to check the token (${access.detail})` };
78
80
  }
81
+ /**
82
+ * Advisory, like everything about video: a run with Moments still records
83
+ * without either (ffmpeg installs itself on first use), and a clip that cannot
84
+ * play inline is linked instead.
85
+ */
86
+ export function videoCheck() {
87
+ const ffmpeg = findFfmpeg();
88
+ const attach = ghAttachSupport();
89
+ const parts = [ffmpeg ? 'ffmpeg ready' : 'ffmpeg installs on first recording (~2 MB)', attach.ok ? 'gh can attach videos inline' : attach.reason];
90
+ return { name: 'video', ok: attach.ok, detail: parts.join('; ') };
91
+ }
79
92
  export async function runDoctor(cwd) {
80
93
  const checks = [];
81
94
  try {
@@ -89,6 +102,7 @@ export async function runDoctor(cwd) {
89
102
  await closeBrowser();
90
103
  }
91
104
  checks.push(await githubCheck(cwd));
105
+ checks.push(videoCheck());
92
106
  // Name the ports that answered but were passed over. "None found on the
93
107
  // usual ports" reads as a lie to anyone who knows something is listening on
94
108
  // one of them, and the usual something is a macOS system service on 5000.
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@
3
3
  */
4
4
  import { Framework, PrePostConfig, PrRunResult } from '../types.js';
5
5
  import { Settings } from '../config.js';
6
+ import { ProbeResult } from '../doctor.js';
7
+ import { Moment } from '../moments.js';
6
8
  export interface PrCommandOptions extends Partial<Settings> {
7
9
  cwd?: string;
8
10
  before?: string;
@@ -30,8 +32,26 @@ export interface PrCommandOptions extends Partial<Settings> {
30
32
  /** Rebuild the baseline from the base commit when no URL is reachable. Default true. */
31
33
  localBaseline?: boolean;
32
34
  version?: string;
35
+ /** Moments to record, already validated (a `--moments` file). Default: `.pre-post.json` "moments". */
36
+ moments?: Moment[];
37
+ /** False to record no video this run. */
38
+ video?: boolean;
33
39
  log?: (msg: string) => void;
34
40
  }
41
+ /**
42
+ * Probe a URL, but leave a sign-in redirect to capture when cookies will be sent.
43
+ *
44
+ * The probe is a plain fetch with headers only. A saved `pre-post login`
45
+ * session or `--cookie` is what gets the browser past the wall, so for a URL
46
+ * that has one, a redirect to sign-in here says nothing about the capture —
47
+ * rejecting it would send the user back to `pre-post login` in a loop. The
48
+ * browser's landing check still stops the run if the cookies do not work.
49
+ *
50
+ * `--cookie` is only ever attached to Pre (`cookieUrl`), so it defers the
51
+ * verdict for that host alone; a protected preview must still be caught here
52
+ * so the run can fall back to local.
53
+ */
54
+ export declare function probeForCapture(headers: Record<string, string>, cliCookies: PrCommandOptions['cookies'], cookieUrl: string | undefined, probe?: (url: string, headers: Record<string, string>) => Promise<ProbeResult>): (url: string) => Promise<ProbeResult>;
35
55
  /**
36
56
  * The Post URL the caller fixed, if any.
37
57
  *
@@ -1 +1 @@
1
- {"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAA6D,SAAS,EAAmB,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChJ,OAAO,EAA+B,QAAQ,EAAgB,MAAM,cAAc,CAAC;AAgBnF,MAAM,WAAW,gBAAiB,SAAQ,OAAO,CAAC,QAAQ,CAAC;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wFAAwF;IACxF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAaD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAElI;AAMD,wBAAsB,KAAK,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CA+U7E"}
1
+ {"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAA+C,SAAS,EAAmB,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClI,OAAO,EAA+B,QAAQ,EAAgB,MAAM,cAAc,CAAC;AAKnF,OAAO,EAA6D,WAAW,EAAY,MAAM,cAAc,CAAC;AAUhH,OAAO,EAAE,MAAM,EAA4C,MAAM,eAAe,CAAC;AAIjF,MAAM,WAAW,gBAAiB,SAAQ,OAAO,CAAC,QAAQ,CAAC;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wFAAwF;IACxF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sGAAsG;IACtG,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC,EACvC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,GAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,WAAW,CAAY,GACvF,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAQvC;AAaD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAElI;AAMD,wBAAsB,KAAK,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAuX7E"}
@@ -11,15 +11,41 @@ import { capNotice, detectRoutesForRepo, resolveSample } from '../routes.js';
11
11
  import { closeBrowser } from '../browser.js';
12
12
  import { parseViewport } from '../viewport.js';
13
13
  import { authHint, detectDevServer, ensureBrowser, NeedsHumanError, probeUrl } from '../doctor.js';
14
- import { API_BASE, cannotPublishHint, checkWriteAccess, findOpenPr, findOpenPrForCommit, findToken, getPr, GitHub, GitHubError, loginHint, publishAssets, upsertPrDescription, upsertStickyComment } from '../github.js';
14
+ import { API_BASE, cannotPublishHint, checkWriteAccess, findOpenPr, findOpenPrForCommit, findToken, getPr, GitHub, GitHubError, isPublicRepo, jsdelivrUrl, loginHint, publishAssets, upsertPrDescription, upsertStickyComment } from '../github.js';
15
15
  import { buildComment, groupChanges, STICKY_MARKER } from '../report.js';
16
- import { resolveAuth } from '../sessions.js';
16
+ import { cookiesForUrls, resolveAuth } from '../sessions.js';
17
17
  import { routeSlug, runTasks, throwIfBlocked } from '../run.js';
18
- import { joinUrl } from '../url.js';
18
+ import { hostOf, joinUrl } from '../url.js';
19
19
  import { describeComparison, resolveComparison } from '../comparison.js';
20
20
  import { Stopwatch } from '../timings.js';
21
21
  import { driftNotes } from '../drift.js';
22
22
  import { buildSheet } from '../sheet.js';
23
+ import { parseMoments, selectMoments, skippedNote } from '../moments.js';
24
+ import { recordMoments } from '../video.js';
25
+ import { attachClips } from '../attach.js';
26
+ /**
27
+ * Probe a URL, but leave a sign-in redirect to capture when cookies will be sent.
28
+ *
29
+ * The probe is a plain fetch with headers only. A saved `pre-post login`
30
+ * session or `--cookie` is what gets the browser past the wall, so for a URL
31
+ * that has one, a redirect to sign-in here says nothing about the capture —
32
+ * rejecting it would send the user back to `pre-post login` in a loop. The
33
+ * browser's landing check still stops the run if the cookies do not work.
34
+ *
35
+ * `--cookie` is only ever attached to Pre (`cookieUrl`), so it defers the
36
+ * verdict for that host alone; a protected preview must still be caught here
37
+ * so the run can fall back to local.
38
+ */
39
+ export function probeForCapture(headers, cliCookies, cookieUrl, probe = probeUrl) {
40
+ return async (url) => {
41
+ const result = await probe(url, headers);
42
+ const cliCookiesApply = Boolean(cliCookies?.length && cookieUrl && hostOf(cookieUrl) === hostOf(url));
43
+ if (!result.signIn || (!cliCookiesApply && !cookiesForUrls([url]).length))
44
+ return result;
45
+ const { signIn: _deferred, ...rest } = result;
46
+ return rest;
47
+ };
48
+ }
23
49
  /**
24
50
  * What ends up on the assets branch. The diff overlay is an intermediate used
25
51
  * to locate the changed region; Pre beside Post is the comparison a reviewer
@@ -54,6 +80,10 @@ export async function runPr(opts = {}) {
54
80
  // PR's branch in GITHUB_HEAD_REF.
55
81
  const branch = currentBranch(root) ?? (process.env.GITHUB_HEAD_REF?.trim() || null);
56
82
  const head = headSha(root);
83
+ // Validated before anything slow: a typo in a step should cost a second,
84
+ // not a whole capture pass.
85
+ const { run: moments, skipped: momentsSkipped } = selectMoments(opts.video === false ? []
86
+ : opts.moments ?? (config.moments ? parseMoments(config.moments, '.pre-post.json "moments"') : []));
57
87
  /** Tears down anything resolution started (a local dev server). */
58
88
  let cleanupComparison = async () => undefined;
59
89
  // --- GitHub access (checked before any time is spent) -----------------------
@@ -144,23 +174,33 @@ export async function runPr(opts = {}) {
144
174
  // still needs a sample URL gets that answer in a second, not after a browser
145
175
  // and two dev servers have started for nothing.
146
176
  const explicitRoutes = Boolean(opts.routes?.length);
147
- const routes = explicitRoutes ? opts.routes : detection.routes.map(r => r.path);
177
+ // A Moment names its page, so a branch whose changes detection cannot place
178
+ // (a shared component, a style) still has something to capture.
179
+ const momentRoutes = [...new Set(moments.map(m => m.route))];
180
+ const detected = detection.routes.map(r => r.path);
181
+ const routes = explicitRoutes ? opts.routes : detected.length ? detected : momentRoutes;
148
182
  const skippedDynamic = explicitRoutes ? [] : detection.skippedDynamic;
149
183
  const omitted = !explicitRoutes && detection.omitted.length
150
184
  ? { routes: detection.omitted.map(r => r.path), cap: settings.maxRoutes }
151
185
  : undefined;
152
186
  if (!explicitRoutes) {
153
- log(`Routes (${detection.framework}, ${detection.durationMs}ms): ${routes.length ? routes.join(', ') : 'none detected'}`);
187
+ log(`Routes (${detection.framework}, ${detection.durationMs}ms): ${detected.length ? detected.join(', ') : 'none detected'}`);
154
188
  for (const r of detection.routes)
155
189
  log(` ${r.path.padEnd(28)} ${r.confidence.padEnd(6)} ${r.reason}`);
156
190
  if (omitted)
157
191
  log(` ${capNotice(omitted.routes, omitted.cap)}`);
158
- if (!routes.length) {
192
+ if (!detected.length && routes.length) {
193
+ log(`Capturing the pages the Moments use: ${routes.join(', ')}`);
194
+ }
195
+ else if (!routes.length) {
159
196
  log(skippedDynamic.length
160
197
  ? `Nothing to capture until ${skippedDynamic.join(', ')} ${skippedDynamic.length === 1 ? 'has' : 'have'} a sample URL.`
161
198
  : 'Nothing this branch changed renders on a page; nothing to capture.');
162
199
  }
163
200
  }
201
+ const momentsSkippedNote = skippedNote(momentsSkipped);
202
+ if (momentsSkippedNote)
203
+ log(momentsSkippedNote);
164
204
  // --- Start the slow, independent things now; they overlap resolution -------
165
205
  // Only after the --require-pr answer and only with a page to capture: a
166
206
  // fresh runner would otherwise download and launch Chromium for nothing.
@@ -214,6 +254,7 @@ export async function runPr(opts = {}) {
214
254
  repo: ownerRepo,
215
255
  prNumber: pr?.number,
216
256
  ...captured,
257
+ momentsSkipped: momentsSkipped.length ? momentsSkipped : undefined,
217
258
  skippedDynamic,
218
259
  omitted,
219
260
  durationMs: Date.now() - started,
@@ -259,6 +300,8 @@ export async function runPr(opts = {}) {
259
300
  return finish({ outcomes: [], beforeBase: '', afterBase: '', outputDir: '' });
260
301
  // --- What are we comparing? ---------------------------------------------------
261
302
  const headers = headersFor(config, opts);
303
+ // Only a baseline named up front is known before resolution picks one.
304
+ const probe = probeForCapture(headers, opts.cookies, opts.before ?? config.before);
262
305
  // Resolution can throw (no baseline, an install that failed): the browser was
263
306
  // launched before this and nothing else would close it, so its teardown has
264
307
  // to cover the throw as well as the happy path.
@@ -273,7 +316,7 @@ export async function runPr(opts = {}) {
273
316
  // PR open yet — the host builds on push, not on PR.
274
317
  headSha: head ?? undefined,
275
318
  before: opts.before, after: explicitAfter,
276
- devServer, probe: url => probeUrl(url, headers),
319
+ devServer, probe,
277
320
  allowLocalBaseline: opts.localBaseline, localOnly: opts.local, log, timings,
278
321
  }), { contains: ['pre', 'post'] }).catch(async (err) => { await stopEverything(); throw err; });
279
322
  cleanupComparison = comparison.stop;
@@ -292,17 +335,19 @@ export async function runPr(opts = {}) {
292
335
  await stopEverything();
293
336
  throw new NeedsHumanError(message);
294
337
  };
295
- const [probe, afterProbe] = await Promise.all([
296
- comparison.before.probe ?? probeUrl(before, headers),
297
- comparison.after.probe ?? probeUrl(after, headers),
338
+ // Now Pre is known, `--cookie` goes to the URL `resolveAuth` will attach it to.
339
+ const probeResolved = probeForCapture(headers, opts.cookies, before);
340
+ const [beforeProbe, afterProbe] = await Promise.all([
341
+ comparison.before.probe ?? probeResolved(before),
342
+ comparison.after.probe ?? probeResolved(after),
298
343
  ]);
299
- if (probe.status === null)
344
+ if (beforeProbe.status === null)
300
345
  await fail(`Cannot reach ${before} (Pre — ${comparison.before.detail}).`);
301
- if (probe.status === 401 || probe.status === 403)
302
- await fail(authHint({ url: before, vercel: probe.vercel }));
346
+ if (beforeProbe.status === 401 || beforeProbe.status === 403 || beforeProbe.signIn)
347
+ await fail(authHint({ url: before, vercel: beforeProbe.vercel }));
303
348
  if (afterProbe.status === null)
304
349
  await fail(`Cannot reach ${after} (Post — ${comparison.after.detail}).`);
305
- if (afterProbe.status === 401 || afterProbe.status === 403)
350
+ if (afterProbe.status === 401 || afterProbe.status === 403 || afterProbe.signIn)
306
351
  await fail(authHint({ url: after, vercel: afterProbe.vercel }));
307
352
  const auth = resolveAuth({ configHeaders: config.headers, headers: opts.headers, cookies: opts.cookies, cookieUrl: before, urls: [before, after] });
308
353
  // --- Capture -------------------------------------------------------------------
@@ -320,6 +365,7 @@ export async function runPr(opts = {}) {
320
365
  await browserReady;
321
366
  let run;
322
367
  let sheetPath;
368
+ let momentOutcomes;
323
369
  try {
324
370
  run = await timings.time('capture', runTasks(tasks, {
325
371
  outputDir, ...settings, wait: opts.wait, auth, log,
@@ -327,11 +373,18 @@ export async function runPr(opts = {}) {
327
373
  sides: { before: comparison.before, after: comparison.after },
328
374
  }));
329
375
  // Drawn while the browser is still open. A convenience, so a failure to
330
- // draw it is logged and never costs the run its result.
376
+ // draw it is logged and never costs the run its result. The clips follow
377
+ // the same rule, and run beside it: neither needs the other.
331
378
  if (!run.verdict) {
332
- sheetPath = await timings.time('sheet', buildSheet(run.outcomes, outputDir))
333
- .then(p => p ?? undefined)
334
- .catch(err => { log(`Could not draw the summary sheet (${err instanceof Error ? err.message : err}).`); return undefined; });
379
+ [sheetPath, momentOutcomes] = await Promise.all([
380
+ timings.time('sheet', buildSheet(run.outcomes, outputDir))
381
+ .then(p => p ?? undefined)
382
+ .catch(err => { log(`Could not draw the summary sheet (${err instanceof Error ? err.message : err}).`); return undefined; }),
383
+ moments.length
384
+ ? timings.time('video', recordMoments(moments, { before, after, auth, outputDir, log }))
385
+ .catch(err => { log(`Could not record the Moments (${err instanceof Error ? err.message : err}).`); return undefined; })
386
+ : Promise.resolve(undefined),
387
+ ]);
335
388
  }
336
389
  }
337
390
  finally {
@@ -350,31 +403,43 @@ export async function runPr(opts = {}) {
350
403
  // leads its group in the PR; the rest would be images nothing links to.
351
404
  const leads = new Set(groupChanges(outcomes).map(g => g.lead));
352
405
  const changed = isBrokenVerdict(verdict) ? [] : outcomes.filter(o => (leads.has(o) || o.status === 'added' || o.status === 'removed') && o.files);
353
- if (writeGh && changed.length) {
406
+ const clips = (momentOutcomes ?? []).filter(m => m.status === 'recorded');
407
+ const placed = writeGh && clips.length
408
+ ? await timings.time('attach', attachClips(clips, { gh: writeGh, ownerRepo, pr: pr?.number, token: found?.token, log }))
409
+ : { linked: [] };
410
+ if (writeGh && (changed.length || placed.linked.length)) {
354
411
  const folder = pr ? `pr-${pr.number}/${id}` : `branch/${routeSlug(branch || 'detached')}/${id}`;
355
- const keyFor = (o, kind) => `${folder}/${routeSlug(o.route)}-${o.viewport}-${artifactSuffix(kind)}.png`;
356
- const files = [];
412
+ // One list for everything this run publishes: where it goes, what it
413
+ // is, and where its URL lands once GitHub has it.
414
+ const uploads = [];
357
415
  for (const o of changed) {
358
416
  for (const kind of PUBLISHED_KINDS) {
359
417
  const local = o.files[kind];
360
418
  if (local)
361
- files.push({ path: keyFor(o, kind), content: fs.readFileSync(local) });
419
+ uploads.push({ path: `${folder}/${routeSlug(o.route)}-${o.viewport}-${artifactSuffix(kind)}.png`, local, assign: url => { o.urls = { ...o.urls, [kind]: url }; } });
362
420
  }
363
421
  }
364
- log(`Publishing ${files.length} image(s) to ${ownerRepo}@${settings.assetsBranch} ...`);
365
- const published = await timings.time('publish', () => publishAssets(writeGh, ownerRepo, settings.assetsBranch, files, pr ? `Screenshots for #${pr.number} (${id})` : `Screenshots for ${branch || 'detached'} (${id})`));
366
- for (const o of changed) {
367
- const urls = {};
368
- for (const kind of PUBLISHED_KINDS)
369
- if (o.files[kind])
370
- urls[kind] = published.urls.get(keyFor(o, kind));
371
- o.urls = urls;
422
+ // A clip at a blob URL downloads instead of playing, so it is linked
423
+ // through jsDelivr, which only public repos can use. A private repo
424
+ // gets the poster alone.
425
+ const playable = placed.linked.length > 0 && await isPublicRepo(writeGh, ownerRepo);
426
+ for (const m of placed.linked) {
427
+ const clipPath = `${folder}/${path.basename(m.file)}`;
428
+ if (playable)
429
+ uploads.push({ path: clipPath, local: m.file, assign: (_, sha) => { m.videoUrl = jsdelivrUrl(ownerRepo, sha, clipPath); } });
430
+ uploads.push({ path: `${folder}/${path.basename(m.poster)}`, local: m.poster, assign: url => { m.posterUrl = url; } });
372
431
  }
432
+ const files = uploads.map(u => ({ path: u.path, content: fs.readFileSync(u.local) }));
433
+ log(`Publishing ${files.length} file(s) to ${ownerRepo}@${settings.assetsBranch} ...`);
434
+ const published = await timings.time('publish', () => publishAssets(writeGh, ownerRepo, settings.assetsBranch, files, pr ? `Screenshots for #${pr.number} (${id})` : `Screenshots for ${branch || 'detached'} (${id})`));
435
+ for (const u of uploads)
436
+ u.assign(published.urls.get(u.path), published.sha);
373
437
  }
374
438
  return finish({
375
439
  outcomes, beforeBase: before, afterBase: after,
376
440
  beforeLabel: comparison.before.label, afterLabel: comparison.after.label,
377
441
  outputDir, sheetPath, verdict: verdict ?? undefined,
442
+ moments: momentOutcomes?.length ? momentOutcomes : undefined, momentsHint: placed.hint,
378
443
  });
379
444
  }
380
445
  //# sourceMappingURL=pr.js.map