screenci 0.0.67 → 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 (90) 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/changeFocus.d.ts.map +1 -1
  30. package/dist/src/changeFocus.js +17 -3
  31. package/dist/src/changeFocus.js.map +1 -1
  32. package/dist/src/defaults.d.ts +7 -1
  33. package/dist/src/defaults.d.ts.map +1 -1
  34. package/dist/src/defaults.js +9 -2
  35. package/dist/src/defaults.js.map +1 -1
  36. package/dist/src/events.d.ts +138 -6
  37. package/dist/src/events.d.ts.map +1 -1
  38. package/dist/src/events.js +80 -2
  39. package/dist/src/events.js.map +1 -1
  40. package/dist/src/htmlRasterizer.d.ts +110 -0
  41. package/dist/src/htmlRasterizer.d.ts.map +1 -0
  42. package/dist/src/htmlRasterizer.js +364 -0
  43. package/dist/src/htmlRasterizer.js.map +1 -0
  44. package/dist/src/init.d.ts +17 -0
  45. package/dist/src/init.d.ts.map +1 -1
  46. package/dist/src/init.js +127 -7
  47. package/dist/src/init.js.map +1 -1
  48. package/dist/src/instrument.d.ts.map +1 -1
  49. package/dist/src/instrument.js +5 -3
  50. package/dist/src/instrument.js.map +1 -1
  51. package/dist/src/linkSession.d.ts +36 -0
  52. package/dist/src/linkSession.d.ts.map +1 -0
  53. package/dist/src/linkSession.js +122 -0
  54. package/dist/src/linkSession.js.map +1 -0
  55. package/dist/src/mouse.d.ts +4 -0
  56. package/dist/src/mouse.d.ts.map +1 -1
  57. package/dist/src/mouse.js +31 -10
  58. package/dist/src/mouse.js.map +1 -1
  59. package/dist/src/performance.d.ts +41 -0
  60. package/dist/src/performance.d.ts.map +1 -0
  61. package/dist/src/performance.js +49 -0
  62. package/dist/src/performance.js.map +1 -0
  63. package/dist/src/recording.d.ts +1 -1
  64. package/dist/src/recording.d.ts.map +1 -1
  65. package/dist/src/recordingData.d.ts +2 -2
  66. package/dist/src/recordingData.d.ts.map +1 -1
  67. package/dist/src/runtimeContext.d.ts +38 -0
  68. package/dist/src/runtimeContext.d.ts.map +1 -1
  69. package/dist/src/runtimeContext.js +25 -0
  70. package/dist/src/runtimeContext.js.map +1 -1
  71. package/dist/src/runtimeMode.d.ts +7 -0
  72. package/dist/src/runtimeMode.d.ts.map +1 -1
  73. package/dist/src/runtimeMode.js +10 -0
  74. package/dist/src/runtimeMode.js.map +1 -1
  75. package/dist/src/types.d.ts +40 -0
  76. package/dist/src/types.d.ts.map +1 -1
  77. package/dist/src/types.js.map +1 -1
  78. package/dist/src/video.d.ts +34 -1
  79. package/dist/src/video.d.ts.map +1 -1
  80. package/dist/src/video.js +120 -19
  81. package/dist/src/video.js.map +1 -1
  82. package/dist/src/voices.d.ts +22 -9
  83. package/dist/src/voices.d.ts.map +1 -1
  84. package/dist/src/voices.js +6 -24
  85. package/dist/src/voices.js.map +1 -1
  86. package/dist/tsconfig.tsbuildinfo +1 -1
  87. package/package.json +16 -2
  88. package/skills/screenci/SKILL.md +27 -5
  89. package/skills/screenci/references/init.md +2 -0
  90. 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 +1 @@
1
- {"version":3,"file":"changeFocus.d.ts","sourceRoot":"","sources":["../../src/changeFocus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changeFocus.d.ts","sourceRoot":"","sources":["../../src/changeFocus.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { evaluateEasingAtT } from './easing.js';
2
2
  import { DEFAULT_CLICK_MOUSE_MOVE_DURATION, DEFAULT_ZOOM_OPTIONS, } from './defaults.js';
3
- import { getMousePosition, performMouseMove, resolveMouseMoveDuration, } from './mouse.js';
3
+ import { getMousePosition, getScrollDispatchIntervalMs, performMouseMove, resolveMouseMoveDuration, } from './mouse.js';
4
4
  import { getAutoZoomState, setCurrentZoomViewport } from './autoZoom.js';
5
5
  import { logger } from './logger.js';
6
6
  import { buildZoomEvent, resolveAutoZoomOptions, resolveZoomTarget, } from './zoom.js';
7
- import { resolveRecordingTimingDuration } from './runtimeMode.js';
7
+ import { isTimingDebugEnabled, resolveRecordingTimingDuration, } from './runtimeMode.js';
8
8
  const POSITION_EPSILON_PX = 0.5;
9
9
  const CURSOR_TRIGGER_EDGE_THRESHOLD = 0.3;
10
10
  const CURSOR_TRIGGER_MAX_PROGRESS = 0.6;
@@ -634,7 +634,7 @@ async function executeScrollAndZoomPlan(params) {
634
634
  // stretch a ~1s scroll into several seconds. Progress is time-based: a
635
635
  // laggy machine renders fewer frames and a fast one renders the full set,
636
636
  // and either way the scroll finishes in ~duration.
637
- const frameMs = 1000 / 60;
637
+ const frameMs = getScrollDispatchIntervalMs(locator.page());
638
638
  const animStart = Date.now();
639
639
  const applyScrollAtProgress = (easedT) => locator.evaluate((element, args) => {
640
640
  const doc = element.ownerDocument;
@@ -705,14 +705,19 @@ async function executeScrollAndZoomPlan(params) {
705
705
  easedT,
706
706
  positionEpsilonPx: POSITION_EPSILON_PX,
707
707
  });
708
+ let frames = 0;
708
709
  for (;;) {
709
710
  const elapsed = Date.now() - animStart;
710
711
  const t = duration > 0 ? Math.min(1, elapsed / duration) : 1;
711
712
  await applyScrollAtProgress(evaluateEasingAtT(t, easing));
713
+ frames += 1;
712
714
  if (t >= 1)
713
715
  break;
714
716
  await new Promise((resolve) => setTimeout(resolve, frameMs));
715
717
  }
718
+ if (isTimingDebugEnabled()) {
719
+ logger.info(`[screenci:timing] scroll=${Date.now() - animStart}ms (planned ~${Math.round(duration)}ms) frames=${frames}`);
720
+ }
716
721
  }
717
722
  else if (zoomed && duration > 0) {
718
723
  await sleep(duration);
@@ -802,7 +807,9 @@ export async function changeFocus(locator, options = {}, mouseMove, allowStandal
802
807
  const state = getAutoZoomState();
803
808
  const shouldApplyZoom = state.insideAutoZoom || allowStandaloneZoom;
804
809
  const shouldSuppressAutoScroll = state.mode === 'manual' && !state.insideAutoZoom && !allowStandaloneZoom;
810
+ const snapshotStartMs = Date.now();
805
811
  const snapshot = await captureFocusSnapshot(locator);
812
+ const snapshotMs = Date.now() - snapshotStartMs;
806
813
  if (shouldApplyZoom &&
807
814
  (snapshot.locatorRect.width > snapshot.viewportSize.width ||
808
815
  snapshot.locatorRect.height > snapshot.viewportSize.height)) {
@@ -929,6 +936,7 @@ export async function changeFocus(locator, options = {}, mouseMove, allowStandal
929
936
  mousePromise,
930
937
  scrollAndZoomPromise,
931
938
  ]);
939
+ const animationMs = Date.now() - focusChangeStartMs;
932
940
  const zoomTarget = shouldApplyZoom
933
941
  ? resolveZoomTarget({
934
942
  locatorRect: plan.finalLocatorRect,
@@ -957,6 +965,12 @@ export async function changeFocus(locator, options = {}, mouseMove, allowStandal
957
965
  await sleep(focusOptions.postZoomDelay);
958
966
  }
959
967
  const focusChangeEndMs = Date.now();
968
+ if (isTimingDebugEnabled()) {
969
+ logger.info(`[screenci:timing] changeFocus total=${focusChangeEndMs - snapshotStartMs}ms ` +
970
+ `snapshot=${snapshotMs}ms ` +
971
+ `animation=${animationMs}ms (planned ~${Math.round(timing.duration)}ms) ` +
972
+ `postZoom=${focusOptions.postZoomDelay}ms`);
973
+ }
960
974
  const focusChange = {
961
975
  type: 'focusChange',
962
976
  startMs: focusChangeStartMs,