screenci 0.0.75 → 0.0.76
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 +11 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +150 -37
- package/dist/cli.js.map +1 -1
- package/dist/docs/manifest.d.ts +42 -11
- package/dist/docs/manifest.d.ts.map +1 -1
- package/dist/docs/manifest.js +14 -3
- package/dist/docs/manifest.js.map +1 -1
- package/dist/docs/video-sources/installation.screenci.js +7 -9
- package/dist/docs/video-sources/installation.screenci.js.map +1 -1
- package/dist/docs/video-sources/landing.screenci.js +6 -8
- package/dist/docs/video-sources/landing.screenci.js.map +1 -1
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js +3 -4
- package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -1
- package/dist/docs/video-sources/locator-highlight-still.screenci.js +3 -4
- package/dist/docs/video-sources/locator-highlight-still.screenci.js.map +1 -1
- package/dist/docs/video-sources/studio.screenci.js +8 -10
- package/dist/docs/video-sources/studio.screenci.js.map +1 -1
- package/dist/e2e/instrument.e2e.js +52 -1
- package/dist/e2e/instrument.e2e.js.map +1 -1
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/src/asset.d.ts +20 -1
- package/dist/src/asset.d.ts.map +1 -1
- package/dist/src/asset.js +58 -7
- package/dist/src/asset.js.map +1 -1
- package/dist/src/audio.d.ts +16 -0
- package/dist/src/audio.d.ts.map +1 -1
- package/dist/src/audio.js +78 -1
- package/dist/src/audio.js.map +1 -1
- package/dist/src/autoZoom.d.ts.map +1 -1
- package/dist/src/autoZoom.js +3 -1
- package/dist/src/autoZoom.js.map +1 -1
- package/dist/src/browserLaunchOptions.d.ts +24 -2
- package/dist/src/browserLaunchOptions.d.ts.map +1 -1
- package/dist/src/browserLaunchOptions.js +57 -3
- package/dist/src/browserLaunchOptions.js.map +1 -1
- package/dist/src/builder.d.ts +135 -142
- package/dist/src/builder.d.ts.map +1 -1
- package/dist/src/builder.js +218 -77
- package/dist/src/builder.js.map +1 -1
- package/dist/src/callerFile.d.ts +12 -0
- package/dist/src/callerFile.d.ts.map +1 -0
- package/dist/src/callerFile.js +46 -0
- package/dist/src/callerFile.js.map +1 -0
- package/dist/src/changeFocus.d.ts.map +1 -1
- package/dist/src/changeFocus.js +6 -2
- package/dist/src/changeFocus.js.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +15 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/declare.d.ts +59 -0
- package/dist/src/declare.d.ts.map +1 -0
- package/dist/src/declare.js +93 -0
- package/dist/src/declare.js.map +1 -0
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +4 -3
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/events.d.ts +51 -1
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +107 -15
- package/dist/src/events.js.map +1 -1
- package/dist/src/init.d.ts.map +1 -1
- package/dist/src/init.js +32 -30
- package/dist/src/init.js.map +1 -1
- package/dist/src/instrument.d.ts.map +1 -1
- package/dist/src/instrument.js +139 -1
- package/dist/src/instrument.js.map +1 -1
- package/dist/src/localize.d.ts +1 -0
- package/dist/src/localize.d.ts.map +1 -1
- package/dist/src/localize.js +1 -1
- package/dist/src/localize.js.map +1 -1
- package/dist/src/localizeRuntime.d.ts +17 -26
- package/dist/src/localizeRuntime.d.ts.map +1 -1
- package/dist/src/localizeRuntime.js +63 -48
- package/dist/src/localizeRuntime.js.map +1 -1
- package/dist/src/manualZoom.d.ts.map +1 -1
- package/dist/src/manualZoom.js +8 -5
- package/dist/src/manualZoom.js.map +1 -1
- package/dist/src/openBrowser.d.ts +34 -0
- package/dist/src/openBrowser.d.ts.map +1 -0
- package/dist/src/openBrowser.js +62 -0
- package/dist/src/openBrowser.js.map +1 -0
- package/dist/src/recordingData.d.ts +20 -0
- package/dist/src/recordingData.d.ts.map +1 -1
- package/dist/src/screenAudio.d.ts +58 -0
- package/dist/src/screenAudio.d.ts.map +1 -0
- package/dist/src/screenAudio.js +145 -0
- package/dist/src/screenAudio.js.map +1 -0
- package/dist/src/screenAudioSink.d.ts +34 -0
- package/dist/src/screenAudioSink.d.ts.map +1 -0
- package/dist/src/screenAudioSink.js +47 -0
- package/dist/src/screenAudioSink.js.map +1 -0
- package/dist/src/screenshot.d.ts +20 -24
- package/dist/src/screenshot.d.ts.map +1 -1
- package/dist/src/screenshot.js +34 -19
- package/dist/src/screenshot.js.map +1 -1
- package/dist/src/stillCapture.d.ts +5 -0
- package/dist/src/stillCapture.d.ts.map +1 -1
- package/dist/src/stillCapture.js +11 -1
- package/dist/src/stillCapture.js.map +1 -1
- package/dist/src/studio.d.ts +3 -59
- package/dist/src/studio.d.ts.map +1 -1
- package/dist/src/studio.js +1 -41
- package/dist/src/studio.js.map +1 -1
- package/dist/src/types.d.ts +133 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/video.d.ts +63 -52
- package/dist/src/video.d.ts.map +1 -1
- package/dist/src/video.js +143 -32
- package/dist/src/video.js.map +1 -1
- package/dist/src/zoom.d.ts +1 -0
- package/dist/src/zoom.d.ts.map +1 -1
- package/dist/src/zoom.js +3 -0
- package/dist/src/zoom.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/skills/screenci/SKILL.md +2 -2
- package/skills/screenci/references/init.md +4 -3
- package/skills/screenci/references/record.md +1 -1
- package/dist/docs/video-sources/public-urls.screenci.d.ts +0 -2
- package/dist/docs/video-sources/public-urls.screenci.d.ts.map +0 -1
- package/dist/docs/video-sources/public-urls.screenci.js +0 -41
- package/dist/docs/video-sources/public-urls.screenci.js.map +0 -1
package/dist/src/builder.js
CHANGED
|
@@ -2,77 +2,193 @@ import { fileURLToPath } from 'node:url';
|
|
|
2
2
|
import { resolveLocaleForLanguage } from './locales.js';
|
|
3
3
|
import { parseRequestedLanguages } from './runtimeMode.js';
|
|
4
4
|
import { logger } from './logger.js';
|
|
5
|
-
import {
|
|
6
|
-
|
|
5
|
+
import { normalizeFeature, } from './declare.js';
|
|
6
|
+
function normalizeLanguagesArg(arg) {
|
|
7
|
+
if (arg === 'studio')
|
|
8
|
+
return { languages: 'studio' };
|
|
9
|
+
if (Array.isArray(arg))
|
|
10
|
+
return { languages: arg };
|
|
11
|
+
return arg;
|
|
12
|
+
}
|
|
7
13
|
function variantVideoName(baseTitle, variant) {
|
|
8
14
|
return variant === null ? baseTitle : `${baseTitle} ${variant.key}`;
|
|
9
15
|
}
|
|
16
|
+
/** Languages contributed by the per-feature declarations (union of `byLang`). */
|
|
17
|
+
function featureLanguages(state) {
|
|
18
|
+
const set = new Set();
|
|
19
|
+
for (const feature of [
|
|
20
|
+
state.narration,
|
|
21
|
+
state.text,
|
|
22
|
+
state.overlays,
|
|
23
|
+
state.audio,
|
|
24
|
+
]) {
|
|
25
|
+
for (const lang of feature?.languages ?? [])
|
|
26
|
+
set.add(lang);
|
|
27
|
+
}
|
|
28
|
+
return [...set];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolve the recorded language set at registration time. Priority:
|
|
32
|
+
* 1. `video.languages('studio')` -> the web-owned set, injected via the
|
|
33
|
+
* `--languages` channel (`requestedLanguages`); empty => pending.
|
|
34
|
+
* 2. explicit `video.languages([...])`.
|
|
35
|
+
* 3. union of per-feature language keys (e.g. `narration({ fr })` -> French).
|
|
36
|
+
* 4. default `['en']`.
|
|
37
|
+
* The `requestedLanguages` filter (CLI / studio injection) intersects 2-4.
|
|
38
|
+
*/
|
|
39
|
+
export function resolveRecordingLocalize(state, requestedLanguages) {
|
|
40
|
+
const rl = state.recordingLocalize;
|
|
41
|
+
const mode = rl?.mode ?? 'per-language';
|
|
42
|
+
const browserLocale = rl?.browserLocale ?? true;
|
|
43
|
+
const localesPatch = rl?.locales !== undefined ? { locales: rl.locales } : {};
|
|
44
|
+
if (rl?.languages === 'studio') {
|
|
45
|
+
const languages = requestedLanguages ?? [];
|
|
46
|
+
return {
|
|
47
|
+
languages,
|
|
48
|
+
mode,
|
|
49
|
+
browserLocale,
|
|
50
|
+
...localesPatch,
|
|
51
|
+
studioOwned: true,
|
|
52
|
+
pending: languages.length === 0,
|
|
53
|
+
explicit: true,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
let declared;
|
|
57
|
+
let explicit;
|
|
58
|
+
if (rl !== null && rl !== undefined && Array.isArray(rl.languages)) {
|
|
59
|
+
declared = [...rl.languages];
|
|
60
|
+
explicit = true;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const inferred = featureLanguages(state);
|
|
64
|
+
if (inferred.length > 0) {
|
|
65
|
+
declared = inferred;
|
|
66
|
+
explicit = true;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
declared = ['en'];
|
|
70
|
+
explicit = false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const languages = requestedLanguages === null
|
|
74
|
+
? declared
|
|
75
|
+
: declared.filter((lang) => requestedLanguages.includes(lang));
|
|
76
|
+
return {
|
|
77
|
+
languages,
|
|
78
|
+
mode,
|
|
79
|
+
browserLocale,
|
|
80
|
+
...localesPatch,
|
|
81
|
+
studioOwned: false,
|
|
82
|
+
pending: false,
|
|
83
|
+
explicit,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Warn about per-feature values declared for a language outside the recorded set
|
|
88
|
+
* (e.g. `narration({ fr })` while the set is `[fi]`): the value is ignored.
|
|
89
|
+
*/
|
|
90
|
+
function warnUnusedLanguages(state, resolved) {
|
|
91
|
+
const active = new Set(resolved.languages);
|
|
92
|
+
const source = resolved.studioOwned ? 'web' : 'video.languages()';
|
|
93
|
+
const langList = resolved.languages.join(', ') || '(none)';
|
|
94
|
+
const features = [
|
|
95
|
+
['Narration', state.narration],
|
|
96
|
+
['Text', state.text],
|
|
97
|
+
['Overlay', state.overlays],
|
|
98
|
+
['Audio', state.audio],
|
|
99
|
+
];
|
|
100
|
+
for (const [label, feature] of features) {
|
|
101
|
+
if (feature === null)
|
|
102
|
+
continue;
|
|
103
|
+
for (const [lang, entries] of Object.entries(feature.byLang)) {
|
|
104
|
+
if (active.has(lang) || entries === undefined)
|
|
105
|
+
continue;
|
|
106
|
+
for (const name of Object.keys(entries)) {
|
|
107
|
+
logger.warn(`[screenci] ${label} ${name} (${lang}) is not used at all currently, ` +
|
|
108
|
+
`reason: only languages [${langList}] defined in ${source}. ` +
|
|
109
|
+
`See https://screenci.com/docs/localization`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
10
114
|
/**
|
|
11
|
-
* Expand the
|
|
12
|
-
*
|
|
115
|
+
* Expand the fan-out specs into the concrete list of Playwright tests to
|
|
116
|
+
* register. Pure and exported for testing.
|
|
13
117
|
*
|
|
14
|
-
* -
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* a shared recording.
|
|
18
|
-
* -
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* per language unless `browserLocale` is `false`.
|
|
118
|
+
* - A single resolved language (default, or one inferred/declared) yields one
|
|
119
|
+
* language-agnostic test (`language: null`).
|
|
120
|
+
* - `'shared'` mode yields one test carrying every language (overdubbed at
|
|
121
|
+
* render); the `--languages` filter does not split a shared recording.
|
|
122
|
+
* - `'per-language'` mode yields one test per resolved language.
|
|
123
|
+
* - A studio-owned set with nothing selected yet yields one pending test that
|
|
124
|
+
* records (so its schema reaches the backend) but renders nothing.
|
|
22
125
|
*/
|
|
23
126
|
export function expandRegistrations(params) {
|
|
24
|
-
const { baseTitle,
|
|
25
|
-
const variants = eachVariants ?? [null];
|
|
127
|
+
const { baseTitle, state } = params;
|
|
128
|
+
const variants = state.eachVariants ?? [null];
|
|
26
129
|
const registrations = [];
|
|
27
130
|
for (const variant of variants) {
|
|
28
131
|
const videoName = variantVideoName(baseTitle, variant);
|
|
29
132
|
const recordOptions = variant?.recordOptions ?? null;
|
|
30
133
|
const use = variant?.use ?? null;
|
|
31
134
|
const variantLabel = variant === null ? '' : `${variant.key} `;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
recordOptions,
|
|
40
|
-
use,
|
|
41
|
-
localize: null,
|
|
42
|
-
studio,
|
|
43
|
-
});
|
|
135
|
+
const resolved = resolveRecordingLocalize(state, params.requestedLanguages);
|
|
136
|
+
warnUnusedLanguages(state, resolved);
|
|
137
|
+
// Explicitly-declared languages all filtered out (`--languages`) and not a
|
|
138
|
+
// pending studio set: register nothing for this variant.
|
|
139
|
+
if (resolved.explicit &&
|
|
140
|
+
!resolved.studioOwned &&
|
|
141
|
+
resolved.languages.length === 0) {
|
|
44
142
|
continue;
|
|
45
143
|
}
|
|
46
|
-
|
|
144
|
+
const base = {
|
|
145
|
+
videoName,
|
|
146
|
+
recordOptions,
|
|
147
|
+
use,
|
|
148
|
+
narration: state.narration,
|
|
149
|
+
text: state.text,
|
|
150
|
+
overlays: state.overlays,
|
|
151
|
+
audio: state.audio,
|
|
152
|
+
recordingLocalize: resolved,
|
|
153
|
+
};
|
|
154
|
+
// Pending studio set, shared mode, or a single language-agnostic pass: one
|
|
155
|
+
// registration that carries every (or no) language without splitting.
|
|
156
|
+
const singlePass = resolved.pending ||
|
|
157
|
+
resolved.mode === 'shared' ||
|
|
158
|
+
resolved.languages.length <= 1;
|
|
159
|
+
if (singlePass) {
|
|
160
|
+
// A single explicitly-declared language is tagged `[lang]`; the implicit
|
|
161
|
+
// `['en']` default (a plain video) stays language-agnostic.
|
|
162
|
+
const onlyLang = resolved.explicit &&
|
|
163
|
+
resolved.mode === 'per-language' &&
|
|
164
|
+
resolved.languages.length === 1
|
|
165
|
+
? resolved.languages[0]
|
|
166
|
+
: null;
|
|
167
|
+
const describeTitle = onlyLang
|
|
168
|
+
? `${variantLabel}${onlyLang}`.trim()
|
|
169
|
+
: resolved.mode === 'shared' || resolved.pending
|
|
170
|
+
? `${variantLabel}shared`.trim()
|
|
171
|
+
: (variant?.key ?? baseTitle);
|
|
47
172
|
registrations.push({
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
videoName,
|
|
51
|
-
language:
|
|
52
|
-
locale:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
localize,
|
|
56
|
-
studio,
|
|
173
|
+
...base,
|
|
174
|
+
describeTitle,
|
|
175
|
+
leafTitle: onlyLang ? `${videoName} [${onlyLang}]` : videoName,
|
|
176
|
+
language: onlyLang,
|
|
177
|
+
locale: onlyLang && resolved.browserLocale
|
|
178
|
+
? resolveLocaleForLanguage(onlyLang, resolved.locales)
|
|
179
|
+
: null,
|
|
57
180
|
});
|
|
58
181
|
continue;
|
|
59
182
|
}
|
|
60
|
-
const
|
|
61
|
-
? localize.languages
|
|
62
|
-
: localize.languages.filter((lang) => requestedLanguages.includes(lang));
|
|
63
|
-
for (const lang of languages) {
|
|
183
|
+
for (const lang of resolved.languages) {
|
|
64
184
|
registrations.push({
|
|
185
|
+
...base,
|
|
65
186
|
describeTitle: `${variantLabel}${lang}`,
|
|
66
187
|
leafTitle: `${videoName} [${lang}]`,
|
|
67
|
-
videoName,
|
|
68
188
|
language: lang,
|
|
69
|
-
locale:
|
|
70
|
-
? resolveLocaleForLanguage(lang,
|
|
189
|
+
locale: resolved.browserLocale
|
|
190
|
+
? resolveLocaleForLanguage(lang, resolved.locales)
|
|
71
191
|
: null,
|
|
72
|
-
recordOptions,
|
|
73
|
-
use,
|
|
74
|
-
localize,
|
|
75
|
-
studio,
|
|
76
192
|
});
|
|
77
193
|
}
|
|
78
194
|
}
|
|
@@ -81,8 +197,11 @@ export function expandRegistrations(params) {
|
|
|
81
197
|
/** Internal option keys the page/context fixtures read off a registered test. */
|
|
82
198
|
const SCREENCI_LANGUAGE_OPTION = '_screenciLanguage';
|
|
83
199
|
const SCREENCI_VIDEO_NAME_OPTION = '_screenciVideoName';
|
|
84
|
-
const
|
|
85
|
-
const
|
|
200
|
+
const SCREENCI_NARRATION_OPTION = '_screenciNarration';
|
|
201
|
+
const SCREENCI_TEXT_OPTION = '_screenciText';
|
|
202
|
+
const SCREENCI_OVERLAYS_OPTION = '_screenciOverlays';
|
|
203
|
+
const SCREENCI_AUDIO_OPTION = '_screenciAudio';
|
|
204
|
+
const SCREENCI_RECORDING_LOCALIZE_OPTION = '_screenciRecordingLocalize';
|
|
86
205
|
const SCREENCI_SOURCE_FILE_OPTION = '_screenciSourceFile';
|
|
87
206
|
/** Absolute path of this module, used to skip our own frames when capturing. */
|
|
88
207
|
const BUILDER_MODULE_PATH = fileURLToPath(import.meta.url);
|
|
@@ -95,12 +214,9 @@ function callSiteFile(frame) {
|
|
|
95
214
|
}
|
|
96
215
|
/**
|
|
97
216
|
* Capture the source file of the user's `.screenci` script that called the
|
|
98
|
-
* builder. Playwright attributes `testInfo.file` to this module
|
|
99
|
-
*
|
|
100
|
-
* the
|
|
101
|
-
* stack and return the first frame outside this module, which is the script.
|
|
102
|
-
* Returns `null` if no such frame is found (fixtures then fall back to
|
|
103
|
-
* `testInfo.file`).
|
|
217
|
+
* builder. Playwright attributes `testInfo.file` to this module, so asset paths
|
|
218
|
+
* authored relative to the script would otherwise resolve against this package.
|
|
219
|
+
* We walk the call stack and return the first frame outside this module.
|
|
104
220
|
*/
|
|
105
221
|
function captureSourceFile() {
|
|
106
222
|
const originalPrepare = Error.prepareStackTrace;
|
|
@@ -131,8 +247,11 @@ function registerOne(test, reg, details, body, modifier, sourceFile) {
|
|
|
131
247
|
...(reg.locale !== null ? { locale: reg.locale } : {}),
|
|
132
248
|
[SCREENCI_LANGUAGE_OPTION]: reg.language ?? undefined,
|
|
133
249
|
[SCREENCI_VIDEO_NAME_OPTION]: reg.videoName,
|
|
134
|
-
[
|
|
135
|
-
[
|
|
250
|
+
[SCREENCI_NARRATION_OPTION]: reg.narration ?? undefined,
|
|
251
|
+
[SCREENCI_TEXT_OPTION]: reg.text ?? undefined,
|
|
252
|
+
[SCREENCI_OVERLAYS_OPTION]: reg.overlays ?? undefined,
|
|
253
|
+
[SCREENCI_AUDIO_OPTION]: reg.audio ?? undefined,
|
|
254
|
+
[SCREENCI_RECORDING_LOCALIZE_OPTION]: reg.recordingLocalize,
|
|
136
255
|
[SCREENCI_SOURCE_FILE_OPTION]: sourceFile ?? undefined,
|
|
137
256
|
};
|
|
138
257
|
const register = modifier ? test[modifier] : test;
|
|
@@ -159,28 +278,41 @@ function normalizeVariants(variants) {
|
|
|
159
278
|
}
|
|
160
279
|
return variants;
|
|
161
280
|
}
|
|
281
|
+
const EMPTY_STATE = (features) => ({
|
|
282
|
+
narration: null,
|
|
283
|
+
text: null,
|
|
284
|
+
overlays: null,
|
|
285
|
+
audio: null,
|
|
286
|
+
recordingLocalize: null,
|
|
287
|
+
eachVariants: null,
|
|
288
|
+
features,
|
|
289
|
+
});
|
|
290
|
+
/** The full set of feature fixtures for videos. */
|
|
291
|
+
export const VIDEO_FEATURES = new Set([
|
|
292
|
+
'narration',
|
|
293
|
+
'text',
|
|
294
|
+
'overlays',
|
|
295
|
+
'audio',
|
|
296
|
+
]);
|
|
297
|
+
/** Stills are silent: only text + overlays. */
|
|
298
|
+
export const SCREENSHOT_FEATURES = new Set([
|
|
299
|
+
'text',
|
|
300
|
+
'overlays',
|
|
301
|
+
]);
|
|
162
302
|
/**
|
|
163
|
-
* Create a fan-out builder bound to a registrar test instance. `
|
|
164
|
-
*
|
|
165
|
-
*
|
|
303
|
+
* Create a fan-out builder bound to a registrar test instance. `Args` is the
|
|
304
|
+
* medium's fixture arg type (video/screenshot); `features` selects which
|
|
305
|
+
* per-feature methods are valid for the medium.
|
|
166
306
|
*/
|
|
167
|
-
export function createVideoBuilder(test,
|
|
307
|
+
export function createVideoBuilder(test, features = VIDEO_FEATURES, state = EMPTY_STATE(features)) {
|
|
168
308
|
const runTerminal = (modifier, title, detailsOrBody, maybeBody) => {
|
|
169
309
|
const hasDetails = typeof detailsOrBody !== 'function';
|
|
170
310
|
const details = hasDetails ? detailsOrBody : undefined;
|
|
171
311
|
const body = (hasDetails ? maybeBody : detailsOrBody);
|
|
172
|
-
// Captured here, at the user's call site, so the script's path survives
|
|
173
|
-
// even though Playwright records the test as declared in this module.
|
|
174
312
|
const sourceFile = captureSourceFile();
|
|
175
|
-
// Studio-managed names must be unique and disjoint from the seeded localize
|
|
176
|
-
// names. Validate once, here, where both the localize spec and the studio
|
|
177
|
-
// declaration are known (they can be chained in either order).
|
|
178
|
-
validateStudioDeclaration(state.studio, state.localize?.narration?.seededNames ?? [], state.localize?.text?.seededNames ?? []);
|
|
179
313
|
const registrations = expandRegistrations({
|
|
180
314
|
baseTitle: title,
|
|
181
|
-
|
|
182
|
-
studio: state.studio,
|
|
183
|
-
eachVariants: state.eachVariants,
|
|
315
|
+
state,
|
|
184
316
|
requestedLanguages: parseRequestedLanguages(),
|
|
185
317
|
});
|
|
186
318
|
if (registrations.length === 0) {
|
|
@@ -195,15 +327,24 @@ export function createVideoBuilder(test, state = { localize: null, studio: null,
|
|
|
195
327
|
for (const modifier of ['only', 'skip', 'fixme', 'fail']) {
|
|
196
328
|
callable[modifier] = ((title, detailsOrBody, maybeBody) => runTerminal(modifier, title, detailsOrBody, maybeBody));
|
|
197
329
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
330
|
+
const withFeature = (key, arg) => {
|
|
331
|
+
if (!features.has(key)) {
|
|
332
|
+
throw new Error(`[screenci] ${key}() is not available for this medium (a screenshot is silent: only text and overlays apply).`);
|
|
333
|
+
}
|
|
334
|
+
return createVideoBuilder(test, features, {
|
|
335
|
+
...state,
|
|
336
|
+
[key]: normalizeFeature(key, arg),
|
|
337
|
+
});
|
|
338
|
+
};
|
|
339
|
+
callable.narration = ((arg) => withFeature('narration', arg));
|
|
340
|
+
callable.text = ((arg) => withFeature('text', arg));
|
|
341
|
+
callable.overlays = ((arg) => withFeature('overlays', arg));
|
|
342
|
+
callable.audio = ((arg) => withFeature('audio', arg));
|
|
343
|
+
callable.languages = ((arg) => createVideoBuilder(test, features, {
|
|
203
344
|
...state,
|
|
204
|
-
|
|
345
|
+
recordingLocalize: normalizeLanguagesArg(arg),
|
|
205
346
|
}));
|
|
206
|
-
callable.each = (variants) => createVideoBuilder(test, {
|
|
347
|
+
callable.each = (variants) => createVideoBuilder(test, features, {
|
|
207
348
|
...state,
|
|
208
349
|
eachVariants: normalizeVariants(variants),
|
|
209
350
|
});
|
package/dist/src/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capture the absolute path of the first stack frame outside {@link moduleUrl}
|
|
3
|
+
* (the calling module's own `import.meta.url`). Used by `createOverlays` /
|
|
4
|
+
* `createAudio` to attribute each registered asset to the user's `.screenci`
|
|
5
|
+
* script, so up-front validation only checks the assets that script declared
|
|
6
|
+
* (assets from other test files loaded in the same worker are skipped).
|
|
7
|
+
*
|
|
8
|
+
* Returns `null` when no outside frame is found, in which case the registration
|
|
9
|
+
* is left unattributed and validated against every recording.
|
|
10
|
+
*/
|
|
11
|
+
export declare function captureCallerFile(moduleUrl: string): string | null;
|
|
12
|
+
//# sourceMappingURL=callerFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callerFile.d.ts","sourceRoot":"","sources":["../../src/callerFile.ts"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBlE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { fileURLToPath } from 'url';
|
|
2
|
+
/** Normalize a V8 call-site filename (which may be a `file://` URL) to a path. */
|
|
3
|
+
function callSiteFile(frame) {
|
|
4
|
+
const fileName = frame.getFileName();
|
|
5
|
+
if (!fileName)
|
|
6
|
+
return null;
|
|
7
|
+
return fileName.startsWith('file://') ? fileURLToPath(fileName) : fileName;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Capture the absolute path of the first stack frame outside {@link moduleUrl}
|
|
11
|
+
* (the calling module's own `import.meta.url`). Used by `createOverlays` /
|
|
12
|
+
* `createAudio` to attribute each registered asset to the user's `.screenci`
|
|
13
|
+
* script, so up-front validation only checks the assets that script declared
|
|
14
|
+
* (assets from other test files loaded in the same worker are skipped).
|
|
15
|
+
*
|
|
16
|
+
* Returns `null` when no outside frame is found, in which case the registration
|
|
17
|
+
* is left unattributed and validated against every recording.
|
|
18
|
+
*/
|
|
19
|
+
export function captureCallerFile(moduleUrl) {
|
|
20
|
+
// Skip frames belonging to this helper and to the module that called it (the
|
|
21
|
+
// SDK module doing the registration), so the first remaining frame is the
|
|
22
|
+
// user's `.screenci` script.
|
|
23
|
+
const selfPath = fileURLToPath(import.meta.url);
|
|
24
|
+
const callerModulePath = fileURLToPath(moduleUrl);
|
|
25
|
+
const originalPrepare = Error.prepareStackTrace;
|
|
26
|
+
const originalLimit = Error.stackTraceLimit;
|
|
27
|
+
try {
|
|
28
|
+
Error.stackTraceLimit = 50;
|
|
29
|
+
Error.prepareStackTrace = (_error, stack) => stack;
|
|
30
|
+
const stack = new Error().stack;
|
|
31
|
+
if (!Array.isArray(stack))
|
|
32
|
+
return null;
|
|
33
|
+
for (const frame of stack) {
|
|
34
|
+
const file = callSiteFile(frame);
|
|
35
|
+
if (file !== null && file !== selfPath && file !== callerModulePath) {
|
|
36
|
+
return file;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
Error.prepareStackTrace = originalPrepare;
|
|
43
|
+
Error.stackTraceLimit = originalLimit;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=callerFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callerFile.js","sourceRoot":"","sources":["../../src/callerFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,kFAAkF;AAClF,SAAS,YAAY,CAAC,KAAsB;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IACpC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,OAAO,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;AAC5E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,6EAA6E;IAC7E,0EAA0E;IAC1E,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/C,MAAM,gBAAgB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IACjD,MAAM,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAAA;IAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAA;IAC3C,IAAI,CAAC;QACH,KAAK,CAAC,eAAe,GAAG,EAAE,CAAA;QAC1B,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAA;QAClD,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAqC,CAAA;QAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACtC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;YAChC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACpE,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,iBAAiB,GAAG,eAAe,CAAA;QACzC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAA;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeFocus.d.ts","sourceRoot":"","sources":["../../src/changeFocus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAMhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"changeFocus.d.ts","sourceRoot":"","sources":["../../src/changeFocus.ts"],"names":[],"mappings":"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"}
|
package/dist/src/changeFocus.js
CHANGED
|
@@ -3,7 +3,7 @@ import { DEFAULT_CLICK_MOUSE_MOVE_DURATION, DEFAULT_ZOOM_OPTIONS, } from './defa
|
|
|
3
3
|
import { getMousePosition, getScrollDispatchIntervalMs, performMouseMove, resolveMouseMoveDuration, } from './mouse.js';
|
|
4
4
|
import { getAutoZoomState, setCurrentZoomViewport } from './autoZoom.js';
|
|
5
5
|
import { logger } from './logger.js';
|
|
6
|
-
import { buildZoomEvent, resolveAutoZoomOptions, resolveZoomTarget, } from './zoom.js';
|
|
6
|
+
import { buildZoomEvent, resolveAutoZoomOptions, resolveEffectiveDuration, resolveZoomTarget, } from './zoom.js';
|
|
7
7
|
import { isTimingDebugEnabled, resolveRecordingTimingDuration, } from './runtimeMode.js';
|
|
8
8
|
const POSITION_EPSILON_PX = 0.5;
|
|
9
9
|
const CURSOR_TRIGGER_EDGE_THRESHOLD = 0.3;
|
|
@@ -880,6 +880,7 @@ export async function changeFocus(locator, options = {}, mouseMove, allowStandal
|
|
|
880
880
|
x: plan.finalLocatorRect.x + plan.finalLocatorRect.width / 2,
|
|
881
881
|
y: plan.finalLocatorRect.y + plan.finalLocatorRect.height / 2,
|
|
882
882
|
};
|
|
883
|
+
const isZoomOut = plan.targetViewport.width >= currentZoomEnd.size.widthPx;
|
|
883
884
|
const timing = mouseMove !== undefined
|
|
884
885
|
? {
|
|
885
886
|
duration: resolveMouseMoveDuration(page, mouseTarget.x, mouseTarget.y, {
|
|
@@ -890,7 +891,10 @@ export async function changeFocus(locator, options = {}, mouseMove, allowStandal
|
|
|
890
891
|
}),
|
|
891
892
|
easing: mouseMove.easing,
|
|
892
893
|
}
|
|
893
|
-
:
|
|
894
|
+
: {
|
|
895
|
+
...focusTiming,
|
|
896
|
+
duration: resolveRecordingTimingDuration(resolveEffectiveDuration(focusOptions, isZoomOut)),
|
|
897
|
+
};
|
|
894
898
|
const mouseMovePlan = resolveMouseMovePlan({
|
|
895
899
|
mouseMove,
|
|
896
900
|
startViewportPos,
|