@extenshi/cli 0.21.0 → 0.23.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 (128) 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 +154 -0
  15. package/dist/auto-evidence.d.ts.map +1 -0
  16. package/dist/auto-evidence.js +297 -0
  17. package/dist/auto-evidence.js.map +1 -0
  18. package/dist/cli.d.ts.map +1 -1
  19. package/dist/cli.js +366 -11
  20. package/dist/cli.js.map +1 -1
  21. package/dist/domain.d.ts +40 -0
  22. package/dist/domain.d.ts.map +1 -0
  23. package/dist/domain.js +64 -0
  24. package/dist/domain.js.map +1 -0
  25. package/dist/edgewebstore-md.d.ts +26 -0
  26. package/dist/edgewebstore-md.d.ts.map +1 -0
  27. package/dist/edgewebstore-md.js +95 -0
  28. package/dist/edgewebstore-md.js.map +1 -0
  29. package/dist/evidence-ingest.d.ts +60 -0
  30. package/dist/evidence-ingest.d.ts.map +1 -0
  31. package/dist/evidence-ingest.js +141 -0
  32. package/dist/evidence-ingest.js.map +1 -0
  33. package/dist/extension-localization.d.ts +6 -1
  34. package/dist/extension-localization.d.ts.map +1 -1
  35. package/dist/extension-localization.js +4 -0
  36. package/dist/extension-localization.js.map +1 -1
  37. package/dist/firefox-rdp.d.ts +55 -0
  38. package/dist/firefox-rdp.d.ts.map +1 -0
  39. package/dist/firefox-rdp.js +203 -0
  40. package/dist/firefox-rdp.js.map +1 -0
  41. package/dist/gecko-id.d.ts +55 -0
  42. package/dist/gecko-id.d.ts.map +1 -0
  43. package/dist/gecko-id.js +132 -0
  44. package/dist/gecko-id.js.map +1 -0
  45. package/dist/generate-listing.d.ts +19 -8
  46. package/dist/generate-listing.d.ts.map +1 -1
  47. package/dist/generate-listing.js +66 -18
  48. package/dist/generate-listing.js.map +1 -1
  49. package/dist/icon.d.ts +18 -0
  50. package/dist/icon.d.ts.map +1 -1
  51. package/dist/icon.js +29 -20
  52. package/dist/icon.js.map +1 -1
  53. package/dist/landing-page.d.ts +22 -4
  54. package/dist/landing-page.d.ts.map +1 -1
  55. package/dist/landing-page.js +14 -11
  56. package/dist/landing-page.js.map +1 -1
  57. package/dist/landing-sections.d.ts +332 -0
  58. package/dist/landing-sections.d.ts.map +1 -0
  59. package/dist/landing-sections.js +1071 -0
  60. package/dist/landing-sections.js.map +1 -0
  61. package/dist/listing.d.ts +15 -0
  62. package/dist/listing.d.ts.map +1 -1
  63. package/dist/listing.js +1 -1
  64. package/dist/listing.js.map +1 -1
  65. package/dist/media.d.ts +42 -0
  66. package/dist/media.d.ts.map +1 -0
  67. package/dist/media.js +96 -0
  68. package/dist/media.js.map +1 -0
  69. package/dist/package.d.ts +163 -0
  70. package/dist/package.d.ts.map +1 -0
  71. package/dist/package.js +500 -0
  72. package/dist/package.js.map +1 -0
  73. package/dist/page.d.ts +110 -21
  74. package/dist/page.d.ts.map +1 -1
  75. package/dist/page.js +240 -10
  76. package/dist/page.js.map +1 -1
  77. package/dist/pay-contract.d.ts +42 -11
  78. package/dist/pay-contract.d.ts.map +1 -1
  79. package/dist/pay-contract.js +31 -0
  80. package/dist/pay-contract.js.map +1 -1
  81. package/dist/pay-test-cycle.d.ts +40 -0
  82. package/dist/pay-test-cycle.d.ts.map +1 -0
  83. package/dist/pay-test-cycle.js +207 -0
  84. package/dist/pay-test-cycle.js.map +1 -0
  85. package/dist/pay.d.ts +1 -1
  86. package/dist/pay.d.ts.map +1 -1
  87. package/dist/pay.js +1 -0
  88. package/dist/pay.js.map +1 -1
  89. package/dist/project.d.ts +69 -1
  90. package/dist/project.d.ts.map +1 -1
  91. package/dist/project.js +363 -54
  92. package/dist/project.js.map +1 -1
  93. package/dist/publish.d.ts +33 -0
  94. package/dist/publish.d.ts.map +1 -1
  95. package/dist/publish.js +113 -2
  96. package/dist/publish.js.map +1 -1
  97. package/dist/review-checks.d.ts +13 -0
  98. package/dist/review-checks.d.ts.map +1 -1
  99. package/dist/review-checks.js.map +1 -1
  100. package/dist/review-risk.d.ts +10 -1
  101. package/dist/review-risk.d.ts.map +1 -1
  102. package/dist/review-risk.js +1 -0
  103. package/dist/review-risk.js.map +1 -1
  104. package/dist/scan.d.ts +3 -2
  105. package/dist/scan.d.ts.map +1 -1
  106. package/dist/scan.js +4 -2
  107. package/dist/scan.js.map +1 -1
  108. package/dist/screenshots-scenes.d.ts +1383 -0
  109. package/dist/screenshots-scenes.d.ts.map +1 -0
  110. package/dist/screenshots-scenes.js +276 -0
  111. package/dist/screenshots-scenes.js.map +1 -0
  112. package/dist/screenshots.d.ts +143 -0
  113. package/dist/screenshots.d.ts.map +1 -0
  114. package/dist/screenshots.js +558 -0
  115. package/dist/screenshots.js.map +1 -0
  116. package/dist/smoke.d.ts +81 -0
  117. package/dist/smoke.d.ts.map +1 -0
  118. package/dist/smoke.js +491 -0
  119. package/dist/smoke.js.map +1 -0
  120. package/dist/store-assets.d.ts +139 -0
  121. package/dist/store-assets.d.ts.map +1 -0
  122. package/dist/store-assets.js +582 -0
  123. package/dist/store-assets.js.map +1 -0
  124. package/dist/zip.d.ts +57 -0
  125. package/dist/zip.d.ts.map +1 -0
  126. package/dist/zip.js +134 -0
  127. package/dist/zip.js.map +1 -0
  128. package/package.json +7 -6
@@ -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
+ waitFor: string;
116
+ state: "detached" | "visible" | "hidden" | "attached";
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
+ waitFor: string;
256
+ state: "detached" | "visible" | "hidden" | "attached";
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
+ waitFor: string;
356
+ state: "detached" | "visible" | "hidden" | "attached";
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
+ viewport?: {
370
+ width: number;
371
+ height: number;
372
+ } | undefined;
373
+ colorScheme?: "light" | "dark" | undefined;
374
+ init?: string | undefined;
375
+ crop?: "content" | "viewport" | "fullPage" | {
376
+ selector: string;
377
+ padding: number;
378
+ } | undefined;
379
+ frame?: {
380
+ background?: string | undefined;
381
+ backgroundTo?: string | undefined;
382
+ margin?: number | undefined;
383
+ shadow?: boolean | undefined;
384
+ radius?: number | undefined;
385
+ } | undefined;
386
+ }, {
387
+ name: string;
388
+ open: string;
389
+ stores?: ("chrome" | "edge" | "firefox")[] | undefined;
390
+ viewport?: {
391
+ width: number;
392
+ height: number;
393
+ } | undefined;
394
+ colorScheme?: "light" | "dark" | undefined;
395
+ init?: string | undefined;
396
+ steps?: ({
397
+ click: string;
398
+ } | {
399
+ hover: string;
400
+ } | {
401
+ type: string;
402
+ text: string;
403
+ } | {
404
+ press: string;
405
+ } | {
406
+ mouse: {
407
+ x: number;
408
+ y: number;
409
+ };
410
+ } | {
411
+ scroll: {
412
+ y: number;
413
+ x?: number | undefined;
414
+ };
415
+ } | {
416
+ wait: number;
417
+ } | {
418
+ waitFor: string;
419
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
420
+ } | {
421
+ storage: {
422
+ set?: Record<string, unknown> | undefined;
423
+ area?: "local" | "sync" | "session" | undefined;
424
+ remove?: string[] | undefined;
425
+ clear?: boolean | undefined;
426
+ };
427
+ } | {
428
+ eval: string;
429
+ })[] | undefined;
430
+ crop?: "content" | "viewport" | "fullPage" | {
431
+ selector: string;
432
+ padding?: number | undefined;
433
+ } | undefined;
434
+ fit?: "contain" | "cover" | undefined;
435
+ frame?: {
436
+ background?: string | undefined;
437
+ backgroundTo?: string | undefined;
438
+ margin?: number | undefined;
439
+ shadow?: boolean | undefined;
440
+ radius?: number | undefined;
441
+ } | 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
+ waitFor: string;
562
+ state: "detached" | "visible" | "hidden" | "attached";
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
+ waitFor: string;
700
+ state: "detached" | "visible" | "hidden" | "attached";
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
+ waitFor: string;
800
+ state: "detached" | "visible" | "hidden" | "attached";
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
+ viewport?: {
814
+ width: number;
815
+ height: number;
816
+ } | undefined;
817
+ colorScheme?: "light" | "dark" | undefined;
818
+ init?: string | undefined;
819
+ crop?: "content" | "viewport" | "fullPage" | {
820
+ selector: string;
821
+ padding: number;
822
+ } | undefined;
823
+ frame?: {
824
+ background?: string | undefined;
825
+ backgroundTo?: string | undefined;
826
+ margin?: number | undefined;
827
+ shadow?: boolean | undefined;
828
+ radius?: number | undefined;
829
+ } | undefined;
830
+ }, {
831
+ name: string;
832
+ open: string;
833
+ stores?: ("chrome" | "edge" | "firefox")[] | undefined;
834
+ viewport?: {
835
+ width: number;
836
+ height: number;
837
+ } | undefined;
838
+ colorScheme?: "light" | "dark" | undefined;
839
+ init?: string | undefined;
840
+ steps?: ({
841
+ click: string;
842
+ } | {
843
+ hover: string;
844
+ } | {
845
+ type: string;
846
+ text: string;
847
+ } | {
848
+ press: string;
849
+ } | {
850
+ mouse: {
851
+ x: number;
852
+ y: number;
853
+ };
854
+ } | {
855
+ scroll: {
856
+ y: number;
857
+ x?: number | undefined;
858
+ };
859
+ } | {
860
+ wait: number;
861
+ } | {
862
+ waitFor: string;
863
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
864
+ } | {
865
+ storage: {
866
+ set?: Record<string, unknown> | undefined;
867
+ area?: "local" | "sync" | "session" | undefined;
868
+ remove?: string[] | undefined;
869
+ clear?: boolean | undefined;
870
+ };
871
+ } | {
872
+ eval: string;
873
+ })[] | undefined;
874
+ crop?: "content" | "viewport" | "fullPage" | {
875
+ selector: string;
876
+ padding?: number | undefined;
877
+ } | undefined;
878
+ fit?: "contain" | "cover" | undefined;
879
+ frame?: {
880
+ background?: string | undefined;
881
+ backgroundTo?: string | undefined;
882
+ margin?: number | undefined;
883
+ shadow?: boolean | undefined;
884
+ radius?: number | undefined;
885
+ } | undefined;
886
+ }>, "many">;
887
+ }, "strict", z.ZodTypeAny, {
888
+ version: 1;
889
+ viewport: {
890
+ width: number;
891
+ height: number;
892
+ };
893
+ colorScheme: "light" | "dark";
894
+ frame: {
895
+ background?: string | undefined;
896
+ backgroundTo?: string | undefined;
897
+ margin?: number | undefined;
898
+ shadow?: boolean | undefined;
899
+ radius?: number | undefined;
900
+ };
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
+ waitFor: string;
926
+ state: "detached" | "visible" | "hidden" | "attached";
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
+ waitFor: string;
963
+ state: "detached" | "visible" | "hidden" | "attached";
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
+ viewport?: {
977
+ width: number;
978
+ height: number;
979
+ } | undefined;
980
+ colorScheme?: "light" | "dark" | undefined;
981
+ init?: string | undefined;
982
+ crop?: "content" | "viewport" | "fullPage" | {
983
+ selector: string;
984
+ padding: number;
985
+ } | undefined;
986
+ frame?: {
987
+ background?: string | undefined;
988
+ backgroundTo?: string | undefined;
989
+ margin?: number | undefined;
990
+ shadow?: boolean | undefined;
991
+ radius?: number | undefined;
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
+ viewport?: {
1003
+ width: number;
1004
+ height: number;
1005
+ } | undefined;
1006
+ colorScheme?: "light" | "dark" | undefined;
1007
+ init?: string | undefined;
1008
+ steps?: ({
1009
+ click: string;
1010
+ } | {
1011
+ hover: string;
1012
+ } | {
1013
+ type: string;
1014
+ text: string;
1015
+ } | {
1016
+ press: string;
1017
+ } | {
1018
+ mouse: {
1019
+ x: number;
1020
+ y: number;
1021
+ };
1022
+ } | {
1023
+ scroll: {
1024
+ y: number;
1025
+ x?: number | undefined;
1026
+ };
1027
+ } | {
1028
+ wait: number;
1029
+ } | {
1030
+ waitFor: string;
1031
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
1032
+ } | {
1033
+ storage: {
1034
+ set?: Record<string, unknown> | undefined;
1035
+ area?: "local" | "sync" | "session" | undefined;
1036
+ remove?: string[] | undefined;
1037
+ clear?: boolean | undefined;
1038
+ };
1039
+ } | {
1040
+ eval: string;
1041
+ })[] | undefined;
1042
+ crop?: "content" | "viewport" | "fullPage" | {
1043
+ selector: string;
1044
+ padding?: number | undefined;
1045
+ } | undefined;
1046
+ fit?: "contain" | "cover" | undefined;
1047
+ frame?: {
1048
+ background?: string | undefined;
1049
+ backgroundTo?: string | undefined;
1050
+ margin?: number | undefined;
1051
+ shadow?: boolean | undefined;
1052
+ radius?: number | undefined;
1053
+ } | undefined;
1054
+ }[];
1055
+ version?: 1 | undefined;
1056
+ viewport?: {
1057
+ width: number;
1058
+ height: number;
1059
+ } | undefined;
1060
+ colorScheme?: "light" | "dark" | undefined;
1061
+ frame?: {
1062
+ background?: string | undefined;
1063
+ backgroundTo?: string | undefined;
1064
+ margin?: number | undefined;
1065
+ shadow?: boolean | undefined;
1066
+ radius?: number | undefined;
1067
+ } | 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
+ viewport: {
1110
+ width: number;
1111
+ height: number;
1112
+ };
1113
+ colorScheme: "light" | "dark";
1114
+ frame: {
1115
+ background?: string | undefined;
1116
+ backgroundTo?: string | undefined;
1117
+ margin?: number | undefined;
1118
+ shadow?: boolean | undefined;
1119
+ radius?: number | undefined;
1120
+ };
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
+ waitFor: string;
1146
+ state: "detached" | "visible" | "hidden" | "attached";
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
+ waitFor: string;
1183
+ state: "detached" | "visible" | "hidden" | "attached";
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
+ viewport?: {
1197
+ width: number;
1198
+ height: number;
1199
+ } | undefined;
1200
+ colorScheme?: "light" | "dark" | undefined;
1201
+ init?: string | undefined;
1202
+ crop?: "content" | "viewport" | "fullPage" | {
1203
+ selector: string;
1204
+ padding: number;
1205
+ } | undefined;
1206
+ frame?: {
1207
+ background?: string | undefined;
1208
+ backgroundTo?: string | undefined;
1209
+ margin?: number | undefined;
1210
+ shadow?: boolean | undefined;
1211
+ radius?: number | undefined;
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
+ viewport?: {
1223
+ width: number;
1224
+ height: number;
1225
+ } | undefined;
1226
+ colorScheme?: "light" | "dark" | undefined;
1227
+ init?: string | undefined;
1228
+ steps?: ({
1229
+ click: string;
1230
+ } | {
1231
+ hover: string;
1232
+ } | {
1233
+ type: string;
1234
+ text: string;
1235
+ } | {
1236
+ press: string;
1237
+ } | {
1238
+ mouse: {
1239
+ x: number;
1240
+ y: number;
1241
+ };
1242
+ } | {
1243
+ scroll: {
1244
+ y: number;
1245
+ x?: number | undefined;
1246
+ };
1247
+ } | {
1248
+ wait: number;
1249
+ } | {
1250
+ waitFor: string;
1251
+ state?: "detached" | "visible" | "hidden" | "attached" | undefined;
1252
+ } | {
1253
+ storage: {
1254
+ set?: Record<string, unknown> | undefined;
1255
+ area?: "local" | "sync" | "session" | undefined;
1256
+ remove?: string[] | undefined;
1257
+ clear?: boolean | undefined;
1258
+ };
1259
+ } | {
1260
+ eval: string;
1261
+ })[] | undefined;
1262
+ crop?: "content" | "viewport" | "fullPage" | {
1263
+ selector: string;
1264
+ padding?: number | undefined;
1265
+ } | undefined;
1266
+ fit?: "contain" | "cover" | undefined;
1267
+ frame?: {
1268
+ background?: string | undefined;
1269
+ backgroundTo?: string | undefined;
1270
+ margin?: number | undefined;
1271
+ shadow?: boolean | undefined;
1272
+ radius?: number | undefined;
1273
+ } | undefined;
1274
+ }[];
1275
+ version?: 1 | undefined;
1276
+ viewport?: {
1277
+ width: number;
1278
+ height: number;
1279
+ } | undefined;
1280
+ colorScheme?: "light" | "dark" | undefined;
1281
+ frame?: {
1282
+ background?: string | undefined;
1283
+ backgroundTo?: string | undefined;
1284
+ margin?: number | undefined;
1285
+ shadow?: boolean | undefined;
1286
+ radius?: number | undefined;
1287
+ } | 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