@midleman/playwright-reporter 0.1.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 (66) hide show
  1. package/README.md +373 -0
  2. package/dist/buffers.d.ts +13 -0
  3. package/dist/buffers.d.ts.map +1 -0
  4. package/dist/buffers.js +58 -0
  5. package/dist/buffers.js.map +1 -0
  6. package/dist/counts.d.ts +32 -0
  7. package/dist/counts.d.ts.map +1 -0
  8. package/dist/counts.js +66 -0
  9. package/dist/counts.js.map +1 -0
  10. package/dist/index.d.ts +7 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +28 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/payload.d.ts +33 -0
  15. package/dist/payload.d.ts.map +1 -0
  16. package/dist/payload.js +87 -0
  17. package/dist/payload.js.map +1 -0
  18. package/dist/payload.test.d.ts +2 -0
  19. package/dist/payload.test.d.ts.map +1 -0
  20. package/dist/payload.test.js +198 -0
  21. package/dist/payload.test.js.map +1 -0
  22. package/dist/reporter.d.ts +47 -0
  23. package/dist/reporter.d.ts.map +1 -0
  24. package/dist/reporter.js +470 -0
  25. package/dist/reporter.js.map +1 -0
  26. package/dist/reporter.test.d.ts +2 -0
  27. package/dist/reporter.test.d.ts.map +1 -0
  28. package/dist/reporter.test.js +216 -0
  29. package/dist/reporter.test.js.map +1 -0
  30. package/dist/schemas.d.ts +485 -0
  31. package/dist/schemas.d.ts.map +1 -0
  32. package/dist/schemas.js +128 -0
  33. package/dist/schemas.js.map +1 -0
  34. package/dist/schemas.test.d.ts +2 -0
  35. package/dist/schemas.test.d.ts.map +1 -0
  36. package/dist/schemas.test.js +313 -0
  37. package/dist/schemas.test.js.map +1 -0
  38. package/dist/storage/api.d.ts +13 -0
  39. package/dist/storage/api.d.ts.map +1 -0
  40. package/dist/storage/api.js +86 -0
  41. package/dist/storage/api.js.map +1 -0
  42. package/dist/storage/api.test.d.ts +2 -0
  43. package/dist/storage/api.test.d.ts.map +1 -0
  44. package/dist/storage/api.test.js +184 -0
  45. package/dist/storage/api.test.js.map +1 -0
  46. package/dist/storage/parquet.d.ts +10 -0
  47. package/dist/storage/parquet.d.ts.map +1 -0
  48. package/dist/storage/parquet.js +157 -0
  49. package/dist/storage/parquet.js.map +1 -0
  50. package/dist/storage/s3.d.ts +35 -0
  51. package/dist/storage/s3.d.ts.map +1 -0
  52. package/dist/storage/s3.js +129 -0
  53. package/dist/storage/s3.js.map +1 -0
  54. package/dist/types.d.ts +36 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +26 -0
  57. package/dist/types.js.map +1 -0
  58. package/dist/utils.d.ts +44 -0
  59. package/dist/utils.d.ts.map +1 -0
  60. package/dist/utils.js +195 -0
  61. package/dist/utils.js.map +1 -0
  62. package/dist/utils.test.d.ts +2 -0
  63. package/dist/utils.test.d.ts.map +1 -0
  64. package/dist/utils.test.js +150 -0
  65. package/dist/utils.test.js.map +1 -0
  66. package/package.json +41 -0
@@ -0,0 +1,485 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Schema version for tracking breaking changes
4
+ * Increment when making incompatible schema changes
5
+ */
6
+ export declare const SCHEMA_VERSION = "1.0.0";
7
+ /**
8
+ * Result status enum
9
+ */
10
+ export declare const ResultStatusSchema: z.ZodEnum<["passed", "failed", "skipped", "flaky"]>;
11
+ export type ResultStatus = z.infer<typeof ResultStatusSchema>;
12
+ /**
13
+ * Test result event schema
14
+ * Emitted for each test completion (including retries)
15
+ */
16
+ export declare const ResultCreatedEventSchema: z.ZodObject<{
17
+ type: z.ZodLiteral<"result.created">;
18
+ repoName: z.ZodString;
19
+ runId: z.ZodString;
20
+ specPath: z.ZodString;
21
+ project: z.ZodOptional<z.ZodString>;
22
+ testName: z.ZodString;
23
+ testId: z.ZodOptional<z.ZodString>;
24
+ status: z.ZodEnum<["passed", "failed", "skipped", "flaky"]>;
25
+ durationMs: z.ZodOptional<z.ZodNumber>;
26
+ startedAt: z.ZodOptional<z.ZodString>;
27
+ attempt: z.ZodOptional<z.ZodNumber>;
28
+ retries: z.ZodOptional<z.ZodNumber>;
29
+ failureMessage: z.ZodOptional<z.ZodString>;
30
+ eventId: z.ZodString;
31
+ timestamp: z.ZodString;
32
+ browser: z.ZodOptional<z.ZodString>;
33
+ os: z.ZodOptional<z.ZodEnum<["mac", "win", "linux"]>>;
34
+ branch: z.ZodOptional<z.ZodString>;
35
+ sha: z.ZodOptional<z.ZodString>;
36
+ reportUrl: z.ZodOptional<z.ZodString>;
37
+ commitMessage: z.ZodOptional<z.ZodString>;
38
+ commitAuthor: z.ZodOptional<z.ZodString>;
39
+ titlePath: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ type: "result.created";
42
+ status: "passed" | "failed" | "skipped" | "flaky";
43
+ repoName: string;
44
+ runId: string;
45
+ specPath: string;
46
+ testName: string;
47
+ eventId: string;
48
+ timestamp: string;
49
+ project?: string | undefined;
50
+ testId?: string | undefined;
51
+ durationMs?: number | undefined;
52
+ startedAt?: string | undefined;
53
+ attempt?: number | undefined;
54
+ retries?: number | undefined;
55
+ failureMessage?: string | undefined;
56
+ browser?: string | undefined;
57
+ os?: "mac" | "win" | "linux" | undefined;
58
+ branch?: string | undefined;
59
+ sha?: string | undefined;
60
+ reportUrl?: string | undefined;
61
+ commitMessage?: string | undefined;
62
+ commitAuthor?: string | undefined;
63
+ titlePath?: string[] | undefined;
64
+ }, {
65
+ type: "result.created";
66
+ status: "passed" | "failed" | "skipped" | "flaky";
67
+ repoName: string;
68
+ runId: string;
69
+ specPath: string;
70
+ testName: string;
71
+ eventId: string;
72
+ timestamp: string;
73
+ project?: string | undefined;
74
+ testId?: string | undefined;
75
+ durationMs?: number | undefined;
76
+ startedAt?: string | undefined;
77
+ attempt?: number | undefined;
78
+ retries?: number | undefined;
79
+ failureMessage?: string | undefined;
80
+ browser?: string | undefined;
81
+ os?: "mac" | "win" | "linux" | undefined;
82
+ branch?: string | undefined;
83
+ sha?: string | undefined;
84
+ reportUrl?: string | undefined;
85
+ commitMessage?: string | undefined;
86
+ commitAuthor?: string | undefined;
87
+ titlePath?: string[] | undefined;
88
+ }>;
89
+ export type ResultCreatedEvent = z.infer<typeof ResultCreatedEventSchema>;
90
+ /**
91
+ * Run started event schema
92
+ * Emitted once at the beginning of a test run
93
+ */
94
+ export declare const RunStartedEventSchema: z.ZodObject<{
95
+ type: z.ZodLiteral<"run.started">;
96
+ repoName: z.ZodString;
97
+ runId: z.ZodString;
98
+ startedAt: z.ZodString;
99
+ branch: z.ZodOptional<z.ZodString>;
100
+ sha: z.ZodOptional<z.ZodString>;
101
+ workflowName: z.ZodOptional<z.ZodString>;
102
+ jobName: z.ZodOptional<z.ZodString>;
103
+ runUrl: z.ZodOptional<z.ZodString>;
104
+ commitMessage: z.ZodOptional<z.ZodString>;
105
+ commitAuthor: z.ZodOptional<z.ZodString>;
106
+ }, "strip", z.ZodTypeAny, {
107
+ type: "run.started";
108
+ repoName: string;
109
+ runId: string;
110
+ startedAt: string;
111
+ branch?: string | undefined;
112
+ sha?: string | undefined;
113
+ commitMessage?: string | undefined;
114
+ commitAuthor?: string | undefined;
115
+ workflowName?: string | undefined;
116
+ jobName?: string | undefined;
117
+ runUrl?: string | undefined;
118
+ }, {
119
+ type: "run.started";
120
+ repoName: string;
121
+ runId: string;
122
+ startedAt: string;
123
+ branch?: string | undefined;
124
+ sha?: string | undefined;
125
+ commitMessage?: string | undefined;
126
+ commitAuthor?: string | undefined;
127
+ workflowName?: string | undefined;
128
+ jobName?: string | undefined;
129
+ runUrl?: string | undefined;
130
+ }>;
131
+ export type RunStartedEvent = z.infer<typeof RunStartedEventSchema>;
132
+ /**
133
+ * Counts object for run completion
134
+ */
135
+ export declare const CountsSchema: z.ZodObject<{
136
+ passed: z.ZodNumber;
137
+ failed: z.ZodNumber;
138
+ skipped: z.ZodNumber;
139
+ flaky: z.ZodNumber;
140
+ }, "strip", z.ZodTypeAny, {
141
+ passed: number;
142
+ failed: number;
143
+ skipped: number;
144
+ flaky: number;
145
+ }, {
146
+ passed: number;
147
+ failed: number;
148
+ skipped: number;
149
+ flaky: number;
150
+ }>;
151
+ export type Counts = z.infer<typeof CountsSchema>;
152
+ /**
153
+ * Run completed event schema
154
+ * Emitted once at the end of a test run
155
+ */
156
+ export declare const RunCompletedEventSchema: z.ZodObject<{
157
+ type: z.ZodLiteral<"run.completed">;
158
+ repoName: z.ZodString;
159
+ runId: z.ZodString;
160
+ completedAt: z.ZodString;
161
+ status: z.ZodString;
162
+ durationMs: z.ZodOptional<z.ZodNumber>;
163
+ counts: z.ZodObject<{
164
+ passed: z.ZodNumber;
165
+ failed: z.ZodNumber;
166
+ skipped: z.ZodNumber;
167
+ flaky: z.ZodNumber;
168
+ }, "strip", z.ZodTypeAny, {
169
+ passed: number;
170
+ failed: number;
171
+ skipped: number;
172
+ flaky: number;
173
+ }, {
174
+ passed: number;
175
+ failed: number;
176
+ skipped: number;
177
+ flaky: number;
178
+ }>;
179
+ }, "strip", z.ZodTypeAny, {
180
+ type: "run.completed";
181
+ status: string;
182
+ repoName: string;
183
+ runId: string;
184
+ completedAt: string;
185
+ counts: {
186
+ passed: number;
187
+ failed: number;
188
+ skipped: number;
189
+ flaky: number;
190
+ };
191
+ durationMs?: number | undefined;
192
+ }, {
193
+ type: "run.completed";
194
+ status: string;
195
+ repoName: string;
196
+ runId: string;
197
+ completedAt: string;
198
+ counts: {
199
+ passed: number;
200
+ failed: number;
201
+ skipped: number;
202
+ flaky: number;
203
+ };
204
+ durationMs?: number | undefined;
205
+ }>;
206
+ export type RunCompletedEvent = z.infer<typeof RunCompletedEventSchema>;
207
+ /**
208
+ * Union of all outbound event types
209
+ */
210
+ export declare const OutboundEventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
211
+ type: z.ZodLiteral<"result.created">;
212
+ repoName: z.ZodString;
213
+ runId: z.ZodString;
214
+ specPath: z.ZodString;
215
+ project: z.ZodOptional<z.ZodString>;
216
+ testName: z.ZodString;
217
+ testId: z.ZodOptional<z.ZodString>;
218
+ status: z.ZodEnum<["passed", "failed", "skipped", "flaky"]>;
219
+ durationMs: z.ZodOptional<z.ZodNumber>;
220
+ startedAt: z.ZodOptional<z.ZodString>;
221
+ attempt: z.ZodOptional<z.ZodNumber>;
222
+ retries: z.ZodOptional<z.ZodNumber>;
223
+ failureMessage: z.ZodOptional<z.ZodString>;
224
+ eventId: z.ZodString;
225
+ timestamp: z.ZodString;
226
+ browser: z.ZodOptional<z.ZodString>;
227
+ os: z.ZodOptional<z.ZodEnum<["mac", "win", "linux"]>>;
228
+ branch: z.ZodOptional<z.ZodString>;
229
+ sha: z.ZodOptional<z.ZodString>;
230
+ reportUrl: z.ZodOptional<z.ZodString>;
231
+ commitMessage: z.ZodOptional<z.ZodString>;
232
+ commitAuthor: z.ZodOptional<z.ZodString>;
233
+ titlePath: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
234
+ }, "strip", z.ZodTypeAny, {
235
+ type: "result.created";
236
+ status: "passed" | "failed" | "skipped" | "flaky";
237
+ repoName: string;
238
+ runId: string;
239
+ specPath: string;
240
+ testName: string;
241
+ eventId: string;
242
+ timestamp: string;
243
+ project?: string | undefined;
244
+ testId?: string | undefined;
245
+ durationMs?: number | undefined;
246
+ startedAt?: string | undefined;
247
+ attempt?: number | undefined;
248
+ retries?: number | undefined;
249
+ failureMessage?: string | undefined;
250
+ browser?: string | undefined;
251
+ os?: "mac" | "win" | "linux" | undefined;
252
+ branch?: string | undefined;
253
+ sha?: string | undefined;
254
+ reportUrl?: string | undefined;
255
+ commitMessage?: string | undefined;
256
+ commitAuthor?: string | undefined;
257
+ titlePath?: string[] | undefined;
258
+ }, {
259
+ type: "result.created";
260
+ status: "passed" | "failed" | "skipped" | "flaky";
261
+ repoName: string;
262
+ runId: string;
263
+ specPath: string;
264
+ testName: string;
265
+ eventId: string;
266
+ timestamp: string;
267
+ project?: string | undefined;
268
+ testId?: string | undefined;
269
+ durationMs?: number | undefined;
270
+ startedAt?: string | undefined;
271
+ attempt?: number | undefined;
272
+ retries?: number | undefined;
273
+ failureMessage?: string | undefined;
274
+ browser?: string | undefined;
275
+ os?: "mac" | "win" | "linux" | undefined;
276
+ branch?: string | undefined;
277
+ sha?: string | undefined;
278
+ reportUrl?: string | undefined;
279
+ commitMessage?: string | undefined;
280
+ commitAuthor?: string | undefined;
281
+ titlePath?: string[] | undefined;
282
+ }>, z.ZodObject<{
283
+ type: z.ZodLiteral<"run.started">;
284
+ repoName: z.ZodString;
285
+ runId: z.ZodString;
286
+ startedAt: z.ZodString;
287
+ branch: z.ZodOptional<z.ZodString>;
288
+ sha: z.ZodOptional<z.ZodString>;
289
+ workflowName: z.ZodOptional<z.ZodString>;
290
+ jobName: z.ZodOptional<z.ZodString>;
291
+ runUrl: z.ZodOptional<z.ZodString>;
292
+ commitMessage: z.ZodOptional<z.ZodString>;
293
+ commitAuthor: z.ZodOptional<z.ZodString>;
294
+ }, "strip", z.ZodTypeAny, {
295
+ type: "run.started";
296
+ repoName: string;
297
+ runId: string;
298
+ startedAt: string;
299
+ branch?: string | undefined;
300
+ sha?: string | undefined;
301
+ commitMessage?: string | undefined;
302
+ commitAuthor?: string | undefined;
303
+ workflowName?: string | undefined;
304
+ jobName?: string | undefined;
305
+ runUrl?: string | undefined;
306
+ }, {
307
+ type: "run.started";
308
+ repoName: string;
309
+ runId: string;
310
+ startedAt: string;
311
+ branch?: string | undefined;
312
+ sha?: string | undefined;
313
+ commitMessage?: string | undefined;
314
+ commitAuthor?: string | undefined;
315
+ workflowName?: string | undefined;
316
+ jobName?: string | undefined;
317
+ runUrl?: string | undefined;
318
+ }>, z.ZodObject<{
319
+ type: z.ZodLiteral<"run.completed">;
320
+ repoName: z.ZodString;
321
+ runId: z.ZodString;
322
+ completedAt: z.ZodString;
323
+ status: z.ZodString;
324
+ durationMs: z.ZodOptional<z.ZodNumber>;
325
+ counts: z.ZodObject<{
326
+ passed: z.ZodNumber;
327
+ failed: z.ZodNumber;
328
+ skipped: z.ZodNumber;
329
+ flaky: z.ZodNumber;
330
+ }, "strip", z.ZodTypeAny, {
331
+ passed: number;
332
+ failed: number;
333
+ skipped: number;
334
+ flaky: number;
335
+ }, {
336
+ passed: number;
337
+ failed: number;
338
+ skipped: number;
339
+ flaky: number;
340
+ }>;
341
+ }, "strip", z.ZodTypeAny, {
342
+ type: "run.completed";
343
+ status: string;
344
+ repoName: string;
345
+ runId: string;
346
+ completedAt: string;
347
+ counts: {
348
+ passed: number;
349
+ failed: number;
350
+ skipped: number;
351
+ flaky: number;
352
+ };
353
+ durationMs?: number | undefined;
354
+ }, {
355
+ type: "run.completed";
356
+ status: string;
357
+ repoName: string;
358
+ runId: string;
359
+ completedAt: string;
360
+ counts: {
361
+ passed: number;
362
+ failed: number;
363
+ skipped: number;
364
+ flaky: number;
365
+ };
366
+ durationMs?: number | undefined;
367
+ }>]>;
368
+ export type OutboundEvent = z.infer<typeof OutboundEventSchema>;
369
+ /**
370
+ * Validate a result event, throwing if invalid
371
+ */
372
+ export declare function validateResultEvent(event: unknown): ResultCreatedEvent;
373
+ /**
374
+ * Validate a run started event, throwing if invalid
375
+ */
376
+ export declare function validateRunStartedEvent(event: unknown): RunStartedEvent;
377
+ /**
378
+ * Validate a run completed event, throwing if invalid
379
+ */
380
+ export declare function validateRunCompletedEvent(event: unknown): RunCompletedEvent;
381
+ /**
382
+ * Safe validation that returns result instead of throwing
383
+ */
384
+ export declare function safeValidateResultEvent(event: unknown): z.SafeParseReturnType<{
385
+ type: "result.created";
386
+ status: "passed" | "failed" | "skipped" | "flaky";
387
+ repoName: string;
388
+ runId: string;
389
+ specPath: string;
390
+ testName: string;
391
+ eventId: string;
392
+ timestamp: string;
393
+ project?: string | undefined;
394
+ testId?: string | undefined;
395
+ durationMs?: number | undefined;
396
+ startedAt?: string | undefined;
397
+ attempt?: number | undefined;
398
+ retries?: number | undefined;
399
+ failureMessage?: string | undefined;
400
+ browser?: string | undefined;
401
+ os?: "mac" | "win" | "linux" | undefined;
402
+ branch?: string | undefined;
403
+ sha?: string | undefined;
404
+ reportUrl?: string | undefined;
405
+ commitMessage?: string | undefined;
406
+ commitAuthor?: string | undefined;
407
+ titlePath?: string[] | undefined;
408
+ }, {
409
+ type: "result.created";
410
+ status: "passed" | "failed" | "skipped" | "flaky";
411
+ repoName: string;
412
+ runId: string;
413
+ specPath: string;
414
+ testName: string;
415
+ eventId: string;
416
+ timestamp: string;
417
+ project?: string | undefined;
418
+ testId?: string | undefined;
419
+ durationMs?: number | undefined;
420
+ startedAt?: string | undefined;
421
+ attempt?: number | undefined;
422
+ retries?: number | undefined;
423
+ failureMessage?: string | undefined;
424
+ browser?: string | undefined;
425
+ os?: "mac" | "win" | "linux" | undefined;
426
+ branch?: string | undefined;
427
+ sha?: string | undefined;
428
+ reportUrl?: string | undefined;
429
+ commitMessage?: string | undefined;
430
+ commitAuthor?: string | undefined;
431
+ titlePath?: string[] | undefined;
432
+ }>;
433
+ export declare function safeValidateRunStartedEvent(event: unknown): z.SafeParseReturnType<{
434
+ type: "run.started";
435
+ repoName: string;
436
+ runId: string;
437
+ startedAt: string;
438
+ branch?: string | undefined;
439
+ sha?: string | undefined;
440
+ commitMessage?: string | undefined;
441
+ commitAuthor?: string | undefined;
442
+ workflowName?: string | undefined;
443
+ jobName?: string | undefined;
444
+ runUrl?: string | undefined;
445
+ }, {
446
+ type: "run.started";
447
+ repoName: string;
448
+ runId: string;
449
+ startedAt: string;
450
+ branch?: string | undefined;
451
+ sha?: string | undefined;
452
+ commitMessage?: string | undefined;
453
+ commitAuthor?: string | undefined;
454
+ workflowName?: string | undefined;
455
+ jobName?: string | undefined;
456
+ runUrl?: string | undefined;
457
+ }>;
458
+ export declare function safeValidateRunCompletedEvent(event: unknown): z.SafeParseReturnType<{
459
+ type: "run.completed";
460
+ status: string;
461
+ repoName: string;
462
+ runId: string;
463
+ completedAt: string;
464
+ counts: {
465
+ passed: number;
466
+ failed: number;
467
+ skipped: number;
468
+ flaky: number;
469
+ };
470
+ durationMs?: number | undefined;
471
+ }, {
472
+ type: "run.completed";
473
+ status: string;
474
+ repoName: string;
475
+ runId: string;
476
+ completedAt: string;
477
+ counts: {
478
+ passed: number;
479
+ failed: number;
480
+ skipped: number;
481
+ flaky: number;
482
+ };
483
+ durationMs?: number | undefined;
484
+ }>;
485
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,kBAAkB,qDAAmD,CAAC;AACnF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAahC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAKvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAI9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAEtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAEvE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAE3E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAErD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;GAEzD;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;GAE3D"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OutboundEventSchema = exports.RunCompletedEventSchema = exports.CountsSchema = exports.RunStartedEventSchema = exports.ResultCreatedEventSchema = exports.ResultStatusSchema = exports.SCHEMA_VERSION = void 0;
4
+ exports.validateResultEvent = validateResultEvent;
5
+ exports.validateRunStartedEvent = validateRunStartedEvent;
6
+ exports.validateRunCompletedEvent = validateRunCompletedEvent;
7
+ exports.safeValidateResultEvent = safeValidateResultEvent;
8
+ exports.safeValidateRunStartedEvent = safeValidateRunStartedEvent;
9
+ exports.safeValidateRunCompletedEvent = safeValidateRunCompletedEvent;
10
+ const zod_1 = require("zod");
11
+ /**
12
+ * Schema version for tracking breaking changes
13
+ * Increment when making incompatible schema changes
14
+ */
15
+ exports.SCHEMA_VERSION = '1.0.0';
16
+ /**
17
+ * Result status enum
18
+ */
19
+ exports.ResultStatusSchema = zod_1.z.enum(['passed', 'failed', 'skipped', 'flaky']);
20
+ /**
21
+ * Test result event schema
22
+ * Emitted for each test completion (including retries)
23
+ */
24
+ exports.ResultCreatedEventSchema = zod_1.z.object({
25
+ type: zod_1.z.literal('result.created'),
26
+ repoName: zod_1.z.string().min(1),
27
+ runId: zod_1.z.string().min(1),
28
+ specPath: zod_1.z.string().min(1),
29
+ project: zod_1.z.string().optional(),
30
+ testName: zod_1.z.string().min(1),
31
+ testId: zod_1.z.string().optional(),
32
+ status: exports.ResultStatusSchema,
33
+ durationMs: zod_1.z.number().int().nonnegative().optional(),
34
+ startedAt: zod_1.z.string().datetime().optional(),
35
+ attempt: zod_1.z.number().int().positive().optional(),
36
+ retries: zod_1.z.number().int().nonnegative().optional(),
37
+ failureMessage: zod_1.z.string().optional(),
38
+ eventId: zod_1.z.string().min(1),
39
+ timestamp: zod_1.z.string().datetime(),
40
+ browser: zod_1.z.string().optional(),
41
+ os: zod_1.z.enum(['mac', 'win', 'linux']).optional(),
42
+ branch: zod_1.z.string().optional(),
43
+ sha: zod_1.z.string().optional(),
44
+ // Phase 3 additions for Test Explorer
45
+ reportUrl: zod_1.z.string().url().optional(),
46
+ commitMessage: zod_1.z.string().optional(),
47
+ commitAuthor: zod_1.z.string().optional(),
48
+ titlePath: zod_1.z.array(zod_1.z.string()).optional(),
49
+ });
50
+ /**
51
+ * Run started event schema
52
+ * Emitted once at the beginning of a test run
53
+ */
54
+ exports.RunStartedEventSchema = zod_1.z.object({
55
+ type: zod_1.z.literal('run.started'),
56
+ repoName: zod_1.z.string().min(1),
57
+ runId: zod_1.z.string().min(1),
58
+ startedAt: zod_1.z.string().datetime(),
59
+ branch: zod_1.z.string().optional(),
60
+ sha: zod_1.z.string().optional(),
61
+ workflowName: zod_1.z.string().optional(),
62
+ jobName: zod_1.z.string().optional(),
63
+ runUrl: zod_1.z.string().url().optional(),
64
+ // Phase 3 additions
65
+ commitMessage: zod_1.z.string().optional(),
66
+ commitAuthor: zod_1.z.string().optional(),
67
+ });
68
+ /**
69
+ * Counts object for run completion
70
+ */
71
+ exports.CountsSchema = zod_1.z.object({
72
+ passed: zod_1.z.number().int().nonnegative(),
73
+ failed: zod_1.z.number().int().nonnegative(),
74
+ skipped: zod_1.z.number().int().nonnegative(),
75
+ flaky: zod_1.z.number().int().nonnegative(),
76
+ });
77
+ /**
78
+ * Run completed event schema
79
+ * Emitted once at the end of a test run
80
+ */
81
+ exports.RunCompletedEventSchema = zod_1.z.object({
82
+ type: zod_1.z.literal('run.completed'),
83
+ repoName: zod_1.z.string().min(1),
84
+ runId: zod_1.z.string().min(1),
85
+ completedAt: zod_1.z.string().datetime(),
86
+ status: zod_1.z.string(),
87
+ durationMs: zod_1.z.number().int().nonnegative().optional(),
88
+ counts: exports.CountsSchema,
89
+ });
90
+ /**
91
+ * Union of all outbound event types
92
+ */
93
+ exports.OutboundEventSchema = zod_1.z.discriminatedUnion('type', [
94
+ exports.ResultCreatedEventSchema,
95
+ exports.RunStartedEventSchema,
96
+ exports.RunCompletedEventSchema,
97
+ ]);
98
+ /**
99
+ * Validate a result event, throwing if invalid
100
+ */
101
+ function validateResultEvent(event) {
102
+ return exports.ResultCreatedEventSchema.parse(event);
103
+ }
104
+ /**
105
+ * Validate a run started event, throwing if invalid
106
+ */
107
+ function validateRunStartedEvent(event) {
108
+ return exports.RunStartedEventSchema.parse(event);
109
+ }
110
+ /**
111
+ * Validate a run completed event, throwing if invalid
112
+ */
113
+ function validateRunCompletedEvent(event) {
114
+ return exports.RunCompletedEventSchema.parse(event);
115
+ }
116
+ /**
117
+ * Safe validation that returns result instead of throwing
118
+ */
119
+ function safeValidateResultEvent(event) {
120
+ return exports.ResultCreatedEventSchema.safeParse(event);
121
+ }
122
+ function safeValidateRunStartedEvent(event) {
123
+ return exports.RunStartedEventSchema.safeParse(event);
124
+ }
125
+ function safeValidateRunCompletedEvent(event) {
126
+ return exports.RunCompletedEventSchema.safeParse(event);
127
+ }
128
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schemas.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.test.d.ts","sourceRoot":"","sources":["../src/schemas.test.ts"],"names":[],"mappings":""}