screenci 0.0.68 → 0.0.69

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 (76) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.d.ts +3 -18
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +105 -154
  5. package/dist/cli.js.map +1 -1
  6. package/dist/docs/manifest.d.ts +13 -13
  7. package/dist/docs/manifest.js +4 -4
  8. package/dist/docs/manifest.js.map +1 -1
  9. package/dist/docs/video-sources/studio.video.d.ts +2 -0
  10. package/dist/docs/video-sources/studio.video.d.ts.map +1 -0
  11. package/dist/docs/video-sources/studio.video.js +57 -0
  12. package/dist/docs/video-sources/studio.video.js.map +1 -0
  13. package/dist/e2e/htmlRasterizer.e2e.d.ts +2 -0
  14. package/dist/e2e/htmlRasterizer.e2e.d.ts.map +1 -0
  15. package/dist/e2e/htmlRasterizer.e2e.js +107 -0
  16. package/dist/e2e/htmlRasterizer.e2e.js.map +1 -0
  17. package/dist/index.d.ts +5 -3
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/src/asset.d.ts +141 -53
  22. package/dist/src/asset.d.ts.map +1 -1
  23. package/dist/src/asset.js +533 -78
  24. package/dist/src/asset.js.map +1 -1
  25. package/dist/src/audio.d.ts +113 -0
  26. package/dist/src/audio.d.ts.map +1 -0
  27. package/dist/src/audio.js +204 -0
  28. package/dist/src/audio.js.map +1 -0
  29. package/dist/src/defaults.d.ts +7 -1
  30. package/dist/src/defaults.d.ts.map +1 -1
  31. package/dist/src/defaults.js +7 -0
  32. package/dist/src/defaults.js.map +1 -1
  33. package/dist/src/events.d.ts +134 -6
  34. package/dist/src/events.d.ts.map +1 -1
  35. package/dist/src/events.js +73 -2
  36. package/dist/src/events.js.map +1 -1
  37. package/dist/src/htmlRasterizer.d.ts +110 -0
  38. package/dist/src/htmlRasterizer.d.ts.map +1 -0
  39. package/dist/src/htmlRasterizer.js +364 -0
  40. package/dist/src/htmlRasterizer.js.map +1 -0
  41. package/dist/src/init.d.ts +17 -0
  42. package/dist/src/init.d.ts.map +1 -1
  43. package/dist/src/init.js +127 -7
  44. package/dist/src/init.js.map +1 -1
  45. package/dist/src/linkSession.d.ts +36 -0
  46. package/dist/src/linkSession.d.ts.map +1 -0
  47. package/dist/src/linkSession.js +122 -0
  48. package/dist/src/linkSession.js.map +1 -0
  49. package/dist/src/performance.d.ts +1 -3
  50. package/dist/src/performance.d.ts.map +1 -1
  51. package/dist/src/performance.js +0 -12
  52. package/dist/src/performance.js.map +1 -1
  53. package/dist/src/recording.d.ts +1 -1
  54. package/dist/src/recording.d.ts.map +1 -1
  55. package/dist/src/recordingData.d.ts +2 -2
  56. package/dist/src/recordingData.d.ts.map +1 -1
  57. package/dist/src/runtimeContext.d.ts +38 -0
  58. package/dist/src/runtimeContext.d.ts.map +1 -1
  59. package/dist/src/runtimeContext.js +25 -0
  60. package/dist/src/runtimeContext.js.map +1 -1
  61. package/dist/src/types.d.ts +25 -7
  62. package/dist/src/types.d.ts.map +1 -1
  63. package/dist/src/types.js.map +1 -1
  64. package/dist/src/video.d.ts +34 -1
  65. package/dist/src/video.d.ts.map +1 -1
  66. package/dist/src/video.js +120 -19
  67. package/dist/src/video.js.map +1 -1
  68. package/dist/src/voices.d.ts +22 -9
  69. package/dist/src/voices.d.ts.map +1 -1
  70. package/dist/src/voices.js +6 -24
  71. package/dist/src/voices.js.map +1 -1
  72. package/dist/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +16 -2
  74. package/skills/screenci/SKILL.md +27 -5
  75. package/skills/screenci/references/init.md +2 -0
  76. package/skills/screenci/references/record.md +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/asset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/asset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import type { IEventRecorder } from './events.js';
2
+ /**
3
+ * Display/playback options for a background audio track.
4
+ *
5
+ * Background audio is mixed *under* the recording (and any narration). Unlike
6
+ * overlays it has no visual and never freezes a frame: it simply plays from the
7
+ * point it is started until it is ended (or until the end of the video).
8
+ */
9
+ export type AudioConfig = {
10
+ /** File path: `.mp3`, `.wav`, `.m4a`, `.aac`, or an audio-only `.mp4`. */
11
+ path: string;
12
+ /**
13
+ * Linear gain. `1` (the default) plays the source at its natural level, `0`
14
+ * mutes it, and values above `1` boost it (e.g. `2` is twice as loud). Capped
15
+ * at {@link MAX_AUDIO_LEVEL}.
16
+ */
17
+ volume?: number;
18
+ /**
19
+ * Loop the source to fill the playback span. With `repeat: true` a short
20
+ * track repeats until the track is ended (or the video ends). Defaults to
21
+ * `false` (the source plays once and then falls silent).
22
+ */
23
+ repeat?: boolean;
24
+ };
25
+ /**
26
+ * A value accepted by {@link createAudio} for each key: a file path string or an
27
+ * {@link AudioConfig} object.
28
+ */
29
+ export type AudioInput = string | AudioConfig;
30
+ /**
31
+ * A background audio controller.
32
+ *
33
+ * Calling it (`await music.theme()`) starts the track at the current point and
34
+ * lets it play for the rest of the video. Use `start()`/`end()` to bound the
35
+ * track to a specific span. Tracks are non-exclusive: starting one never stops
36
+ * another, so music and a sound effect can overlap.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * // Background music for the whole video:
41
+ * await music.theme()
42
+ *
43
+ * // Bounded span:
44
+ * await music.sting.start()
45
+ * await page.click('#celebrate')
46
+ * await music.sting.end()
47
+ * ```
48
+ */
49
+ export type AudioController = {
50
+ (): Promise<void>;
51
+ start(): Promise<void>;
52
+ end(): Promise<void>;
53
+ };
54
+ /** Typed audio controllers keyed by the names passed to {@link createAudio}. */
55
+ export type AudioTracks<T extends Record<string, AudioInput>> = {
56
+ [K in keyof T]: AudioController;
57
+ };
58
+ export declare function setActiveAudioRecorder(recorder: IEventRecorder | null): void;
59
+ export declare function resetAudioChain(): void;
60
+ /**
61
+ * Creates a set of typed background audio controllers, one per key in the map.
62
+ * Each value is a file path string or an {@link AudioConfig} object.
63
+ *
64
+ * Background audio is mixed under the recording (and narration). Calling a
65
+ * controller starts the track at the current point and plays it for the rest of
66
+ * the video; `start()`/`end()` bound it to a span. Set `repeat: true` to loop a
67
+ * short track and `volume` to balance it against the recording.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * const music = createAudio({
72
+ * theme: { path: 'bg.mp3', volume: 0.3, repeat: true },
73
+ * sting: 'celebrate.wav',
74
+ * })
75
+ *
76
+ * video('Product demo', async ({ page }) => {
77
+ * await music.theme() // plays under the whole video, looping
78
+ * await page.goto('/dashboard')
79
+ * await music.sting.start()
80
+ * await page.click('#celebrate')
81
+ * await music.sting.end()
82
+ * })
83
+ * ```
84
+ */
85
+ export declare function createAudio<const T extends Record<string, AudioInput>>(tracks: T): AudioTracks<T>;
86
+ /**
87
+ * Creates typed background audio controllers whose files, volume, and repeat are
88
+ * configured on the ScreenCI Studio page instead of in code. Business tier only.
89
+ *
90
+ * Each key becomes a callable controller with the same timeline behavior as
91
+ * {@link createAudio} controllers, including `start()`/`end()`. The audio file,
92
+ * volume, and repeat all come from Studio (mirrors {@link createStudioOverlays}
93
+ * for overlays).
94
+ *
95
+ * On the first upload of a studio-mode video, rendering is held until the video
96
+ * is configured in Studio (the CLI prints a direct link). Later uploads reuse
97
+ * the saved Studio configuration automatically.
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * const music = createStudioAudio('theme', 'sting')
102
+ *
103
+ * video('Product demo', async ({ page }) => {
104
+ * await music.theme() // plays under the whole video
105
+ * await page.goto('/dashboard')
106
+ * await music.sting.start()
107
+ * await page.click('#celebrate')
108
+ * await music.sting.end()
109
+ * })
110
+ * ```
111
+ */
112
+ export declare function createStudioAudio<const K extends readonly [string, ...string[]]>(...keys: K): Record<K[number], AudioController>;
113
+ //# sourceMappingURL=audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/audio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAA;AAcpE;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,CAAA;AAE7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACrB,CAAA;AAED,gFAAgF;AAChF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe;CAChC,CAAA;AAID,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAG5E;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AA0DD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACpE,MAAM,EAAE,CAAC,GACR,WAAW,CAAC,CAAC,CAAC,CAMhB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EAC9C,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,CAgBhD"}
@@ -0,0 +1,204 @@
1
+ import { readFile } from 'fs/promises';
2
+ import { createHash } from 'crypto';
3
+ import { dirname, resolve } from 'path';
4
+ import { isInsideHide } from './hide.js';
5
+ import { MAX_AUDIO_LEVEL } from './asset.js';
6
+ import { getScreenCIRuntimeContext, getRuntimeAudioRecorder, setRuntimeAudioRecorder, resetAudioRuntimeState, } from './runtimeContext.js';
7
+ const AUDIO_EXTENSIONS = ['.mp3', '.wav', '.m4a', '.aac', '.mp4'];
8
+ export function setActiveAudioRecorder(recorder) {
9
+ setRuntimeAudioRecorder(recorder);
10
+ resetAudioRuntimeState();
11
+ }
12
+ export function resetAudioChain() {
13
+ resetAudioRuntimeState();
14
+ }
15
+ function hasAudioExtension(path) {
16
+ const dotIndex = path.lastIndexOf('.');
17
+ if (dotIndex === -1)
18
+ return false;
19
+ const extension = path.slice(dotIndex).toLowerCase();
20
+ return AUDIO_EXTENSIONS.includes(extension);
21
+ }
22
+ /**
23
+ * Resolves an audio file path (as-is or relative to the test file) and returns
24
+ * its absolute path plus a SHA-256 hash for upload/caching. Throws when the file
25
+ * does not exist.
26
+ */
27
+ async function resolveAudioFile(name, path, testFilePath) {
28
+ const candidates = [path];
29
+ if (testFilePath !== null) {
30
+ candidates.push(resolve(dirname(testFilePath), path));
31
+ }
32
+ for (const candidate of candidates) {
33
+ try {
34
+ const fileBuffer = await readFile(candidate);
35
+ return {
36
+ path,
37
+ fileHash: createHash('sha256').update(fileBuffer).digest('hex'),
38
+ };
39
+ }
40
+ catch {
41
+ // try next candidate
42
+ }
43
+ }
44
+ throw new Error(`[screenci] Audio file not found for "${name}": ${path}`);
45
+ }
46
+ function normalizeAudioConfig(name, input) {
47
+ const config = typeof input === 'string' ? { path: input } : input;
48
+ if (!hasAudioExtension(config.path)) {
49
+ throw new Error(`[screenci] Audio "${name}" must use one of: ${AUDIO_EXTENSIONS.join(', ')}. Received: ${config.path}`);
50
+ }
51
+ if (config.volume !== undefined &&
52
+ (!Number.isFinite(config.volume) ||
53
+ config.volume < 0 ||
54
+ config.volume > MAX_AUDIO_LEVEL)) {
55
+ throw new Error(`[screenci] Audio "${name}" (${config.path}) must provide a finite volume between 0 and ${MAX_AUDIO_LEVEL}. 1 is the natural level, 0 is silent, and values above 1 boost it.`);
56
+ }
57
+ return config;
58
+ }
59
+ /**
60
+ * Creates a set of typed background audio controllers, one per key in the map.
61
+ * Each value is a file path string or an {@link AudioConfig} object.
62
+ *
63
+ * Background audio is mixed under the recording (and narration). Calling a
64
+ * controller starts the track at the current point and plays it for the rest of
65
+ * the video; `start()`/`end()` bound it to a span. Set `repeat: true` to loop a
66
+ * short track and `volume` to balance it against the recording.
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * const music = createAudio({
71
+ * theme: { path: 'bg.mp3', volume: 0.3, repeat: true },
72
+ * sting: 'celebrate.wav',
73
+ * })
74
+ *
75
+ * video('Product demo', async ({ page }) => {
76
+ * await music.theme() // plays under the whole video, looping
77
+ * await page.goto('/dashboard')
78
+ * await music.sting.start()
79
+ * await page.click('#celebrate')
80
+ * await music.sting.end()
81
+ * })
82
+ * ```
83
+ */
84
+ export function createAudio(tracks) {
85
+ const result = {};
86
+ for (const name in tracks) {
87
+ result[name] = buildAudioController(name, tracks[name]);
88
+ }
89
+ return result;
90
+ }
91
+ /**
92
+ * Creates typed background audio controllers whose files, volume, and repeat are
93
+ * configured on the ScreenCI Studio page instead of in code. Business tier only.
94
+ *
95
+ * Each key becomes a callable controller with the same timeline behavior as
96
+ * {@link createAudio} controllers, including `start()`/`end()`. The audio file,
97
+ * volume, and repeat all come from Studio (mirrors {@link createStudioOverlays}
98
+ * for overlays).
99
+ *
100
+ * On the first upload of a studio-mode video, rendering is held until the video
101
+ * is configured in Studio (the CLI prints a direct link). Later uploads reuse
102
+ * the saved Studio configuration automatically.
103
+ *
104
+ * @example
105
+ * ```ts
106
+ * const music = createStudioAudio('theme', 'sting')
107
+ *
108
+ * video('Product demo', async ({ page }) => {
109
+ * await music.theme() // plays under the whole video
110
+ * await page.goto('/dashboard')
111
+ * await music.sting.start()
112
+ * await page.click('#celebrate')
113
+ * await music.sting.end()
114
+ * })
115
+ * ```
116
+ */
117
+ export function createStudioAudio(...keys) {
118
+ const seen = new Set();
119
+ for (const key of keys) {
120
+ if (seen.has(key)) {
121
+ throw new Error(`Duplicate audio key "${key}" passed to createStudioAudio. Audio keys must be unique.`);
122
+ }
123
+ seen.add(key);
124
+ }
125
+ const result = {};
126
+ for (const key of keys) {
127
+ result[key] = buildStudioAudioController(key);
128
+ }
129
+ return result;
130
+ }
131
+ /**
132
+ * Builds the callable/`start()`/`end()` audio controller shared by code-defined
133
+ * ({@link createAudio}) and Studio ({@link createStudioAudio}) tracks. The only
134
+ * difference is how `emitStart` records the start event.
135
+ */
136
+ function createAudioControllerCore(name, emitStart) {
137
+ // start()/end() register a live run so end() can pair to its start and a
138
+ // double start() is rejected.
139
+ const start = async () => {
140
+ if (isInsideHide()) {
141
+ throw new Error('[screenci] Cannot start audio inside hide()');
142
+ }
143
+ const context = getScreenCIRuntimeContext();
144
+ if (context.audio.activeRuns.has(name)) {
145
+ throw new Error(`[screenci] Audio "${name}" is already started. Call end() for it before starting it again.`);
146
+ }
147
+ let resolveFinished;
148
+ const finished = new Promise((res) => {
149
+ resolveFinished = res;
150
+ });
151
+ const run = { finished, resolveFinished };
152
+ context.audio.activeRuns.set(name, run);
153
+ await emitStart(getRuntimeAudioRecorder());
154
+ };
155
+ const end = async () => {
156
+ if (isInsideHide()) {
157
+ throw new Error('[screenci] Cannot call end() for audio inside hide()');
158
+ }
159
+ const context = getScreenCIRuntimeContext();
160
+ const run = context.audio.activeRuns.get(name);
161
+ if (run === undefined) {
162
+ throw new Error(`Cannot call end() for audio "${name}" because it is not a started track`);
163
+ }
164
+ getRuntimeAudioRecorder().addAudioEnd(name, 'wait');
165
+ context.audio.activeRuns.delete(name);
166
+ run.resolveFinished();
167
+ await run.finished;
168
+ };
169
+ // Bare call: play from here to the end of the video (no end recorded). It is
170
+ // fire-and-forget, so it never registers a live run.
171
+ const controller = (async () => {
172
+ if (isInsideHide()) {
173
+ throw new Error('[screenci] Cannot start audio inside hide()');
174
+ }
175
+ await emitStart(getRuntimeAudioRecorder());
176
+ });
177
+ controller.start = start;
178
+ controller.end = end;
179
+ return controller;
180
+ }
181
+ function buildAudioController(name, input) {
182
+ const config = normalizeAudioConfig(name, input);
183
+ const buildPayload = async () => {
184
+ const testFilePath = getScreenCIRuntimeContext().testFilePath;
185
+ const resolved = await resolveAudioFile(name, config.path, testFilePath);
186
+ return {
187
+ path: resolved.path,
188
+ fileHash: resolved.fileHash,
189
+ volume: config.volume ?? 1,
190
+ repeat: config.repeat ?? false,
191
+ };
192
+ };
193
+ return createAudioControllerCore(name, async (recorder) => {
194
+ const payload = await buildPayload();
195
+ recorder.addAudioStart(name, payload);
196
+ });
197
+ }
198
+ function buildStudioAudioController(name) {
199
+ return createAudioControllerCore(name, (recorder) => {
200
+ recorder.addStudioAudioStart(name);
201
+ return Promise.resolve();
202
+ });
203
+ }
204
+ //# sourceMappingURL=audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/audio.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AspectRatio, AutoZoomOptions, FPS, Quality, RecordUploadPolicy, RecordOptions } from './types.js';
1
+ import type { AspectRatio, AutoZoomOptions, FPS, Quality, RecordUploadPolicy, RecordOptions, VideoEncoderPreset } from './types.js';
2
2
  export declare const DEFAULT_ZOOM_OPTIONS: Required<AutoZoomOptions>;
3
3
  /**
4
4
  * Default cursor move duration for click-like actions, in milliseconds.
@@ -41,6 +41,12 @@ export declare const DEFAULT_ACTION_TIMEOUT: number;
41
41
  * Keeps page navigations at a sane timeout independent of the long test timeout.
42
42
  */
43
43
  export declare const DEFAULT_NAVIGATION_TIMEOUT: number;
44
+ /**
45
+ * Default capture encoder preset. `'fast'` is the safest baseline (lightest
46
+ * encode, never falls behind realtime on weak runners). The `init`-scaffolded
47
+ * config opts into `'sharp'` locally for crisper text and keeps `'fast'` in CI.
48
+ */
49
+ export declare const DEFAULT_VIDEO_ENCODER: VideoEncoderPreset;
44
50
  /**
45
51
  * Default video options combining all video-related defaults
46
52
  */
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,GAAG,EACH,OAAO,EACP,kBAAkB,EAClB,aAAa,EACd,MAAM,YAAY,CAAA;AAQnB,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,eAAe,CAQ1D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAY,CAAA;AAE5D;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAoB,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OAAiB,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,GAAQ,CAAA;AAElC;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAmB,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,kBAAkC,CAAA;AAE7E;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAuB,CAAA;AAErD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAe,CAAA;AAEpD;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAe,CAAA;AAExD;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAInC,CAAA"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,GAAG,EACH,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EACnB,MAAM,YAAY,CAAA;AAQnB,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,eAAe,CAQ1D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAY,CAAA;AAE5D;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAoB,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OAAiB,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,GAAQ,CAAA;AAElC;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAmB,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,kBAAkC,CAAA;AAE7E;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAuB,CAAA;AAErD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAe,CAAA;AAEpD;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAe,CAAA;AAExD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,kBAA2B,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAKnC,CAAA"}
@@ -54,6 +54,12 @@ export const DEFAULT_ACTION_TIMEOUT = 30_000;
54
54
  * Keeps page navigations at a sane timeout independent of the long test timeout.
55
55
  */
56
56
  export const DEFAULT_NAVIGATION_TIMEOUT = 30_000;
57
+ /**
58
+ * Default capture encoder preset. `'fast'` is the safest baseline (lightest
59
+ * encode, never falls behind realtime on weak runners). The `init`-scaffolded
60
+ * config opts into `'sharp'` locally for crisper text and keeps `'fast'` in CI.
61
+ */
62
+ export const DEFAULT_VIDEO_ENCODER = 'fast';
57
63
  /**
58
64
  * Default video options combining all video-related defaults
59
65
  */
@@ -61,5 +67,6 @@ export const DEFAULT_VIDEO_OPTIONS = {
61
67
  aspectRatio: DEFAULT_ASPECT_RATIO,
62
68
  quality: DEFAULT_QUALITY,
63
69
  fps: DEFAULT_FPS,
70
+ encoder: DEFAULT_VIDEO_ENCODER,
64
71
  };
65
72
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AASA,aAAa;AACb,4EAA4E;AAC5E,wBAAwB;AACxB,0BAA0B;AAC1B,+BAA+B;AAC/B,cAAc;AACd,MAAM,CAAC,MAAM,oBAAoB,GAA8B;IAC7D,MAAM,EAAE,UAAU;IAClB,QAAQ,EAAE,GAAG;IACb,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,GAAG;CACnB,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAW,GAAG,CAAA;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB,MAAM,CAAA;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY,OAAO,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAQ,EAAE,CAAA;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAW,UAAU,CAAA;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAuB,aAAa,CAAA;AAE7E;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAW,MAAM,CAAA;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAW,MAAM,CAAA;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAkB;IAClD,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,eAAe;IACxB,GAAG,EAAE,WAAW;CACjB,CAAA"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAUA,aAAa;AACb,4EAA4E;AAC5E,wBAAwB;AACxB,0BAA0B;AAC1B,+BAA+B;AAC/B,cAAc;AACd,MAAM,CAAC,MAAM,oBAAoB,GAA8B;IAC7D,MAAM,EAAE,UAAU;IAClB,QAAQ,EAAE,GAAG;IACb,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,GAAG;CACnB,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAW,GAAG,CAAA;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB,MAAM,CAAA;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY,OAAO,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAQ,EAAE,CAAA;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAW,UAAU,CAAA;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAuB,aAAa,CAAA;AAE7E;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAW,MAAM,CAAA;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAW,MAAM,CAAA;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAuB,MAAM,CAAA;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAkB;IAClD,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,eAAe;IACxB,GAAG,EAAE,WAAW;IAChB,OAAO,EAAE,qBAAqB;CAC/B,CAAA"}
@@ -192,9 +192,37 @@ export type VideoCueStartEvent = {
192
192
  /** Multi-language API — per-language translations keyed by language code. */
193
193
  translations?: Record<string, VideoCueTranslation>;
194
194
  };
195
+ /**
196
+ * Placement of a visual asset overlay. Coordinates are normalized 0-1 fractions
197
+ * of a reference box, with the asset anchored at its top-left corner.
198
+ *
199
+ * - `fullScreen` fills the entire output frame.
200
+ * - The positioned variants place the asset against the full output frame
201
+ * (`relativeTo: 'screen'`) or the composited recording area
202
+ * (`relativeTo: 'recording'`, the default). Provide exactly one of `width` or
203
+ * `height`; the other dimension is derived from the asset's intrinsic aspect
204
+ * ratio.
205
+ */
206
+ export type OverlayPlacement = {
207
+ fullScreen: true;
208
+ } | {
209
+ relativeTo: 'screen' | 'recording';
210
+ x: number;
211
+ y: number;
212
+ width: number;
213
+ } | {
214
+ relativeTo: 'screen' | 'recording';
215
+ x: number;
216
+ y: number;
217
+ height: number;
218
+ };
195
219
  /**
196
220
  * Asset format policy is recorded explicitly so renderers never need to infer
197
221
  * timing or audio rules from file extensions after the recording phase.
222
+ *
223
+ * `durationMs` is present for blocking overlays (the asset holds a frozen frame
224
+ * for that long). It is omitted when the overlay is driven by `start()`/`end()`,
225
+ * in which case a paired `assetEnd` event defines the visible window.
198
226
  */
199
227
  export type ImageAssetStartEvent = {
200
228
  type: 'assetStart';
@@ -203,8 +231,9 @@ export type ImageAssetStartEvent = {
203
231
  kind: 'image';
204
232
  path: string;
205
233
  fileHash?: string;
206
- durationMs: number;
234
+ durationMs?: number;
207
235
  fullScreen: boolean;
236
+ placement?: OverlayPlacement;
208
237
  };
209
238
  export type VideoAssetStartEvent = {
210
239
  type: 'assetStart';
@@ -215,11 +244,48 @@ export type VideoAssetStartEvent = {
215
244
  fileHash?: string;
216
245
  audio: number;
217
246
  fullScreen: boolean;
247
+ placement?: OverlayPlacement;
218
248
  };
219
- export type AssetStartEvent = ImageAssetStartEvent | VideoAssetStartEvent;
220
- export type AssetStartPayload = Omit<ImageAssetStartEvent, 'type' | 'timeMs' | 'name'> | Omit<VideoAssetStartEvent, 'type' | 'timeMs' | 'name'>;
221
249
  /**
222
- * Asset declared via `createStudioAssets` the file and display options are
250
+ * An animated HTML/React overlay captured to a single alpha-preserving video.
251
+ * It behaves like an {@link ImageAssetStartEvent} on the timeline (a blocking
252
+ * call holds a frozen frame for `durationMs`; `start()`/`end()` drives a live
253
+ * window), but the renderer composites it as a video so the animation plays.
254
+ * It never carries audio.
255
+ */
256
+ export type AnimationAssetStartEvent = {
257
+ type: 'assetStart';
258
+ timeMs: number;
259
+ name: string;
260
+ kind: 'animation';
261
+ path: string;
262
+ fileHash?: string;
263
+ durationMs?: number;
264
+ fullScreen: boolean;
265
+ placement?: OverlayPlacement;
266
+ };
267
+ /**
268
+ * End marker for an asset overlay driven by `start()`/`end()`. The asset is
269
+ * visible from its `assetStart` until this event (a live overlay over the
270
+ * recording, no frozen frame). `reason` mirrors cue ends: `'wait'` for an
271
+ * explicit `end()`, `'auto'` when this one was auto-ended.
272
+ *
273
+ * `name` identifies which overlay this end belongs to. Because overlays may
274
+ * overlap (several live at once, interleaved rather than nested), ends are
275
+ * paired to their starts by name rather than by position. Older recordings
276
+ * predate this field, so it is optional; the renderer falls back to closing
277
+ * the most recently opened overlay when it is absent.
278
+ */
279
+ export type AssetEndEvent = {
280
+ type: 'assetEnd';
281
+ timeMs: number;
282
+ name?: string;
283
+ reason?: 'auto' | 'wait';
284
+ };
285
+ export type AssetStartEvent = ImageAssetStartEvent | VideoAssetStartEvent | AnimationAssetStartEvent;
286
+ export type AssetStartPayload = Omit<ImageAssetStartEvent, 'type' | 'timeMs' | 'name'> | Omit<VideoAssetStartEvent, 'type' | 'timeMs' | 'name'> | Omit<AnimationAssetStartEvent, 'type' | 'timeMs' | 'name'>;
287
+ /**
288
+ * Asset declared via `createStudioOverlays` — the file and display options are
223
289
  * configured in Studio, so the recording only marks the timeline point.
224
290
  */
225
291
  export type StudioAssetStartEvent = {
@@ -228,6 +294,47 @@ export type StudioAssetStartEvent = {
228
294
  name: string;
229
295
  studio: true;
230
296
  };
297
+ /**
298
+ * Start of a background audio track (`createAudio`). Unlike asset overlays this
299
+ * carries no visual: it is mixed under the recording from `timeMs` until its
300
+ * paired {@link AudioEndEvent}, or until the end of the video when no end is
301
+ * recorded (the common background-music case). `volume` is a linear gain (`1`
302
+ * is natural); `repeat` loops the source to fill the span.
303
+ */
304
+ export type AudioStartEvent = {
305
+ type: 'audioStart';
306
+ timeMs: number;
307
+ name: string;
308
+ path: string;
309
+ /** SHA-256 of the audio file — present only during recording; used for upload/caching. */
310
+ fileHash?: string;
311
+ volume: number;
312
+ repeat: boolean;
313
+ };
314
+ /**
315
+ * End marker for a background audio track. `name` pairs it to its
316
+ * {@link AudioStartEvent}; an audioStart with no matching end plays to the end
317
+ * of the video.
318
+ */
319
+ export type AudioEndEvent = {
320
+ type: 'audioEnd';
321
+ timeMs: number;
322
+ name?: string;
323
+ reason?: 'wait';
324
+ };
325
+ /**
326
+ * Background audio track declared via `createStudioAudio` — the file, volume,
327
+ * and repeat are configured in Studio, so the recording only marks the timeline
328
+ * point (mirrors {@link StudioAssetStartEvent} for overlays).
329
+ */
330
+ export type StudioAudioStartEvent = {
331
+ type: 'audioStart';
332
+ timeMs: number;
333
+ name: string;
334
+ studio: true;
335
+ };
336
+ /** Payload for {@link IEventRecorder.addAudioStart} (timing/name added by the recorder). */
337
+ export type AudioStartPayload = Omit<AudioStartEvent, 'type' | 'timeMs' | 'name'>;
231
338
  export type HideStartEvent = {
232
339
  type: 'hideStart';
233
340
  timeMs: number;
@@ -268,7 +375,7 @@ export type AutoZoomEndEvent = {
268
375
  easing: string;
269
376
  duration: number;
270
377
  };
271
- export type RecordingEvent = VideoStartEvent | InputEvent | CueStartEvent | CueEndEvent | VideoCueStartEvent | AssetStartEvent | StudioAssetStartEvent | HideStartEvent | HideEndEvent | SpeedStartEvent | SpeedEndEvent | TimeStartEvent | TimeEndEvent | AutoZoomStartEvent | AutoZoomEndEvent;
378
+ export type RecordingEvent = VideoStartEvent | InputEvent | CueStartEvent | CueEndEvent | VideoCueStartEvent | AssetStartEvent | AssetEndEvent | StudioAssetStartEvent | AudioStartEvent | StudioAudioStartEvent | AudioEndEvent | HideStartEvent | HideEndEvent | SpeedStartEvent | SpeedEndEvent | TimeStartEvent | TimeEndEvent | AutoZoomStartEvent | AutoZoomEndEvent;
272
379
  export type VoiceLanguageMeta = {
273
380
  /** Voice key string: a built-in voice name or an external voice key. */
274
381
  name: string;
@@ -300,12 +407,14 @@ export type RecordingMetadata = {
300
407
  * Which parts of this recording opted into Studio configuration.
301
408
  * `renderOptions` is set when `STUDIO_RENDER_OPTIONS` was used; `narration`
302
409
  * when the recording contains `createStudioNarration` cues; `assets` when it
303
- * contains `createStudioAssets` assets.
410
+ * contains `createStudioOverlays` assets; `audio` when it contains
411
+ * `createStudioAudio` tracks.
304
412
  */
305
413
  studio?: {
306
414
  renderOptions?: boolean;
307
415
  narration?: boolean;
308
416
  assets?: boolean;
417
+ audio?: boolean;
309
418
  };
310
419
  };
311
420
  export type RecordingData = {
@@ -329,8 +438,23 @@ export interface IEventRecorder {
329
438
  addCueEnd(reason?: 'auto' | 'wait'): void;
330
439
  addVideoCueStart(name: string, assetPath: string | undefined, assetHash: string | undefined, subtitle?: string, translations?: Record<string, VideoCueTranslation>): void;
331
440
  addAssetStart(name: string, asset: AssetStartPayload): void;
441
+ /**
442
+ * Records the end of a `start()`/`end()`-driven asset overlay. `name`
443
+ * identifies which overlay ended (overlays may overlap), so the renderer can
444
+ * pair this end to its start by name.
445
+ */
446
+ addAssetEnd(name: string | undefined, reason?: 'auto' | 'wait'): void;
332
447
  /** Records a studio-mode asset start — the file and options are configured in Studio. */
333
448
  addStudioAssetStart(name: string): void;
449
+ /** Records the start of a background audio track (`createAudio`). */
450
+ addAudioStart(name: string, audio: AudioStartPayload): void;
451
+ /** Records a studio-mode audio start — the file, volume, and repeat are configured in Studio. */
452
+ addStudioAudioStart(name: string): void;
453
+ /**
454
+ * Records the end of a background audio track. `name` pairs it to its start;
455
+ * an audio track left open plays to the end of the video.
456
+ */
457
+ addAudioEnd(name: string | undefined, reason?: 'wait'): void;
334
458
  addHideStart(): void;
335
459
  addHideEnd(): void;
336
460
  /** Resolved cursor/scroll dispatch intervals from `recordOptions.performance`. */
@@ -368,7 +492,11 @@ export declare class EventRecorder implements IEventRecorder {
368
492
  addCueEnd(reason?: 'auto' | 'wait'): void;
369
493
  addVideoCueStart(name: string, assetPath: string | undefined, assetHash: string | undefined, subtitle?: string, translations?: Record<string, VideoCueTranslation>): void;
370
494
  addAssetStart(name: string, asset: AssetStartPayload): void;
495
+ addAssetEnd(name: string | undefined, reason?: 'auto' | 'wait'): void;
371
496
  addStudioAssetStart(name: string): void;
497
+ addAudioStart(name: string, audio: AudioStartPayload): void;
498
+ addStudioAudioStart(name: string): void;
499
+ addAudioEnd(name: string | undefined, reason?: 'wait'): void;
372
500
  addHideStart(): void;
373
501
  addHideEnd(): void;
374
502
  getPerformanceIntervals(): PerformanceIntervals;