@extenshi/cli 0.21.0 → 0.22.0

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 (107) hide show
  1. package/README.md +4 -0
  2. package/dist/amo-source-detect.d.ts +18 -0
  3. package/dist/amo-source-detect.d.ts.map +1 -0
  4. package/dist/amo-source-detect.js +41 -0
  5. package/dist/amo-source-detect.js.map +1 -0
  6. package/dist/amo-source.d.ts +41 -0
  7. package/dist/amo-source.d.ts.map +1 -0
  8. package/dist/amo-source.js +240 -0
  9. package/dist/amo-source.js.map +1 -0
  10. package/dist/amowebstore-md.d.ts +38 -0
  11. package/dist/amowebstore-md.d.ts.map +1 -0
  12. package/dist/amowebstore-md.js +118 -0
  13. package/dist/amowebstore-md.js.map +1 -0
  14. package/dist/auto-evidence.d.ts +100 -0
  15. package/dist/auto-evidence.d.ts.map +1 -0
  16. package/dist/auto-evidence.js +197 -0
  17. package/dist/auto-evidence.js.map +1 -0
  18. package/dist/cli.js +265 -8
  19. package/dist/cli.js.map +1 -1
  20. package/dist/edgewebstore-md.d.ts +26 -0
  21. package/dist/edgewebstore-md.d.ts.map +1 -0
  22. package/dist/edgewebstore-md.js +95 -0
  23. package/dist/edgewebstore-md.js.map +1 -0
  24. package/dist/evidence-ingest.d.ts +60 -0
  25. package/dist/evidence-ingest.d.ts.map +1 -0
  26. package/dist/evidence-ingest.js +141 -0
  27. package/dist/evidence-ingest.js.map +1 -0
  28. package/dist/firefox-rdp.d.ts +55 -0
  29. package/dist/firefox-rdp.d.ts.map +1 -0
  30. package/dist/firefox-rdp.js +203 -0
  31. package/dist/firefox-rdp.js.map +1 -0
  32. package/dist/gecko-id.d.ts +55 -0
  33. package/dist/gecko-id.d.ts.map +1 -0
  34. package/dist/gecko-id.js +132 -0
  35. package/dist/gecko-id.js.map +1 -0
  36. package/dist/generate-listing.d.ts +19 -8
  37. package/dist/generate-listing.d.ts.map +1 -1
  38. package/dist/generate-listing.js +66 -18
  39. package/dist/generate-listing.js.map +1 -1
  40. package/dist/icon.d.ts +18 -0
  41. package/dist/icon.d.ts.map +1 -1
  42. package/dist/icon.js +29 -20
  43. package/dist/icon.js.map +1 -1
  44. package/dist/media.d.ts +42 -0
  45. package/dist/media.d.ts.map +1 -0
  46. package/dist/media.js +96 -0
  47. package/dist/media.js.map +1 -0
  48. package/dist/package.d.ts +163 -0
  49. package/dist/package.d.ts.map +1 -0
  50. package/dist/package.js +500 -0
  51. package/dist/package.js.map +1 -0
  52. package/dist/page.d.ts +10 -0
  53. package/dist/page.d.ts.map +1 -1
  54. package/dist/page.js +32 -2
  55. package/dist/page.js.map +1 -1
  56. package/dist/pay-contract.d.ts +10 -3
  57. package/dist/pay-contract.d.ts.map +1 -1
  58. package/dist/pay-contract.js +9 -0
  59. package/dist/pay-contract.js.map +1 -1
  60. package/dist/pay-test-cycle.d.ts +40 -0
  61. package/dist/pay-test-cycle.d.ts.map +1 -0
  62. package/dist/pay-test-cycle.js +207 -0
  63. package/dist/pay-test-cycle.js.map +1 -0
  64. package/dist/pay.d.ts +1 -1
  65. package/dist/pay.d.ts.map +1 -1
  66. package/dist/pay.js +1 -0
  67. package/dist/pay.js.map +1 -1
  68. package/dist/project.d.ts +39 -1
  69. package/dist/project.d.ts.map +1 -1
  70. package/dist/project.js +231 -20
  71. package/dist/project.js.map +1 -1
  72. package/dist/publish.d.ts +33 -0
  73. package/dist/publish.d.ts.map +1 -1
  74. package/dist/publish.js +113 -2
  75. package/dist/publish.js.map +1 -1
  76. package/dist/review-checks.d.ts +13 -0
  77. package/dist/review-checks.d.ts.map +1 -1
  78. package/dist/review-checks.js.map +1 -1
  79. package/dist/review-risk.d.ts +10 -1
  80. package/dist/review-risk.d.ts.map +1 -1
  81. package/dist/review-risk.js +1 -0
  82. package/dist/review-risk.js.map +1 -1
  83. package/dist/scan.d.ts +3 -2
  84. package/dist/scan.d.ts.map +1 -1
  85. package/dist/scan.js +4 -2
  86. package/dist/scan.js.map +1 -1
  87. package/dist/screenshots-scenes.d.ts +1383 -0
  88. package/dist/screenshots-scenes.d.ts.map +1 -0
  89. package/dist/screenshots-scenes.js +276 -0
  90. package/dist/screenshots-scenes.js.map +1 -0
  91. package/dist/screenshots.d.ts +145 -0
  92. package/dist/screenshots.d.ts.map +1 -0
  93. package/dist/screenshots.js +557 -0
  94. package/dist/screenshots.js.map +1 -0
  95. package/dist/smoke.d.ts +81 -0
  96. package/dist/smoke.d.ts.map +1 -0
  97. package/dist/smoke.js +491 -0
  98. package/dist/smoke.js.map +1 -0
  99. package/dist/store-assets.d.ts +139 -0
  100. package/dist/store-assets.d.ts.map +1 -0
  101. package/dist/store-assets.js +582 -0
  102. package/dist/store-assets.js.map +1 -0
  103. package/dist/zip.d.ts +57 -0
  104. package/dist/zip.d.ts.map +1 -0
  105. package/dist/zip.js +134 -0
  106. package/dist/zip.js.map +1 -0
  107. package/package.json +4 -3
@@ -0,0 +1,1383 @@
1
+ /**
2
+ * Declarative scenes for `extenshi screenshots` — the file format, and the
3
+ * pure helpers (locale mapping, extension ids, layout, naming) the runner and
4
+ * its tests share. Nothing here touches a browser.
5
+ *
6
+ * scenes.json (version 1):
7
+ *
8
+ * {
9
+ * "version": 1,
10
+ * "viewport": { "width": 1280, "height": 800 }, // default capture size (CSS px)
11
+ * "deviceScaleFactor": 1, // 2 = sharper crops, downscaled on compose
12
+ * "colorScheme": "light",
13
+ * "time": "2026-01-15T10:00:00Z", // optional fixed Date.now()
14
+ * "fixtures": "fixtures", // dir served at http://127.0.0.1:<port>/ (default: scenes dir)
15
+ * "frame": { "background": "#eef2ff", "margin": 48, "shadow": true, "radius": 12 },
16
+ * "setup": [ { "storage": { "area": "local", "set": { "onboarded": true } } } ],
17
+ * "scenes": [
18
+ * { "name": "popup", "open": "popup", "steps": [ { "click": "#enable" } ] },
19
+ * { "name": "on-a-page", "open": "fixture:article.{locale}.html",
20
+ * "steps": [ { "mouse": { "x": 640, "y": 330 } }, { "wait": 400 } ] },
21
+ * { "name": "options", "open": "options", "crop": { "selector": "main", "padding": 24 } }
22
+ * ]
23
+ * }
24
+ *
25
+ * `open`: popup | options | page:<extension path> | fixture:<file> | url:<https://…>.
26
+ * `{locale}` / `{lang}` in `open` expand to the _locales code (pt_BR) / BCP 47 tag (pt-BR).
27
+ * Steps: click, hover, type (+text), press, mouse {x,y}, scroll {x?,y}, wait <ms>,
28
+ * waitFor <selector>, storage {area, set?, remove?, clear?} (runs in the
29
+ * extension's own context), eval <js expression> (runs in the scene page).
30
+ * `crop`: viewport (default) | content (default for popup) | fullPage | {selector, padding}.
31
+ * `fit`: contain (default; the capture is centered on the frame background,
32
+ * never upscaled beyond its captured pixels) | cover (fills the store size).
33
+ */
34
+ import { z } from 'zod';
35
+ import type { Size } from './store-assets.js';
36
+ export declare const stepSchema: z.ZodUnion<[z.ZodObject<{
37
+ click: z.ZodString;
38
+ }, "strict", z.ZodTypeAny, {
39
+ click: string;
40
+ }, {
41
+ click: string;
42
+ }>, z.ZodObject<{
43
+ hover: z.ZodString;
44
+ }, "strict", z.ZodTypeAny, {
45
+ hover: string;
46
+ }, {
47
+ hover: string;
48
+ }>, z.ZodObject<{
49
+ type: z.ZodString;
50
+ text: z.ZodString;
51
+ }, "strict", z.ZodTypeAny, {
52
+ type: string;
53
+ text: string;
54
+ }, {
55
+ type: string;
56
+ text: string;
57
+ }>, z.ZodObject<{
58
+ press: z.ZodString;
59
+ }, "strict", z.ZodTypeAny, {
60
+ press: string;
61
+ }, {
62
+ press: string;
63
+ }>, z.ZodObject<{
64
+ mouse: z.ZodObject<{
65
+ x: z.ZodNumber;
66
+ y: z.ZodNumber;
67
+ }, "strict", z.ZodTypeAny, {
68
+ x: number;
69
+ y: number;
70
+ }, {
71
+ x: number;
72
+ y: number;
73
+ }>;
74
+ }, "strict", z.ZodTypeAny, {
75
+ mouse: {
76
+ x: number;
77
+ y: number;
78
+ };
79
+ }, {
80
+ mouse: {
81
+ x: number;
82
+ y: number;
83
+ };
84
+ }>, z.ZodObject<{
85
+ scroll: z.ZodObject<{
86
+ x: z.ZodDefault<z.ZodNumber>;
87
+ y: z.ZodNumber;
88
+ }, "strict", z.ZodTypeAny, {
89
+ x: number;
90
+ y: number;
91
+ }, {
92
+ y: number;
93
+ x?: number | undefined;
94
+ }>;
95
+ }, "strict", z.ZodTypeAny, {
96
+ scroll: {
97
+ x: number;
98
+ y: number;
99
+ };
100
+ }, {
101
+ scroll: {
102
+ y: number;
103
+ x?: number | undefined;
104
+ };
105
+ }>, z.ZodObject<{
106
+ wait: z.ZodNumber;
107
+ }, "strict", z.ZodTypeAny, {
108
+ wait: number;
109
+ }, {
110
+ wait: number;
111
+ }>, z.ZodObject<{
112
+ waitFor: z.ZodString;
113
+ state: z.ZodDefault<z.ZodEnum<["visible", "hidden", "attached", "detached"]>>;
114
+ }, "strict", z.ZodTypeAny, {
115
+ state: "detached" | "visible" | "hidden" | "attached";
116
+ waitFor: string;
117
+ }, {
118
+ waitFor: string;
119
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
120
+ }>, z.ZodObject<{
121
+ storage: z.ZodObject<{
122
+ area: z.ZodDefault<z.ZodEnum<["local", "sync", "session"]>>;
123
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
124
+ remove: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
125
+ clear: z.ZodOptional<z.ZodBoolean>;
126
+ }, "strict", z.ZodTypeAny, {
127
+ area: "local" | "sync" | "session";
128
+ set?: Record<string, unknown> | undefined;
129
+ remove?: string[] | undefined;
130
+ clear?: boolean | undefined;
131
+ }, {
132
+ set?: Record<string, unknown> | undefined;
133
+ area?: "local" | "sync" | "session" | undefined;
134
+ remove?: string[] | undefined;
135
+ clear?: boolean | undefined;
136
+ }>;
137
+ }, "strict", z.ZodTypeAny, {
138
+ storage: {
139
+ area: "local" | "sync" | "session";
140
+ set?: Record<string, unknown> | undefined;
141
+ remove?: string[] | undefined;
142
+ clear?: boolean | undefined;
143
+ };
144
+ }, {
145
+ storage: {
146
+ set?: Record<string, unknown> | undefined;
147
+ area?: "local" | "sync" | "session" | undefined;
148
+ remove?: string[] | undefined;
149
+ clear?: boolean | undefined;
150
+ };
151
+ }>, z.ZodObject<{
152
+ eval: z.ZodString;
153
+ }, "strict", z.ZodTypeAny, {
154
+ eval: string;
155
+ }, {
156
+ eval: string;
157
+ }>]>;
158
+ export type Step = z.infer<typeof stepSchema>;
159
+ export declare const OPEN_PATTERN: RegExp;
160
+ declare const sceneSchema: z.ZodObject<{
161
+ name: z.ZodString;
162
+ open: z.ZodString;
163
+ viewport: z.ZodOptional<z.ZodObject<{
164
+ width: z.ZodNumber;
165
+ height: z.ZodNumber;
166
+ }, "strict", z.ZodTypeAny, {
167
+ width: number;
168
+ height: number;
169
+ }, {
170
+ width: number;
171
+ height: number;
172
+ }>>;
173
+ colorScheme: z.ZodOptional<z.ZodEnum<["light", "dark"]>>;
174
+ /** JS run before the page's own scripts (Playwright addInitScript). */
175
+ init: z.ZodOptional<z.ZodString>;
176
+ steps: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodObject<{
177
+ click: z.ZodString;
178
+ }, "strict", z.ZodTypeAny, {
179
+ click: string;
180
+ }, {
181
+ click: string;
182
+ }>, z.ZodObject<{
183
+ hover: z.ZodString;
184
+ }, "strict", z.ZodTypeAny, {
185
+ hover: string;
186
+ }, {
187
+ hover: string;
188
+ }>, z.ZodObject<{
189
+ type: z.ZodString;
190
+ text: z.ZodString;
191
+ }, "strict", z.ZodTypeAny, {
192
+ type: string;
193
+ text: string;
194
+ }, {
195
+ type: string;
196
+ text: string;
197
+ }>, z.ZodObject<{
198
+ press: z.ZodString;
199
+ }, "strict", z.ZodTypeAny, {
200
+ press: string;
201
+ }, {
202
+ press: string;
203
+ }>, z.ZodObject<{
204
+ mouse: z.ZodObject<{
205
+ x: z.ZodNumber;
206
+ y: z.ZodNumber;
207
+ }, "strict", z.ZodTypeAny, {
208
+ x: number;
209
+ y: number;
210
+ }, {
211
+ x: number;
212
+ y: number;
213
+ }>;
214
+ }, "strict", z.ZodTypeAny, {
215
+ mouse: {
216
+ x: number;
217
+ y: number;
218
+ };
219
+ }, {
220
+ mouse: {
221
+ x: number;
222
+ y: number;
223
+ };
224
+ }>, z.ZodObject<{
225
+ scroll: z.ZodObject<{
226
+ x: z.ZodDefault<z.ZodNumber>;
227
+ y: z.ZodNumber;
228
+ }, "strict", z.ZodTypeAny, {
229
+ x: number;
230
+ y: number;
231
+ }, {
232
+ y: number;
233
+ x?: number | undefined;
234
+ }>;
235
+ }, "strict", z.ZodTypeAny, {
236
+ scroll: {
237
+ x: number;
238
+ y: number;
239
+ };
240
+ }, {
241
+ scroll: {
242
+ y: number;
243
+ x?: number | undefined;
244
+ };
245
+ }>, z.ZodObject<{
246
+ wait: z.ZodNumber;
247
+ }, "strict", z.ZodTypeAny, {
248
+ wait: number;
249
+ }, {
250
+ wait: number;
251
+ }>, z.ZodObject<{
252
+ waitFor: z.ZodString;
253
+ state: z.ZodDefault<z.ZodEnum<["visible", "hidden", "attached", "detached"]>>;
254
+ }, "strict", z.ZodTypeAny, {
255
+ state: "detached" | "visible" | "hidden" | "attached";
256
+ waitFor: string;
257
+ }, {
258
+ waitFor: string;
259
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
260
+ }>, z.ZodObject<{
261
+ storage: z.ZodObject<{
262
+ area: z.ZodDefault<z.ZodEnum<["local", "sync", "session"]>>;
263
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
264
+ remove: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
265
+ clear: z.ZodOptional<z.ZodBoolean>;
266
+ }, "strict", z.ZodTypeAny, {
267
+ area: "local" | "sync" | "session";
268
+ set?: Record<string, unknown> | undefined;
269
+ remove?: string[] | undefined;
270
+ clear?: boolean | undefined;
271
+ }, {
272
+ set?: Record<string, unknown> | undefined;
273
+ area?: "local" | "sync" | "session" | undefined;
274
+ remove?: string[] | undefined;
275
+ clear?: boolean | undefined;
276
+ }>;
277
+ }, "strict", z.ZodTypeAny, {
278
+ storage: {
279
+ area: "local" | "sync" | "session";
280
+ set?: Record<string, unknown> | undefined;
281
+ remove?: string[] | undefined;
282
+ clear?: boolean | undefined;
283
+ };
284
+ }, {
285
+ storage: {
286
+ set?: Record<string, unknown> | undefined;
287
+ area?: "local" | "sync" | "session" | undefined;
288
+ remove?: string[] | undefined;
289
+ clear?: boolean | undefined;
290
+ };
291
+ }>, z.ZodObject<{
292
+ eval: z.ZodString;
293
+ }, "strict", z.ZodTypeAny, {
294
+ eval: string;
295
+ }, {
296
+ eval: string;
297
+ }>]>, "many">>;
298
+ crop: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["viewport", "content", "fullPage"]>, z.ZodObject<{
299
+ selector: z.ZodString;
300
+ padding: z.ZodDefault<z.ZodNumber>;
301
+ }, "strict", z.ZodTypeAny, {
302
+ selector: string;
303
+ padding: number;
304
+ }, {
305
+ selector: string;
306
+ padding?: number | undefined;
307
+ }>]>>;
308
+ fit: z.ZodDefault<z.ZodEnum<["contain", "cover"]>>;
309
+ frame: z.ZodOptional<z.ZodObject<{
310
+ background: z.ZodOptional<z.ZodString>;
311
+ /** Second colour: a top-to-bottom gradient from `background`. */
312
+ backgroundTo: z.ZodOptional<z.ZodString>;
313
+ margin: z.ZodOptional<z.ZodNumber>;
314
+ shadow: z.ZodOptional<z.ZodBoolean>;
315
+ radius: z.ZodOptional<z.ZodNumber>;
316
+ }, "strict", z.ZodTypeAny, {
317
+ background?: string | undefined;
318
+ backgroundTo?: string | undefined;
319
+ margin?: number | undefined;
320
+ shadow?: boolean | undefined;
321
+ radius?: number | undefined;
322
+ }, {
323
+ background?: string | undefined;
324
+ backgroundTo?: string | undefined;
325
+ margin?: number | undefined;
326
+ shadow?: boolean | undefined;
327
+ radius?: number | undefined;
328
+ }>>;
329
+ stores: z.ZodOptional<z.ZodArray<z.ZodEnum<["chrome", "edge", "firefox"]>, "many">>;
330
+ }, "strict", z.ZodTypeAny, {
331
+ name: string;
332
+ open: string;
333
+ steps: ({
334
+ click: string;
335
+ } | {
336
+ hover: string;
337
+ } | {
338
+ type: string;
339
+ text: string;
340
+ } | {
341
+ press: string;
342
+ } | {
343
+ mouse: {
344
+ x: number;
345
+ y: number;
346
+ };
347
+ } | {
348
+ scroll: {
349
+ x: number;
350
+ y: number;
351
+ };
352
+ } | {
353
+ wait: number;
354
+ } | {
355
+ state: "detached" | "visible" | "hidden" | "attached";
356
+ waitFor: string;
357
+ } | {
358
+ storage: {
359
+ area: "local" | "sync" | "session";
360
+ set?: Record<string, unknown> | undefined;
361
+ remove?: string[] | undefined;
362
+ clear?: boolean | undefined;
363
+ };
364
+ } | {
365
+ eval: string;
366
+ })[];
367
+ fit: "contain" | "cover";
368
+ stores?: ("chrome" | "edge" | "firefox")[] | undefined;
369
+ frame?: {
370
+ background?: string | undefined;
371
+ backgroundTo?: string | undefined;
372
+ margin?: number | undefined;
373
+ shadow?: boolean | undefined;
374
+ radius?: number | undefined;
375
+ } | undefined;
376
+ viewport?: {
377
+ width: number;
378
+ height: number;
379
+ } | undefined;
380
+ colorScheme?: "light" | "dark" | undefined;
381
+ init?: string | undefined;
382
+ crop?: "content" | "viewport" | "fullPage" | {
383
+ selector: string;
384
+ padding: number;
385
+ } | undefined;
386
+ }, {
387
+ name: string;
388
+ open: string;
389
+ stores?: ("chrome" | "edge" | "firefox")[] | undefined;
390
+ frame?: {
391
+ background?: string | undefined;
392
+ backgroundTo?: string | undefined;
393
+ margin?: number | undefined;
394
+ shadow?: boolean | undefined;
395
+ radius?: number | undefined;
396
+ } | undefined;
397
+ steps?: ({
398
+ click: string;
399
+ } | {
400
+ hover: string;
401
+ } | {
402
+ type: string;
403
+ text: string;
404
+ } | {
405
+ press: string;
406
+ } | {
407
+ mouse: {
408
+ x: number;
409
+ y: number;
410
+ };
411
+ } | {
412
+ scroll: {
413
+ y: number;
414
+ x?: number | undefined;
415
+ };
416
+ } | {
417
+ wait: number;
418
+ } | {
419
+ waitFor: string;
420
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
421
+ } | {
422
+ storage: {
423
+ set?: Record<string, unknown> | undefined;
424
+ area?: "local" | "sync" | "session" | undefined;
425
+ remove?: string[] | undefined;
426
+ clear?: boolean | undefined;
427
+ };
428
+ } | {
429
+ eval: string;
430
+ })[] | undefined;
431
+ viewport?: {
432
+ width: number;
433
+ height: number;
434
+ } | undefined;
435
+ colorScheme?: "light" | "dark" | undefined;
436
+ init?: string | undefined;
437
+ crop?: "content" | "viewport" | "fullPage" | {
438
+ selector: string;
439
+ padding?: number | undefined;
440
+ } | undefined;
441
+ fit?: "contain" | "cover" | undefined;
442
+ }>;
443
+ export type Scene = z.infer<typeof sceneSchema>;
444
+ export declare const scenesFileSchema: z.ZodEffects<z.ZodObject<{
445
+ $schema: z.ZodOptional<z.ZodString>;
446
+ version: z.ZodDefault<z.ZodLiteral<1>>;
447
+ viewport: z.ZodDefault<z.ZodObject<{
448
+ width: z.ZodNumber;
449
+ height: z.ZodNumber;
450
+ }, "strict", z.ZodTypeAny, {
451
+ width: number;
452
+ height: number;
453
+ }, {
454
+ width: number;
455
+ height: number;
456
+ }>>;
457
+ deviceScaleFactor: z.ZodDefault<z.ZodNumber>;
458
+ colorScheme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
459
+ time: z.ZodOptional<z.ZodString>;
460
+ fixtures: z.ZodOptional<z.ZodString>;
461
+ animations: z.ZodDefault<z.ZodEnum<["disabled", "allow"]>>;
462
+ frame: z.ZodDefault<z.ZodObject<{
463
+ background: z.ZodOptional<z.ZodString>;
464
+ /** Second colour: a top-to-bottom gradient from `background`. */
465
+ backgroundTo: z.ZodOptional<z.ZodString>;
466
+ margin: z.ZodOptional<z.ZodNumber>;
467
+ shadow: z.ZodOptional<z.ZodBoolean>;
468
+ radius: z.ZodOptional<z.ZodNumber>;
469
+ }, "strict", z.ZodTypeAny, {
470
+ background?: string | undefined;
471
+ backgroundTo?: string | undefined;
472
+ margin?: number | undefined;
473
+ shadow?: boolean | undefined;
474
+ radius?: number | undefined;
475
+ }, {
476
+ background?: string | undefined;
477
+ backgroundTo?: string | undefined;
478
+ margin?: number | undefined;
479
+ shadow?: boolean | undefined;
480
+ radius?: number | undefined;
481
+ }>>;
482
+ setup: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodObject<{
483
+ click: z.ZodString;
484
+ }, "strict", z.ZodTypeAny, {
485
+ click: string;
486
+ }, {
487
+ click: string;
488
+ }>, z.ZodObject<{
489
+ hover: z.ZodString;
490
+ }, "strict", z.ZodTypeAny, {
491
+ hover: string;
492
+ }, {
493
+ hover: string;
494
+ }>, z.ZodObject<{
495
+ type: z.ZodString;
496
+ text: z.ZodString;
497
+ }, "strict", z.ZodTypeAny, {
498
+ type: string;
499
+ text: string;
500
+ }, {
501
+ type: string;
502
+ text: string;
503
+ }>, z.ZodObject<{
504
+ press: z.ZodString;
505
+ }, "strict", z.ZodTypeAny, {
506
+ press: string;
507
+ }, {
508
+ press: string;
509
+ }>, z.ZodObject<{
510
+ mouse: z.ZodObject<{
511
+ x: z.ZodNumber;
512
+ y: z.ZodNumber;
513
+ }, "strict", z.ZodTypeAny, {
514
+ x: number;
515
+ y: number;
516
+ }, {
517
+ x: number;
518
+ y: number;
519
+ }>;
520
+ }, "strict", z.ZodTypeAny, {
521
+ mouse: {
522
+ x: number;
523
+ y: number;
524
+ };
525
+ }, {
526
+ mouse: {
527
+ x: number;
528
+ y: number;
529
+ };
530
+ }>, z.ZodObject<{
531
+ scroll: z.ZodObject<{
532
+ x: z.ZodDefault<z.ZodNumber>;
533
+ y: z.ZodNumber;
534
+ }, "strict", z.ZodTypeAny, {
535
+ x: number;
536
+ y: number;
537
+ }, {
538
+ y: number;
539
+ x?: number | undefined;
540
+ }>;
541
+ }, "strict", z.ZodTypeAny, {
542
+ scroll: {
543
+ x: number;
544
+ y: number;
545
+ };
546
+ }, {
547
+ scroll: {
548
+ y: number;
549
+ x?: number | undefined;
550
+ };
551
+ }>, z.ZodObject<{
552
+ wait: z.ZodNumber;
553
+ }, "strict", z.ZodTypeAny, {
554
+ wait: number;
555
+ }, {
556
+ wait: number;
557
+ }>, z.ZodObject<{
558
+ waitFor: z.ZodString;
559
+ state: z.ZodDefault<z.ZodEnum<["visible", "hidden", "attached", "detached"]>>;
560
+ }, "strict", z.ZodTypeAny, {
561
+ state: "detached" | "visible" | "hidden" | "attached";
562
+ waitFor: string;
563
+ }, {
564
+ waitFor: string;
565
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
566
+ }>, z.ZodObject<{
567
+ storage: z.ZodObject<{
568
+ area: z.ZodDefault<z.ZodEnum<["local", "sync", "session"]>>;
569
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
570
+ remove: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
571
+ clear: z.ZodOptional<z.ZodBoolean>;
572
+ }, "strict", z.ZodTypeAny, {
573
+ area: "local" | "sync" | "session";
574
+ set?: Record<string, unknown> | undefined;
575
+ remove?: string[] | undefined;
576
+ clear?: boolean | undefined;
577
+ }, {
578
+ set?: Record<string, unknown> | undefined;
579
+ area?: "local" | "sync" | "session" | undefined;
580
+ remove?: string[] | undefined;
581
+ clear?: boolean | undefined;
582
+ }>;
583
+ }, "strict", z.ZodTypeAny, {
584
+ storage: {
585
+ area: "local" | "sync" | "session";
586
+ set?: Record<string, unknown> | undefined;
587
+ remove?: string[] | undefined;
588
+ clear?: boolean | undefined;
589
+ };
590
+ }, {
591
+ storage: {
592
+ set?: Record<string, unknown> | undefined;
593
+ area?: "local" | "sync" | "session" | undefined;
594
+ remove?: string[] | undefined;
595
+ clear?: boolean | undefined;
596
+ };
597
+ }>, z.ZodObject<{
598
+ eval: z.ZodString;
599
+ }, "strict", z.ZodTypeAny, {
600
+ eval: string;
601
+ }, {
602
+ eval: string;
603
+ }>]>, "many">>;
604
+ scenes: z.ZodArray<z.ZodObject<{
605
+ name: z.ZodString;
606
+ open: z.ZodString;
607
+ viewport: z.ZodOptional<z.ZodObject<{
608
+ width: z.ZodNumber;
609
+ height: z.ZodNumber;
610
+ }, "strict", z.ZodTypeAny, {
611
+ width: number;
612
+ height: number;
613
+ }, {
614
+ width: number;
615
+ height: number;
616
+ }>>;
617
+ colorScheme: z.ZodOptional<z.ZodEnum<["light", "dark"]>>;
618
+ /** JS run before the page's own scripts (Playwright addInitScript). */
619
+ init: z.ZodOptional<z.ZodString>;
620
+ steps: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodObject<{
621
+ click: z.ZodString;
622
+ }, "strict", z.ZodTypeAny, {
623
+ click: string;
624
+ }, {
625
+ click: string;
626
+ }>, z.ZodObject<{
627
+ hover: z.ZodString;
628
+ }, "strict", z.ZodTypeAny, {
629
+ hover: string;
630
+ }, {
631
+ hover: string;
632
+ }>, z.ZodObject<{
633
+ type: z.ZodString;
634
+ text: z.ZodString;
635
+ }, "strict", z.ZodTypeAny, {
636
+ type: string;
637
+ text: string;
638
+ }, {
639
+ type: string;
640
+ text: string;
641
+ }>, z.ZodObject<{
642
+ press: z.ZodString;
643
+ }, "strict", z.ZodTypeAny, {
644
+ press: string;
645
+ }, {
646
+ press: string;
647
+ }>, z.ZodObject<{
648
+ mouse: z.ZodObject<{
649
+ x: z.ZodNumber;
650
+ y: z.ZodNumber;
651
+ }, "strict", z.ZodTypeAny, {
652
+ x: number;
653
+ y: number;
654
+ }, {
655
+ x: number;
656
+ y: number;
657
+ }>;
658
+ }, "strict", z.ZodTypeAny, {
659
+ mouse: {
660
+ x: number;
661
+ y: number;
662
+ };
663
+ }, {
664
+ mouse: {
665
+ x: number;
666
+ y: number;
667
+ };
668
+ }>, z.ZodObject<{
669
+ scroll: z.ZodObject<{
670
+ x: z.ZodDefault<z.ZodNumber>;
671
+ y: z.ZodNumber;
672
+ }, "strict", z.ZodTypeAny, {
673
+ x: number;
674
+ y: number;
675
+ }, {
676
+ y: number;
677
+ x?: number | undefined;
678
+ }>;
679
+ }, "strict", z.ZodTypeAny, {
680
+ scroll: {
681
+ x: number;
682
+ y: number;
683
+ };
684
+ }, {
685
+ scroll: {
686
+ y: number;
687
+ x?: number | undefined;
688
+ };
689
+ }>, z.ZodObject<{
690
+ wait: z.ZodNumber;
691
+ }, "strict", z.ZodTypeAny, {
692
+ wait: number;
693
+ }, {
694
+ wait: number;
695
+ }>, z.ZodObject<{
696
+ waitFor: z.ZodString;
697
+ state: z.ZodDefault<z.ZodEnum<["visible", "hidden", "attached", "detached"]>>;
698
+ }, "strict", z.ZodTypeAny, {
699
+ state: "detached" | "visible" | "hidden" | "attached";
700
+ waitFor: string;
701
+ }, {
702
+ waitFor: string;
703
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
704
+ }>, z.ZodObject<{
705
+ storage: z.ZodObject<{
706
+ area: z.ZodDefault<z.ZodEnum<["local", "sync", "session"]>>;
707
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
708
+ remove: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
709
+ clear: z.ZodOptional<z.ZodBoolean>;
710
+ }, "strict", z.ZodTypeAny, {
711
+ area: "local" | "sync" | "session";
712
+ set?: Record<string, unknown> | undefined;
713
+ remove?: string[] | undefined;
714
+ clear?: boolean | undefined;
715
+ }, {
716
+ set?: Record<string, unknown> | undefined;
717
+ area?: "local" | "sync" | "session" | undefined;
718
+ remove?: string[] | undefined;
719
+ clear?: boolean | undefined;
720
+ }>;
721
+ }, "strict", z.ZodTypeAny, {
722
+ storage: {
723
+ area: "local" | "sync" | "session";
724
+ set?: Record<string, unknown> | undefined;
725
+ remove?: string[] | undefined;
726
+ clear?: boolean | undefined;
727
+ };
728
+ }, {
729
+ storage: {
730
+ set?: Record<string, unknown> | undefined;
731
+ area?: "local" | "sync" | "session" | undefined;
732
+ remove?: string[] | undefined;
733
+ clear?: boolean | undefined;
734
+ };
735
+ }>, z.ZodObject<{
736
+ eval: z.ZodString;
737
+ }, "strict", z.ZodTypeAny, {
738
+ eval: string;
739
+ }, {
740
+ eval: string;
741
+ }>]>, "many">>;
742
+ crop: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["viewport", "content", "fullPage"]>, z.ZodObject<{
743
+ selector: z.ZodString;
744
+ padding: z.ZodDefault<z.ZodNumber>;
745
+ }, "strict", z.ZodTypeAny, {
746
+ selector: string;
747
+ padding: number;
748
+ }, {
749
+ selector: string;
750
+ padding?: number | undefined;
751
+ }>]>>;
752
+ fit: z.ZodDefault<z.ZodEnum<["contain", "cover"]>>;
753
+ frame: z.ZodOptional<z.ZodObject<{
754
+ background: z.ZodOptional<z.ZodString>;
755
+ /** Second colour: a top-to-bottom gradient from `background`. */
756
+ backgroundTo: z.ZodOptional<z.ZodString>;
757
+ margin: z.ZodOptional<z.ZodNumber>;
758
+ shadow: z.ZodOptional<z.ZodBoolean>;
759
+ radius: z.ZodOptional<z.ZodNumber>;
760
+ }, "strict", z.ZodTypeAny, {
761
+ background?: string | undefined;
762
+ backgroundTo?: string | undefined;
763
+ margin?: number | undefined;
764
+ shadow?: boolean | undefined;
765
+ radius?: number | undefined;
766
+ }, {
767
+ background?: string | undefined;
768
+ backgroundTo?: string | undefined;
769
+ margin?: number | undefined;
770
+ shadow?: boolean | undefined;
771
+ radius?: number | undefined;
772
+ }>>;
773
+ stores: z.ZodOptional<z.ZodArray<z.ZodEnum<["chrome", "edge", "firefox"]>, "many">>;
774
+ }, "strict", z.ZodTypeAny, {
775
+ name: string;
776
+ open: string;
777
+ steps: ({
778
+ click: string;
779
+ } | {
780
+ hover: string;
781
+ } | {
782
+ type: string;
783
+ text: string;
784
+ } | {
785
+ press: string;
786
+ } | {
787
+ mouse: {
788
+ x: number;
789
+ y: number;
790
+ };
791
+ } | {
792
+ scroll: {
793
+ x: number;
794
+ y: number;
795
+ };
796
+ } | {
797
+ wait: number;
798
+ } | {
799
+ state: "detached" | "visible" | "hidden" | "attached";
800
+ waitFor: string;
801
+ } | {
802
+ storage: {
803
+ area: "local" | "sync" | "session";
804
+ set?: Record<string, unknown> | undefined;
805
+ remove?: string[] | undefined;
806
+ clear?: boolean | undefined;
807
+ };
808
+ } | {
809
+ eval: string;
810
+ })[];
811
+ fit: "contain" | "cover";
812
+ stores?: ("chrome" | "edge" | "firefox")[] | undefined;
813
+ frame?: {
814
+ background?: string | undefined;
815
+ backgroundTo?: string | undefined;
816
+ margin?: number | undefined;
817
+ shadow?: boolean | undefined;
818
+ radius?: number | undefined;
819
+ } | undefined;
820
+ viewport?: {
821
+ width: number;
822
+ height: number;
823
+ } | undefined;
824
+ colorScheme?: "light" | "dark" | undefined;
825
+ init?: string | undefined;
826
+ crop?: "content" | "viewport" | "fullPage" | {
827
+ selector: string;
828
+ padding: number;
829
+ } | undefined;
830
+ }, {
831
+ name: string;
832
+ open: string;
833
+ stores?: ("chrome" | "edge" | "firefox")[] | undefined;
834
+ frame?: {
835
+ background?: string | undefined;
836
+ backgroundTo?: string | undefined;
837
+ margin?: number | undefined;
838
+ shadow?: boolean | undefined;
839
+ radius?: number | undefined;
840
+ } | undefined;
841
+ steps?: ({
842
+ click: string;
843
+ } | {
844
+ hover: string;
845
+ } | {
846
+ type: string;
847
+ text: string;
848
+ } | {
849
+ press: string;
850
+ } | {
851
+ mouse: {
852
+ x: number;
853
+ y: number;
854
+ };
855
+ } | {
856
+ scroll: {
857
+ y: number;
858
+ x?: number | undefined;
859
+ };
860
+ } | {
861
+ wait: number;
862
+ } | {
863
+ waitFor: string;
864
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
865
+ } | {
866
+ storage: {
867
+ set?: Record<string, unknown> | undefined;
868
+ area?: "local" | "sync" | "session" | undefined;
869
+ remove?: string[] | undefined;
870
+ clear?: boolean | undefined;
871
+ };
872
+ } | {
873
+ eval: string;
874
+ })[] | undefined;
875
+ viewport?: {
876
+ width: number;
877
+ height: number;
878
+ } | undefined;
879
+ colorScheme?: "light" | "dark" | undefined;
880
+ init?: string | undefined;
881
+ crop?: "content" | "viewport" | "fullPage" | {
882
+ selector: string;
883
+ padding?: number | undefined;
884
+ } | undefined;
885
+ fit?: "contain" | "cover" | undefined;
886
+ }>, "many">;
887
+ }, "strict", z.ZodTypeAny, {
888
+ version: 1;
889
+ frame: {
890
+ background?: string | undefined;
891
+ backgroundTo?: string | undefined;
892
+ margin?: number | undefined;
893
+ shadow?: boolean | undefined;
894
+ radius?: number | undefined;
895
+ };
896
+ viewport: {
897
+ width: number;
898
+ height: number;
899
+ };
900
+ colorScheme: "light" | "dark";
901
+ deviceScaleFactor: number;
902
+ animations: "disabled" | "allow";
903
+ setup: ({
904
+ click: string;
905
+ } | {
906
+ hover: string;
907
+ } | {
908
+ type: string;
909
+ text: string;
910
+ } | {
911
+ press: string;
912
+ } | {
913
+ mouse: {
914
+ x: number;
915
+ y: number;
916
+ };
917
+ } | {
918
+ scroll: {
919
+ x: number;
920
+ y: number;
921
+ };
922
+ } | {
923
+ wait: number;
924
+ } | {
925
+ state: "detached" | "visible" | "hidden" | "attached";
926
+ waitFor: string;
927
+ } | {
928
+ storage: {
929
+ area: "local" | "sync" | "session";
930
+ set?: Record<string, unknown> | undefined;
931
+ remove?: string[] | undefined;
932
+ clear?: boolean | undefined;
933
+ };
934
+ } | {
935
+ eval: string;
936
+ })[];
937
+ scenes: {
938
+ name: string;
939
+ open: string;
940
+ steps: ({
941
+ click: string;
942
+ } | {
943
+ hover: string;
944
+ } | {
945
+ type: string;
946
+ text: string;
947
+ } | {
948
+ press: string;
949
+ } | {
950
+ mouse: {
951
+ x: number;
952
+ y: number;
953
+ };
954
+ } | {
955
+ scroll: {
956
+ x: number;
957
+ y: number;
958
+ };
959
+ } | {
960
+ wait: number;
961
+ } | {
962
+ state: "detached" | "visible" | "hidden" | "attached";
963
+ waitFor: string;
964
+ } | {
965
+ storage: {
966
+ area: "local" | "sync" | "session";
967
+ set?: Record<string, unknown> | undefined;
968
+ remove?: string[] | undefined;
969
+ clear?: boolean | undefined;
970
+ };
971
+ } | {
972
+ eval: string;
973
+ })[];
974
+ fit: "contain" | "cover";
975
+ stores?: ("chrome" | "edge" | "firefox")[] | undefined;
976
+ frame?: {
977
+ background?: string | undefined;
978
+ backgroundTo?: string | undefined;
979
+ margin?: number | undefined;
980
+ shadow?: boolean | undefined;
981
+ radius?: number | undefined;
982
+ } | undefined;
983
+ viewport?: {
984
+ width: number;
985
+ height: number;
986
+ } | undefined;
987
+ colorScheme?: "light" | "dark" | undefined;
988
+ init?: string | undefined;
989
+ crop?: "content" | "viewport" | "fullPage" | {
990
+ selector: string;
991
+ padding: number;
992
+ } | undefined;
993
+ }[];
994
+ $schema?: string | undefined;
995
+ time?: string | undefined;
996
+ fixtures?: string | undefined;
997
+ }, {
998
+ scenes: {
999
+ name: string;
1000
+ open: string;
1001
+ stores?: ("chrome" | "edge" | "firefox")[] | undefined;
1002
+ frame?: {
1003
+ background?: string | undefined;
1004
+ backgroundTo?: string | undefined;
1005
+ margin?: number | undefined;
1006
+ shadow?: boolean | undefined;
1007
+ radius?: number | undefined;
1008
+ } | undefined;
1009
+ steps?: ({
1010
+ click: string;
1011
+ } | {
1012
+ hover: string;
1013
+ } | {
1014
+ type: string;
1015
+ text: string;
1016
+ } | {
1017
+ press: string;
1018
+ } | {
1019
+ mouse: {
1020
+ x: number;
1021
+ y: number;
1022
+ };
1023
+ } | {
1024
+ scroll: {
1025
+ y: number;
1026
+ x?: number | undefined;
1027
+ };
1028
+ } | {
1029
+ wait: number;
1030
+ } | {
1031
+ waitFor: string;
1032
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
1033
+ } | {
1034
+ storage: {
1035
+ set?: Record<string, unknown> | undefined;
1036
+ area?: "local" | "sync" | "session" | undefined;
1037
+ remove?: string[] | undefined;
1038
+ clear?: boolean | undefined;
1039
+ };
1040
+ } | {
1041
+ eval: string;
1042
+ })[] | undefined;
1043
+ viewport?: {
1044
+ width: number;
1045
+ height: number;
1046
+ } | undefined;
1047
+ colorScheme?: "light" | "dark" | undefined;
1048
+ init?: string | undefined;
1049
+ crop?: "content" | "viewport" | "fullPage" | {
1050
+ selector: string;
1051
+ padding?: number | undefined;
1052
+ } | undefined;
1053
+ fit?: "contain" | "cover" | undefined;
1054
+ }[];
1055
+ version?: 1 | undefined;
1056
+ frame?: {
1057
+ background?: string | undefined;
1058
+ backgroundTo?: string | undefined;
1059
+ margin?: number | undefined;
1060
+ shadow?: boolean | undefined;
1061
+ radius?: number | undefined;
1062
+ } | undefined;
1063
+ viewport?: {
1064
+ width: number;
1065
+ height: number;
1066
+ } | undefined;
1067
+ colorScheme?: "light" | "dark" | undefined;
1068
+ $schema?: string | undefined;
1069
+ deviceScaleFactor?: number | undefined;
1070
+ time?: string | undefined;
1071
+ fixtures?: string | undefined;
1072
+ animations?: "disabled" | "allow" | undefined;
1073
+ setup?: ({
1074
+ click: string;
1075
+ } | {
1076
+ hover: string;
1077
+ } | {
1078
+ type: string;
1079
+ text: string;
1080
+ } | {
1081
+ press: string;
1082
+ } | {
1083
+ mouse: {
1084
+ x: number;
1085
+ y: number;
1086
+ };
1087
+ } | {
1088
+ scroll: {
1089
+ y: number;
1090
+ x?: number | undefined;
1091
+ };
1092
+ } | {
1093
+ wait: number;
1094
+ } | {
1095
+ waitFor: string;
1096
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
1097
+ } | {
1098
+ storage: {
1099
+ set?: Record<string, unknown> | undefined;
1100
+ area?: "local" | "sync" | "session" | undefined;
1101
+ remove?: string[] | undefined;
1102
+ clear?: boolean | undefined;
1103
+ };
1104
+ } | {
1105
+ eval: string;
1106
+ })[] | undefined;
1107
+ }>, {
1108
+ version: 1;
1109
+ frame: {
1110
+ background?: string | undefined;
1111
+ backgroundTo?: string | undefined;
1112
+ margin?: number | undefined;
1113
+ shadow?: boolean | undefined;
1114
+ radius?: number | undefined;
1115
+ };
1116
+ viewport: {
1117
+ width: number;
1118
+ height: number;
1119
+ };
1120
+ colorScheme: "light" | "dark";
1121
+ deviceScaleFactor: number;
1122
+ animations: "disabled" | "allow";
1123
+ setup: ({
1124
+ click: string;
1125
+ } | {
1126
+ hover: string;
1127
+ } | {
1128
+ type: string;
1129
+ text: string;
1130
+ } | {
1131
+ press: string;
1132
+ } | {
1133
+ mouse: {
1134
+ x: number;
1135
+ y: number;
1136
+ };
1137
+ } | {
1138
+ scroll: {
1139
+ x: number;
1140
+ y: number;
1141
+ };
1142
+ } | {
1143
+ wait: number;
1144
+ } | {
1145
+ state: "detached" | "visible" | "hidden" | "attached";
1146
+ waitFor: string;
1147
+ } | {
1148
+ storage: {
1149
+ area: "local" | "sync" | "session";
1150
+ set?: Record<string, unknown> | undefined;
1151
+ remove?: string[] | undefined;
1152
+ clear?: boolean | undefined;
1153
+ };
1154
+ } | {
1155
+ eval: string;
1156
+ })[];
1157
+ scenes: {
1158
+ name: string;
1159
+ open: string;
1160
+ steps: ({
1161
+ click: string;
1162
+ } | {
1163
+ hover: string;
1164
+ } | {
1165
+ type: string;
1166
+ text: string;
1167
+ } | {
1168
+ press: string;
1169
+ } | {
1170
+ mouse: {
1171
+ x: number;
1172
+ y: number;
1173
+ };
1174
+ } | {
1175
+ scroll: {
1176
+ x: number;
1177
+ y: number;
1178
+ };
1179
+ } | {
1180
+ wait: number;
1181
+ } | {
1182
+ state: "detached" | "visible" | "hidden" | "attached";
1183
+ waitFor: string;
1184
+ } | {
1185
+ storage: {
1186
+ area: "local" | "sync" | "session";
1187
+ set?: Record<string, unknown> | undefined;
1188
+ remove?: string[] | undefined;
1189
+ clear?: boolean | undefined;
1190
+ };
1191
+ } | {
1192
+ eval: string;
1193
+ })[];
1194
+ fit: "contain" | "cover";
1195
+ stores?: ("chrome" | "edge" | "firefox")[] | undefined;
1196
+ frame?: {
1197
+ background?: string | undefined;
1198
+ backgroundTo?: string | undefined;
1199
+ margin?: number | undefined;
1200
+ shadow?: boolean | undefined;
1201
+ radius?: number | undefined;
1202
+ } | undefined;
1203
+ viewport?: {
1204
+ width: number;
1205
+ height: number;
1206
+ } | undefined;
1207
+ colorScheme?: "light" | "dark" | undefined;
1208
+ init?: string | undefined;
1209
+ crop?: "content" | "viewport" | "fullPage" | {
1210
+ selector: string;
1211
+ padding: number;
1212
+ } | undefined;
1213
+ }[];
1214
+ $schema?: string | undefined;
1215
+ time?: string | undefined;
1216
+ fixtures?: string | undefined;
1217
+ }, {
1218
+ scenes: {
1219
+ name: string;
1220
+ open: string;
1221
+ stores?: ("chrome" | "edge" | "firefox")[] | undefined;
1222
+ frame?: {
1223
+ background?: string | undefined;
1224
+ backgroundTo?: string | undefined;
1225
+ margin?: number | undefined;
1226
+ shadow?: boolean | undefined;
1227
+ radius?: number | undefined;
1228
+ } | undefined;
1229
+ steps?: ({
1230
+ click: string;
1231
+ } | {
1232
+ hover: string;
1233
+ } | {
1234
+ type: string;
1235
+ text: string;
1236
+ } | {
1237
+ press: string;
1238
+ } | {
1239
+ mouse: {
1240
+ x: number;
1241
+ y: number;
1242
+ };
1243
+ } | {
1244
+ scroll: {
1245
+ y: number;
1246
+ x?: number | undefined;
1247
+ };
1248
+ } | {
1249
+ wait: number;
1250
+ } | {
1251
+ waitFor: string;
1252
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
1253
+ } | {
1254
+ storage: {
1255
+ set?: Record<string, unknown> | undefined;
1256
+ area?: "local" | "sync" | "session" | undefined;
1257
+ remove?: string[] | undefined;
1258
+ clear?: boolean | undefined;
1259
+ };
1260
+ } | {
1261
+ eval: string;
1262
+ })[] | undefined;
1263
+ viewport?: {
1264
+ width: number;
1265
+ height: number;
1266
+ } | undefined;
1267
+ colorScheme?: "light" | "dark" | undefined;
1268
+ init?: string | undefined;
1269
+ crop?: "content" | "viewport" | "fullPage" | {
1270
+ selector: string;
1271
+ padding?: number | undefined;
1272
+ } | undefined;
1273
+ fit?: "contain" | "cover" | undefined;
1274
+ }[];
1275
+ version?: 1 | undefined;
1276
+ frame?: {
1277
+ background?: string | undefined;
1278
+ backgroundTo?: string | undefined;
1279
+ margin?: number | undefined;
1280
+ shadow?: boolean | undefined;
1281
+ radius?: number | undefined;
1282
+ } | undefined;
1283
+ viewport?: {
1284
+ width: number;
1285
+ height: number;
1286
+ } | undefined;
1287
+ colorScheme?: "light" | "dark" | undefined;
1288
+ $schema?: string | undefined;
1289
+ deviceScaleFactor?: number | undefined;
1290
+ time?: string | undefined;
1291
+ fixtures?: string | undefined;
1292
+ animations?: "disabled" | "allow" | undefined;
1293
+ setup?: ({
1294
+ click: string;
1295
+ } | {
1296
+ hover: string;
1297
+ } | {
1298
+ type: string;
1299
+ text: string;
1300
+ } | {
1301
+ press: string;
1302
+ } | {
1303
+ mouse: {
1304
+ x: number;
1305
+ y: number;
1306
+ };
1307
+ } | {
1308
+ scroll: {
1309
+ y: number;
1310
+ x?: number | undefined;
1311
+ };
1312
+ } | {
1313
+ wait: number;
1314
+ } | {
1315
+ waitFor: string;
1316
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
1317
+ } | {
1318
+ storage: {
1319
+ set?: Record<string, unknown> | undefined;
1320
+ area?: "local" | "sync" | "session" | undefined;
1321
+ remove?: string[] | undefined;
1322
+ clear?: boolean | undefined;
1323
+ };
1324
+ } | {
1325
+ eval: string;
1326
+ })[] | undefined;
1327
+ }>;
1328
+ export type ScenesFile = z.infer<typeof scenesFileSchema>;
1329
+ export declare function parseScenes(raw: string): ScenesFile;
1330
+ /** `_locales` code → the BCP 47 tag Chromium's --lang expects (pt_BR → pt-BR, es_419 → es-419). */
1331
+ export declare function chromeLang(locale: string): string;
1332
+ /**
1333
+ * Which `_locales/<dir>` Chrome renders for a UI locale: the exact locale, then
1334
+ * its language, then default_locale. (chrome.i18n's documented lookup order.)
1335
+ */
1336
+ export declare function resolveCatalogLocale(uiLocale: string, available: readonly string[], defaultLocale?: string): string | null;
1337
+ export declare function parseLocales(value: string | undefined, available: readonly string[], defaultLocale?: string): string[];
1338
+ /**
1339
+ * One message that proves which catalog is active: present in `messages`,
1340
+ * different from the default locale's, and free of `$` placeholders (which
1341
+ * chrome.i18n would substitute).
1342
+ */
1343
+ export declare function pickSampleMessage(messages: Record<string, {
1344
+ message?: unknown;
1345
+ }> | null, defaults: Record<string, {
1346
+ message?: unknown;
1347
+ }> | null): {
1348
+ key: string;
1349
+ message: string;
1350
+ } | null;
1351
+ /** Chrome's id for an unpacked extension: sha256 of its absolute (real) path, a–p encoded. */
1352
+ export declare function extensionIdForPath(realPath: string): string;
1353
+ /** Chrome's id when the manifest carries a `key` (base64 DER public key). */
1354
+ export declare function extensionIdForKey(key: string): string;
1355
+ export interface Placement {
1356
+ x: number;
1357
+ y: number;
1358
+ width: number;
1359
+ height: number;
1360
+ }
1361
+ /**
1362
+ * Where a capture of `content` CSS px (captured at `scale` device pixels per
1363
+ * CSS px) lands on a `canvas`: `contain` centers it inside the margin and never
1364
+ * magnifies past its captured pixels; `cover` fills the canvas.
1365
+ */
1366
+ export declare function placeCapture(content: Size, canvas: Size, opts: {
1367
+ fit: 'contain' | 'cover';
1368
+ margin: number;
1369
+ scale: number;
1370
+ }): Placement;
1371
+ export declare function screenshotFileName(index: number, scene: string, size: Size): string;
1372
+ /** Width/height from a PNG's IHDR. */
1373
+ export declare function pngDimensions(png: Uint8Array): Size;
1374
+ /**
1375
+ * macOS Chromium ignores --lang: its UI language comes from AppleLanguages,
1376
+ * which Cocoa reads from `-AppleLanguages (xx)` in argv. Playwright refuses
1377
+ * positional arguments, so this wrapper appends them — and drops Playwright's
1378
+ * trailing `about:blank`, because headless Chromium rejects a second startup
1379
+ * target (the `(xx)` value is parsed as one).
1380
+ */
1381
+ export declare function macLocaleWrapper(executable: string, lang: string): string;
1382
+ export {};
1383
+ //# sourceMappingURL=screenshots-scenes.d.ts.map