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.
- package/dist/common/src/schemas/schemas.json +1288 -126
- package/dist/common/src/types/generated/record_v3.d.ts +21 -2
- package/dist/common/src/types/generated/record_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/step_v3.d.ts +21 -2
- package/dist/common/src/types/generated/step_v3.d.ts.map +1 -1
- package/dist/common/src/types/generated/test_v3.d.ts +42 -4
- package/dist/common/src/types/generated/test_v3.d.ts.map +1 -1
- package/dist/core/tests/ffmpegRecorder.d.ts.map +1 -1
- package/dist/core/tests/ffmpegRecorder.js +17 -2
- package/dist/core/tests/ffmpegRecorder.js.map +1 -1
- package/dist/core/tests/recordingCheckpoints.d.ts +76 -0
- package/dist/core/tests/recordingCheckpoints.d.ts.map +1 -0
- package/dist/core/tests/recordingCheckpoints.js +335 -0
- package/dist/core/tests/recordingCheckpoints.js.map +1 -0
- package/dist/core/tests/saveScreenshot.d.ts +5 -1
- package/dist/core/tests/saveScreenshot.d.ts.map +1 -1
- package/dist/core/tests/saveScreenshot.js +46 -12
- package/dist/core/tests/saveScreenshot.js.map +1 -1
- package/dist/core/tests/startRecording.d.ts.map +1 -1
- package/dist/core/tests/startRecording.js +26 -10
- package/dist/core/tests/startRecording.js.map +1 -1
- package/dist/core/tests/stopRecording.d.ts.map +1 -1
- package/dist/core/tests/stopRecording.js +283 -14
- package/dist/core/tests/stopRecording.js.map +1 -1
- package/dist/core/tests.d.ts.map +1 -1
- package/dist/core/tests.js +53 -37
- package/dist/core/tests.js.map +1 -1
- package/dist/hints/context.d.ts +1 -0
- package/dist/hints/context.d.ts.map +1 -1
- package/dist/hints/context.js +9 -0
- package/dist/hints/context.js.map +1 -1
- package/dist/hints/hints.d.ts.map +1 -1
- package/dist/hints/hints.js +15 -0
- package/dist/hints/hints.js.map +1 -1
- package/dist/hints/types.d.ts +8 -0
- package/dist/hints/types.d.ts.map +1 -1
- package/dist/index.cjs +1909 -325
- 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:
|
|
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:
|
|
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(
|
|
302
|
-
fs.writeFileSync(
|
|
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:
|
|
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 —
|
|
330
|
-
//
|
|
331
|
-
//
|
|
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
|
-
|
|
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:
|
|
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 ${
|
|
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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"}
|
package/dist/core/tests.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../src/core/tests.ts"],"names":[],"mappings":"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"}
|
package/dist/core/tests.js
CHANGED
|
@@ -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
|
|
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(
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
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
|