doc-detective 4.32.0 → 4.33.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 (38) hide show
  1. package/dist/common/src/schemas/schemas.json +1288 -126
  2. package/dist/common/src/types/generated/record_v3.d.ts +21 -2
  3. package/dist/common/src/types/generated/record_v3.d.ts.map +1 -1
  4. package/dist/common/src/types/generated/step_v3.d.ts +21 -2
  5. package/dist/common/src/types/generated/step_v3.d.ts.map +1 -1
  6. package/dist/common/src/types/generated/test_v3.d.ts +42 -4
  7. package/dist/common/src/types/generated/test_v3.d.ts.map +1 -1
  8. package/dist/core/tests/ffmpegRecorder.d.ts.map +1 -1
  9. package/dist/core/tests/ffmpegRecorder.js +17 -2
  10. package/dist/core/tests/ffmpegRecorder.js.map +1 -1
  11. package/dist/core/tests/recordingCheckpoints.d.ts +76 -0
  12. package/dist/core/tests/recordingCheckpoints.d.ts.map +1 -0
  13. package/dist/core/tests/recordingCheckpoints.js +335 -0
  14. package/dist/core/tests/recordingCheckpoints.js.map +1 -0
  15. package/dist/core/tests/saveScreenshot.d.ts +5 -1
  16. package/dist/core/tests/saveScreenshot.d.ts.map +1 -1
  17. package/dist/core/tests/saveScreenshot.js +46 -12
  18. package/dist/core/tests/saveScreenshot.js.map +1 -1
  19. package/dist/core/tests/startRecording.d.ts.map +1 -1
  20. package/dist/core/tests/startRecording.js +26 -10
  21. package/dist/core/tests/startRecording.js.map +1 -1
  22. package/dist/core/tests/stopRecording.d.ts.map +1 -1
  23. package/dist/core/tests/stopRecording.js +283 -14
  24. package/dist/core/tests/stopRecording.js.map +1 -1
  25. package/dist/core/tests.d.ts.map +1 -1
  26. package/dist/core/tests.js +53 -37
  27. package/dist/core/tests.js.map +1 -1
  28. package/dist/hints/context.d.ts +1 -0
  29. package/dist/hints/context.d.ts.map +1 -1
  30. package/dist/hints/context.js +9 -0
  31. package/dist/hints/context.js.map +1 -1
  32. package/dist/hints/hints.d.ts.map +1 -1
  33. package/dist/hints/hints.js +15 -0
  34. package/dist/hints/hints.js.map +1 -1
  35. package/dist/hints/types.d.ts +8 -0
  36. package/dist/hints/types.d.ts.map +1 -1
  37. package/dist/index.cjs +1909 -325
  38. package/package.json +1 -1
@@ -7,6 +7,8 @@ import path from "node:path";
7
7
  import fs from "node:fs";
8
8
  import os from "node:os";
9
9
  import { getFfmpegPath, selectRecordingToStop, stopRecordTargetName, deriveCropScale, detectDisplayPointSize, probeVideoMetadata, } from "./ffmpegRecorder.js";
10
+ import { buildConditionContext, evaluateImplicitAssertions, } from "../routing.js";
11
+ import { computeSpanVerdict, promoteRecordingSpan, buildCheckpointOutputs, } from "./recordingCheckpoints.js";
10
12
  export { stopRecording };
11
13
  // `deps` is a test seam for the pending-scale crop derivation (platform +
12
14
  // display probe); production callers omit it.
@@ -88,11 +90,72 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
88
90
  if (idx !== -1)
89
91
  recordings.splice(idx, 1);
90
92
  };
93
+ // Staged checkpoint captures live under the OS temp dir keyed by handle id;
94
+ // every exit path that abandons the stop (FAIL, never-started) must discard
95
+ // them or they leak — a fresh id per recording means nothing ever reuses
96
+ // the directory. The success path cleans up after baseline seeding instead.
97
+ const discardCheckpointStaging = () => {
98
+ const dir = recording?.checkpoints?.stagingDir;
99
+ if (!dir)
100
+ return;
101
+ try {
102
+ fs.rmSync(dir, { recursive: true, force: true });
103
+ }
104
+ catch {
105
+ /* best-effort */
106
+ }
107
+ };
108
+ // Phantom span (ADR 01079): the recording itself was skipped — headless, or
109
+ // the target already exists — but checkpoints ran against the committed
110
+ // baselines. Compute the span verdict READ-ONLY — no video, no seeding, no
111
+ // baseline updates, no orphan deletion — and surface staleness. WARNING =
112
+ // the recording appears stale; SKIPPED = it was skipped but still matches.
113
+ if (recording.type === "phantom") {
114
+ dropHandle();
115
+ const phantomCheckpoints = recording.checkpoints;
116
+ const entries = phantomCheckpoints?.entries ?? [];
117
+ discardCheckpointStaging();
118
+ // Name the skip and its remedy accurately: a headless run needs a headed
119
+ // one, an existing target needs `overwrite` (or the file removed).
120
+ const skipCause = recording.skipReason === "targetExists"
121
+ ? `Recording skipped (the target already exists)`
122
+ : `Recording skipped (headless)`;
123
+ const refreshRemedy = recording.skipReason === "targetExists"
124
+ ? `Delete it, or set \`overwrite\` to "true" or "aboveVariation", to refresh it.`
125
+ : `Recording is skipped in headless mode; re-run headed to refresh it.`;
126
+ // A dirty span (a step FAILed mid-span) or a span that captured nothing
127
+ // has no evidence either way — report neither stale nor current.
128
+ if (phantomCheckpoints?.spanDirty || entries.length === 0) {
129
+ result.status = "SKIPPED";
130
+ result.description = `${skipCause}; the span didn't produce a complete checkpoint set, so staleness couldn't be determined.`;
131
+ return result;
132
+ }
133
+ const verdict = computeSpanVerdict({
134
+ entries,
135
+ baselineDir: phantomCheckpoints?.baselineDir ?? "",
136
+ maxVariation: phantomCheckpoints?.maxVariation ?? 0.05,
137
+ targetExists: fs.existsSync(recording.targetPath),
138
+ });
139
+ result.outputs = {
140
+ stale: verdict.changed,
141
+ ...buildCheckpointOutputs(entries),
142
+ };
143
+ if (verdict.changed) {
144
+ result.status = "WARNING";
145
+ result.description = `The recording at ${recording.targetPath} appears stale — ${verdict.reasons.join("; ")}. ${refreshRemedy}`;
146
+ }
147
+ else {
148
+ result.status = "SKIPPED";
149
+ result.description = `${skipCause}; checkpoints match their baselines, so the recording appears current.`;
150
+ }
151
+ return result;
152
+ }
91
153
  // A pending device recording never actually started. If the late-start
92
154
  // attempt errored, surface that as the FAIL; otherwise no app surface ever
93
155
  // opened a device session — there's nothing to save.
94
156
  if (recording.type === "appium-pending") {
95
157
  dropHandle();
158
+ discardCheckpointStaging();
96
159
  if (recording.startError) {
97
160
  // An environment gap (missing host ffmpeg) is a gated SKIP; anything
98
161
  // else is a real start failure.
@@ -105,6 +168,20 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
105
168
  "The device recording never started (no app surface opened a device session), so there is nothing to save.";
106
169
  return result;
107
170
  }
171
+ // overwrite "aboveVariation" (ADR 01078): the produced file lands at a
172
+ // staging path in the target's directory (same volume — promotion is a
173
+ // rename), and the span verdict decides at the end whether it replaces the
174
+ // existing recording or is discarded. Every other mode writes the target
175
+ // directly, as before.
176
+ // The staging name is DETERMINISTIC (no per-run suffix): concurrent
177
+ // same-target recordings are already refused at start, and a crashed or
178
+ // failed run's leftover staging file is simply overwritten by the next
179
+ // run's transcode (-y) instead of accumulating orphans.
180
+ const isAboveVariation = recording.overwrite === "aboveVariation";
181
+ const finalTargetPath = recording.targetPath;
182
+ const writeTargetPath = isAboveVariation
183
+ ? path.join(path.dirname(finalTargetPath), `.${path.basename(finalTargetPath, path.extname(finalTargetPath))}.staging${path.extname(finalTargetPath)}`)
184
+ : finalTargetPath;
108
185
  try {
109
186
  if (recording.type === "MediaRecorder") {
110
187
  // Browser engine.
@@ -145,6 +222,7 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
145
222
  "Recording was not properly started. The recorder object doesn't exist in the browser context.";
146
223
  await closeRecorderTabAndRestoreFocus();
147
224
  dropHandle();
225
+ discardCheckpointStaging();
148
226
  return result;
149
227
  }
150
228
  // Stop recording
@@ -166,6 +244,7 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
166
244
  // Clear the state so the auto-stop in runContext doesn't re-invoke
167
245
  // a doomed second stop (the recorder was already told to stop).
168
246
  dropHandle();
247
+ discardCheckpointStaging();
169
248
  return result;
170
249
  }
171
250
  // Close recording tab and switch back to the original content tab.
@@ -174,7 +253,7 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
174
253
  await transcode({
175
254
  config,
176
255
  sourcePath: recording.downloadPath,
177
- targetPath: recording.targetPath,
256
+ targetPath: writeTargetPath,
178
257
  deleteSource: true,
179
258
  });
180
259
  dropHandle();
@@ -256,7 +335,7 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
256
335
  await transcode({
257
336
  config,
258
337
  sourcePath: recording.tempPath,
259
- targetPath: recording.targetPath,
338
+ targetPath: writeTargetPath,
260
339
  deleteSource: true,
261
340
  crop,
262
341
  });
@@ -273,6 +352,7 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
273
352
  result.description =
274
353
  "The device recording returned no data; nothing was saved.";
275
354
  dropHandle();
355
+ discardCheckpointStaging();
276
356
  return result;
277
357
  }
278
358
  // The whole video arrives in one base64 string; a very long recording
@@ -289,6 +369,7 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
289
369
  result.status = "FAIL";
290
370
  result.description = `Couldn't buffer the device recording (${Math.round(b64.length / 1024 / 1024)} MB base64) — device recordings transfer in one payload, so long recordings can exhaust memory. Keep device recordings short (they cap at 30 minutes). ${error?.message ?? error}`;
291
371
  dropHandle();
372
+ discardCheckpointStaging();
292
373
  return result;
293
374
  }
294
375
  if (buffer.length === 0) {
@@ -296,10 +377,11 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
296
377
  result.description =
297
378
  "The device recording decoded to an empty payload (no data); nothing was saved.";
298
379
  dropHandle();
380
+ discardCheckpointStaging();
299
381
  return result;
300
382
  }
301
- if (path.extname(recording.targetPath) === ".mp4") {
302
- fs.writeFileSync(recording.targetPath, buffer);
383
+ if (path.extname(writeTargetPath) === ".mp4") {
384
+ fs.writeFileSync(writeTargetPath, buffer);
303
385
  }
304
386
  else {
305
387
  const tempDir = path.join(os.tmpdir(), "doc-detective", "recordings");
@@ -310,7 +392,7 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
310
392
  await transcode({
311
393
  config,
312
394
  sourcePath: tempPath,
313
- targetPath: recording.targetPath,
395
+ targetPath: writeTargetPath,
314
396
  deleteSource: true,
315
397
  });
316
398
  }
@@ -324,19 +406,145 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
324
406
  // Drop the handle so the auto-stop in runContext doesn't re-invoke a
325
407
  // doomed second stop.
326
408
  dropHandle();
409
+ discardCheckpointStaging();
410
+ if (isAboveVariation) {
411
+ // A failed transcode can leave a partial staging file beside the
412
+ // user's recording — remove it (the target itself was never touched).
413
+ try {
414
+ fs.rmSync(writeTargetPath, { force: true });
415
+ }
416
+ catch {
417
+ /* best-effort */
418
+ }
419
+ }
327
420
  return result;
328
421
  }
329
- // PASS — report what was produced. Metadata is best-effort: a probe
330
- // failure omits fields and logs debug; it never changes the step's status.
331
- // The field list is copied explicitly — the outputs object is a documented
422
+ // PASS — first decide the produced file's fate, then report on the file
423
+ // the user actually keeps. (This supersedes the probe-then-seed order from
424
+ // the checkpoints layer: under aboveVariation the probe has to read the
425
+ // file that survives the promote/discard decision, not the staged one.)
426
+ const checkpoints = recording.checkpoints;
427
+ let seededBaselines = 0;
428
+ // A promote that couldn't commit must never read as a clean PASS, and a
429
+ // video that refreshed without its baselines is only a partial refresh.
430
+ let promoteFailed = false;
431
+ let baselineFailures = 0;
432
+ result.outputs = {};
433
+ if (isAboveVariation) {
434
+ // Span verdict (ADR 01078): promote the staged capture over the target
435
+ // only when the span meaningfully changed; otherwise discard it and
436
+ // leave target + baselines byte-untouched. Promote updates ALL baselines
437
+ // together with the video — they must never disagree. Two indeterminate
438
+ // cases keep the existing recording (unless none exists, when the fresh
439
+ // capture is better than nothing): a dirty span (a step FAILed — the
440
+ // entry set is incomplete, so orphans would misread as removed steps)
441
+ // and a span that captured no checkpoints at all (no evidence).
442
+ const entries = checkpoints?.entries ?? [];
443
+ const targetExists = fs.existsSync(finalTargetPath);
444
+ const discardStagedVideo = () => {
445
+ try {
446
+ fs.rmSync(writeTargetPath, { force: true });
447
+ }
448
+ catch {
449
+ /* best-effort */
450
+ }
451
+ };
452
+ const indeterminate = checkpoints?.spanDirty || entries.length === 0;
453
+ if (indeterminate && targetExists) {
454
+ discardStagedVideo();
455
+ result.outputs.changed = false;
456
+ log(config, "warning", checkpoints?.spanDirty
457
+ ? `Recording kept unchanged (${finalTargetPath}): a step failed during the span, so drift couldn't be judged.`
458
+ : `Recording kept unchanged (${finalTargetPath}): no checkpoints were captured this run, so drift couldn't be judged.`);
459
+ }
460
+ else if (indeterminate) {
461
+ // No committed recording yet — promote the fresh capture without a
462
+ // verdict (better than nothing), seeding whatever baselines exist.
463
+ const promoted = promoteRecordingSpan({
464
+ config,
465
+ stagingTarget: writeTargetPath,
466
+ targetPath: finalTargetPath,
467
+ entries,
468
+ orphans: [],
469
+ baselineDir: checkpoints?.baselineDir ?? "",
470
+ });
471
+ seededBaselines = promoted.seededBaselines;
472
+ result.outputs.changed = promoted.videoPromoted;
473
+ promoteFailed = !promoted.videoPromoted;
474
+ baselineFailures = promoted.baselineFailures;
475
+ if (promoted.videoPromoted) {
476
+ result.outputs.changeReasons = ["the recording file is missing"];
477
+ }
478
+ }
479
+ else {
480
+ const verdict = computeSpanVerdict({
481
+ entries,
482
+ baselineDir: checkpoints?.baselineDir ?? "",
483
+ maxVariation: checkpoints?.maxVariation ?? 0.05,
484
+ targetExists,
485
+ });
486
+ if (verdict.changed) {
487
+ const promoted = promoteRecordingSpan({
488
+ config,
489
+ stagingTarget: writeTargetPath,
490
+ targetPath: finalTargetPath,
491
+ entries,
492
+ orphans: verdict.orphans,
493
+ baselineDir: checkpoints?.baselineDir ?? "",
494
+ });
495
+ seededBaselines = promoted.seededBaselines;
496
+ result.outputs.changed = promoted.videoPromoted;
497
+ promoteFailed = !promoted.videoPromoted;
498
+ baselineFailures = promoted.baselineFailures;
499
+ if (promoted.videoPromoted) {
500
+ result.outputs.changeReasons = verdict.reasons;
501
+ log(config, "info", `Recording refreshed (${finalTargetPath}): ${verdict.reasons.join("; ")}`);
502
+ }
503
+ }
504
+ else {
505
+ discardStagedVideo();
506
+ result.outputs.changed = false;
507
+ }
508
+ }
509
+ }
510
+ else if (checkpoints?.entries?.length) {
511
+ // Recording checkpoints without aboveVariation (ADR 01072): seed missing
512
+ // baselines from the staged captures (first run); never modify existing
513
+ // baselines. A dirty span (a step FAILed) seeds nothing — first-run
514
+ // baselines must come from a clean run.
515
+ for (const entry of checkpoints.entries) {
516
+ if (checkpoints.spanDirty)
517
+ break;
518
+ if (entry.baselineMissing && !entry.error) {
519
+ try {
520
+ fs.mkdirSync(checkpoints.baselineDir, { recursive: true });
521
+ // COPYFILE_EXCL enforces "seeding never overwrites a baseline" at
522
+ // the syscall: `baselineMissing` was decided back when the
523
+ // checkpoint was captured, so a baseline committed (or written by
524
+ // another run) since then would otherwise be silently replaced —
525
+ // the one thing this layer promises not to do.
526
+ fs.copyFileSync(entry.stagingPath, entry.baselinePath, fs.constants.COPYFILE_EXCL);
527
+ seededBaselines++;
528
+ }
529
+ catch (error) {
530
+ entry.error =
531
+ error?.code === "EEXIST"
532
+ ? `A baseline appeared at ${entry.baselinePath} after this checkpoint was captured; left it untouched.`
533
+ : String(error?.message ?? error);
534
+ log(config, "warning", `Couldn't seed checkpoint baseline ${entry.baselinePath}: ${entry.error}`);
535
+ }
536
+ }
537
+ }
538
+ }
539
+ // Report what was produced/kept. Metadata is best-effort: a probe failure
540
+ // omits fields and logs debug; it never changes the step's status. The
541
+ // field list is copied explicitly — the outputs object is a documented
332
542
  // user-facing contract ($$duration etc.), so parser additions must opt in.
333
- result.outputs = {
334
- recordingPath: path.resolve(recording.targetPath),
335
- format: path.extname(recording.targetPath).slice(1),
336
- };
543
+ result.outputs.recordingPath = path.resolve(finalTargetPath);
544
+ result.outputs.format = path.extname(finalTargetPath).slice(1);
337
545
  const meta = await probeVideoMetadata({
338
546
  cacheDir: config?.cacheDir,
339
- filePath: recording.targetPath,
547
+ filePath: finalTargetPath,
340
548
  });
341
549
  if (meta?.duration !== undefined)
342
550
  result.outputs.duration = meta.duration;
@@ -347,7 +555,68 @@ async function stopRecording({ config, step, driver, deps = {}, }) {
347
555
  if (meta?.fps !== undefined)
348
556
  result.outputs.fps = meta.fps;
349
557
  if (!meta || Object.keys(meta).length === 0) {
350
- log(config, "debug", `Couldn't probe recording metadata for ${recording.targetPath}.`);
558
+ log(config, "debug", `Couldn't probe recording metadata for ${finalTargetPath}.`);
559
+ }
560
+ // Checkpoint reporting (ADR 01072): per-checkpoint results plus drift and
561
+ // comparison-error signals through the shared implicit-assertion engine at
562
+ // WARNING severity — never FAIL, mirroring screenshot semantics. Under
563
+ // aboveVariation the WARNING doubles as "the recording was refreshed".
564
+ if (checkpoints?.entries?.length) {
565
+ // Errored checkpoints (capture failure, aspect-ratio mismatch against
566
+ // the baseline) can hide extreme drift behind a variation of 0 — they
567
+ // get their own WARNING-severity spec so they never read as a clean
568
+ // pass.
569
+ Object.assign(result.outputs, buildCheckpointOutputs(checkpoints.entries));
570
+ result.outputs.seededBaselines = seededBaselines;
571
+ const ctx = buildConditionContext({ outputs: result.outputs });
572
+ const { assertions, status } = await evaluateImplicitAssertions([
573
+ {
574
+ statement: `$$outputs.maxCheckpointVariation <= ${checkpoints.maxVariation}`,
575
+ severity: "warning",
576
+ },
577
+ {
578
+ statement: `$$outputs.checkpointErrors == 0`,
579
+ severity: "warning",
580
+ },
581
+ ], ctx);
582
+ result.assertions = assertions;
583
+ result.status = status;
584
+ if (status === "WARNING") {
585
+ // Only claim a refresh when one actually happened: an indeterminate or
586
+ // failed span keeps the existing recording, so saying "refreshed" there
587
+ // would describe the opposite of what's on disk.
588
+ result.description += !isAboveVariation
589
+ ? ` One or more checkpoints drifted beyond maxVariation (${checkpoints.maxVariation}) or couldn't be compared — the recorded flow's content may have changed since its baselines were captured.`
590
+ : result.outputs.changed
591
+ ? ` One or more checkpoints drifted beyond maxVariation (${checkpoints.maxVariation}) or couldn't be compared — the recording was refreshed to match the current content.`
592
+ : ` One or more checkpoints drifted beyond maxVariation (${checkpoints.maxVariation}) or couldn't be compared — the existing recording was kept.`;
593
+ }
594
+ if (baselineFailures > 0) {
595
+ result.outputs.baselineFailures = baselineFailures;
596
+ }
597
+ try {
598
+ fs.rmSync(checkpoints.stagingDir, { recursive: true, force: true });
599
+ }
600
+ catch {
601
+ /* best-effort cleanup; staged files live under the OS temp dir */
602
+ }
603
+ }
604
+ // A promote that couldn't commit outranks everything above: the step must
605
+ // not report a clean PASS over a recording that isn't there. With no target
606
+ // at all there is nothing to hand the user (FAIL, and drop the path we can't
607
+ // honour); with the previous target retained the run still has a video, just
608
+ // a stale one (WARNING).
609
+ if (promoteFailed) {
610
+ if (!fs.existsSync(finalTargetPath)) {
611
+ result.status = "FAIL";
612
+ result.description = `Couldn't save the recording to ${finalTargetPath}: promoting the captured video failed and no previous recording exists at that path.`;
613
+ delete result.outputs.recordingPath;
614
+ delete result.outputs.format;
615
+ }
616
+ else {
617
+ result.status = "WARNING";
618
+ result.description += ` The captured video couldn't replace ${finalTargetPath}, so the existing (now stale) recording was kept.`;
619
+ }
351
620
  }
352
621
  return result;
353
622
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stopRecording.js","sourceRoot":"","sources":["../../../src/core/tests/stopRecording.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stopRecording.js","sourceRoot":"","sources":["../../../src/core/tests/stopRecording.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ import { typeKeys } from "./tests/typeKeys.js";
24
24
  import { swipeSurface } from "./tests/swipe.js";
25
25
  import { wait } from "./tests/wait.js";
26
26
  import { saveScreenshot } from "./tests/saveScreenshot.js";
27
+ import { capPathSegment, stepArtifactFileName, resolveCheckpointsConfig, captureRecordingCheckpoints, } from "./tests/recordingCheckpoints.js";
27
28
  import { startRecording } from "./tests/startRecording.js";
28
29
  import { stopRecording } from "./tests/stopRecording.js";
29
30
  import { browserCaptureTitle, browserDownloadDir, coerceRecordContextBrowser, jobIsFfmpegRecording, computeEffectiveConcurrency, jobExclusiveResources, checkSystemBinary, xvfbDisplay, startXvfb, XVFB_SCREEN_SIZE, isRecordingActive, recordStepName, detectRecordingNameConflict, getFfmpegPath, ffmpegPathEnv, } from "./tests/ffmpegRecorder.js";
@@ -50,7 +51,7 @@ import { dragAndDropElement } from "./tests/dragAndDrop.js";
50
51
  import { createSessionRegistry, registerSession, activeDriver, sweepSessions, } from "./tests/browserSessions.js";
51
52
  import path from "node:path";
52
53
  import { spawn } from "node:child_process";
53
- import { randomUUID, createHash } from "node:crypto";
54
+ import { randomUUID } from "node:crypto";
54
55
  import { setAppiumHome } from "./appium.js";
55
56
  import { contentHash } from "../common/src/detectTests.js";
56
57
  import { resolveExpression } from "./expressions.js";
@@ -2908,28 +2909,6 @@ function buildAutoRecordStep({ config, spec, test, context, }) {
2908
2909
  __autoRecord: true,
2909
2910
  };
2910
2911
  }
2911
- // Directory/file segments built from IDs are capped so deeply nested doc
2912
- // trees can't push the full path past Windows' MAX_PATH. The default cap is
2913
- // 32: the REST artifact tree nests several id segments
2914
- // (specs/<id>/tests/<id>/contexts/<id>/…), so a larger default could exceed
2915
- // MAX_PATH on Windows.
2916
- //
2917
- // Plain tail truncation alone is unsafe: two distinct ids that share the same
2918
- // trailing `max` characters (e.g. mirror directory trees that differ only in a
2919
- // long prefix) would collapse into the same path segment, so one context's
2920
- // screenshots/recording could overwrite another's and the reported relative
2921
- // path would resolve to the wrong artifact. When a segment exceeds the cap,
2922
- // prepend a short deterministic hash of the *full* segment so distinct ids stay
2923
- // distinct, and keep the trailing chars (where generated ids carry their
2924
- // content hash) for human correlation. Deterministic — the same id maps to the
2925
- // same segment every run, preserving run-over-run comparison.
2926
- function capPathSegment(segment, max = 32) {
2927
- if (segment.length <= max)
2928
- return segment;
2929
- const hash = createHash("sha1").update(segment).digest("hex").slice(0, 8);
2930
- const tail = segment.slice(segment.length - (max - hash.length - 1));
2931
- return `${hash}-${tail}`;
2932
- }
2933
2912
  // Capture a post-step screenshot for `autoScreenshot` runs. The relative
2934
2913
  // path follows the REST resource tree — stable IDs (spec/test/context) as
2935
2914
  // nested collections plus the step's order, action, and ID (e.g.
@@ -2940,21 +2919,14 @@ function capPathSegment(segment, max = 32) {
2940
2919
  // missed capture must not fail the step it documents.
2941
2920
  async function captureAutoScreenshot({ config, driver, spec, test, context, step, stepIndex, stepCount, }) {
2942
2921
  try {
2943
- const action = driverActions.find((key) => typeof step[key] !== "undefined") || "step";
2944
- const sanitizedTestId = sanitizeFilesystemName(String(test.testId ?? ""), "test");
2945
2922
  const runDir = getRunOutputDir(config);
2946
- const dir = path.join(runDir, "specs", capPathSegment(sanitizeFilesystemName(String(spec.specId ?? ""), "spec")), "tests", capPathSegment(sanitizedTestId), "contexts", capPathSegment(sanitizeFilesystemName(String(context.contextId ?? ""), "context")), "screenshots");
2947
- // The stepId usually embeds the testId (its parent folder) — strip that
2948
- // prefix so filenames stay short while still carrying the step's ID.
2949
- const stepIdString = sanitizeFilesystemName(String(step.stepId ?? ""), "step");
2950
- const stepRef = capPathSegment(stepIdString.startsWith(`${sanitizedTestId}~`)
2951
- ? stepIdString.slice(sanitizedTestId.length + 1)
2952
- : stepIdString);
2953
- // Zero-pad the step ordinal to the width of the context's step count
2954
- // (min 2), so file listings sort naturally even past 99 steps (100 would
2955
- // otherwise sort before 11).
2956
- const pad = Math.max(2, String(stepCount).length);
2957
- const fileName = `${String(stepIndex + 1).padStart(pad, "0")}-${action}-${stepRef}.png`;
2923
+ const dir = path.join(runDir, "specs", capPathSegment(sanitizeFilesystemName(String(spec.specId ?? ""), "spec")), "tests", capPathSegment(sanitizeFilesystemName(String(test.testId ?? ""), "test")), "contexts", capPathSegment(sanitizeFilesystemName(String(context.contextId ?? ""), "context")), "screenshots");
2924
+ const fileName = stepArtifactFileName({
2925
+ step,
2926
+ stepIndex,
2927
+ stepCount,
2928
+ testId: test.testId,
2929
+ });
2958
2930
  const screenshotStep = {
2959
2931
  stepId: `${step.stepId}_auto`,
2960
2932
  description: "Automatic post-step screenshot",
@@ -3951,6 +3923,35 @@ async function runContext({ config, spec, test, context, runnerDetails, appiumPo
3951
3923
  if (capturedPath)
3952
3924
  stepReport.autoScreenshot = capturedPath;
3953
3925
  }
3926
+ // Recording checkpoints (ADR 01075): while a checkpoint-enabled
3927
+ // recording is active, capture a compare-only screenshot per handle
3928
+ // after every step (final attempt only, same placement rationale as
3929
+ // autoScreenshot — retry frames would poison the staged captures).
3930
+ // The record step's own post-step capture is the opening bookend.
3931
+ // The host is the ACTIVE session's driver — the same driver runStep
3932
+ // pushed the handle onto — falling back to the app session's host for
3933
+ // app-only contexts (which skip capture inside the helper: no browser
3934
+ // driver to capture with).
3935
+ // Recordings live per SESSION, so sweep every live session driver the
3936
+ // way stopAllRecordings does — not just the active one. A span started
3937
+ // on a second browser surface keeps its handle on that session's
3938
+ // driver; checking only the active session would silently capture
3939
+ // nothing for it. Each driver is both the host (whose recordings we
3940
+ // read) and the capture source, so a checkpoint always photographs the
3941
+ // surface its own recording is filming.
3942
+ for (const checkpointDriver of sessionDrivers(browserSessions, driver)) {
3943
+ await captureRecordingCheckpoints({
3944
+ config,
3945
+ driver: checkpointDriver,
3946
+ recordingHost: checkpointDriver,
3947
+ step,
3948
+ stepStatus: stepReport.result,
3949
+ stepIndex,
3950
+ stepCount: context.steps.length,
3951
+ testId: test.testId,
3952
+ appSession,
3953
+ });
3954
+ }
3954
3955
  pushStepReport(stepReport);
3955
3956
  // Apply the terminal routing decision. `continue` runs the next step; a
3956
3957
  // `stop` halts the remaining steps in this context (`spec`/`run` scope —
@@ -4262,6 +4263,21 @@ async function runStep({ config = {}, context = {}, step, driver, metaValues = {
4262
4263
  const handle = actionResult.recording;
4263
4264
  handle.id = handle.id ?? randomUUID();
4264
4265
  handle.name = handle.name ?? recordStepName(step.record);
4266
+ // Recording checkpoints (ADR 01075): resolve the step's `checkpoints`
4267
+ // field once, here, where the handle and its target path are both at
4268
+ // hand — the post-step hook and stopRecord read the resolved config
4269
+ // off the handle. resolveCheckpointsConfig returns null for every
4270
+ // record form without a checkpoints field (string/boolean included),
4271
+ // so `null` is the single "disabled" encoding. `overwrite` rides along
4272
+ // for stopRecord's aboveVariation staging/promote decision (ADR 01078).
4273
+ handle.overwrite = step.record?.overwrite;
4274
+ if (handle.targetPath) {
4275
+ handle.checkpoints = resolveCheckpointsConfig({
4276
+ record: step.record,
4277
+ targetPath: handle.targetPath,
4278
+ handleId: handle.id,
4279
+ });
4280
+ }
4265
4281
  if (step.__autoRecord) {
4266
4282
  handle.synthetic = true;
4267
4283
  // Desktop app-only context: no window exists yet to crop to. Mark the