screenci 0.0.75 → 0.0.78

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.
Files changed (226) hide show
  1. package/dist/cli.d.ts +62 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +699 -229
  4. package/dist/cli.js.map +1 -1
  5. package/dist/docs/manifest.d.ts +277 -91
  6. package/dist/docs/manifest.d.ts.map +1 -1
  7. package/dist/docs/manifest.js +101 -30
  8. package/dist/docs/manifest.js.map +1 -1
  9. package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts +2 -0
  10. package/dist/docs/video-sources/camera-and-zooming.screenci.d.ts.map +1 -0
  11. package/dist/docs/video-sources/camera-and-zooming.screenci.js +57 -0
  12. package/dist/docs/video-sources/camera-and-zooming.screenci.js.map +1 -0
  13. package/dist/docs/video-sources/installation.screenci.js +19 -10
  14. package/dist/docs/video-sources/installation.screenci.js.map +1 -1
  15. package/dist/docs/video-sources/landing.screenci.js +6 -8
  16. package/dist/docs/video-sources/landing.screenci.js.map +1 -1
  17. package/dist/docs/video-sources/languages.screenci.d.ts +2 -0
  18. package/dist/docs/video-sources/languages.screenci.d.ts.map +1 -0
  19. package/dist/docs/video-sources/languages.screenci.js +68 -0
  20. package/dist/docs/video-sources/languages.screenci.js.map +1 -0
  21. package/dist/docs/video-sources/locator-highlight-animated.screenci.js +4 -5
  22. package/dist/docs/video-sources/locator-highlight-animated.screenci.js.map +1 -1
  23. package/dist/docs/video-sources/locator-highlight-still.screenci.js +3 -4
  24. package/dist/docs/video-sources/locator-highlight-still.screenci.js.map +1 -1
  25. package/dist/docs/video-sources/narration.screenci.d.ts +2 -0
  26. package/dist/docs/video-sources/narration.screenci.d.ts.map +1 -0
  27. package/dist/docs/video-sources/narration.screenci.js +71 -0
  28. package/dist/docs/video-sources/narration.screenci.js.map +1 -0
  29. package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts +2 -0
  30. package/dist/docs/video-sources/public-urls-and-embeds.screenci.d.ts.map +1 -0
  31. package/dist/docs/video-sources/public-urls-and-embeds.screenci.js +60 -0
  32. package/dist/docs/video-sources/public-urls-and-embeds.screenci.js.map +1 -0
  33. package/dist/docs/video-sources/speaking-style.screenci.d.ts +2 -0
  34. package/dist/docs/video-sources/speaking-style.screenci.d.ts.map +1 -0
  35. package/dist/docs/video-sources/speaking-style.screenci.js +76 -0
  36. package/dist/docs/video-sources/speaking-style.screenci.js.map +1 -0
  37. package/dist/docs/video-sources/studio.screenci.js +8 -10
  38. package/dist/docs/video-sources/studio.screenci.js.map +1 -1
  39. package/dist/docs/video-sources/vertical-video.screenci.d.ts +2 -0
  40. package/dist/docs/video-sources/vertical-video.screenci.d.ts.map +1 -0
  41. package/dist/docs/video-sources/vertical-video.screenci.js +58 -0
  42. package/dist/docs/video-sources/vertical-video.screenci.js.map +1 -0
  43. package/dist/docs/videos.d.ts +20 -0
  44. package/dist/docs/videos.d.ts.map +1 -1
  45. package/dist/docs/videos.js +25 -0
  46. package/dist/docs/videos.js.map +1 -1
  47. package/dist/e2e/instrument.e2e.js +60 -1
  48. package/dist/e2e/instrument.e2e.js.map +1 -1
  49. package/dist/e2e/redact.e2e.d.ts +2 -0
  50. package/dist/e2e/redact.e2e.d.ts.map +1 -0
  51. package/dist/e2e/redact.e2e.js +161 -0
  52. package/dist/e2e/redact.e2e.js.map +1 -0
  53. package/dist/index.d.ts +12 -6
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +8 -2
  56. package/dist/index.js.map +1 -1
  57. package/dist/src/asset.d.ts +174 -14
  58. package/dist/src/asset.d.ts.map +1 -1
  59. package/dist/src/asset.js +320 -39
  60. package/dist/src/asset.js.map +1 -1
  61. package/dist/src/assetHash.d.ts +27 -0
  62. package/dist/src/assetHash.d.ts.map +1 -0
  63. package/dist/src/assetHash.js +0 -0
  64. package/dist/src/assetHash.js.map +1 -0
  65. package/dist/src/audio.d.ts +20 -1
  66. package/dist/src/audio.d.ts.map +1 -1
  67. package/dist/src/audio.js +126 -24
  68. package/dist/src/audio.js.map +1 -1
  69. package/dist/src/autoZoom.d.ts.map +1 -1
  70. package/dist/src/autoZoom.js +3 -1
  71. package/dist/src/autoZoom.js.map +1 -1
  72. package/dist/src/browserLaunchOptions.d.ts +24 -2
  73. package/dist/src/browserLaunchOptions.d.ts.map +1 -1
  74. package/dist/src/browserLaunchOptions.js +57 -3
  75. package/dist/src/browserLaunchOptions.js.map +1 -1
  76. package/dist/src/builder.d.ts +229 -136
  77. package/dist/src/builder.d.ts.map +1 -1
  78. package/dist/src/builder.js +264 -77
  79. package/dist/src/builder.js.map +1 -1
  80. package/dist/src/callerFile.d.ts +12 -0
  81. package/dist/src/callerFile.d.ts.map +1 -0
  82. package/dist/src/callerFile.js +46 -0
  83. package/dist/src/callerFile.js.map +1 -0
  84. package/dist/src/changeFocus.d.ts.map +1 -1
  85. package/dist/src/changeFocus.js +109 -36
  86. package/dist/src/changeFocus.js.map +1 -1
  87. package/dist/src/config.d.ts.map +1 -1
  88. package/dist/src/config.js +15 -0
  89. package/dist/src/config.js.map +1 -1
  90. package/dist/src/cue.d.ts +29 -17
  91. package/dist/src/cue.d.ts.map +1 -1
  92. package/dist/src/cue.js +138 -61
  93. package/dist/src/cue.js.map +1 -1
  94. package/dist/src/declare.d.ts +63 -0
  95. package/dist/src/declare.d.ts.map +1 -0
  96. package/dist/src/declare.js +111 -0
  97. package/dist/src/declare.js.map +1 -0
  98. package/dist/src/defaults.d.ts +23 -0
  99. package/dist/src/defaults.d.ts.map +1 -1
  100. package/dist/src/defaults.js +27 -3
  101. package/dist/src/defaults.js.map +1 -1
  102. package/dist/src/events.d.ts +339 -25
  103. package/dist/src/events.d.ts.map +1 -1
  104. package/dist/src/events.js +250 -26
  105. package/dist/src/events.js.map +1 -1
  106. package/dist/src/htmlRasterizer.d.ts +10 -0
  107. package/dist/src/htmlRasterizer.d.ts.map +1 -1
  108. package/dist/src/htmlRasterizer.js +12 -2
  109. package/dist/src/htmlRasterizer.js.map +1 -1
  110. package/dist/src/init.d.ts +2 -0
  111. package/dist/src/init.d.ts.map +1 -1
  112. package/dist/src/init.js +81 -33
  113. package/dist/src/init.js.map +1 -1
  114. package/dist/src/instrument.d.ts.map +1 -1
  115. package/dist/src/instrument.js +164 -8
  116. package/dist/src/instrument.js.map +1 -1
  117. package/dist/src/locales.d.ts.map +1 -1
  118. package/dist/src/locales.js +1 -0
  119. package/dist/src/locales.js.map +1 -1
  120. package/dist/src/localize.d.ts +26 -17
  121. package/dist/src/localize.d.ts.map +1 -1
  122. package/dist/src/localize.js +19 -11
  123. package/dist/src/localize.js.map +1 -1
  124. package/dist/src/localizeRuntime.d.ts +29 -33
  125. package/dist/src/localizeRuntime.d.ts.map +1 -1
  126. package/dist/src/localizeRuntime.js +74 -49
  127. package/dist/src/localizeRuntime.js.map +1 -1
  128. package/dist/src/logger.d.ts +5 -0
  129. package/dist/src/logger.d.ts.map +1 -1
  130. package/dist/src/logger.js +7 -0
  131. package/dist/src/logger.js.map +1 -1
  132. package/dist/src/manualZoom.d.ts.map +1 -1
  133. package/dist/src/manualZoom.js +8 -5
  134. package/dist/src/manualZoom.js.map +1 -1
  135. package/dist/src/narrationVisibility.d.ts +19 -0
  136. package/dist/src/narrationVisibility.d.ts.map +1 -0
  137. package/dist/src/narrationVisibility.js +26 -0
  138. package/dist/src/narrationVisibility.js.map +1 -0
  139. package/dist/src/openBrowser.d.ts +34 -0
  140. package/dist/src/openBrowser.d.ts.map +1 -0
  141. package/dist/src/openBrowser.js +62 -0
  142. package/dist/src/openBrowser.js.map +1 -0
  143. package/dist/src/recordingData.d.ts +27 -0
  144. package/dist/src/recordingData.d.ts.map +1 -1
  145. package/dist/src/recordingSize.d.ts +32 -0
  146. package/dist/src/recordingSize.d.ts.map +1 -0
  147. package/dist/src/recordingSize.js +54 -0
  148. package/dist/src/recordingSize.js.map +1 -0
  149. package/dist/src/redact.d.ts +68 -0
  150. package/dist/src/redact.d.ts.map +1 -0
  151. package/dist/src/redact.js +138 -0
  152. package/dist/src/redact.js.map +1 -0
  153. package/dist/src/redactController.d.ts +61 -0
  154. package/dist/src/redactController.d.ts.map +1 -0
  155. package/dist/src/redactController.js +232 -0
  156. package/dist/src/redactController.js.map +1 -0
  157. package/dist/src/runtimeContext.d.ts +32 -0
  158. package/dist/src/runtimeContext.d.ts.map +1 -1
  159. package/dist/src/runtimeContext.js +21 -0
  160. package/dist/src/runtimeContext.js.map +1 -1
  161. package/dist/src/runtimeMode.d.ts +15 -7
  162. package/dist/src/runtimeMode.d.ts.map +1 -1
  163. package/dist/src/runtimeMode.js +17 -6
  164. package/dist/src/runtimeMode.js.map +1 -1
  165. package/dist/src/screenAudio.d.ts +88 -0
  166. package/dist/src/screenAudio.d.ts.map +1 -0
  167. package/dist/src/screenAudio.js +0 -0
  168. package/dist/src/screenAudio.js.map +1 -0
  169. package/dist/src/screenAudioSink.d.ts +46 -0
  170. package/dist/src/screenAudioSink.d.ts.map +1 -0
  171. package/dist/src/screenAudioSink.js +77 -0
  172. package/dist/src/screenAudioSink.js.map +1 -0
  173. package/dist/src/screenshot.d.ts +27 -29
  174. package/dist/src/screenshot.d.ts.map +1 -1
  175. package/dist/src/screenshot.js +39 -24
  176. package/dist/src/screenshot.js.map +1 -1
  177. package/dist/src/sourceTrim.d.ts +29 -0
  178. package/dist/src/sourceTrim.d.ts.map +1 -0
  179. package/dist/src/sourceTrim.js +76 -0
  180. package/dist/src/sourceTrim.js.map +1 -0
  181. package/dist/src/stillCapture.d.ts +5 -0
  182. package/dist/src/stillCapture.d.ts.map +1 -1
  183. package/dist/src/stillCapture.js +11 -1
  184. package/dist/src/stillCapture.js.map +1 -1
  185. package/dist/src/studio.d.ts +69 -57
  186. package/dist/src/studio.d.ts.map +1 -1
  187. package/dist/src/studio.js +16 -38
  188. package/dist/src/studio.js.map +1 -1
  189. package/dist/src/timelineOffset.d.ts +46 -0
  190. package/dist/src/timelineOffset.d.ts.map +1 -0
  191. package/dist/src/timelineOffset.js +66 -0
  192. package/dist/src/timelineOffset.js.map +1 -0
  193. package/dist/src/titleValidation.d.ts +38 -0
  194. package/dist/src/titleValidation.d.ts.map +1 -1
  195. package/dist/src/titleValidation.js +42 -0
  196. package/dist/src/titleValidation.js.map +1 -1
  197. package/dist/src/types.d.ts +218 -2
  198. package/dist/src/types.d.ts.map +1 -1
  199. package/dist/src/types.js +1 -1
  200. package/dist/src/types.js.map +1 -1
  201. package/dist/src/video.d.ts +74 -60
  202. package/dist/src/video.d.ts.map +1 -1
  203. package/dist/src/video.js +201 -39
  204. package/dist/src/video.js.map +1 -1
  205. package/dist/src/voiceSampleAudio.d.ts +34 -0
  206. package/dist/src/voiceSampleAudio.d.ts.map +1 -0
  207. package/dist/src/voiceSampleAudio.js +105 -0
  208. package/dist/src/voiceSampleAudio.js.map +1 -0
  209. package/dist/src/voices.d.ts +2 -2
  210. package/dist/src/voices.d.ts.map +1 -1
  211. package/dist/src/voices.js +8 -3
  212. package/dist/src/voices.js.map +1 -1
  213. package/dist/src/zoom.d.ts +1 -0
  214. package/dist/src/zoom.d.ts.map +1 -1
  215. package/dist/src/zoom.js +3 -0
  216. package/dist/src/zoom.js.map +1 -1
  217. package/dist/tsconfig.tsbuildinfo +1 -1
  218. package/package.json +3 -2
  219. package/skills/screenci/SKILL.md +2 -2
  220. package/skills/screenci/references/init.md +4 -3
  221. package/skills/screenci/references/record.md +1 -1
  222. package/templates/recordings/assets/logo.png +0 -0
  223. package/dist/docs/video-sources/public-urls.screenci.d.ts +0 -2
  224. package/dist/docs/video-sources/public-urls.screenci.d.ts.map +0 -1
  225. package/dist/docs/video-sources/public-urls.screenci.js +0 -41
  226. package/dist/docs/video-sources/public-urls.screenci.js.map +0 -1
@@ -2,77 +2,239 @@ 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 { normalizeLocalizeSpec, } from './localize.js';
6
- import { validateStudioDeclaration } from './studio.js';
5
+ import { normalizeFeature, } from './declare.js';
6
+ import { STUDIO, isStudioMarker, } from './studio.js';
7
+ function normalizeLanguagesArg(arg) {
8
+ if (isStudioMarker(arg)) {
9
+ // `studio({ languages, mode, ... })`: the seed is a whole config the web app
10
+ // starts from and owns. `studio()` / `studio(['en', ...])`: the names are the
11
+ // seed languages (empty => pending until the web selects a set).
12
+ const cfg = arg.seed ?? {
13
+ languages: arg.names,
14
+ };
15
+ return {
16
+ languages: 'studio',
17
+ ...(cfg.languages !== undefined &&
18
+ cfg.languages.length > 0 && { studioSeed: cfg.languages }),
19
+ ...(cfg.mode !== undefined && { mode: cfg.mode }),
20
+ ...(cfg.locales !== undefined && { locales: cfg.locales }),
21
+ ...(cfg.browserLocale !== undefined && {
22
+ browserLocale: cfg.browserLocale,
23
+ }),
24
+ };
25
+ }
26
+ if (Array.isArray(arg))
27
+ return { languages: arg };
28
+ return arg;
29
+ }
7
30
  function variantVideoName(baseTitle, variant) {
8
31
  return variant === null ? baseTitle : `${baseTitle} ${variant.key}`;
9
32
  }
33
+ /** Languages contributed by the per-feature declarations (union of `byLang`). */
34
+ function featureLanguages(state) {
35
+ const set = new Set();
36
+ for (const feature of [
37
+ state.narration,
38
+ state.values,
39
+ state.overlays,
40
+ state.audio,
41
+ ]) {
42
+ for (const lang of feature?.languages ?? [])
43
+ set.add(lang);
44
+ }
45
+ return [...set];
46
+ }
10
47
  /**
11
- * Expand the localize / each fan-out specs into the concrete list of Playwright
12
- * tests to register. Pure and exported for testing.
48
+ * Resolve the recorded language set at registration time. Priority:
49
+ * 1. `video.languages(studio())` -> web-owned: the UNION of the web's current
50
+ * selection (`requestedLanguages`, injected at record time), the `studioSeed`
51
+ * (`studio(['en', ...])`), and the per-feature language keys defined in code.
52
+ * Empty (none anywhere) => pending.
53
+ * 2. explicit `video.languages([...])`.
54
+ * 3. union of per-feature language keys (e.g. `narration({ fr })` -> French).
55
+ * 4. default `['en']`.
56
+ * The `requestedLanguages` filter (CLI / studio injection) intersects 2-4; for the
57
+ * web-owned set (1) it is unioned in instead, since the web only adds languages.
58
+ */
59
+ export function resolveRecordingLocalize(state, requestedLanguages) {
60
+ const rl = state.recordingLocalize;
61
+ const mode = rl?.mode ?? 'per-language';
62
+ const browserLocale = rl?.browserLocale ?? true;
63
+ const localesPatch = rl?.locales !== undefined ? { locales: rl.locales } : {};
64
+ if (rl?.languages === 'studio') {
65
+ // The web app owns the set, but the recorded languages are the union of:
66
+ // the web's current selection (`requestedLanguages`, fetched/injected at
67
+ // record time), the code seed (`studio(['en', ...])`), and the per-feature
68
+ // languages defined in code (e.g. `narration({ en, fi })`). So a studio-owned
69
+ // video still records every language its code defines, plus whatever the web
70
+ // added, even on the first run before anything is configured in the web.
71
+ const languages = [
72
+ ...new Set([
73
+ ...(requestedLanguages ?? []),
74
+ ...(rl.studioSeed ?? []),
75
+ ...featureLanguages(state),
76
+ ]),
77
+ ];
78
+ return {
79
+ languages,
80
+ // Studio-owned sets render every language they record, so the available
81
+ // set is the recorded set (the union above).
82
+ availableLanguages: languages,
83
+ mode,
84
+ browserLocale,
85
+ ...localesPatch,
86
+ studioOwned: true,
87
+ pending: languages.length === 0,
88
+ explicit: true,
89
+ };
90
+ }
91
+ let declared;
92
+ let explicit;
93
+ if (rl !== null && rl !== undefined && Array.isArray(rl.languages)) {
94
+ declared = [...rl.languages];
95
+ explicit = true;
96
+ }
97
+ else {
98
+ const inferred = featureLanguages(state);
99
+ if (inferred.length > 0) {
100
+ declared = inferred;
101
+ explicit = true;
102
+ }
103
+ else {
104
+ declared = ['en'];
105
+ explicit = false;
106
+ }
107
+ }
108
+ const languages = requestedLanguages === null
109
+ ? declared
110
+ : declared.filter((lang) => requestedLanguages.includes(lang));
111
+ return {
112
+ languages,
113
+ // The full declared set, regardless of the `--languages` render filter. The
114
+ // app reads this so a code-defined language that simply was not rendered this
115
+ // run is not mistaken for one removed from code.
116
+ availableLanguages: declared,
117
+ mode,
118
+ browserLocale,
119
+ ...localesPatch,
120
+ studioOwned: false,
121
+ pending: false,
122
+ explicit,
123
+ };
124
+ }
125
+ /**
126
+ * Warn about per-feature values declared for a language outside the recorded set
127
+ * (e.g. `narration({ fr })` while the set is `[fi]`): the value is ignored.
128
+ */
129
+ function warnUnusedLanguages(state, resolved) {
130
+ const active = new Set(resolved.languages);
131
+ const source = resolved.studioOwned ? 'web' : 'video.languages()';
132
+ const langList = resolved.languages.join(', ') || '(none)';
133
+ const features = [
134
+ ['Narration', state.narration],
135
+ ['Values', state.values],
136
+ ['Overlay', state.overlays],
137
+ ['Audio', state.audio],
138
+ ];
139
+ for (const [label, feature] of features) {
140
+ if (feature === null)
141
+ continue;
142
+ for (const [lang, entries] of Object.entries(feature.byLang)) {
143
+ if (active.has(lang) || entries === undefined)
144
+ continue;
145
+ for (const name of Object.keys(entries)) {
146
+ logger.warn(`[screenci] ${label} ${name} (${lang}) is not used at all currently, ` +
147
+ `reason: only languages [${langList}] defined in ${source}. ` +
148
+ `See https://screenci.com/docs/localization`);
149
+ }
150
+ }
151
+ }
152
+ }
153
+ /**
154
+ * Expand the fan-out specs into the concrete list of Playwright tests to
155
+ * register. Pure and exported for testing.
13
156
  *
14
- * - With no `localize`, each variant yields a single language-agnostic test.
15
- * - In `'shared'` mode, each variant yields one test that carries every language
16
- * (narration is overdubbed at render); the `--languages` filter does not split
17
- * a shared recording.
18
- * - In `'per-language'` mode, each variant yields one test per language,
19
- * intersected with the `--languages` filter when present. A variant whose
20
- * languages are entirely filtered out yields nothing. The browser locale is set
21
- * per language unless `browserLocale` is `false`.
157
+ * - A single resolved language (default, or one inferred/declared) yields one
158
+ * language-agnostic test (`language: null`).
159
+ * - `'shared'` mode yields one test carrying every language (overdubbed at
160
+ * render); the `--languages` filter does not split a shared recording.
161
+ * - `'per-language'` mode yields one test per resolved language.
162
+ * - A studio-owned set with nothing selected yet yields one pending test that
163
+ * records (so its schema reaches the backend) but renders nothing.
22
164
  */
23
165
  export function expandRegistrations(params) {
24
- const { baseTitle, localize, studio, eachVariants, requestedLanguages } = params;
25
- const variants = eachVariants ?? [null];
166
+ const { baseTitle, state } = params;
167
+ const variants = state.eachVariants ?? [null];
26
168
  const registrations = [];
27
169
  for (const variant of variants) {
28
170
  const videoName = variantVideoName(baseTitle, variant);
29
171
  const recordOptions = variant?.recordOptions ?? null;
30
172
  const use = variant?.use ?? null;
31
173
  const variantLabel = variant === null ? '' : `${variant.key} `;
32
- if (localize === null) {
33
- registrations.push({
34
- describeTitle: variant?.key ?? baseTitle,
35
- leafTitle: videoName,
36
- videoName,
37
- language: null,
38
- locale: null,
39
- recordOptions,
40
- use,
41
- localize: null,
42
- studio,
43
- });
174
+ const resolved = resolveRecordingLocalize(state, params.requestedLanguages);
175
+ warnUnusedLanguages(state, resolved);
176
+ // Explicitly-declared languages all filtered out (`--languages`) and not a
177
+ // pending studio set: register nothing for this variant.
178
+ if (resolved.explicit &&
179
+ !resolved.studioOwned &&
180
+ resolved.languages.length === 0) {
44
181
  continue;
45
182
  }
46
- if (localize.mode === 'shared') {
183
+ const base = {
184
+ videoName,
185
+ recordOptions,
186
+ use,
187
+ narration: state.narration,
188
+ values: state.values,
189
+ overlays: state.overlays,
190
+ audio: state.audio,
191
+ recordingLocalize: resolved,
192
+ };
193
+ // Pending studio set, shared mode, or a single language-agnostic pass: one
194
+ // registration that carries every (or no) language without splitting.
195
+ const singlePass = resolved.pending ||
196
+ resolved.mode === 'shared' ||
197
+ resolved.languages.length <= 1;
198
+ if (singlePass) {
199
+ // A single explicitly-declared language is tagged `[lang]`; the implicit
200
+ // `['en']` default (a plain video) stays language-agnostic (no `[en]` tag).
201
+ const onlyLang = resolved.explicit &&
202
+ resolved.mode === 'per-language' &&
203
+ resolved.languages.length === 1
204
+ ? resolved.languages[0]
205
+ : null;
206
+ // Locale: an explicitly tagged single language uses its locale; the implicit
207
+ // default records one round pinned to en-US (the `['en']` default) while
208
+ // staying language-agnostic. Shared / pending passes leave the locale unset.
209
+ const localeLang = onlyLang ??
210
+ (!resolved.explicit && resolved.languages.length === 1
211
+ ? resolved.languages[0]
212
+ : null);
213
+ const describeTitle = onlyLang
214
+ ? `${variantLabel}${onlyLang}`.trim()
215
+ : resolved.mode === 'shared' || resolved.pending
216
+ ? `${variantLabel}shared`.trim()
217
+ : (variant?.key ?? baseTitle);
47
218
  registrations.push({
48
- describeTitle: `${variantLabel}shared`.trim(),
49
- leafTitle: videoName,
50
- videoName,
51
- language: null,
52
- locale: null,
53
- recordOptions,
54
- use,
55
- localize,
56
- studio,
219
+ ...base,
220
+ describeTitle,
221
+ leafTitle: onlyLang ? `${videoName} [${onlyLang}]` : videoName,
222
+ language: onlyLang,
223
+ locale: localeLang && resolved.browserLocale
224
+ ? resolveLocaleForLanguage(localeLang, resolved.locales)
225
+ : null,
57
226
  });
58
227
  continue;
59
228
  }
60
- const languages = requestedLanguages === null
61
- ? localize.languages
62
- : localize.languages.filter((lang) => requestedLanguages.includes(lang));
63
- for (const lang of languages) {
229
+ for (const lang of resolved.languages) {
64
230
  registrations.push({
231
+ ...base,
65
232
  describeTitle: `${variantLabel}${lang}`,
66
233
  leafTitle: `${videoName} [${lang}]`,
67
- videoName,
68
234
  language: lang,
69
- locale: localize.browserLocale
70
- ? resolveLocaleForLanguage(lang, localize.locales)
235
+ locale: resolved.browserLocale
236
+ ? resolveLocaleForLanguage(lang, resolved.locales)
71
237
  : null,
72
- recordOptions,
73
- use,
74
- localize,
75
- studio,
76
238
  });
77
239
  }
78
240
  }
@@ -81,8 +243,11 @@ export function expandRegistrations(params) {
81
243
  /** Internal option keys the page/context fixtures read off a registered test. */
82
244
  const SCREENCI_LANGUAGE_OPTION = '_screenciLanguage';
83
245
  const SCREENCI_VIDEO_NAME_OPTION = '_screenciVideoName';
84
- const SCREENCI_LOCALIZE_OPTION = '_screenciLocalize';
85
- const SCREENCI_STUDIO_OPTION = '_screenciStudio';
246
+ const SCREENCI_NARRATION_OPTION = '_screenciNarration';
247
+ const SCREENCI_VALUES_OPTION = '_screenciValues';
248
+ const SCREENCI_OVERLAYS_OPTION = '_screenciOverlays';
249
+ const SCREENCI_AUDIO_OPTION = '_screenciAudio';
250
+ const SCREENCI_RECORDING_LOCALIZE_OPTION = '_screenciRecordingLocalize';
86
251
  const SCREENCI_SOURCE_FILE_OPTION = '_screenciSourceFile';
87
252
  /** Absolute path of this module, used to skip our own frames when capturing. */
88
253
  const BUILDER_MODULE_PATH = fileURLToPath(import.meta.url);
@@ -95,12 +260,9 @@ function callSiteFile(frame) {
95
260
  }
96
261
  /**
97
262
  * Capture the source file of the user's `.screenci` script that called the
98
- * builder. Playwright attributes `testInfo.file` to this module (the test is
99
- * registered here, not in the user's file), so asset paths authored relative to
100
- * the script would otherwise resolve against this package. We walk the call
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`).
263
+ * builder. Playwright attributes `testInfo.file` to this module, so asset paths
264
+ * authored relative to the script would otherwise resolve against this package.
265
+ * We walk the call stack and return the first frame outside this module.
104
266
  */
105
267
  function captureSourceFile() {
106
268
  const originalPrepare = Error.prepareStackTrace;
@@ -131,8 +293,11 @@ function registerOne(test, reg, details, body, modifier, sourceFile) {
131
293
  ...(reg.locale !== null ? { locale: reg.locale } : {}),
132
294
  [SCREENCI_LANGUAGE_OPTION]: reg.language ?? undefined,
133
295
  [SCREENCI_VIDEO_NAME_OPTION]: reg.videoName,
134
- [SCREENCI_LOCALIZE_OPTION]: reg.localize ?? undefined,
135
- [SCREENCI_STUDIO_OPTION]: reg.studio ?? undefined,
296
+ [SCREENCI_NARRATION_OPTION]: reg.narration ?? undefined,
297
+ [SCREENCI_VALUES_OPTION]: reg.values ?? undefined,
298
+ [SCREENCI_OVERLAYS_OPTION]: reg.overlays ?? undefined,
299
+ [SCREENCI_AUDIO_OPTION]: reg.audio ?? undefined,
300
+ [SCREENCI_RECORDING_LOCALIZE_OPTION]: reg.recordingLocalize,
136
301
  [SCREENCI_SOURCE_FILE_OPTION]: sourceFile ?? undefined,
137
302
  };
138
303
  const register = modifier ? test[modifier] : test;
@@ -159,28 +324,41 @@ function normalizeVariants(variants) {
159
324
  }
160
325
  return variants;
161
326
  }
327
+ const EMPTY_STATE = (features) => ({
328
+ narration: null,
329
+ values: null,
330
+ overlays: null,
331
+ audio: null,
332
+ recordingLocalize: null,
333
+ eachVariants: null,
334
+ features,
335
+ });
336
+ /** The full set of feature fixtures for videos. */
337
+ export const VIDEO_FEATURES = new Set([
338
+ 'narration',
339
+ 'values',
340
+ 'overlays',
341
+ 'audio',
342
+ ]);
343
+ /** Stills are silent: only values + overlays. */
344
+ export const SCREENSHOT_FEATURES = new Set([
345
+ 'values',
346
+ 'overlays',
347
+ ]);
162
348
  /**
163
- * Create a fan-out builder bound to a registrar test instance. `video.localize`
164
- * and `video.each` are the `localize`/`each` methods of a root builder created
165
- * with this factory. `Args` is the medium's fixture arg type (video/screenshot).
349
+ * Create a fan-out builder bound to a registrar test instance. `Args` is the
350
+ * medium's fixture arg type (video/screenshot); `features` selects which
351
+ * per-feature methods are valid for the medium.
166
352
  */
167
- export function createVideoBuilder(test, state = { localize: null, studio: null, eachVariants: null }) {
353
+ export function createVideoBuilder(test, features = VIDEO_FEATURES, state = EMPTY_STATE(features)) {
168
354
  const runTerminal = (modifier, title, detailsOrBody, maybeBody) => {
169
355
  const hasDetails = typeof detailsOrBody !== 'function';
170
356
  const details = hasDetails ? detailsOrBody : undefined;
171
357
  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
358
  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
359
  const registrations = expandRegistrations({
180
360
  baseTitle: title,
181
- localize: state.localize,
182
- studio: state.studio,
183
- eachVariants: state.eachVariants,
361
+ state,
184
362
  requestedLanguages: parseRequestedLanguages(),
185
363
  });
186
364
  if (registrations.length === 0) {
@@ -195,15 +373,24 @@ export function createVideoBuilder(test, state = { localize: null, studio: null,
195
373
  for (const modifier of ['only', 'skip', 'fixme', 'fail']) {
196
374
  callable[modifier] = ((title, detailsOrBody, maybeBody) => runTerminal(modifier, title, detailsOrBody, maybeBody));
197
375
  }
198
- callable.localize = ((spec) => createVideoBuilder(test, {
199
- ...state,
200
- localize: normalizeLocalizeSpec(spec),
201
- }));
202
- callable.studio = ((declaration) => createVideoBuilder(test, {
376
+ const withFeature = (key, arg) => {
377
+ if (!features.has(key)) {
378
+ throw new Error(`[screenci] ${key}() is not available for this medium (a screenshot is silent: only values and overlays apply).`);
379
+ }
380
+ return createVideoBuilder(test, features, {
381
+ ...state,
382
+ [key]: normalizeFeature(key, arg),
383
+ });
384
+ };
385
+ callable.narration = ((arg) => withFeature('narration', arg));
386
+ callable.values = ((arg) => withFeature('values', arg));
387
+ callable.overlays = ((arg) => withFeature('overlays', arg));
388
+ callable.audio = ((arg) => withFeature('audio', arg));
389
+ callable.languages = ((arg) => createVideoBuilder(test, features, {
203
390
  ...state,
204
- studio: declaration,
391
+ recordingLocalize: normalizeLanguagesArg(arg),
205
392
  }));
206
- callable.each = (variants) => createVideoBuilder(test, {
393
+ callable.each = (variants) => createVideoBuilder(test, features, {
207
394
  ...state,
208
395
  eachVariants: normalizeVariants(variants),
209
396
  });
@@ -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":"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"}
1
+ {"version":3,"file":"changeFocus.d.ts","sourceRoot":"","sources":["../../src/changeFocus.ts"],"names":[],"mappings":"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"}