|
8 | 8 | // the PR description. |
9 | 9 | // |
10 | 10 | // Usage: bun e2e/scripts/pr-media.ts <run-dir-or-artifact> [...more] |
11 | | -// run dir e2e/runs/<target>/<scenario-slug> — picks session.mp4 or |
12 | | -// terminal.cast and labels the gif from result.json |
| 11 | +// run dir e2e/runs/<target>/<scenario-slug> — picks film.mp4 (the |
| 12 | +// whole session), else session.mp4, else terminal.cast; |
| 13 | +// labels the gif from result.json |
13 | 14 | // session.mp4 browser recording (ffmpeg -> gif) |
14 | 15 | // terminal.cast terminal recording (agg -> gif; brew install agg) |
15 | 16 | // *.png run screenshot, uploaded as-is |
@@ -48,10 +49,13 @@ const resolveArtifact = (input: string): Artifact => { |
48 | 49 | slug: basename(path).replace(/\.[^.]+$/, ""), |
49 | 50 | }; |
50 | 51 | } |
51 | | - const recording = ["session.mp4", "terminal.cast"] |
| 52 | + // film.mp4 (scripts/film.ts) is the whole session — terminal chat AND the |
| 53 | + // browser hop, cut in time order; the bare browser session.mp4 is only the |
| 54 | + // hop, so it must never win when a film exists. |
| 55 | + const recording = ["film.mp4", "session.mp4", "terminal.cast"] |
52 | 56 | .map((name) => join(path, name)) |
53 | 57 | .find(existsSync); |
54 | | - if (!recording) throw new Error(`${input} has no session.mp4 or terminal.cast`); |
| 58 | + if (!recording) throw new Error(`${input} has no film.mp4, session.mp4, or terminal.cast`); |
55 | 59 | let label = basename(path); |
56 | 60 | try { |
57 | 61 | const result = JSON.parse(readFileSync(join(path, "result.json"), "utf8")) as { |
|
0 commit comments