screenci 0.0.70 → 0.0.72
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 +13 -13
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +184 -5
- package/dist/cli.js.map +1 -1
- package/dist/docs/manifest.d.ts +34 -34
- package/dist/docs/manifest.d.ts.map +1 -1
- package/dist/docs/manifest.js +20 -12
- package/dist/docs/manifest.js.map +1 -1
- package/dist/docs/video-sources/installation.screenci.js +13 -12
- package/dist/docs/video-sources/installation.screenci.js.map +1 -1
- package/dist/docs/video-sources/landing.screenci.js +16 -9
- package/dist/docs/video-sources/landing.screenci.js.map +1 -1
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js +14 -26
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -1
- package/dist/docs/video-sources/locator-highlight-still.screenci.js +5 -10
- package/dist/docs/video-sources/locator-highlight-still.screenci.js.map +1 -1
- package/dist/docs/video-sources/product-pitch.screenci.js +97 -32
- package/dist/docs/video-sources/product-pitch.screenci.js.map +1 -1
- package/dist/docs/video-sources/public-urls.screenci.js +16 -9
- package/dist/docs/video-sources/public-urls.screenci.js.map +1 -1
- package/dist/docs/video-sources/studio.screenci.js +42 -27
- package/dist/docs/video-sources/studio.screenci.js.map +1 -1
- package/dist/docs/videos.d.ts +4 -15
- package/dist/docs/videos.d.ts.map +1 -1
- package/dist/docs/videos.js +6 -22
- package/dist/docs/videos.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/src/asset.d.ts +8 -23
- package/dist/src/asset.d.ts.map +1 -1
- package/dist/src/asset.js +10 -32
- package/dist/src/asset.js.map +1 -1
- package/dist/src/audio.d.ts +6 -24
- package/dist/src/audio.d.ts.map +1 -1
- package/dist/src/audio.js +10 -35
- package/dist/src/audio.js.map +1 -1
- package/dist/src/builder.d.ts +214 -0
- package/dist/src/builder.d.ts.map +1 -0
- package/dist/src/builder.js +212 -0
- package/dist/src/builder.js.map +1 -0
- package/dist/src/cue.d.ts +40 -123
- package/dist/src/cue.d.ts.map +1 -1
- package/dist/src/cue.js +190 -30
- package/dist/src/cue.js.map +1 -1
- package/dist/src/events.d.ts +80 -15
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +72 -6
- package/dist/src/events.js.map +1 -1
- package/dist/src/init.d.ts.map +1 -1
- package/dist/src/init.js +26 -14
- package/dist/src/init.js.map +1 -1
- package/dist/src/locales.d.ts +19 -0
- package/dist/src/locales.d.ts.map +1 -0
- package/dist/src/locales.js +60 -0
- package/dist/src/locales.js.map +1 -0
- package/dist/src/localize.d.ts +135 -0
- package/dist/src/localize.d.ts.map +1 -0
- package/dist/src/localize.js +195 -0
- package/dist/src/localize.js.map +1 -0
- package/dist/src/localizeRuntime.d.ts +53 -0
- package/dist/src/localizeRuntime.d.ts.map +1 -0
- package/dist/src/localizeRuntime.js +79 -0
- package/dist/src/localizeRuntime.js.map +1 -0
- package/dist/src/recordingData.d.ts +5 -4
- package/dist/src/recordingData.d.ts.map +1 -1
- package/dist/src/runtimeContext.d.ts +3 -4
- package/dist/src/runtimeContext.d.ts.map +1 -1
- package/dist/src/runtimeContext.js.map +1 -1
- package/dist/src/runtimeMode.d.ts +47 -0
- package/dist/src/runtimeMode.d.ts.map +1 -1
- package/dist/src/runtimeMode.js +124 -0
- package/dist/src/runtimeMode.js.map +1 -1
- package/dist/src/screenshot.d.ts +56 -2
- package/dist/src/screenshot.d.ts.map +1 -1
- package/dist/src/screenshot.js +47 -10
- package/dist/src/screenshot.js.map +1 -1
- package/dist/src/stillCapture.d.ts +2 -3
- package/dist/src/stillCapture.d.ts.map +1 -1
- package/dist/src/stillCapture.js.map +1 -1
- package/dist/src/studio.d.ts +55 -22
- package/dist/src/studio.d.ts.map +1 -1
- package/dist/src/studio.js +38 -12
- package/dist/src/studio.js.map +1 -1
- package/dist/src/types.d.ts +18 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/video.d.ts +149 -13
- package/dist/src/video.d.ts.map +1 -1
- package/dist/src/video.js +91 -24
- package/dist/src/video.js.map +1 -1
- package/dist/src/voiceConfig.d.ts +110 -0
- package/dist/src/voiceConfig.d.ts.map +1 -0
- package/dist/src/voiceConfig.js +2 -0
- package/dist/src/voiceConfig.js.map +1 -0
- package/dist/src/voices.d.ts +27 -23
- package/dist/src/voices.d.ts.map +1 -1
- package/dist/src/voices.js +7 -4
- package/dist/src/voices.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/skills/screenci/SKILL.md +39 -30
- package/dist/docs/video-sources/cli.screenci.d.ts +0 -2
- package/dist/docs/video-sources/cli.screenci.d.ts.map +0 -1
- package/dist/docs/video-sources/cli.screenci.js +0 -36
- package/dist/docs/video-sources/cli.screenci.js.map +0 -1
package/dist/docs/manifest.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Source of truth for ScreenCI docs information architecture.
|
|
3
3
|
* Slugs are web-facing and stable even if source filenames change.
|
|
4
4
|
*/
|
|
5
|
+
import { getDocVideo, hasPublicId } from './videos';
|
|
5
6
|
export const docsManifest = [
|
|
6
7
|
{
|
|
7
8
|
source: 'overview.mdx',
|
|
@@ -23,28 +24,28 @@ export const docsManifest = [
|
|
|
23
24
|
title: 'Agent Integration',
|
|
24
25
|
description: 'The recommended path: point a coding agent at the integration brief so it scaffolds ScreenCI, authors a video for your flow, and records it.',
|
|
25
26
|
prev: 'docs',
|
|
26
|
-
next: 'docs/
|
|
27
|
+
next: 'docs/manual-setup',
|
|
27
28
|
},
|
|
28
29
|
{
|
|
29
30
|
source: 'manual-setup.mdx',
|
|
30
|
-
slug: 'docs/
|
|
31
|
+
slug: 'docs/manual-setup',
|
|
31
32
|
section: 'Getting Started',
|
|
32
33
|
order: 3,
|
|
33
34
|
navLabel: 'Manual setup & first video',
|
|
34
35
|
title: 'Manual Setup & First Video',
|
|
35
36
|
description: 'Wire ScreenCI up by hand: initialize a project, run the starter video locally, and record your first final video.',
|
|
36
37
|
prev: 'docs/agent-integration',
|
|
37
|
-
next: 'docs/
|
|
38
|
+
next: 'docs/video-script-basics',
|
|
38
39
|
},
|
|
39
40
|
{
|
|
40
|
-
source: '
|
|
41
|
-
slug: 'docs/
|
|
41
|
+
source: 'video-script-basics.md',
|
|
42
|
+
slug: 'docs/video-script-basics',
|
|
42
43
|
section: 'Getting Started',
|
|
43
44
|
order: 4,
|
|
44
45
|
navLabel: 'Video script basics',
|
|
45
46
|
title: 'Video Script Basics',
|
|
46
47
|
description: 'Author .screenci.ts files with Playwright-like APIs, ScreenCI narration and camera helpers, and workflow-aware pacing.',
|
|
47
|
-
prev: 'docs/
|
|
48
|
+
prev: 'docs/manual-setup',
|
|
48
49
|
next: 'docs/ci-setup',
|
|
49
50
|
},
|
|
50
51
|
{
|
|
@@ -55,7 +56,7 @@ export const docsManifest = [
|
|
|
55
56
|
navLabel: 'CI setup',
|
|
56
57
|
title: 'CI Setup',
|
|
57
58
|
description: 'Understand the generated GitHub Actions workflow, required secrets, and how to keep CI recordings deterministic.',
|
|
58
|
-
prev: 'docs/
|
|
59
|
+
prev: 'docs/video-script-basics',
|
|
59
60
|
next: 'docs/guides/page-instrumentation',
|
|
60
61
|
},
|
|
61
62
|
{
|
|
@@ -89,11 +90,11 @@ export const docsManifest = [
|
|
|
89
90
|
title: 'Camera and Zooming',
|
|
90
91
|
description: 'Choose between autoZoom and manual framing, and use camera direction to guide attention without making the video frantic.',
|
|
91
92
|
prev: 'docs/guides/narration-and-localization',
|
|
92
|
-
next: 'docs/guides/
|
|
93
|
+
next: 'docs/guides/overlays',
|
|
93
94
|
},
|
|
94
95
|
{
|
|
95
96
|
source: 'overlays.md',
|
|
96
|
-
slug: 'docs/guides/
|
|
97
|
+
slug: 'docs/guides/overlays',
|
|
97
98
|
section: 'Guides',
|
|
98
99
|
order: 4,
|
|
99
100
|
navLabel: 'Overlays',
|
|
@@ -110,7 +111,7 @@ export const docsManifest = [
|
|
|
110
111
|
navLabel: 'Screenshots',
|
|
111
112
|
title: 'Screenshots',
|
|
112
113
|
description: 'Capture branded still screenshots with the screenshot() fixture: crop to a component, set quality and dark mode, and frame the shot on a background with overlays.',
|
|
113
|
-
prev: 'docs/guides/
|
|
114
|
+
prev: 'docs/guides/overlays',
|
|
114
115
|
next: 'docs/guides/studio',
|
|
115
116
|
},
|
|
116
117
|
{
|
|
@@ -120,7 +121,7 @@ export const docsManifest = [
|
|
|
120
121
|
order: 6,
|
|
121
122
|
navLabel: 'Studio',
|
|
122
123
|
title: 'Studio',
|
|
123
|
-
description: 'Remix render options, narration text, voices, and overlays from the web app, or manage them entirely in Studio with
|
|
124
|
+
description: 'Remix render options, narration text, voices, and overlays from the web app, or manage them entirely in Studio with the video.studio({...}) declaration. Business tier.',
|
|
124
125
|
prev: 'docs/guides/screenshots',
|
|
125
126
|
next: 'docs/guides/public-urls-and-embeds',
|
|
126
127
|
},
|
|
@@ -186,7 +187,14 @@ export function getDocBySlug(slug) {
|
|
|
186
187
|
}
|
|
187
188
|
export function getOutputPathFromSlug(slug) {
|
|
188
189
|
const entry = getDocBySlug(slug);
|
|
189
|
-
const
|
|
190
|
+
const video = getDocVideo(slug);
|
|
191
|
+
// A page that embeds a published video or screenshot injects a React
|
|
192
|
+
// component (DocVideoPlayer / DocScreenshot). Astro only renders component
|
|
193
|
+
// imports and JSX in .mdx, so such a page must be emitted as .mdx even when
|
|
194
|
+
// its source is plain .md. Without this, the embed silently renders as inert
|
|
195
|
+
// text. Pages without a published embed stay .md (matching their source).
|
|
196
|
+
const embedsComponent = video !== null && hasPublicId(video);
|
|
197
|
+
const extension = entry?.source.endsWith('.mdx') || embedsComponent ? '.mdx' : '.md';
|
|
190
198
|
if (slug === 'docs')
|
|
191
199
|
return `index${extension}`;
|
|
192
200
|
return `${slug.replace(/^docs\//, '')}${extension}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../docs/manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;QACE,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,uJAAuJ;QACzJ,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,wBAAwB;KAC/B;IACD;QACE,MAAM,EAAE,uBAAuB;QAC/B,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,mBAAmB;QAC7B,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,8IAA8I;QAChJ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,mBAAmB;KAC1B;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,4BAA4B;QACtC,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,mHAAmH;QACrH,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,0BAA0B;KACjC;IACD;QACE,MAAM,EAAE,wBAAwB;QAChC,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,qBAAqB;QAC/B,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,wHAAwH;QAC1H,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,eAAe;KACtB;IACD;QACE,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,kHAAkH;QACpH,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,kCAAkC;KACzC;IACD;QACE,MAAM,EAAE,yBAAyB;QACjC,IAAI,EAAE,kCAAkC;QACxC,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,sBAAsB;QAChC,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,6IAA6I;QAC/I,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,wCAAwC;KAC/C;IACD;QACE,MAAM,EAAE,+BAA+B;QACvC,IAAI,EAAE,wCAAwC;QAC9C,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,4BAA4B;QACtC,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,0HAA0H;QAC5H,IAAI,EAAE,kCAAkC;QACxC,IAAI,EAAE,gCAAgC;KACvC;IACD;QACE,MAAM,EAAE,uBAAuB;QAC/B,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,oBAAoB;QAC9B,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,2HAA2H;QAC7H,IAAI,EAAE,wCAAwC;QAC9C,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../docs/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { autoZoom,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
// Localized narration cues by language.
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { autoZoom, hide, video, voices } from 'screenci';
|
|
2
|
+
// The default voice (how narration is spoken) for every language.
|
|
3
|
+
video.use({ renderOptions: { narration: { voice: { name: voices.Sophie } } } });
|
|
4
|
+
video.localize({
|
|
5
|
+
// Localized narration cues by language. The fixture exposes them as markers.
|
|
6
|
+
narration: {
|
|
7
|
+
en: {
|
|
8
|
+
docs: 'Here is where to find ScreenCI [pronounce: screen see eye] docs.',
|
|
9
|
+
},
|
|
10
|
+
es: {
|
|
11
|
+
docs: 'Aqui es donde encontrar la documentacion de ScreenCI [pronounce: screen see eye].',
|
|
12
|
+
},
|
|
8
13
|
},
|
|
9
|
-
|
|
10
|
-
docs: 'Aqui es donde encontrar la documentacion de ScreenCI [pronounce: screen see eye].',
|
|
11
|
-
},
|
|
12
|
-
});
|
|
13
|
-
video('How to find docs', async ({ page }) => {
|
|
14
|
+
})('How to find docs', async ({ page, narration }) => {
|
|
14
15
|
// Run setup without showing these actions in the final recording.
|
|
15
16
|
await hide(async () => {
|
|
16
17
|
await page.goto('https://screenci.com/');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installation.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/installation.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"installation.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/installation.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAExD,kEAAkE;AAClE,KAAK,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AAE/E,KAAK,CAAC,QAAQ,CAAC;IACb,6EAA6E;IAC7E,SAAS,EAAE;QACT,EAAE,EAAE;YACF,IAAI,EAAE,kEAAkE;SACzE;QACD,EAAE,EAAE;YACF,IAAI,EAAE,mFAAmF;SAC1F;KACF;CACF,CAAC,CAAC,kBAAkB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;IACnD,kEAAkE;IAClE,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACxC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,kDAAkD;IAClD,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;IAEtB,qEAAqE;IACrE,MAAM,QAAQ,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;IACtE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
import { autoZoom,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
es: {
|
|
8
|
-
docs: 'Aqui es donde encontrar la documentacion de ScreenCI [pronounce: screen see eye].',
|
|
1
|
+
import { autoZoom, hide, video, voices } from 'screenci';
|
|
2
|
+
video.use({
|
|
3
|
+
renderOptions: {
|
|
4
|
+
narration: {
|
|
5
|
+
voice: { name: voices.Sophie, style: 'Friendly product guide' },
|
|
6
|
+
},
|
|
9
7
|
},
|
|
10
8
|
});
|
|
11
|
-
video(
|
|
9
|
+
video.localize({
|
|
10
|
+
narration: {
|
|
11
|
+
en: {
|
|
12
|
+
docs: 'Here is where to find ScreenCI [pronounce: screen see eye] docs.',
|
|
13
|
+
},
|
|
14
|
+
es: {
|
|
15
|
+
docs: 'Aqui es donde encontrar la documentacion de ScreenCI [pronounce: screen see eye].',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
})('Landing light', async ({ page, narration }) => {
|
|
12
19
|
await hide(async () => {
|
|
13
20
|
await page.goto('https://screenci.com/');
|
|
14
21
|
await page.waitForLoadState('networkidle');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"landing.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/landing.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"landing.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/landing.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAExD,KAAK,CAAC,GAAG,CAAC;IACR,aAAa,EAAE;QACb,SAAS,EAAE;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE;SAChE;KACF;CACF,CAAC,CAAA;AAEF,KAAK,CAAC,QAAQ,CAAC;IACb,SAAS,EAAE;QACT,EAAE,EAAE;YACF,IAAI,EAAE,kEAAkE;SACzE;QACD,EAAE,EAAE;YACF,IAAI,EAAE,mFAAmF;SAC1F;KACF;CACF,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;IAChD,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACxC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;QAE1C,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACvB,QAAQ,CAAC,MAAM,GAAG,+BAA+B,CAAA;YACjD,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;YAChD,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACjD,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3D,IAAI,CAAC,CAAC,OAAO,YAAY,gBAAgB,CAAC,EAAE,CAAC;gBAC3C,OAAM;YACR,CAAC;YAED,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,OAAO,CAAC,WAAW,GAAG,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;IAEtB,MAAM,QAAQ,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;IACtE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,40 +1,29 @@
|
|
|
1
1
|
import { createOverlays, video } from 'screenci';
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
2
|
+
// Animates the same ring as the Screenshots still: it pulses while the page is
|
|
3
|
+
// driven underneath, then closes before the recording stops. An opacity-only
|
|
4
|
+
// pulse keeps the ring landed exactly on the element (no scale, so no capture
|
|
5
|
+
// padding is needed).
|
|
6
6
|
const overlays = createOverlays({
|
|
7
|
-
// Sized to the element's box (plus the margin); the ring fills it and pulses
|
|
8
|
-
// via a CSS animation. capturePadding gives the scale-up room so it is not
|
|
9
|
-
// clipped at the box edge.
|
|
10
7
|
ring: (target) => ({
|
|
11
|
-
html: '<div class="
|
|
8
|
+
html: '<div class="ring"></div>',
|
|
12
9
|
css: `
|
|
13
|
-
.
|
|
10
|
+
.ring {
|
|
14
11
|
width: 100%;
|
|
15
12
|
height: 100%;
|
|
13
|
+
box-sizing: border-box;
|
|
16
14
|
border: 4px solid #ec4899;
|
|
17
15
|
border-radius: 14px;
|
|
18
|
-
|
|
19
|
-
animation: screenci-ring-pulse 1.2s ease-in-out infinite;
|
|
16
|
+
animation: ring-pulse 2s ease-in-out infinite;
|
|
20
17
|
}
|
|
21
|
-
@keyframes
|
|
22
|
-
0%,
|
|
23
|
-
|
|
24
|
-
opacity: 1;
|
|
25
|
-
transform: scale(1);
|
|
26
|
-
}
|
|
27
|
-
50% {
|
|
28
|
-
opacity: 0.45;
|
|
29
|
-
transform: scale(1.04);
|
|
30
|
-
}
|
|
18
|
+
@keyframes ring-pulse {
|
|
19
|
+
0%, 100% { opacity: 1; }
|
|
20
|
+
50% { opacity: 0.3; }
|
|
31
21
|
}
|
|
32
22
|
`,
|
|
33
23
|
over: target,
|
|
34
|
-
margin:
|
|
24
|
+
margin: 6,
|
|
35
25
|
animate: true,
|
|
36
26
|
durationMs: 2400,
|
|
37
|
-
capturePadding: 24,
|
|
38
27
|
}),
|
|
39
28
|
});
|
|
40
29
|
video('Locator highlight (animated)', async ({ page }) => {
|
|
@@ -42,9 +31,8 @@ video('Locator highlight (animated)', async ({ page }) => {
|
|
|
42
31
|
await page.waitForLoadState('networkidle');
|
|
43
32
|
const cta = page.getByRole('link', { name: 'View Documentation' });
|
|
44
33
|
await cta.scrollIntoViewIfNeeded();
|
|
45
|
-
// The ring pulses while the page stays live
|
|
46
|
-
//
|
|
47
|
-
// locator appears once.
|
|
34
|
+
// The ring pulses while the page stays live. Every start() must be ended
|
|
35
|
+
// before the video function returns.
|
|
48
36
|
const ring = overlays.ring(cta);
|
|
49
37
|
await ring.start();
|
|
50
38
|
await cta.hover();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator-highlight-animated.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/locator-highlight-animated.screenci.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhD
|
|
1
|
+
{"version":3,"file":"locator-highlight-animated.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/locator-highlight-animated.screenci.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhD,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,sBAAsB;AACtB,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,IAAI,EAAE,CAAC,MAAe,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,0BAA0B;QAChC,GAAG,EAAE;;;;;;;;;;;;;KAaJ;QACD,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;KACjB,CAAC;CACH,CAAC,CAAA;AAEF,KAAK,CAAC,8BAA8B,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACvD,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IACxC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAE1C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAA;IAClE,MAAM,GAAG,CAAC,sBAAsB,EAAE,CAAA;IAElC,yEAAyE;IACzE,qCAAqC;IACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IAClB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAA;IACjB,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;AAClB,CAAC,CAAC,CAAA"}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { createOverlays, screenshot } from 'screenci';
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
// it, then captures a branded still. The Overlays guide animates the same
|
|
5
|
-
// example (locator-highlight-animated.screenci.ts).
|
|
2
|
+
// Rings a single element on the marketing site, then captures a branded still.
|
|
3
|
+
// The Overlays guide animates the same example.
|
|
6
4
|
const overlays = createOverlays({
|
|
7
|
-
// The overlay is sized to the element's box (plus the margin) and the ring
|
|
8
|
-
// fills it, so it lands exactly around the locator with breathing room.
|
|
9
5
|
ring: (target) => ({
|
|
10
|
-
html: '<div style="width:100%;height:100%;border:4px solid #ec4899;border-radius:14px
|
|
6
|
+
html: '<div style="width:100%;height:100%;box-sizing:border-box;border:4px solid #ec4899;border-radius:14px"></div>',
|
|
11
7
|
over: target,
|
|
12
|
-
margin:
|
|
8
|
+
margin: 6,
|
|
13
9
|
}),
|
|
14
10
|
});
|
|
15
11
|
screenshot('Locator highlight', async ({ page }) => {
|
|
@@ -17,8 +13,7 @@ screenshot('Locator highlight', async ({ page }) => {
|
|
|
17
13
|
await page.waitForLoadState('networkidle');
|
|
18
14
|
const cta = page.getByRole('link', { name: 'View Documentation' });
|
|
19
15
|
await cta.scrollIntoViewIfNeeded();
|
|
20
|
-
// In a still, start the overlay and leave it open: it stays in the image
|
|
21
|
-
// with no matching end() needed.
|
|
16
|
+
// In a still, start the overlay and leave it open: it stays in the image.
|
|
22
17
|
await overlays.ring(cta).start();
|
|
23
18
|
});
|
|
24
19
|
//# sourceMappingURL=locator-highlight-still.screenci.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locator-highlight-still.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/locator-highlight-still.screenci.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErD
|
|
1
|
+
{"version":3,"file":"locator-highlight-still.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/locator-highlight-still.screenci.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErD,+EAA+E;AAC/E,gDAAgD;AAChD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAC9B,IAAI,EAAE,CAAC,MAAe,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,8GAA8G;QACpH,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,CAAC;KACV,CAAC;CACH,CAAC,CAAA;AAEF,UAAU,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACjD,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IACxC,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAE1C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAA;IAClE,MAAM,GAAG,CAAC,sBAAsB,EAAE,CAAA;IAElC,0EAA0E;IAC1E,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;AAClC,CAAC,CAAC,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { expect } from '@playwright/test';
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { autoZoom,
|
|
4
|
+
import { autoZoom, createOverlays, hide, resetZoom, video, voices, zoomTo, } from 'screenci';
|
|
5
5
|
// Before recording:
|
|
6
6
|
// 1. Put the condensed, cursor-safe agent capture at assets/agent.mp4.
|
|
7
7
|
// 2. Set SCREENCI_APP_STORAGE_STATE to a logged-in Playwright storage state.
|
|
@@ -14,6 +14,10 @@ import { autoZoom, createNarration, createOverlays, hide, resetZoom, video, voic
|
|
|
14
14
|
// the complete pitch remains below two minutes (roughly 20-25 seconds).
|
|
15
15
|
const projectName = process.env.SCREENCI_PITCH_PROJECT_NAME ?? 'demo-saas';
|
|
16
16
|
const videoName = process.env.SCREENCI_PITCH_VIDEO_NAME ?? 'Vertical invoice';
|
|
17
|
+
const appUrl = process.env.SCREENCI_PITCH_APP_URL ??
|
|
18
|
+
process.env.SCREENCI_APP_URL ??
|
|
19
|
+
'https://app.screenci.com/';
|
|
20
|
+
const placeholderMode = process.env.SCREENCI_PITCH_PLACEHOLDER === 'true';
|
|
17
21
|
const agentRecording = fileURLToPath(new URL('../assets/agent.mp4', import.meta.url));
|
|
18
22
|
const overlays = createOverlays({
|
|
19
23
|
agentSession: {
|
|
@@ -24,38 +28,75 @@ const overlays = createOverlays({
|
|
|
24
28
|
audio: 0,
|
|
25
29
|
},
|
|
26
30
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
source: 'It reads the application, then writes and tests a Playwright-style video file in the repository.',
|
|
36
|
-
oneOff: 'The flow is already recorded, so I can render a one-off version without recording the application again.',
|
|
37
|
-
rendering: 'This is the real render job, combining the recording, narration, camera motion, and overlays.',
|
|
38
|
-
privacy: 'The application, source, session, and credentials stayed local. Only the recording and timing data were uploaded.',
|
|
39
|
-
delivery: 'The finished video is ready to review, download, or publish through a stable public URL.',
|
|
40
|
-
maintenance: 'Run the source locally or in CI. If the product flow changes, it fails visibly instead of leaving a stale walkthrough online.',
|
|
41
|
-
more: 'One recording can produce language versions with synchronized narration and subtitles, cloned voices, and React or HTML overlays.',
|
|
42
|
-
outro: 'That is ScreenCI [pronounce: screen see eye]: from a coding-agent prompt to a product video you can rerun whenever the product changes.',
|
|
31
|
+
video.use({
|
|
32
|
+
renderOptions: {
|
|
33
|
+
narration: {
|
|
34
|
+
voice: {
|
|
35
|
+
name: voices.Sophie,
|
|
36
|
+
style: 'Calm, direct developer presenting a real product workflow',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
43
39
|
},
|
|
44
40
|
});
|
|
45
|
-
video(
|
|
46
|
-
|
|
41
|
+
video.localize({
|
|
42
|
+
narration: {
|
|
43
|
+
en: {
|
|
44
|
+
intro: 'This video shows how a coding agent and ScreenCI [pronounce: screen see eye] turn a product flow into a finished product video.',
|
|
45
|
+
agent: 'I asked the agent to create a narrated walkthrough for this sample SaaS application. This is the actual session, condensed.',
|
|
46
|
+
source: 'It reads the application, then writes and tests a Playwright-style video file in the repository.',
|
|
47
|
+
oneOff: 'The flow is already recorded, so Studio can render a one-off version without recording the application again.',
|
|
48
|
+
rendering: 'This is the real render job, combining the recording, narration, camera motion, and overlays.',
|
|
49
|
+
privacy: 'The application, source, session, and credentials stayed local. Only the recording and timing data were uploaded.',
|
|
50
|
+
delivery: 'The finished video is ready to review, download, or publish through a stable public URL.',
|
|
51
|
+
maintenance: 'Run the source locally or in CI. If the product flow changes, it fails visibly instead of leaving a stale walkthrough online.',
|
|
52
|
+
more: 'One recording can produce language versions with synchronized narration and subtitles, cloned voices, and React or HTML overlays.',
|
|
53
|
+
outro: 'That is ScreenCI [pronounce: screen see eye]: from a coding-agent prompt to a product video you can rerun whenever the product changes.',
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
})('ScreenCI product pitch', async ({ page, narration }) => {
|
|
57
|
+
let selectedVideoName = videoName;
|
|
58
|
+
video.skip(!placeholderMode && !process.env.SCREENCI_APP_STORAGE_STATE, 'Requires SCREENCI_APP_STORAGE_STATE with a logged-in ScreenCI app session.');
|
|
47
59
|
video.skip(!existsSync(agentRecording), 'Add the condensed agent capture at screenci/assets/agent.mp4.');
|
|
60
|
+
if (placeholderMode) {
|
|
61
|
+
await hide(async () => {
|
|
62
|
+
await page.goto(appUrl);
|
|
63
|
+
await page.waitForLoadState('networkidle');
|
|
64
|
+
});
|
|
65
|
+
await narration.intro();
|
|
66
|
+
await overlays.agentSession();
|
|
67
|
+
await narration.outro();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
48
70
|
// Start in Studio for the video produced during the captured agent session.
|
|
49
71
|
// Authentication and dashboard navigation are setup, so they are not shown.
|
|
50
72
|
await hide(async () => {
|
|
51
|
-
await page.goto(
|
|
73
|
+
await page.goto(appUrl);
|
|
52
74
|
await page.waitForLoadState('networkidle');
|
|
53
75
|
const projects = page.getByTestId('projects-list');
|
|
54
76
|
await expect(projects).toBeVisible({ timeout: 30_000 });
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
77
|
+
const configuredProject = projects.getByRole('link', {
|
|
78
|
+
name: projectName,
|
|
79
|
+
exact: true,
|
|
80
|
+
});
|
|
81
|
+
const projectLink = (await configuredProject.count()) > 0
|
|
82
|
+
? configuredProject
|
|
83
|
+
: projects.getByRole('link').first();
|
|
84
|
+
await projectLink.click();
|
|
85
|
+
const configuredVideo = page.getByRole('link', {
|
|
86
|
+
name: videoName,
|
|
87
|
+
exact: true,
|
|
88
|
+
});
|
|
89
|
+
const videoLink = (await configuredVideo.count()) > 0
|
|
90
|
+
? configuredVideo
|
|
91
|
+
: page.locator('a[href*="/video/"]').first();
|
|
92
|
+
selectedVideoName =
|
|
93
|
+
(await videoLink.getAttribute('aria-label')) ?? selectedVideoName;
|
|
94
|
+
await videoLink.click();
|
|
95
|
+
await expect(page.getByRole('heading', { name: /language versions/i })).toBeVisible({ timeout: 30_000 });
|
|
96
|
+
await page
|
|
97
|
+
.getByRole('link', { name: /^open /i })
|
|
98
|
+
.first()
|
|
99
|
+
.click();
|
|
59
100
|
await expect(page.getByRole('heading', { name: /^studio$/i })).toBeVisible({
|
|
60
101
|
timeout: 30_000,
|
|
61
102
|
});
|
|
@@ -66,11 +107,37 @@ video('ScreenCI product pitch', async ({ page }) => {
|
|
|
66
107
|
await overlays.agentSession();
|
|
67
108
|
await narration.agent.end();
|
|
68
109
|
await narration.source();
|
|
69
|
-
|
|
70
|
-
|
|
110
|
+
const createOneOffButton = page.getByRole('button', {
|
|
111
|
+
name: 'Create one-off version',
|
|
112
|
+
});
|
|
113
|
+
const canCreateOneOff = await createOneOffButton
|
|
114
|
+
.isVisible({ timeout: 5_000 })
|
|
115
|
+
.catch(() => false);
|
|
116
|
+
if (!canCreateOneOff) {
|
|
117
|
+
await narration.oneOff.start();
|
|
118
|
+
await zoomTo(page.getByRole('heading', { name: /^studio$/i }));
|
|
119
|
+
await page.waitForTimeout(900);
|
|
120
|
+
await resetZoom();
|
|
121
|
+
await narration.oneOff.end();
|
|
122
|
+
await narration.privacy();
|
|
123
|
+
await narration.delivery();
|
|
124
|
+
await narration.maintenance();
|
|
125
|
+
await page
|
|
126
|
+
.getByRole('link', { name: selectedVideoName, exact: true })
|
|
127
|
+
.click();
|
|
128
|
+
await expect(page.getByRole('heading', { name: /language versions/i })).toBeVisible({ timeout: 30_000 });
|
|
129
|
+
await zoomTo(page.getByRole('heading', { name: /language versions/i }));
|
|
130
|
+
await narration.more();
|
|
131
|
+
await resetZoom();
|
|
132
|
+
await narration.outro();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// This is an intentional real side effect when the authenticated workspace has
|
|
136
|
+
// Studio rendering enabled: every run starts one new Studio render for the
|
|
137
|
+
// selected language. Read-only CI workspaces take the fallback above.
|
|
71
138
|
await narration.oneOff.start();
|
|
72
139
|
await autoZoom(async () => {
|
|
73
|
-
await
|
|
140
|
+
await createOneOffButton.click();
|
|
74
141
|
const dialog = page.getByRole('alertdialog');
|
|
75
142
|
await expect(dialog.getByRole('heading', { name: 'Create a one-off version' })).toBeVisible();
|
|
76
143
|
await dialog.getByRole('button', { name: 'Continue' }).click();
|
|
@@ -124,11 +191,9 @@ video('ScreenCI product pitch', async ({ page }) => {
|
|
|
124
191
|
await narration.maintenance();
|
|
125
192
|
// Return to the video overview so the language and delivery surfaces support
|
|
126
193
|
// the final feature summary visually.
|
|
127
|
-
await page.getByRole('link', { name:
|
|
128
|
-
await expect(page.getByRole('heading', { name: /
|
|
129
|
-
|
|
130
|
-
});
|
|
131
|
-
await zoomTo(page.getByRole('heading', { name: /languages/i }));
|
|
194
|
+
await page.getByRole('link', { name: selectedVideoName, exact: true }).click();
|
|
195
|
+
await expect(page.getByRole('heading', { name: /language versions/i })).toBeVisible({ timeout: 30_000 });
|
|
196
|
+
await zoomTo(page.getByRole('heading', { name: /language versions/i }));
|
|
132
197
|
await narration.more();
|
|
133
198
|
await resetZoom();
|
|
134
199
|
await narration.outro();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-pitch.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/product-pitch.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EACL,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"product-pitch.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/product-pitch.screenci.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
import { autoZoom,
|
|
1
|
+
import { autoZoom, hide, resetZoom, video, voices } from 'screenci';
|
|
2
|
+
video.use({
|
|
3
|
+
renderOptions: {
|
|
4
|
+
narration: {
|
|
5
|
+
voice: { name: voices.Sophie, style: 'Calm product guide' },
|
|
6
|
+
},
|
|
7
|
+
},
|
|
8
|
+
});
|
|
2
9
|
// Source of record for the "Public URLs and embeds" docs video. It walks the
|
|
3
10
|
// public-delivery explainer page: the stable base URL, the per-language
|
|
4
11
|
// outputs, and a live embed that switches languages. Recorded against the
|
|
5
12
|
// deployed demo so it runs without app authentication.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
video.localize({
|
|
14
|
+
narration: {
|
|
15
|
+
en: {
|
|
16
|
+
intro: 'Turn on public delivery and your video gets a stable URL on the CDN.',
|
|
17
|
+
langs: 'Each language has its own video, thumbnail, and subtitle URL.',
|
|
18
|
+
embed: 'Drop it into any site. It always resolves to the latest approved render.',
|
|
19
|
+
},
|
|
12
20
|
},
|
|
13
|
-
})
|
|
14
|
-
video('Public URLs and embeds', async ({ page }) => {
|
|
21
|
+
})('Public URLs and embeds', async ({ page, narration }) => {
|
|
15
22
|
await hide(async () => {
|
|
16
23
|
await page.goto('https://demo.screenci.com/pitch/embed.html');
|
|
17
24
|
await page.waitForLoadState('networkidle');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-urls.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/public-urls.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"public-urls.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/public-urls.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEnE,KAAK,CAAC,GAAG,CAAC;IACR,aAAa,EAAE;QACb,SAAS,EAAE;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE;SAC5D;KACF;CACF,CAAC,CAAA;AAEF,6EAA6E;AAC7E,wEAAwE;AACxE,0EAA0E;AAC1E,uDAAuD;AACvD,KAAK,CAAC,QAAQ,CAAC;IACb,SAAS,EAAE;QACT,EAAE,EAAE;YACF,KAAK,EACH,sEAAsE;YACxE,KAAK,EAAE,+DAA+D;YACtE,KAAK,EACH,0EAA0E;SAC7E;KACF;CACF,CAAC,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;IACzD,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;QAC7D,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;IACvB,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC7B,MAAM,QAAQ,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,sBAAsB,EAAE,CAAA;IACtD,CAAC,CAAC,CAAA;IACF,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;IAC3B,MAAM,SAAS,EAAE,CAAA;IAEjB,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC7B,MAAM,QAAQ,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;QACtD,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;IACxD,CAAC,CAAC,CAAA;IACF,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;IAC3B,MAAM,SAAS,EAAE,CAAA;AACnB,CAAC,CAAC,CAAA"}
|