screenci 0.0.69 → 0.0.71
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 +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +68 -4
- package/dist/cli.js.map +1 -1
- package/dist/docs/manifest.d.ts +81 -50
- package/dist/docs/manifest.d.ts.map +1 -1
- package/dist/docs/manifest.js +36 -17
- package/dist/docs/manifest.js.map +1 -1
- 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 +41 -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 +19 -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.video.js → studio.screenci.js} +1 -1
- package/dist/docs/video-sources/studio.screenci.js.map +1 -0
- package/dist/docs/videos.d.ts +28 -18
- package/dist/docs/videos.d.ts.map +1 -1
- package/dist/docs/videos.js +14 -5
- package/dist/docs/videos.js.map +1 -1
- 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 +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/src/asset.d.ts +119 -15
- package/dist/src/asset.d.ts.map +1 -1
- package/dist/src/asset.js +310 -124
- package/dist/src/asset.js.map +1 -1
- package/dist/src/audio.d.ts +14 -0
- package/dist/src/audio.d.ts.map +1 -1
- package/dist/src/audio.js +4 -1
- package/dist/src/audio.js.map +1 -1
- 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 +6 -0
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +6 -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 +152 -10
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +61 -3
- package/dist/src/events.js.map +1 -1
- package/dist/src/htmlRasterizer.d.ts +43 -0
- package/dist/src/htmlRasterizer.d.ts.map +1 -1
- package/dist/src/htmlRasterizer.js +32 -10
- package/dist/src/htmlRasterizer.js.map +1 -1
- package/dist/src/init.d.ts.map +1 -1
- package/dist/src/init.js +19 -8
- package/dist/src/init.js.map +1 -1
- 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/recording.d.ts +3 -2
- package/dist/src/recording.d.ts.map +1 -1
- package/dist/src/recordingData.d.ts +20 -0
- package/dist/src/recordingData.d.ts.map +1 -1
- package/dist/src/runtimeContext.d.ts +19 -1
- package/dist/src/runtimeContext.d.ts.map +1 -1
- package/dist/src/runtimeContext.js +15 -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 +100 -8
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/video.d.ts +20 -0
- package/dist/src/video.d.ts.map +1 -1
- package/dist/src/video.js +71 -24
- package/dist/src/video.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/skills/screenci/SKILL.md +10 -10
- package/skills/screenci/references/init.md +1 -1
- package/skills/screenci/references/record.md +2 -2
- 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 +0 -36
- 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
- package/dist/docs/video-sources/studio.video.d.ts +0 -2
- package/dist/docs/video-sources/studio.video.d.ts.map +0 -1
- package/dist/docs/video-sources/studio.video.js.map +0 -1
package/dist/src/asset.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Locator } from '@playwright/test';
|
|
1
2
|
import type { IEventRecorder } from './events.js';
|
|
2
3
|
export { setOverlayCss } from './htmlRasterizer.js';
|
|
3
4
|
export type { OverlayPlacement } from './events.js';
|
|
@@ -14,28 +15,62 @@ export type ReactElementLike = {
|
|
|
14
15
|
key?: string | null;
|
|
15
16
|
};
|
|
16
17
|
/**
|
|
17
|
-
* Display options for an overlay. Placement fields are flat (not nested) and
|
|
18
|
-
*
|
|
19
|
-
* `
|
|
20
|
-
*
|
|
18
|
+
* Display options for an overlay. Placement fields are flat (not nested) and use
|
|
19
|
+
* CSS pixels in the recording viewport (the same space as Playwright's
|
|
20
|
+
* `boundingBox()`, `page.mouse`, and `viewportSize()`), each defaulting
|
|
21
|
+
* independently: `relativeTo: 'recording'`, `x: 0`, `y: 0`. Provide exactly one
|
|
22
|
+
* of `width`/`height` (the other follows the source aspect, or `aspectRatio`).
|
|
23
|
+
* When no placement field is set, the overlay fills the recording area.
|
|
21
24
|
*/
|
|
22
25
|
export type OverlayConfig = {
|
|
23
26
|
/** File path: `.html` (rendered), `.svg`/`.png` (image), or `.mp4` (video). */
|
|
24
27
|
path?: string;
|
|
25
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* A React element, rendered to a transparent PNG. Use this for overlays built
|
|
30
|
+
* in JSX. Provide exactly one source: `path`, `element`, or `html`.
|
|
31
|
+
*/
|
|
26
32
|
element?: ReactElementLike;
|
|
33
|
+
/**
|
|
34
|
+
* An inline HTML fragment, rendered to a transparent PNG. Use this when you
|
|
35
|
+
* want plain HTML without a React dependency or a separate `.html` file. It
|
|
36
|
+
* must be a fragment (for example `'<div class="badge">New</div>'`), never a
|
|
37
|
+
* full document: `<!doctype>`, `<html>`, `<head>`, and `<body>` tags are
|
|
38
|
+
* rejected because screenci wraps the markup in its own document. Provide
|
|
39
|
+
* exactly one source: `path`, `element`, or `html`.
|
|
40
|
+
*/
|
|
41
|
+
html?: string;
|
|
27
42
|
/** Reference box for placement coordinates. Defaults to `'recording'`. */
|
|
28
43
|
relativeTo?: 'screen' | 'recording';
|
|
29
|
-
/** Left edge
|
|
44
|
+
/** Left edge in CSS px of the recording viewport. Defaults to `0`. */
|
|
30
45
|
x?: number;
|
|
31
|
-
/** Top edge
|
|
46
|
+
/** Top edge in CSS px of the recording viewport. Defaults to `0`. */
|
|
32
47
|
y?: number;
|
|
33
|
-
/** Width
|
|
48
|
+
/** Width in CSS px. Provide instead of `height` (exactly one). */
|
|
34
49
|
width?: number;
|
|
35
|
-
/** Height
|
|
50
|
+
/** Height in CSS px. Provide instead of `width` (exactly one). */
|
|
36
51
|
height?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Aspect ratio (`width / height`) used to derive the unset axis from the one
|
|
54
|
+
* you provide, instead of the source's intrinsic aspect. Optional.
|
|
55
|
+
*/
|
|
56
|
+
aspectRatio?: number;
|
|
37
57
|
/** Fill the whole output frame. Overrides x/y/width/height. */
|
|
38
58
|
fullScreen?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Position the overlay over a live element, captured at recording time from
|
|
61
|
+
* the locator's bounding box. The overlay is sized to that box (plus
|
|
62
|
+
* {@link margin}) and fills it, so it frames the element exactly. Overrides
|
|
63
|
+
* `x`/`y`/`width`/`height`/`relativeTo`/`fullScreen` (placement is always
|
|
64
|
+
* recording-relative). HTML files, inline `html`, and React elements only;
|
|
65
|
+
* your content should fill its box (for example `width:100%;height:100%`).
|
|
66
|
+
*/
|
|
67
|
+
over?: Locator;
|
|
68
|
+
/**
|
|
69
|
+
* Extra space (CSS px) added around the {@link over} element on every side,
|
|
70
|
+
* so the overlay surrounds it rather than sitting exactly on its edges. Only
|
|
71
|
+
* valid together with `over`.
|
|
72
|
+
*/
|
|
73
|
+
margin?: number;
|
|
39
74
|
/**
|
|
40
75
|
* Visible length for the blocking call form (`await overlays.logo(1200)`).
|
|
41
76
|
* Omit when driving with `start()`/`end()`. Image/HTML/React overlays only.
|
|
@@ -73,6 +108,23 @@ export type OverlayConfig = {
|
|
|
73
108
|
* {@link MAX_AUDIO_LEVEL}.
|
|
74
109
|
*/
|
|
75
110
|
audio?: number;
|
|
111
|
+
/**
|
|
112
|
+
* Playback-rate multiplier for `.mp4` overlays. `2` plays the clip (and its
|
|
113
|
+
* audio) twice as fast, `0.5` at half speed; `1` (the default) is the natural
|
|
114
|
+
* rate. Works like {@link speed} for a recording. For a blocking overlay
|
|
115
|
+
* (`await overlays.clip()`) this also shortens or lengthens the window it
|
|
116
|
+
* holds, so later content shifts; a live overlay (`start()`/`end()`) keeps
|
|
117
|
+
* its window and just plays the source faster/slower inside it. Mutually
|
|
118
|
+
* exclusive with {@link time}. Video overlays only.
|
|
119
|
+
*/
|
|
120
|
+
speed?: number;
|
|
121
|
+
/**
|
|
122
|
+
* Target playback duration (ms) for a `.mp4` overlay, an alternative to
|
|
123
|
+
* {@link speed}: the clip is sped up or slowed down so its source plays over
|
|
124
|
+
* exactly this long. Works like {@link time} for a recording. Mutually
|
|
125
|
+
* exclusive with {@link speed}. Video overlays only.
|
|
126
|
+
*/
|
|
127
|
+
time?: number;
|
|
76
128
|
};
|
|
77
129
|
/**
|
|
78
130
|
* Upper bound for an audio level (linear gain). `4` is +12 dB, plenty of
|
|
@@ -87,6 +139,29 @@ export declare const MAX_AUDIO_LEVEL = 4;
|
|
|
87
139
|
* - an {@link OverlayConfig} object.
|
|
88
140
|
*/
|
|
89
141
|
export type OverlayInput = string | ReactElementLike | OverlayConfig;
|
|
142
|
+
/**
|
|
143
|
+
* A factory that builds an {@link OverlayConfig} from caller-supplied props.
|
|
144
|
+
* Use this to make an overlay programmatic: the returned config (its content and
|
|
145
|
+
* its placement) can depend on values only known at runtime, for example a
|
|
146
|
+
* locator's position captured with {@link overlayRect}. Both the `element`/`html`
|
|
147
|
+
* content and the placement may vary per call.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```tsx
|
|
151
|
+
* const overlays = createOverlays({
|
|
152
|
+
* note: (p: { text: string }) => ({ html: `<div class="note">${p.text}</div>` }),
|
|
153
|
+
* })
|
|
154
|
+
* await overlays.note({ text: 'Saved' })(1200)
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
export type OverlayConfigFactory<P = unknown> = (props: P) => OverlayConfig;
|
|
158
|
+
/**
|
|
159
|
+
* A value accepted by {@link createOverlays}: a static input or a config
|
|
160
|
+
* factory. The factory arm uses a `never` parameter so a factory with any
|
|
161
|
+
* concrete props type is assignable (function parameters are contravariant);
|
|
162
|
+
* {@link OverlayControllerFor} then recovers the real props type per key.
|
|
163
|
+
*/
|
|
164
|
+
export type OverlayInputOrFactory = OverlayInput | ((props: never) => OverlayConfig);
|
|
90
165
|
export declare function setAssetSleepFn(fn: (ms: number) => void): void;
|
|
91
166
|
export declare function setActiveAssetRecorder(recorder: IEventRecorder | null): void;
|
|
92
167
|
export declare function resetRegisteredAssetPaths(): void;
|
|
@@ -127,28 +202,40 @@ export type OverlayController = {
|
|
|
127
202
|
start(): Promise<void>;
|
|
128
203
|
end(): Promise<void>;
|
|
129
204
|
};
|
|
205
|
+
/**
|
|
206
|
+
* The controller type for one {@link createOverlays} value: a static input
|
|
207
|
+
* (string/element/config) yields a plain {@link OverlayController}; a config
|
|
208
|
+
* factory yields a `(props) => OverlayController` so props are passed at the
|
|
209
|
+
* call site. A static input is never callable, so it never matches the factory
|
|
210
|
+
* arm: existing static maps keep exactly today's controller type.
|
|
211
|
+
*/
|
|
212
|
+
export type OverlayControllerFor<V> = V extends (props: infer P) => OverlayConfig ? (props: P) => OverlayController : OverlayController;
|
|
130
213
|
/** Typed overlay controllers keyed by the names passed to {@link createOverlays}. */
|
|
131
|
-
export type Overlays<T extends Record<string,
|
|
132
|
-
[K in keyof T]:
|
|
214
|
+
export type Overlays<T extends Record<string, OverlayInputOrFactory>> = {
|
|
215
|
+
[K in keyof T]: OverlayControllerFor<T[K]>;
|
|
133
216
|
};
|
|
134
217
|
/**
|
|
135
218
|
* Creates a set of typed overlay controllers, one per key in the map. Each value
|
|
136
219
|
* is a file path string, a React element, or an {@link OverlayConfig} object.
|
|
220
|
+
* A config can draw its content from exactly one source: a file `path`, a React
|
|
221
|
+
* `element`, or an inline `html` fragment.
|
|
137
222
|
*
|
|
138
223
|
* Calling a controller shows the overlay in the recording timeline. Image
|
|
139
224
|
* (`.svg`/`.png`), HTML, and React overlays need a `durationMs` (in the config
|
|
140
225
|
* or passed to the blocking call) unless driven with `start()`/`end()`; `.mp4`
|
|
141
226
|
* overlays use their natural duration and default `audio` to `1` (natural level).
|
|
142
227
|
*
|
|
143
|
-
* Placement defaults to the full recording area (`relativeTo: 'recording'
|
|
144
|
-
*
|
|
228
|
+
* Placement defaults to the full recording area (`relativeTo: 'recording'`);
|
|
229
|
+
* override any field independently. Coordinates are CSS px of the recording
|
|
230
|
+
* viewport.
|
|
145
231
|
*
|
|
146
232
|
* @example
|
|
147
233
|
* ```tsx
|
|
148
234
|
* const overlays = createOverlays({
|
|
149
235
|
* hint: 'callout.html', // HTML file
|
|
150
236
|
* badge: <Badge label="New" />, // React element
|
|
151
|
-
*
|
|
237
|
+
* note: { html: '<div class="note">Tip</div>', x: 1340, y: 110, width: 380 },
|
|
238
|
+
* logo: { path: 'logo.png', x: 96, y: 96, width: 240 },
|
|
152
239
|
* intro: { path: 'intro.mp4', fullScreen: true },
|
|
153
240
|
* })
|
|
154
241
|
*
|
|
@@ -158,8 +245,14 @@ export type Overlays<T extends Record<string, OverlayInput>> = {
|
|
|
158
245
|
* await overlays.logo(1200)
|
|
159
246
|
* })
|
|
160
247
|
* ```
|
|
248
|
+
*
|
|
249
|
+
* A value can also be an {@link OverlayConfigFactory} `(props) => OverlayConfig`,
|
|
250
|
+
* making the overlay programmatic. Calling `overlays.name(props)` builds and
|
|
251
|
+
* returns a controller you then drive with `(durationMs)`, `start()`, or
|
|
252
|
+
* `end()`. The factory runs (and its config is validated) on each call, so
|
|
253
|
+
* content and placement can depend on runtime values.
|
|
161
254
|
*/
|
|
162
|
-
export declare function createOverlays<const T extends Record<string,
|
|
255
|
+
export declare function createOverlays<const T extends Record<string, OverlayInputOrFactory>>(overlays: T): Overlays<T>;
|
|
163
256
|
/**
|
|
164
257
|
* Creates typed overlay controllers whose files and display options are
|
|
165
258
|
* configured on the ScreenCI Studio page instead of in code. Business tier
|
|
@@ -186,4 +279,15 @@ export declare function createOverlays<const T extends Record<string, OverlayInp
|
|
|
186
279
|
* ```
|
|
187
280
|
*/
|
|
188
281
|
export declare function createStudioOverlays<const K extends readonly [string, ...string[]]>(...keys: K): Record<K[number], OverlayController>;
|
|
282
|
+
/**
|
|
283
|
+
* Upper bound for a playback-speed multiplier. `16` is already an extreme rate;
|
|
284
|
+
* the cap guards against accidental runaway values producing degenerate output.
|
|
285
|
+
*/
|
|
286
|
+
export declare const MAX_SPEED = 16;
|
|
287
|
+
/**
|
|
288
|
+
* Validates a `speed`/`time` pair shared by `.mp4` overlays and audio tracks.
|
|
289
|
+
* `speed` must be a finite multiplier in `(0, MAX_SPEED]`; `time` must be a
|
|
290
|
+
* finite duration greater than 0 (ms). They are mutually exclusive.
|
|
291
|
+
*/
|
|
292
|
+
export declare function validateSpeedTime(label: string, speed: number | undefined, time: number | undefined): void;
|
|
189
293
|
//# sourceMappingURL=asset.d.ts.map
|
package/dist/src/asset.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../src/asset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../src/asset.ts"],"names":[],"mappings":"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"}
|