screenci 0.0.83 → 0.0.84
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/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +57 -4
- package/dist/cli.js.map +1 -1
- package/dist/docs/video-sources/camera-and-zooming.screenci.js +1 -2
- package/dist/docs/video-sources/camera-and-zooming.screenci.js.map +1 -1
- package/dist/docs/video-sources/installation.screenci.js +1 -2
- package/dist/docs/video-sources/installation.screenci.js.map +1 -1
- package/dist/docs/video-sources/languages.screenci.js +3 -1
- package/dist/docs/video-sources/languages.screenci.js.map +1 -1
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js +0 -1
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -1
- package/dist/docs/video-sources/locator-highlight-still.screenci.js +0 -1
- package/dist/docs/video-sources/locator-highlight-still.screenci.js.map +1 -1
- package/dist/docs/video-sources/narration.screenci.js +3 -1
- package/dist/docs/video-sources/narration.screenci.js.map +1 -1
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.js +3 -1
- package/dist/docs/video-sources/public-urls-and-embeds.screenci.js.map +1 -1
- package/dist/docs/video-sources/studio.screenci.js +3 -1
- package/dist/docs/video-sources/studio.screenci.js.map +1 -1
- package/dist/src/asset.d.ts +11 -1
- package/dist/src/asset.d.ts.map +1 -1
- package/dist/src/asset.js +120 -50
- package/dist/src/asset.js.map +1 -1
- package/dist/src/disableAnimations.d.ts +33 -0
- package/dist/src/disableAnimations.d.ts.map +1 -0
- package/dist/src/disableAnimations.js +50 -0
- package/dist/src/disableAnimations.js.map +1 -0
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +4 -0
- package/dist/src/events.js.map +1 -1
- package/dist/src/init.d.ts +31 -7
- package/dist/src/init.d.ts.map +1 -1
- package/dist/src/init.js +128 -52
- package/dist/src/init.js.map +1 -1
- package/dist/src/instrument.d.ts.map +1 -1
- package/dist/src/instrument.js +5 -2
- package/dist/src/instrument.js.map +1 -1
- package/dist/src/linkSession.d.ts +24 -0
- package/dist/src/linkSession.d.ts.map +1 -1
- package/dist/src/linkSession.js +57 -0
- package/dist/src/linkSession.js.map +1 -1
- package/dist/src/runtimeContext.d.ts +17 -0
- package/dist/src/runtimeContext.d.ts.map +1 -1
- package/dist/src/runtimeContext.js +3 -0
- package/dist/src/runtimeContext.js.map +1 -1
- package/dist/src/runtimeMode.d.ts.map +1 -1
- package/dist/src/runtimeMode.js +8 -0
- package/dist/src/runtimeMode.js.map +1 -1
- package/dist/src/screenshot.d.ts.map +1 -1
- package/dist/src/screenshot.js +7 -0
- package/dist/src/screenshot.js.map +1 -1
- package/dist/src/types.d.ts +37 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/video.d.ts.map +1 -1
- package/dist/src/video.js +7 -0
- package/dist/src/video.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/skills/screenci/references/init.md +3 -2
- package/dist/docs/video-sources/landing.screenci.d.ts +0 -2
- package/dist/docs/video-sources/landing.screenci.d.ts.map +0 -1
- package/dist/docs/video-sources/landing.screenci.js +0 -34
- package/dist/docs/video-sources/landing.screenci.js.map +0 -1
|
@@ -28,7 +28,9 @@ video
|
|
|
28
28
|
},
|
|
29
29
|
})('Languages walkthrough', async ({ page, narration, overlays }) => {
|
|
30
30
|
// Studio lives behind auth (SCREENCI_APP_STORAGE_STATE, see screenci.config.ts).
|
|
31
|
-
|
|
31
|
+
if (!process.env.SCREENCI_APP_STORAGE_STATE) {
|
|
32
|
+
throw new Error('Not logged in. Record via `scripts/screenci.sh docs <env> record` (it signs in first), or set SCREENCI_APP_STORAGE_STATE to a Playwright storageState.');
|
|
33
|
+
}
|
|
32
34
|
// Open a finished video's Studio page without showing the navigation.
|
|
33
35
|
await hide(async () => {
|
|
34
36
|
await page.goto(appUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/languages.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjE,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,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,2BAA2B,CAAA;AAE1E,iFAAiF;AACjF,iFAAiF;AACjF,gFAAgF;AAChF,8EAA8E;AAC9E,uEAAuE;AACvE,EAAE;AACF,8EAA8E;AAC9E,iDAAiD;AACjD,KAAK;KACF,QAAQ,CAAC;IACR,IAAI,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;CACvE,CAAC;KACD,SAAS,CAAC;IACT,EAAE,EAAE;QACF,KAAK,EAAE,0DAA0D;QACjE,MAAM,EAAE,4DAA4D;QACpE,GAAG,EAAE,+EAA+E;QACpF,KAAK,EAAE,4DAA4D;KACpE;CACF,CAAC,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpE,iFAAiF;IACjF,
|
|
1
|
+
{"version":3,"file":"languages.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/languages.screenci.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,6 @@ video.overlays({
|
|
|
27
27
|
}),
|
|
28
28
|
})('Locator highlight (animated)', async ({ page, overlays }) => {
|
|
29
29
|
await page.goto('https://screenci.com/');
|
|
30
|
-
await page.waitForLoadState('networkidle');
|
|
31
30
|
const cta = page.getByRole('link', { name: 'View Documentation' });
|
|
32
31
|
await cta.scrollIntoViewIfNeeded();
|
|
33
32
|
// The ring pulses while the page stays live. Every start() must be ended
|
|
@@ -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,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,sBAAsB;AACtB,KAAK,CAAC,QAAQ,CAAC;IACb,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,QAAQ,EAAE,MAAM;KACjB,CAAC;CACH,CAAC,CAAC,8BAA8B,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"locator-highlight-animated.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/locator-highlight-animated.screenci.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,sBAAsB;AACtB,KAAK,CAAC,QAAQ,CAAC;IACb,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,QAAQ,EAAE,MAAM;KACjB,CAAC;CACH,CAAC,CAAC,8BAA8B,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IAExC,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"}
|
|
@@ -9,7 +9,6 @@ screenshot.overlays({
|
|
|
9
9
|
}),
|
|
10
10
|
})('Locator highlight', async ({ page, overlays }) => {
|
|
11
11
|
await page.goto('https://screenci.com/');
|
|
12
|
-
await page.waitForLoadState('networkidle');
|
|
13
12
|
const cta = page.getByRole('link', { name: 'View Documentation' });
|
|
14
13
|
await cta.scrollIntoViewIfNeeded();
|
|
15
14
|
// In a still, start the overlay and leave it open: it stays in the image.
|
|
@@ -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,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,+EAA+E;AAC/E,gDAAgD;AAChD,UAAU,CAAC,QAAQ,CAAC;IAClB,IAAI,EAAE,CAAC,MAAe,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,8GAA8G;QACpH,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,CAAC;KACV,CAAC;CACH,CAAC,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACnD,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"locator-highlight-still.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/locator-highlight-still.screenci.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,+EAA+E;AAC/E,gDAAgD;AAChD,UAAU,CAAC,QAAQ,CAAC;IAClB,IAAI,EAAE,CAAC,MAAe,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,8GAA8G;QACpH,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,CAAC;KACV,CAAC;CACH,CAAC,CAAC,mBAAmB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACnD,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IAExC,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"}
|
|
@@ -30,7 +30,9 @@ video
|
|
|
30
30
|
})('Narration walkthrough', async ({ page, narration, overlays }) => {
|
|
31
31
|
// Studio lives behind auth (SCREENCI_APP_STORAGE_STATE, see screenci.config.ts).
|
|
32
32
|
// Skip rather than stall on the login page when the session is not configured.
|
|
33
|
-
|
|
33
|
+
if (!process.env.SCREENCI_APP_STORAGE_STATE) {
|
|
34
|
+
throw new Error('Not logged in. Record via `scripts/screenci.sh docs <env> record` (it signs in first), or set SCREENCI_APP_STORAGE_STATE to a Playwright storageState.');
|
|
35
|
+
}
|
|
34
36
|
// Open a finished video's Studio page without showing the navigation.
|
|
35
37
|
await hide(async () => {
|
|
36
38
|
await page.goto(appUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"narration.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/narration.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjE,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,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,2BAA2B,CAAA;AAE1E,iFAAiF;AACjF,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,oEAAoE;AACpE,kEAAkE;AAClE,EAAE;AACF,iFAAiF;AACjF,sEAAsE;AACtE,KAAK;KACF,QAAQ,CAAC;IACR,IAAI,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;CACvE,CAAC;KACD,SAAS,CAAC;IACT,EAAE,EAAE;QACF,KAAK,EACH,6EAA6E;QAC/E,OAAO,EACL,uEAAuE;QACzE,MAAM,EACJ,sEAAsE;QACxE,KAAK,EAAE,gEAAgE;KACxE;CACF,CAAC,CAAC,uBAAuB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpE,iFAAiF;IACjF,+EAA+E;IAC/E,
|
|
1
|
+
{"version":3,"file":"narration.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/narration.screenci.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,9 @@ video
|
|
|
29
29
|
},
|
|
30
30
|
})('Public URLs and embeds', async ({ page, narration, overlays }) => {
|
|
31
31
|
// The public-delivery switch lives behind auth (SCREENCI_APP_STORAGE_STATE).
|
|
32
|
-
|
|
32
|
+
if (!process.env.SCREENCI_APP_STORAGE_STATE) {
|
|
33
|
+
throw new Error('Not logged in. Record via `scripts/screenci.sh docs <env> record` (it signs in first), or set SCREENCI_APP_STORAGE_STATE to a Playwright storageState.');
|
|
34
|
+
}
|
|
33
35
|
// Open a finished video page without showing the navigation.
|
|
34
36
|
await hide(async () => {
|
|
35
37
|
await page.goto(appUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-urls-and-embeds.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/public-urls-and-embeds.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjE,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,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,2BAA2B,CAAA;AAE1E,mFAAmF;AACnF,iFAAiF;AACjF,+EAA+E;AAC/E,2EAA2E;AAC3E,iFAAiF;AACjF,QAAQ;AACR,EAAE;AACF,8EAA8E;AAC9E,iDAAiD;AACjD,KAAK;KACF,QAAQ,CAAC;IACR,IAAI,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;CACvE,CAAC;KACD,SAAS,CAAC;IACT,EAAE,EAAE;QACF,KAAK,EAAE,8DAA8D;QACrE,MAAM,EAAE,8DAA8D;QACtE,IAAI,EAAE,iEAAiE;QACvE,KAAK,EAAE,sDAAsD;KAC9D;CACF,CAAC,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrE,6EAA6E;IAC7E,
|
|
1
|
+
{"version":3,"file":"public-urls-and-embeds.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/public-urls-and-embeds.screenci.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,9 @@ video.narration({
|
|
|
26
26
|
// session (SCREENCI_APP_STORAGE_STATE, see screenci.config.ts). When it is not
|
|
27
27
|
// configured (e.g. CI without the session secret), skip instead of timing out
|
|
28
28
|
// on the login page.
|
|
29
|
-
|
|
29
|
+
if (!process.env.SCREENCI_APP_STORAGE_STATE) {
|
|
30
|
+
throw new Error('Not logged in. Record via `scripts/screenci.sh docs <env> record` (it signs in first), or set SCREENCI_APP_STORAGE_STATE to a Playwright storageState.');
|
|
31
|
+
}
|
|
30
32
|
// Navigate from the dashboard into Studio without showing it in the recording.
|
|
31
33
|
await hide(async () => {
|
|
32
34
|
await page.goto(appUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studio.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/studio.screenci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjE,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,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,2BAA2B,CAAA;AAE1E,+EAA+E;AAC/E,iFAAiF;AACjF,oFAAoF;AACpF,iFAAiF;AACjF,4EAA4E;AAC5E,KAAK,CAAC,SAAS,CAAC;IACd,EAAE,EAAE;QACF,KAAK,EAAE,oEAAoE;QAC3E,IAAI,EAAE,iGAAiG;KACxG;IACD,EAAE,EAAE;QACF,KAAK,EACH,sFAAsF;QACxF,IAAI,EAAE,mHAAmH;KAC1H;CACF,CAAC,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;IACrD,0EAA0E;IAC1E,+EAA+E;IAC/E,8EAA8E;IAC9E,qBAAqB;IACrB,
|
|
1
|
+
{"version":3,"file":"studio.screenci.js","sourceRoot":"","sources":["../../../docs/video-sources/studio.screenci.ts"],"names":[],"mappings":"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"}
|
package/dist/src/asset.d.ts
CHANGED
|
@@ -110,6 +110,16 @@ type OverlayCommon = {
|
|
|
110
110
|
* recording as the camera zooms and pans.
|
|
111
111
|
*/
|
|
112
112
|
pinToScreen?: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Hide the synthetic mouse cursor while this overlay is displayed, restoring
|
|
115
|
+
* its prior visibility when the overlay ends. Useful for full-screen intro or
|
|
116
|
+
* outro cards where a cursor would be a distraction. Placement-agnostic, so it
|
|
117
|
+
* works for every overlay variant. Overlapping `hideMouse` overlays keep the
|
|
118
|
+
* cursor hidden until the last one ends, and a cursor already hidden (for
|
|
119
|
+
* example via `page.mouse.hide()`) is left hidden. Has no effect on
|
|
120
|
+
* screenshots, whose cursor is hidden by default.
|
|
121
|
+
*/
|
|
122
|
+
hideMouse?: boolean;
|
|
113
123
|
};
|
|
114
124
|
/** Fields that only apply to a `.mp4` video overlay (a file `path`). */
|
|
115
125
|
type OverlayVideoFields = {
|
|
@@ -220,7 +230,7 @@ export declare const MAX_AUDIO_LEVEL = 4;
|
|
|
220
230
|
* is a finished still or clip, so source-only fields (`over`/`margin`/`animate`/
|
|
221
231
|
* `css`/`capturePadding`) do not apply.
|
|
222
232
|
*/
|
|
223
|
-
export type DependencyOverlayOptions = Pick<OverlayCommon, 'relativeTo' | 'x' | 'y' | 'width' | 'height' | 'aspectRatio' | 'fill' | 'duration' | 'crop' | 'pinToScreen'> & {
|
|
233
|
+
export type DependencyOverlayOptions = Pick<OverlayCommon, 'relativeTo' | 'x' | 'y' | 'width' | 'height' | 'aspectRatio' | 'fill' | 'duration' | 'crop' | 'pinToScreen' | 'hideMouse'> & {
|
|
224
234
|
/**
|
|
225
235
|
* Late start into the embedded VIDEO (a `'2s'`/timecode/`'50%'` position).
|
|
226
236
|
* Video dependencies only; rejected when the target resolves to a screenshot.
|
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,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,WAAW,EAGjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../src/asset.ts"],"names":[],"mappings":"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"}
|
package/dist/src/asset.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { timelineAnchorFields, } from './events.js';
|
|
2
2
|
import { parseTimelineOffset } from './timelineOffset.js';
|
|
3
|
+
import { isMouseVisible } from './mouse.js';
|
|
3
4
|
import { validateCrop, resolveSourceTrim } from './sourceTrim.js';
|
|
4
5
|
import { overlayRect } from './overlayRect.js';
|
|
5
6
|
import { captureCallerFile } from './callerFile.js';
|
|
@@ -9,7 +10,7 @@ import { dirname, resolve } from 'path';
|
|
|
9
10
|
import { resolveRecordingTimingDuration } from './runtimeMode.js';
|
|
10
11
|
import { resolveOverlayCss, DEFAULT_OVERLAY_DEVICE_SCALE_FACTOR, DEFAULT_ANIMATION_FPS, } from './htmlRasterizer.js';
|
|
11
12
|
export { setOverlayCss } from './htmlRasterizer.js';
|
|
12
|
-
import { getScreenCIRuntimeContext, getRuntimeAssetRecorder, getRuntimePage, getRuntimeRecordingDir, setRuntimeAssetRecorder, resetAssetRuntimeState, } from './runtimeContext.js';
|
|
13
|
+
import { getScreenCIRuntimeContext, getRuntimeAssetRecorder, getRuntimePage, getRuntimeRecordingDir, setRuntimeAssetRecorder, resetAssetRuntimeState, isScreenshotCapture, } from './runtimeContext.js';
|
|
13
14
|
/**
|
|
14
15
|
* Upper bound for an audio level (linear gain). `4` is +12 dB, plenty of
|
|
15
16
|
* headroom for a boost while guarding against accidental extreme distortion.
|
|
@@ -276,6 +277,7 @@ function buildOverlayFromConfig(name, config) {
|
|
|
276
277
|
});
|
|
277
278
|
const fullScreen = config.fill === 'screen';
|
|
278
279
|
const pinToScreen = config.pinToScreen === true;
|
|
280
|
+
const hideMouse = config.hideMouse === true;
|
|
279
281
|
const animate = config.animate === true;
|
|
280
282
|
// Parse the relative `duration` string into ms once; reused by every branch.
|
|
281
283
|
const configDurationMs = resolveConfigDuration(name, config.duration);
|
|
@@ -311,9 +313,9 @@ function buildOverlayFromConfig(name, config) {
|
|
|
311
313
|
? () => renderElementToMarkup(name, config.element)
|
|
312
314
|
: () => Promise.resolve(config.html);
|
|
313
315
|
if (animate) {
|
|
314
|
-
return createAnimatedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, config.fps, configDurationMs, renderOpts);
|
|
316
|
+
return createAnimatedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, hideMouse, config.fps, configDurationMs, renderOpts);
|
|
315
317
|
}
|
|
316
|
-
return createRenderedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, configDurationMs, renderOpts);
|
|
318
|
+
return createRenderedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, hideMouse, configDurationMs, renderOpts);
|
|
317
319
|
}
|
|
318
320
|
const path = config.path;
|
|
319
321
|
const extension = getAssetExtension(path);
|
|
@@ -344,9 +346,9 @@ function buildOverlayFromConfig(name, config) {
|
|
|
344
346
|
registerAssetPath(path);
|
|
345
347
|
const getMarkup = () => readHtmlOverlayFile(path);
|
|
346
348
|
if (animate) {
|
|
347
|
-
return createAnimatedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, config.fps, configDurationMs, renderOpts);
|
|
349
|
+
return createAnimatedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, hideMouse, config.fps, configDurationMs, renderOpts);
|
|
348
350
|
}
|
|
349
|
-
return createRenderedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, configDurationMs, renderOpts);
|
|
351
|
+
return createRenderedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, hideMouse, configDurationMs, renderOpts);
|
|
350
352
|
}
|
|
351
353
|
// File-backed image / video overlays.
|
|
352
354
|
if (extension === '.svg' || extension === '.png') {
|
|
@@ -365,7 +367,7 @@ function buildOverlayFromConfig(name, config) {
|
|
|
365
367
|
...(pinToScreen && { pinToScreen: true }),
|
|
366
368
|
...(configDurationMs !== undefined && { durationMs: configDurationMs }),
|
|
367
369
|
...(config.crop !== undefined && { crop: config.crop }),
|
|
368
|
-
});
|
|
370
|
+
}, hideMouse);
|
|
369
371
|
}
|
|
370
372
|
if (extension === '.mp4') {
|
|
371
373
|
if (config.duration !== undefined) {
|
|
@@ -395,7 +397,7 @@ function buildOverlayFromConfig(name, config) {
|
|
|
395
397
|
...(config.crop !== undefined && { crop: config.crop }),
|
|
396
398
|
...(sourceStart !== undefined && { sourceStart }),
|
|
397
399
|
...(sourceEnd !== undefined && { sourceEnd }),
|
|
398
|
-
});
|
|
400
|
+
}, hideMouse);
|
|
399
401
|
}
|
|
400
402
|
throw new Error(`[screenci] Overlay "${name}" must use one of: .html, .svg, .png, .mp4. Received: ${path}`);
|
|
401
403
|
}
|
|
@@ -626,12 +628,17 @@ function resolveConfigDuration(name, duration) {
|
|
|
626
628
|
return undefined;
|
|
627
629
|
return resolveRelativeDuration(duration, `Overlay "${name}" duration`);
|
|
628
630
|
}
|
|
629
|
-
function createActiveAssetRun(startedWithExplicitStart) {
|
|
631
|
+
function createActiveAssetRun(startedWithExplicitStart, hideMouse) {
|
|
630
632
|
let resolve;
|
|
631
633
|
const finished = new Promise((resolveFn) => {
|
|
632
634
|
resolve = resolveFn;
|
|
633
635
|
});
|
|
634
|
-
return {
|
|
636
|
+
return {
|
|
637
|
+
finished,
|
|
638
|
+
resolveFinished: resolve,
|
|
639
|
+
startedWithExplicitStart,
|
|
640
|
+
hideMouse,
|
|
641
|
+
};
|
|
635
642
|
}
|
|
636
643
|
/**
|
|
637
644
|
* Ends a single live overlay identified by name, emitting its `assetEnd`,
|
|
@@ -646,15 +653,63 @@ function endLiveAsset(name, reason) {
|
|
|
646
653
|
getRuntimeAssetRecorder().addAssetEnd(name, reason);
|
|
647
654
|
sleepForAssetFrameGap();
|
|
648
655
|
context.asset.activeRuns.delete(name);
|
|
656
|
+
if (run.hideMouse)
|
|
657
|
+
performOverlayMouseShow();
|
|
649
658
|
run.resolveFinished();
|
|
650
659
|
}
|
|
651
|
-
function createAssetControllerCore(name, validate, emitStart,
|
|
652
660
|
/**
|
|
653
|
-
*
|
|
654
|
-
*
|
|
655
|
-
*
|
|
661
|
+
* Hide the cursor for a `hideMouse` overlay, ref-counted so overlapping overlays
|
|
662
|
+
* only hide once. Reuses the instrumented `page.mouse.hide()`, which records the
|
|
663
|
+
* `mouseHide` event on the shared recorder. When emitted before a blocking
|
|
664
|
+
* overlay's `assetStart`, that event brackets the frozen hold in the rendered
|
|
665
|
+
* timeline (the show emitted after `assetStart` lands past the hold).
|
|
666
|
+
*/
|
|
667
|
+
function performOverlayMouseHide() {
|
|
668
|
+
// Stills hide the cursor by default (see renderOptions.screenshot.mouse.show)
|
|
669
|
+
// and have no timeline to bracket, so hideMouse is a no-op for screenshots.
|
|
670
|
+
if (isScreenshotCapture())
|
|
671
|
+
return;
|
|
672
|
+
const page = getRuntimePage();
|
|
673
|
+
if (page === null)
|
|
674
|
+
return;
|
|
675
|
+
const state = getScreenCIRuntimeContext().asset.mouseHide;
|
|
676
|
+
state.count += 1;
|
|
677
|
+
// Only the first overlay in an overlapping group changes visibility.
|
|
678
|
+
if (state.count !== 1)
|
|
679
|
+
return;
|
|
680
|
+
// A cursor already hidden (e.g. via page.mouse.hide()) is left as-is, and we
|
|
681
|
+
// remember not to force it back on when the overlay ends.
|
|
682
|
+
if (!isMouseVisible(page)) {
|
|
683
|
+
state.hiddenByOverlay = false;
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
686
|
+
state.hiddenByOverlay = true;
|
|
687
|
+
page.mouse.hide();
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* Restore the cursor when a `hideMouse` overlay ends. Only acts once the
|
|
691
|
+
* ref-count returns to 0, and only if an overlay was the one that hid it (so a
|
|
692
|
+
* cursor that was already hidden stays hidden).
|
|
656
693
|
*/
|
|
657
|
-
|
|
694
|
+
function performOverlayMouseShow() {
|
|
695
|
+
if (isScreenshotCapture())
|
|
696
|
+
return;
|
|
697
|
+
const page = getRuntimePage();
|
|
698
|
+
if (page === null)
|
|
699
|
+
return;
|
|
700
|
+
const state = getScreenCIRuntimeContext().asset.mouseHide;
|
|
701
|
+
if (state.count === 0)
|
|
702
|
+
return;
|
|
703
|
+
state.count -= 1;
|
|
704
|
+
if (state.count !== 0)
|
|
705
|
+
return;
|
|
706
|
+
if (!state.hiddenByOverlay)
|
|
707
|
+
return;
|
|
708
|
+
state.hiddenByOverlay = false;
|
|
709
|
+
page.mouse.show();
|
|
710
|
+
}
|
|
711
|
+
function createAssetControllerCore(name, validate, emitStart, options = {}) {
|
|
712
|
+
const { prepare, hideMouse = false } = options;
|
|
658
713
|
const start = async (startedWithExplicitStart = true) => {
|
|
659
714
|
await validate();
|
|
660
715
|
await prepare?.({ type: 'live' });
|
|
@@ -663,8 +718,10 @@ prepare) {
|
|
|
663
718
|
if (context.asset.activeRuns.has(name)) {
|
|
664
719
|
throw new Error(`[screenci] Overlay "${name}" is already started. Call end() for it before starting it again.`);
|
|
665
720
|
}
|
|
666
|
-
const run = createActiveAssetRun(startedWithExplicitStart);
|
|
721
|
+
const run = createActiveAssetRun(startedWithExplicitStart, hideMouse);
|
|
667
722
|
context.asset.activeRuns.set(name, run);
|
|
723
|
+
if (hideMouse)
|
|
724
|
+
performOverlayMouseHide();
|
|
668
725
|
emitStart(recorder, { type: 'live' });
|
|
669
726
|
};
|
|
670
727
|
const end = async () => {
|
|
@@ -683,7 +740,14 @@ prepare) {
|
|
|
683
740
|
await validate();
|
|
684
741
|
await prepare?.(mode);
|
|
685
742
|
const recorder = getRuntimeAssetRecorder();
|
|
743
|
+
// Order is load-bearing: the mouseHide must precede the assetStart and the
|
|
744
|
+
// mouseShow follow it, so the renderer's frozen hold (inserted at the
|
|
745
|
+
// assetStart) is bracketed by the hide/show in the final timeline.
|
|
746
|
+
if (hideMouse)
|
|
747
|
+
performOverlayMouseHide();
|
|
686
748
|
emitStart(recorder, mode);
|
|
749
|
+
if (hideMouse)
|
|
750
|
+
performOverlayMouseShow();
|
|
687
751
|
};
|
|
688
752
|
const controller = (async () => {
|
|
689
753
|
// Bare call: hold for the source's natural length. Length-less overlays
|
|
@@ -759,9 +823,9 @@ function createDependencyOverlayController(name, input) {
|
|
|
759
823
|
...(sourceStart !== undefined && { sourceStart }),
|
|
760
824
|
...(sourceEnd !== undefined && { sourceEnd }),
|
|
761
825
|
});
|
|
762
|
-
});
|
|
826
|
+
}, { hideMouse: input.config.hideMouse === true });
|
|
763
827
|
}
|
|
764
|
-
function createFileOverlayController(name, resolved) {
|
|
828
|
+
function createFileOverlayController(name, resolved, hideMouse) {
|
|
765
829
|
return createAssetControllerCore(name, async () => {
|
|
766
830
|
const testFilePath = getScreenCIRuntimeContext().testFilePath;
|
|
767
831
|
if (testFilePath !== null) {
|
|
@@ -769,13 +833,13 @@ function createFileOverlayController(name, resolved) {
|
|
|
769
833
|
}
|
|
770
834
|
}, (recorder, mode) => {
|
|
771
835
|
recorder.addAssetStart(name, toRecordedFileStart(name, resolved, mode));
|
|
772
|
-
});
|
|
836
|
+
}, { hideMouse });
|
|
773
837
|
}
|
|
774
838
|
/**
|
|
775
839
|
* An overlay rendered to a transparent PNG at recording time, from either an
|
|
776
840
|
* HTML file or a React element. `getMarkup` produces the HTML to rasterize.
|
|
777
841
|
*/
|
|
778
|
-
function createRenderedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, durationMs, renderOpts = {}) {
|
|
842
|
+
function createRenderedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, hideMouse, durationMs, renderOpts = {}) {
|
|
779
843
|
// The markup and placement are resolved during the test (cheap:
|
|
780
844
|
// renderToStaticMarkup / a string, plus a boundingBox read for `over`), but
|
|
781
845
|
// rasterization (a browser screenshot) is deferred to after the test so
|
|
@@ -823,21 +887,24 @@ function createRenderedOverlayController(name, getMarkup, placementSource, fullS
|
|
|
823
887
|
deviceScaleFactor: DEFAULT_OVERLAY_DEVICE_SCALE_FACTOR,
|
|
824
888
|
},
|
|
825
889
|
});
|
|
826
|
-
},
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
890
|
+
}, {
|
|
891
|
+
prepare: async () => {
|
|
892
|
+
if (resolvedHtml !== undefined || skipped)
|
|
893
|
+
return;
|
|
894
|
+
// Resolving an overlay needs an active recording page and output dir.
|
|
895
|
+
// Outside recording (e.g. plain test runs) there is nothing to upload,
|
|
896
|
+
// so the controller is a no-op, mirroring the no-op recorder.
|
|
897
|
+
if (getRuntimePage() === null || getRuntimeRecordingDir() === null) {
|
|
898
|
+
skipped = true;
|
|
899
|
+
return;
|
|
900
|
+
}
|
|
901
|
+
const { placement, sizePx } = await resolvePlacement(placementSource);
|
|
902
|
+
resolvedPlacement = placement;
|
|
903
|
+
const markup = await getMarkup();
|
|
904
|
+
resolvedHtml =
|
|
905
|
+
sizePx !== undefined ? sizeWrapMarkup(markup, sizePx) : markup;
|
|
906
|
+
},
|
|
907
|
+
hideMouse,
|
|
841
908
|
});
|
|
842
909
|
}
|
|
843
910
|
/**
|
|
@@ -851,7 +918,7 @@ function createRenderedOverlayController(name, getMarkup, placementSource, fullS
|
|
|
851
918
|
* the recording, the old "hide block" that cut capture wall-clock from the
|
|
852
919
|
* timeline is no longer needed.
|
|
853
920
|
*/
|
|
854
|
-
function createAnimatedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, fps, configDurationMs, renderOpts = {}) {
|
|
921
|
+
function createAnimatedOverlayController(name, getMarkup, placementSource, fullScreen, pinToScreen, hideMouse, fps, configDurationMs, renderOpts = {}) {
|
|
855
922
|
let resolved;
|
|
856
923
|
let skipped = false;
|
|
857
924
|
const resolveDurationMs = (mode) => {
|
|
@@ -898,21 +965,24 @@ function createAnimatedOverlayController(name, getMarkup, placementSource, fullS
|
|
|
898
965
|
durationMs: resolved.durationMs,
|
|
899
966
|
},
|
|
900
967
|
});
|
|
901
|
-
},
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
968
|
+
}, {
|
|
969
|
+
prepare: async (mode) => {
|
|
970
|
+
// Outside recording there is nothing to upload, so the controller is a
|
|
971
|
+
// no-op, mirroring the no-op recorder and the static rendered controller.
|
|
972
|
+
if (getRuntimePage() === null || getRuntimeRecordingDir() === null) {
|
|
973
|
+
skipped = true;
|
|
974
|
+
return;
|
|
975
|
+
}
|
|
976
|
+
const durationMs = resolveDurationMs(mode);
|
|
977
|
+
const { placement, sizePx } = await resolvePlacement(placementSource);
|
|
978
|
+
const markup = await getMarkup();
|
|
979
|
+
resolved = {
|
|
980
|
+
html: sizePx !== undefined ? sizeWrapMarkup(markup, sizePx) : markup,
|
|
981
|
+
durationMs,
|
|
982
|
+
...(placement !== undefined && { placement }),
|
|
983
|
+
};
|
|
984
|
+
},
|
|
985
|
+
hideMouse,
|
|
916
986
|
});
|
|
917
987
|
}
|
|
918
988
|
function getAssetExtension(path) {
|