screenci 0.0.68 → 0.0.70
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/README.md +45 -122
- package/dist/cli.d.ts +3 -18
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +117 -158
- package/dist/cli.js.map +1 -1
- package/dist/docs/manifest.d.ts +66 -35
- package/dist/docs/manifest.d.ts.map +1 -1
- package/dist/docs/manifest.js +22 -11
- package/dist/docs/manifest.js.map +1 -1
- package/dist/docs/video-sources/cli.screenci.d.ts +2 -0
- package/dist/docs/video-sources/cli.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/{cli.video.js → cli.screenci.js} +1 -1
- package/dist/docs/video-sources/cli.screenci.js.map +1 -0
- package/dist/docs/video-sources/installation.screenci.d.ts +2 -0
- package/dist/docs/video-sources/installation.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/{installation.video.js → installation.screenci.js} +1 -1
- package/dist/docs/video-sources/installation.screenci.js.map +1 -0
- package/dist/docs/video-sources/landing.screenci.d.ts +2 -0
- package/dist/docs/video-sources/landing.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/{landing.video.js → landing.screenci.js} +1 -1
- package/dist/docs/video-sources/landing.screenci.js.map +1 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.d.ts +2 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js +53 -0
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -0
- package/dist/docs/video-sources/locator-highlight-still.screenci.d.ts +2 -0
- package/dist/docs/video-sources/locator-highlight-still.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/locator-highlight-still.screenci.js +24 -0
- package/dist/docs/video-sources/locator-highlight-still.screenci.js.map +1 -0
- package/dist/docs/video-sources/product-pitch.screenci.d.ts +2 -0
- package/dist/docs/video-sources/product-pitch.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/product-pitch.screenci.js +136 -0
- package/dist/docs/video-sources/product-pitch.screenci.js.map +1 -0
- package/dist/docs/video-sources/public-urls.screenci.d.ts +2 -0
- package/dist/docs/video-sources/public-urls.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/public-urls.screenci.js +34 -0
- package/dist/docs/video-sources/public-urls.screenci.js.map +1 -0
- package/dist/docs/video-sources/studio.screenci.d.ts +2 -0
- package/dist/docs/video-sources/studio.screenci.d.ts.map +1 -0
- package/dist/docs/video-sources/studio.screenci.js +57 -0
- package/dist/docs/video-sources/studio.screenci.js.map +1 -0
- package/dist/docs/videos.d.ts +36 -15
- package/dist/docs/videos.d.ts.map +1 -1
- package/dist/docs/videos.js +27 -2
- package/dist/docs/videos.js.map +1 -1
- package/dist/e2e/htmlRasterizer.e2e.d.ts +2 -0
- package/dist/e2e/htmlRasterizer.e2e.d.ts.map +1 -0
- package/dist/e2e/htmlRasterizer.e2e.js +107 -0
- package/dist/e2e/htmlRasterizer.e2e.js.map +1 -0
- package/dist/e2e/screenshot.e2e.d.ts +2 -0
- package/dist/e2e/screenshot.e2e.d.ts.map +1 -0
- package/dist/e2e/screenshot.e2e.js +73 -0
- package/dist/e2e/screenshot.e2e.js.map +1 -0
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/src/asset.d.ts +245 -53
- package/dist/src/asset.d.ts.map +1 -1
- package/dist/src/asset.js +718 -77
- package/dist/src/asset.js.map +1 -1
- package/dist/src/audio.d.ts +127 -0
- package/dist/src/audio.d.ts.map +1 -0
- package/dist/src/audio.js +207 -0
- package/dist/src/audio.js.map +1 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +9 -3
- package/dist/src/config.js.map +1 -1
- package/dist/src/contextOptions.d.ts +48 -0
- package/dist/src/contextOptions.d.ts.map +1 -0
- package/dist/src/contextOptions.js +71 -0
- package/dist/src/contextOptions.js.map +1 -0
- package/dist/src/crop.d.ts +93 -0
- package/dist/src/crop.d.ts.map +1 -0
- package/dist/src/crop.js +133 -0
- package/dist/src/crop.js.map +1 -0
- package/dist/src/cue.d.ts +17 -4
- package/dist/src/cue.d.ts.map +1 -1
- package/dist/src/cue.js +31 -3
- package/dist/src/cue.js.map +1 -1
- package/dist/src/defaults.d.ts +13 -1
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +13 -0
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/dimensions.d.ts +6 -0
- package/dist/src/dimensions.d.ts.map +1 -1
- package/dist/src/dimensions.js +15 -0
- package/dist/src/dimensions.js.map +1 -1
- package/dist/src/events.d.ts +283 -13
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +134 -5
- package/dist/src/events.js.map +1 -1
- package/dist/src/htmlRasterizer.d.ts +153 -0
- package/dist/src/htmlRasterizer.d.ts.map +1 -0
- package/dist/src/htmlRasterizer.js +386 -0
- package/dist/src/htmlRasterizer.js.map +1 -0
- package/dist/src/init.d.ts +17 -0
- package/dist/src/init.d.ts.map +1 -1
- package/dist/src/init.js +131 -11
- package/dist/src/init.js.map +1 -1
- package/dist/src/linkSession.d.ts +36 -0
- package/dist/src/linkSession.d.ts.map +1 -0
- package/dist/src/linkSession.js +122 -0
- package/dist/src/linkSession.js.map +1 -0
- package/dist/src/overlayFlush.d.ts +18 -0
- package/dist/src/overlayFlush.d.ts.map +1 -0
- package/dist/src/overlayFlush.js +56 -0
- package/dist/src/overlayFlush.js.map +1 -0
- package/dist/src/overlayRect.d.ts +69 -0
- package/dist/src/overlayRect.d.ts.map +1 -0
- package/dist/src/overlayRect.js +55 -0
- package/dist/src/overlayRect.js.map +1 -0
- package/dist/src/performance.d.ts +1 -3
- package/dist/src/performance.d.ts.map +1 -1
- package/dist/src/performance.js +0 -12
- package/dist/src/performance.js.map +1 -1
- package/dist/src/recording.d.ts +3 -2
- package/dist/src/recording.d.ts.map +1 -1
- package/dist/src/recordingData.d.ts +22 -2
- package/dist/src/recordingData.d.ts.map +1 -1
- package/dist/src/runtimeContext.d.ts +57 -1
- package/dist/src/runtimeContext.d.ts.map +1 -1
- package/dist/src/runtimeContext.js +40 -0
- package/dist/src/runtimeContext.js.map +1 -1
- package/dist/src/screenshot.d.ts +105 -0
- package/dist/src/screenshot.d.ts.map +1 -0
- package/dist/src/screenshot.js +188 -0
- package/dist/src/screenshot.js.map +1 -0
- package/dist/src/stillCapture.d.ts +68 -0
- package/dist/src/stillCapture.d.ts.map +1 -0
- package/dist/src/stillCapture.js +119 -0
- package/dist/src/stillCapture.js.map +1 -0
- package/dist/src/studio.d.ts +8 -11
- package/dist/src/studio.d.ts.map +1 -1
- package/dist/src/studio.js +2 -25
- package/dist/src/studio.js.map +1 -1
- package/dist/src/types.d.ts +125 -15
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/video.d.ts +54 -1
- package/dist/src/video.d.ts.map +1 -1
- package/dist/src/video.js +190 -42
- package/dist/src/video.js.map +1 -1
- package/dist/src/voices.d.ts +22 -9
- package/dist/src/voices.d.ts.map +1 -1
- package/dist/src/voices.js +6 -24
- package/dist/src/voices.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -2
- package/skills/screenci/SKILL.md +37 -15
- package/skills/screenci/references/init.md +3 -1
- package/skills/screenci/references/record.md +8 -3
- package/dist/docs/video-sources/cli.video.d.ts +0 -2
- package/dist/docs/video-sources/cli.video.d.ts.map +0 -1
- package/dist/docs/video-sources/cli.video.js.map +0 -1
- package/dist/docs/video-sources/installation.video.d.ts +0 -2
- package/dist/docs/video-sources/installation.video.d.ts.map +0 -1
- package/dist/docs/video-sources/installation.video.js.map +0 -1
- package/dist/docs/video-sources/landing.video.d.ts +0 -2
- package/dist/docs/video-sources/landing.video.d.ts.map +0 -1
- package/dist/docs/video-sources/landing.video.js.map +0 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { rasterizeHtmlOverlay, rasterizeAnimatedHtmlOverlay, overlayInputHash, } from './htmlRasterizer.js';
|
|
2
|
+
/**
|
|
3
|
+
* Rasterizes the rendered/animated overlays that were deferred during the test,
|
|
4
|
+
* then patches their `assetStart` events with the real path and content hash.
|
|
5
|
+
*
|
|
6
|
+
* Rasterization (a browser screenshot, or a frame capture plus ffmpeg encode)
|
|
7
|
+
* runs here, after the test body has succeeded, instead of inline during the
|
|
8
|
+
* recording. Identical overlays (same resolved markup and render params, hashed
|
|
9
|
+
* by {@link overlayInputHash}) are rasterized once per run: the in-memory map
|
|
10
|
+
* below avoids even a disk-cache lookup and a duplicate `generated/` file, while
|
|
11
|
+
* the rasterizer's own cross-run cache still serves unchanged overlays from a
|
|
12
|
+
* previous run.
|
|
13
|
+
*
|
|
14
|
+
* A no-op when there are no deferred overlays (including the no-op recorder used
|
|
15
|
+
* outside a recording).
|
|
16
|
+
*/
|
|
17
|
+
export async function flushPendingOverlays(recorder) {
|
|
18
|
+
const pending = recorder.getPendingOverlays();
|
|
19
|
+
if (pending.length === 0)
|
|
20
|
+
return;
|
|
21
|
+
const byHash = new Map();
|
|
22
|
+
for (const { event, request } of pending) {
|
|
23
|
+
const key = overlayInputHash(request);
|
|
24
|
+
let resolved = byHash.get(key);
|
|
25
|
+
if (resolved === undefined) {
|
|
26
|
+
if (request.kind === 'image') {
|
|
27
|
+
const result = await rasterizeHtmlOverlay({
|
|
28
|
+
name: request.name,
|
|
29
|
+
html: request.html,
|
|
30
|
+
css: request.css,
|
|
31
|
+
cssResolved: true,
|
|
32
|
+
deviceScaleFactor: request.deviceScaleFactor,
|
|
33
|
+
capturePadding: request.capturePadding,
|
|
34
|
+
});
|
|
35
|
+
resolved = { path: result.path, fileHash: result.fileHash };
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const result = await rasterizeAnimatedHtmlOverlay({
|
|
39
|
+
name: request.name,
|
|
40
|
+
html: request.html,
|
|
41
|
+
durationMs: request.durationMs,
|
|
42
|
+
fps: request.fps,
|
|
43
|
+
css: request.css,
|
|
44
|
+
cssResolved: true,
|
|
45
|
+
deviceScaleFactor: request.deviceScaleFactor,
|
|
46
|
+
capturePadding: request.capturePadding,
|
|
47
|
+
});
|
|
48
|
+
resolved = { path: result.path, fileHash: result.fileHash };
|
|
49
|
+
}
|
|
50
|
+
byHash.set(key, resolved);
|
|
51
|
+
}
|
|
52
|
+
event.path = resolved.path;
|
|
53
|
+
event.fileHash = resolved.fileHash;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=overlayFlush.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlayFlush.js","sourceRoot":"","sources":["../../src/overlayFlush.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAwB;IAExB,MAAM,OAAO,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAA;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAEhC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8C,CAAA;IACpE,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;QACrC,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;oBACxC,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,WAAW,EAAE,IAAI;oBACjB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;oBAC5C,cAAc,EAAE,OAAO,CAAC,cAAc;iBACvC,CAAC,CAAA;gBACF,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAA;YAC7D,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC;oBAChD,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,WAAW,EAAE,IAAI;oBACjB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;oBAC5C,cAAc,EAAE,OAAO,CAAC,cAAc;iBACvC,CAAC,CAAA;gBACF,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAA;YAC7D,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAC3B,CAAC;QACD,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;QAC1B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;IACpC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { Locator } from '@playwright/test';
|
|
2
|
+
/**
|
|
3
|
+
* A locator's on-screen box in CSS pixels of the recording viewport, ready to
|
|
4
|
+
* position an overlay over a live element.
|
|
5
|
+
*
|
|
6
|
+
* The top-level placement fields (`relativeTo`, `x`, `y`, and exactly one of
|
|
7
|
+
* `width`/`height`) spread straight into an overlay config:
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* const rect = await overlayRect(page.locator('#save'))
|
|
11
|
+
* const overlays = createOverlays({
|
|
12
|
+
* ring: (p: { rect: OverlayRect }) => ({ element: <Ring />, ...p.rect }),
|
|
13
|
+
* })
|
|
14
|
+
* await overlays.ring({ rect }).start()
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* The full geometry (both axes) is also available under `pixels`, so a factory
|
|
18
|
+
* can pass it to a component that draws relative to the element (for example a
|
|
19
|
+
* circle around it).
|
|
20
|
+
*/
|
|
21
|
+
export type OverlayRect = {
|
|
22
|
+
/** Reference box for the placement fields. Defaults to `'recording'`. */
|
|
23
|
+
relativeTo: 'screen' | 'recording';
|
|
24
|
+
/** Left edge in CSS px of the recording viewport. */
|
|
25
|
+
x: number;
|
|
26
|
+
/** Top edge in CSS px of the recording viewport. */
|
|
27
|
+
y: number;
|
|
28
|
+
/** Width in CSS px. Present unless `dimension: 'height'` was requested. */
|
|
29
|
+
width?: number;
|
|
30
|
+
/** Height in CSS px. Present only when `dimension: 'height'` was requested. */
|
|
31
|
+
height?: number;
|
|
32
|
+
/**
|
|
33
|
+
* The full box in CSS pixels (viewport-relative), after any `margin` and
|
|
34
|
+
* clamping to the viewport, carrying both axes. Equals the element's
|
|
35
|
+
* `boundingBox()` when no margin is set.
|
|
36
|
+
*/
|
|
37
|
+
pixels: {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
width: number;
|
|
41
|
+
height: number;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export type OverlayRectOptions = {
|
|
45
|
+
/** Reference box recorded on the result. Defaults to `'recording'`. */
|
|
46
|
+
relativeTo?: 'screen' | 'recording';
|
|
47
|
+
/**
|
|
48
|
+
* Which placement dimension to expose at the top level. An overlay placement
|
|
49
|
+
* takes exactly one of width/height (the other follows the aspect ratio), so
|
|
50
|
+
* the result carries only the chosen one. Defaults to `'width'`.
|
|
51
|
+
*/
|
|
52
|
+
dimension?: 'width' | 'height';
|
|
53
|
+
/**
|
|
54
|
+
* Extra space in CSS px added around the element on every side, so the rect
|
|
55
|
+
* surrounds the element rather than sitting exactly on its edges. The rect is
|
|
56
|
+
* clamped to the viewport. Defaults to `0`.
|
|
57
|
+
*/
|
|
58
|
+
margin?: number;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Captures a locator's bounding box in CSS pixels of the recording viewport, so
|
|
62
|
+
* it can position an overlay over the element (and feed the element's geometry
|
|
63
|
+
* into a programmatic overlay's props). `boundingBox()` is already in CSS px, so
|
|
64
|
+
* the box is used directly after applying any `margin` and clamping to the
|
|
65
|
+
* viewport. `relativeTo` is recorded on the result for spreading into a config;
|
|
66
|
+
* `'screen'` is only meaningful when the recording fills the output frame.
|
|
67
|
+
*/
|
|
68
|
+
export declare function overlayRect(locator: Locator, options?: OverlayRectOptions): Promise<OverlayRect>;
|
|
69
|
+
//# sourceMappingURL=overlayRect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlayRect.d.ts","sourceRoot":"","sources":["../../src/overlayRect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,yEAAyE;IACzE,UAAU,EAAE,QAAQ,GAAG,WAAW,CAAA;IAClC,qDAAqD;IACrD,CAAC,EAAE,MAAM,CAAA;IACT,oDAAoD;IACpD,CAAC,EAAE,MAAM,CAAA;IACT,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAChE,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uEAAuE;IACvE,UAAU,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAA;IACnC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAgBD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,CAwCtB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
async function resolveViewportSize(locator) {
|
|
2
|
+
const page = locator.page();
|
|
3
|
+
const viewport = page.viewportSize();
|
|
4
|
+
if (viewport !== null)
|
|
5
|
+
return viewport;
|
|
6
|
+
// Headless edge: no fixed context viewport. Fall back to the live inner size,
|
|
7
|
+
// which equals the recording dimensions the context was created with.
|
|
8
|
+
return page.evaluate(() => ({
|
|
9
|
+
width: window.innerWidth,
|
|
10
|
+
height: window.innerHeight,
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Captures a locator's bounding box in CSS pixels of the recording viewport, so
|
|
15
|
+
* it can position an overlay over the element (and feed the element's geometry
|
|
16
|
+
* into a programmatic overlay's props). `boundingBox()` is already in CSS px, so
|
|
17
|
+
* the box is used directly after applying any `margin` and clamping to the
|
|
18
|
+
* viewport. `relativeTo` is recorded on the result for spreading into a config;
|
|
19
|
+
* `'screen'` is only meaningful when the recording fills the output frame.
|
|
20
|
+
*/
|
|
21
|
+
export async function overlayRect(locator, options = {}) {
|
|
22
|
+
const box = await locator.boundingBox();
|
|
23
|
+
if (box === null) {
|
|
24
|
+
throw new Error('[screenci] overlayRect: the locator has no bounding box (it is not visible or not attached). Wait for it to be visible before calling overlayRect.');
|
|
25
|
+
}
|
|
26
|
+
const viewport = await resolveViewportSize(locator);
|
|
27
|
+
if (viewport.width <= 0 || viewport.height <= 0) {
|
|
28
|
+
throw new Error('[screenci] overlayRect: could not determine the viewport size to normalize against.');
|
|
29
|
+
}
|
|
30
|
+
// Inflate by the margin (CSS px on every side), then clamp to the viewport so
|
|
31
|
+
// the box stays within the recording area even near the edges.
|
|
32
|
+
const margin = options.margin ?? 0;
|
|
33
|
+
const left = Math.max(0, box.x - margin);
|
|
34
|
+
const top = Math.max(0, box.y - margin);
|
|
35
|
+
const right = Math.min(viewport.width, box.x + box.width + margin);
|
|
36
|
+
const bottom = Math.min(viewport.height, box.y + box.height + margin);
|
|
37
|
+
const pixels = {
|
|
38
|
+
x: left,
|
|
39
|
+
y: top,
|
|
40
|
+
width: Math.max(0, right - left),
|
|
41
|
+
height: Math.max(0, bottom - top),
|
|
42
|
+
};
|
|
43
|
+
const relativeTo = options.relativeTo ?? 'recording';
|
|
44
|
+
const dimension = options.dimension ?? 'width';
|
|
45
|
+
return {
|
|
46
|
+
relativeTo,
|
|
47
|
+
x: pixels.x,
|
|
48
|
+
y: pixels.y,
|
|
49
|
+
...(dimension === 'height'
|
|
50
|
+
? { height: pixels.height }
|
|
51
|
+
: { width: pixels.width }),
|
|
52
|
+
pixels,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=overlayRect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlayRect.js","sourceRoot":"","sources":["../../src/overlayRect.ts"],"names":[],"mappings":"AAyDA,KAAK,UAAU,mBAAmB,CAChC,OAAgB;IAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IACpC,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAA;IACtC,8EAA8E;IAC9E,sEAAsE;IACtE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC,UAAU;QACxB,MAAM,EAAE,MAAM,CAAC,WAAW;KAC3B,CAAC,CAAC,CAAA;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAgB,EAChB,UAA8B,EAAE;IAEhC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAA;IACvC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,oJAAoJ,CACrJ,CAAA;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACnD,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,+DAA+D;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAA;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG;QACb,CAAC,EAAE,IAAI;QACP,CAAC,EAAE,GAAG;QACN,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClC,CAAA;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,WAAW,CAAA;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAA;IAE9C,OAAO;QACL,UAAU;QACV,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,GAAG,CAAC,SAAS,KAAK,QAAQ;YACxB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAC3B,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM;KACP,CAAA;AACH,CAAC"}
|
|
@@ -15,14 +15,12 @@
|
|
|
15
15
|
* - The scroll is real captured footage, so it defaults to skipping 0 (every
|
|
16
16
|
* frame) and stays smooth.
|
|
17
17
|
*/
|
|
18
|
-
export type
|
|
19
|
-
export type PerformanceOptions = {
|
|
18
|
+
export type PerformanceOption = {
|
|
20
19
|
/** Output frames to skip between cursor dispatches. 0 = every frame. */
|
|
21
20
|
mouseFrameSkip?: number;
|
|
22
21
|
/** Output frames to skip between scroll dispatches. 0 = every frame. */
|
|
23
22
|
scrollFrameSkip?: number;
|
|
24
23
|
};
|
|
25
|
-
export type PerformanceOption = PerformancePreset | PerformanceOptions;
|
|
26
24
|
export type PerformanceIntervals = {
|
|
27
25
|
mouseMs: number;
|
|
28
26
|
scrollMs: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/performance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,iBAAiB,GAAG
|
|
1
|
+
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/performance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,0DAA0D;AAC1D,eAAO,MAAM,wBAAwB,IAAI,CAAA;AACzC,8EAA8E;AAC9E,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAW1C,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,QAGrC,CAAA;AACD,6EAA6E;AAC7E,eAAO,MAAM,0BAA0B,QAGtC,CAAA;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE,iBAAiB,EAC1B,GAAG,GAAE,MAAoB,GACxB,oBAAoB,CAkBtB"}
|
package/dist/src/performance.js
CHANGED
|
@@ -21,11 +21,6 @@ export const DEFAULT_MOUSE_FRAME_SKIP = 5;
|
|
|
21
21
|
export const DEFAULT_SCROLL_FRAME_SKIP = 0;
|
|
22
22
|
/** Mirrors `DEFAULT_FPS`; kept local to avoid an import cycle. */
|
|
23
23
|
const DEFAULT_FPS = 60;
|
|
24
|
-
const PRESET_FRAME_SKIP = {
|
|
25
|
-
smooth: 0, // every frame
|
|
26
|
-
balanced: 2, // every 3rd frame
|
|
27
|
-
fast: 5, // every 6th frame (~10fps at 60fps)
|
|
28
|
-
};
|
|
29
24
|
function frameSkipToIntervalMs(skip, fps) {
|
|
30
25
|
const frameMs = 1000 / (fps > 0 ? fps : DEFAULT_FPS);
|
|
31
26
|
const safeSkip = Number.isFinite(skip) ? Math.max(0, Math.round(skip)) : 0;
|
|
@@ -46,13 +41,6 @@ export function resolvePerformanceIntervals(option, fps = DEFAULT_FPS) {
|
|
|
46
41
|
scrollMs: frameSkipToIntervalMs(DEFAULT_SCROLL_FRAME_SKIP, fps),
|
|
47
42
|
};
|
|
48
43
|
}
|
|
49
|
-
if (typeof option === 'string') {
|
|
50
|
-
const skip = PRESET_FRAME_SKIP[option];
|
|
51
|
-
return {
|
|
52
|
-
mouseMs: frameSkipToIntervalMs(skip, fps),
|
|
53
|
-
scrollMs: frameSkipToIntervalMs(skip, fps),
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
44
|
return {
|
|
57
45
|
mouseMs: frameSkipToIntervalMs(option.mouseFrameSkip ?? DEFAULT_MOUSE_FRAME_SKIP, fps),
|
|
58
46
|
scrollMs: frameSkipToIntervalMs(option.scrollFrameSkip ?? DEFAULT_SCROLL_FRAME_SKIP, fps),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/performance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/performance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAA;AACzC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAA;AAE1C,kEAAkE;AAClE,MAAM,WAAW,GAAG,EAAE,CAAA;AAEtB,SAAS,qBAAqB,CAAC,IAAY,EAAE,GAAW;IACtD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;AACjC,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAC5D,wBAAwB,EACxB,WAAW,CACZ,CAAA;AACD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAAqB,CAC7D,yBAAyB,EACzB,WAAW,CACZ,CAAA;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAA0B,EAC1B,MAAc,WAAW;IAEzB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,qBAAqB,CAAC,wBAAwB,EAAE,GAAG,CAAC;YAC7D,QAAQ,EAAE,qBAAqB,CAAC,yBAAyB,EAAE,GAAG,CAAC;SAChE,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,qBAAqB,CAC5B,MAAM,CAAC,cAAc,IAAI,wBAAwB,EACjD,GAAG,CACJ;QACD,QAAQ,EAAE,qBAAqB,CAC7B,MAAM,CAAC,eAAe,IAAI,yBAAyB,EACnD,GAAG,CACJ;KACF,CAAA;AACH,CAAC"}
|
package/dist/src/recording.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { RENDER_OPTIONS_DEFAULTS } from './types.js';
|
|
2
|
-
export type { AspectRatio, FPS, Quality, RecordOptions, RenderOptions, ResolvedRenderOptions, } from './types.js';
|
|
3
|
-
export type {
|
|
2
|
+
export type { AspectRatio, FPS, Quality, RecordOptions, RenderOptions, ResolvedRenderOptions, ResolvedScreenshotRenderOptions, ScreenshotOutputFormat, } from './types.js';
|
|
3
|
+
export type { ScreenshotCropRecord, ResolvedCropPadding } from './crop.js';
|
|
4
|
+
export type { RecordingData, RecordingEvent, ElementRect, VideoStartEvent, InputEvent, FocusChangeEvent, MouseMoveEvent, MouseDownEvent, MouseUpEvent, MouseShowEvent, MouseHideEvent, MouseWaitEvent, CueStartEvent, CueEndEvent, VideoCueStartEvent, ImageAssetStartEvent, VideoAssetStartEvent, StudioAssetStartEvent, StudioAudioStartEvent, HideStartEvent, HideEndEvent, SpeedStartEvent, SpeedEndEvent, TimeStartEvent, TimeEndEvent, AutoZoomStartEvent, AutoZoomEndEvent, AssetStartEvent, AssetEndEvent, OverlayPlacement, CueTranslation, VideoCueTranslation, VideoCueTranslationFile, VoiceLanguageMeta, RecordingMetadata, ScreenshotCrop, ScreenshotInfo, } from './events.js';
|
|
4
5
|
//# sourceMappingURL=recording.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recording.d.ts","sourceRoot":"","sources":["../../src/recording.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EACV,WAAW,EACX,GAAG,EACH,OAAO,EACP,aAAa,EACb,aAAa,EACb,qBAAqB,
|
|
1
|
+
{"version":3,"file":"recording.d.ts","sourceRoot":"","sources":["../../src/recording.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EACV,WAAW,EACX,GAAG,EACH,OAAO,EACP,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,YAAY,CAAA;AAEnB,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAE1E,YAAY,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAA"}
|
|
@@ -118,6 +118,12 @@ export type CueStartEvent = {
|
|
|
118
118
|
text?: string;
|
|
119
119
|
cueConfig?: CueConfig;
|
|
120
120
|
translations?: Record<string, CueTranslation>;
|
|
121
|
+
/**
|
|
122
|
+
* Linear gain applied to this cue's narration audio at mix time (`1` is the
|
|
123
|
+
* natural level). A render-time mix property kept out of the translations so it
|
|
124
|
+
* never affects the audio cache key. Omitted plays at unity.
|
|
125
|
+
*/
|
|
126
|
+
volume?: number;
|
|
121
127
|
};
|
|
122
128
|
export type CueEndEvent = {
|
|
123
129
|
type: 'cueEnd';
|
|
@@ -153,6 +159,12 @@ export type VideoCueStartEvent = {
|
|
|
153
159
|
assetPath?: string;
|
|
154
160
|
subtitle?: string;
|
|
155
161
|
translations?: Record<string, VideoCueTranslation>;
|
|
162
|
+
/**
|
|
163
|
+
* Linear gain applied to this cue's narration audio at mix time (`1` is the
|
|
164
|
+
* natural level). A render-time mix property kept out of the translations so it
|
|
165
|
+
* never affects the audio cache key. Omitted plays at unity.
|
|
166
|
+
*/
|
|
167
|
+
volume?: number;
|
|
156
168
|
};
|
|
157
169
|
export type ImageAssetStartEvent = {
|
|
158
170
|
type: 'assetStart';
|
|
@@ -161,7 +173,7 @@ export type ImageAssetStartEvent = {
|
|
|
161
173
|
kind: 'image';
|
|
162
174
|
path: string;
|
|
163
175
|
fileHash?: string;
|
|
164
|
-
durationMs
|
|
176
|
+
durationMs?: number;
|
|
165
177
|
fullScreen: boolean;
|
|
166
178
|
};
|
|
167
179
|
export type VideoAssetStartEvent = {
|
|
@@ -173,10 +185,18 @@ export type VideoAssetStartEvent = {
|
|
|
173
185
|
fileHash?: string;
|
|
174
186
|
audio: number;
|
|
175
187
|
fullScreen: boolean;
|
|
188
|
+
/**
|
|
189
|
+
* Playback-rate multiplier for the overlay video (and its audio). `2` plays
|
|
190
|
+
* it twice as fast; omitted plays at the natural rate. A blocking overlay's
|
|
191
|
+
* frozen window scales with it; a live overlay keeps its window.
|
|
192
|
+
*/
|
|
193
|
+
speed?: number;
|
|
194
|
+
/** Target playback duration (ms); an alternative to {@link speed}. */
|
|
195
|
+
time?: number;
|
|
176
196
|
};
|
|
177
197
|
export type AssetStartEvent = ImageAssetStartEvent | VideoAssetStartEvent;
|
|
178
198
|
/**
|
|
179
|
-
* Asset declared via `
|
|
199
|
+
* Asset declared via `createStudioOverlays` — the file and display options are
|
|
180
200
|
* configured in Studio, so the recording only marks the timeline point.
|
|
181
201
|
*/
|
|
182
202
|
export type StudioAssetStartEvent = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordingData.d.ts","sourceRoot":"","sources":["../../src/recordingData.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"recordingData.d.ts","sourceRoot":"","sources":["../../src/recordingData.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Page } from '@playwright/test';
|
|
2
2
|
import { type IEventRecorder, type ElementRect } from './events.js';
|
|
3
|
-
import type { AutoZoomOptions } from './types.js';
|
|
3
|
+
import type { AutoZoomOptions, RecordOptions, RenderOptions } from './types.js';
|
|
4
|
+
import type { StudioRenderOptionsSentinel } from './studio.js';
|
|
5
|
+
import type { ScreenshotCropRecord } from './crop.js';
|
|
4
6
|
export type CurrentZoomViewport = {
|
|
5
7
|
focusPoint: {
|
|
6
8
|
x: number;
|
|
@@ -37,6 +39,15 @@ export type ActiveCueRun = {
|
|
|
37
39
|
resolveFinished: () => void;
|
|
38
40
|
startedWithExplicitStart: boolean;
|
|
39
41
|
};
|
|
42
|
+
export type ActiveAssetRun = {
|
|
43
|
+
finished: Promise<void>;
|
|
44
|
+
resolveFinished: () => void;
|
|
45
|
+
startedWithExplicitStart: boolean;
|
|
46
|
+
};
|
|
47
|
+
export type ActiveAudioRun = {
|
|
48
|
+
finished: Promise<void>;
|
|
49
|
+
resolveFinished: () => void;
|
|
50
|
+
};
|
|
40
51
|
export type TimelineBlockType = 'hide' | 'speed' | 'time';
|
|
41
52
|
export type TimelineBlockState = {
|
|
42
53
|
type: TimelineBlockType;
|
|
@@ -48,21 +59,57 @@ export type ScreenCIRuntimeContext = {
|
|
|
48
59
|
hideRecorder: IEventRecorder;
|
|
49
60
|
autoZoomRecorder: IEventRecorder;
|
|
50
61
|
assetRecorder: IEventRecorder;
|
|
62
|
+
audioRecorder: IEventRecorder;
|
|
51
63
|
clickRecorder: IEventRecorder;
|
|
52
64
|
page: Page | null;
|
|
53
65
|
testFilePath: string | null;
|
|
66
|
+
/**
|
|
67
|
+
* Per-recording output directory (`.screenci/<title>/`) when recording is
|
|
68
|
+
* active. Generated overlay assets (HTML/React rasterized to PNG) are written
|
|
69
|
+
* here so they are uploaded alongside the recording. Null when not recording.
|
|
70
|
+
*/
|
|
71
|
+
recordingDir: string | null;
|
|
72
|
+
/** Resolved capture options for the active recording, when available. */
|
|
73
|
+
recordOptions: RecordOptions | null;
|
|
74
|
+
/** Base render options for the active recording (drive a still's framing). */
|
|
75
|
+
renderOptions: RenderOptions | StudioRenderOptionsSentinel | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Crop recorded for the current `screenshot()` fixture capture, or null for the
|
|
78
|
+
* full image. Set via the `crop` fixture argument and read by the fixture at
|
|
79
|
+
* capture time. Replaces the previous module-global crop state.
|
|
80
|
+
*/
|
|
81
|
+
crop: ScreenshotCropRecord | null;
|
|
54
82
|
timelineBlocks: TimelineBlockState[];
|
|
55
83
|
cue: {
|
|
56
84
|
activeCueName: string | null;
|
|
57
85
|
activeCueRun: ActiveCueRun | null;
|
|
58
86
|
usedCueNames: Set<string>;
|
|
59
87
|
};
|
|
88
|
+
asset: {
|
|
89
|
+
/**
|
|
90
|
+
* Live overlays driven by `start()`/`end()`, keyed by name. Overlays may
|
|
91
|
+
* overlap (several active at once), so this is a map rather than a single
|
|
92
|
+
* slot. Blocking overlays (`overlays.x(ms)`) never register here.
|
|
93
|
+
*/
|
|
94
|
+
activeRuns: Map<string, ActiveAssetRun>;
|
|
95
|
+
};
|
|
96
|
+
audio: {
|
|
97
|
+
/**
|
|
98
|
+
* Background audio tracks (`createAudio`) that are playing, keyed by name.
|
|
99
|
+
* Tracks are non-exclusive (music plus a sound effect can overlap), so this
|
|
100
|
+
* is a map. A track left open here plays to the end of the video.
|
|
101
|
+
*/
|
|
102
|
+
activeRuns: Map<string, ActiveAudioRun>;
|
|
103
|
+
};
|
|
60
104
|
autoZoom: AutoZoomState;
|
|
61
105
|
};
|
|
62
106
|
export declare function createScreenCIRuntimeContext(overrides?: {
|
|
63
107
|
recorder?: IEventRecorder | null;
|
|
64
108
|
page?: Page | null;
|
|
65
109
|
testFilePath?: string | null;
|
|
110
|
+
recordingDir?: string | null;
|
|
111
|
+
recordOptions?: RecordOptions | null;
|
|
112
|
+
renderOptions?: RenderOptions | StudioRenderOptionsSentinel | undefined;
|
|
66
113
|
}): ScreenCIRuntimeContext;
|
|
67
114
|
export declare function runWithScreenCIRuntimeContext<T>(context: ScreenCIRuntimeContext, fn: () => T): T;
|
|
68
115
|
export declare function getScreenCIRuntimeContext(): ScreenCIRuntimeContext;
|
|
@@ -75,11 +122,20 @@ export declare function setRuntimeAutoZoomRecorder(recorder: IEventRecorder | nu
|
|
|
75
122
|
export declare function getRuntimeAutoZoomRecorder(): IEventRecorder;
|
|
76
123
|
export declare function setRuntimeAssetRecorder(recorder: IEventRecorder | null): void;
|
|
77
124
|
export declare function getRuntimeAssetRecorder(): IEventRecorder;
|
|
125
|
+
export declare function setRuntimeAudioRecorder(recorder: IEventRecorder | null): void;
|
|
126
|
+
export declare function getRuntimeAudioRecorder(): IEventRecorder;
|
|
78
127
|
export declare function setRuntimeClickRecorder(recorder: IEventRecorder | null): void;
|
|
79
128
|
export declare function getRuntimeClickRecorder(): IEventRecorder;
|
|
80
129
|
export declare function setRuntimePage(page: Page | null): void;
|
|
81
130
|
export declare function getRuntimePage(): Page | null;
|
|
131
|
+
export declare function getRuntimeRecordingDir(): string | null;
|
|
132
|
+
export declare function getRuntimeRecordOptions(): RecordOptions | null;
|
|
133
|
+
export declare function getRuntimeRenderOptions(): RenderOptions | StudioRenderOptionsSentinel | undefined;
|
|
134
|
+
export declare function setRuntimeCrop(crop: ScreenshotCropRecord | null): void;
|
|
135
|
+
export declare function getRuntimeCrop(): ScreenshotCropRecord | undefined;
|
|
82
136
|
export declare function resetCueRuntimeState(): void;
|
|
137
|
+
export declare function resetAssetRuntimeState(): void;
|
|
138
|
+
export declare function resetAudioRuntimeState(): void;
|
|
83
139
|
export declare function pushRuntimeTimelineBlock(block: TimelineBlockState): void;
|
|
84
140
|
export declare function popRuntimeTimelineBlock(expectedType: TimelineBlockType): TimelineBlockState;
|
|
85
141
|
export declare function hasRuntimeTimelineBlock(type: TimelineBlockType): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeContext.d.ts","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"runtimeContext.d.ts","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,15 +10,26 @@ export function createScreenCIRuntimeContext(overrides = {}) {
|
|
|
10
10
|
hideRecorder: defaultRecorder,
|
|
11
11
|
autoZoomRecorder: defaultRecorder,
|
|
12
12
|
assetRecorder: defaultRecorder,
|
|
13
|
+
audioRecorder: defaultRecorder,
|
|
13
14
|
clickRecorder: defaultRecorder,
|
|
14
15
|
page: overrides.page ?? null,
|
|
15
16
|
testFilePath: overrides.testFilePath ?? null,
|
|
17
|
+
recordingDir: overrides.recordingDir ?? null,
|
|
18
|
+
recordOptions: overrides.recordOptions ?? null,
|
|
19
|
+
renderOptions: overrides.renderOptions,
|
|
20
|
+
crop: null,
|
|
16
21
|
timelineBlocks: [],
|
|
17
22
|
cue: {
|
|
18
23
|
activeCueName: null,
|
|
19
24
|
activeCueRun: null,
|
|
20
25
|
usedCueNames: new Set(),
|
|
21
26
|
},
|
|
27
|
+
asset: {
|
|
28
|
+
activeRuns: new Map(),
|
|
29
|
+
},
|
|
30
|
+
audio: {
|
|
31
|
+
activeRuns: new Map(),
|
|
32
|
+
},
|
|
22
33
|
autoZoom: {
|
|
23
34
|
insideAutoZoom: false,
|
|
24
35
|
mode: 'idle',
|
|
@@ -62,6 +73,12 @@ export function setRuntimeAssetRecorder(recorder) {
|
|
|
62
73
|
export function getRuntimeAssetRecorder() {
|
|
63
74
|
return getScreenCIRuntimeContext().assetRecorder;
|
|
64
75
|
}
|
|
76
|
+
export function setRuntimeAudioRecorder(recorder) {
|
|
77
|
+
getScreenCIRuntimeContext().audioRecorder = recorder ?? NOOP_EVENT_RECORDER;
|
|
78
|
+
}
|
|
79
|
+
export function getRuntimeAudioRecorder() {
|
|
80
|
+
return getScreenCIRuntimeContext().audioRecorder;
|
|
81
|
+
}
|
|
65
82
|
export function setRuntimeClickRecorder(recorder) {
|
|
66
83
|
getScreenCIRuntimeContext().clickRecorder = recorder ?? NOOP_EVENT_RECORDER;
|
|
67
84
|
}
|
|
@@ -74,12 +91,35 @@ export function setRuntimePage(page) {
|
|
|
74
91
|
export function getRuntimePage() {
|
|
75
92
|
return getScreenCIRuntimeContext().page;
|
|
76
93
|
}
|
|
94
|
+
export function getRuntimeRecordingDir() {
|
|
95
|
+
return getScreenCIRuntimeContext().recordingDir;
|
|
96
|
+
}
|
|
97
|
+
export function getRuntimeRecordOptions() {
|
|
98
|
+
return getScreenCIRuntimeContext().recordOptions;
|
|
99
|
+
}
|
|
100
|
+
export function getRuntimeRenderOptions() {
|
|
101
|
+
return getScreenCIRuntimeContext().renderOptions;
|
|
102
|
+
}
|
|
103
|
+
export function setRuntimeCrop(crop) {
|
|
104
|
+
getScreenCIRuntimeContext().crop = crop;
|
|
105
|
+
}
|
|
106
|
+
export function getRuntimeCrop() {
|
|
107
|
+
return getScreenCIRuntimeContext().crop ?? undefined;
|
|
108
|
+
}
|
|
77
109
|
export function resetCueRuntimeState() {
|
|
78
110
|
const context = getScreenCIRuntimeContext();
|
|
79
111
|
context.cue.activeCueName = null;
|
|
80
112
|
context.cue.activeCueRun = null;
|
|
81
113
|
context.cue.usedCueNames.clear();
|
|
82
114
|
}
|
|
115
|
+
export function resetAssetRuntimeState() {
|
|
116
|
+
const context = getScreenCIRuntimeContext();
|
|
117
|
+
context.asset.activeRuns.clear();
|
|
118
|
+
}
|
|
119
|
+
export function resetAudioRuntimeState() {
|
|
120
|
+
const context = getScreenCIRuntimeContext();
|
|
121
|
+
context.audio.activeRuns.clear();
|
|
122
|
+
}
|
|
83
123
|
export function pushRuntimeTimelineBlock(block) {
|
|
84
124
|
getScreenCIRuntimeContext().timelineBlocks.push(block);
|
|
85
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeContext.js","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EACL,mBAAmB,GAGpB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"runtimeContext.js","sourceRoot":"","sources":["../../src/runtimeContext.ts"],"names":[],"mappings":"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"}
|