@crvouga/atlas 0.8.0 → 0.10.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 (60) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/core/src/lint.js +6 -2
  3. package/dist/core/src/spec/types.d.ts +4 -1
  4. package/dist/playwright-reporter/src/evidence.d.ts +122 -0
  5. package/dist/playwright-reporter/src/evidence.js +327 -0
  6. package/dist/playwright-reporter/src/index.d.ts +114 -0
  7. package/dist/playwright-reporter/src/index.js +312 -0
  8. package/dist/reports/src/compose.js +7 -14
  9. package/dist/reports/src/recorded-specs.d.ts +33 -0
  10. package/dist/reports/src/recorded-specs.js +42 -0
  11. package/dist/reports/src/report-index.d.ts +6 -0
  12. package/dist/reports/src/report-index.js +14 -2
  13. package/dist/reports/src/test-catalog.d.ts +386 -0
  14. package/dist/reports/src/test-catalog.js +655 -0
  15. package/dist/schema/src/api.d.ts +585 -0
  16. package/dist/schema/src/api.js +105 -0
  17. package/dist/schema/src/spec.d.ts +2 -1
  18. package/dist/schema/src/spec.js +5 -2
  19. package/dist/server/src/app.js +82 -4
  20. package/dist/server/src/llms.js +14 -0
  21. package/dist/server/src/openapi.d.ts +1 -1
  22. package/dist/server/src/openapi.js +60 -3
  23. package/docs/agents.md +1 -0
  24. package/docs/integrating.md +1 -0
  25. package/docs/reference/core.md +7 -2
  26. package/docs/reference/http-api.md +134 -2
  27. package/docs/reference/playwright-reporter.md +332 -0
  28. package/docs/reference/reports.md +632 -0
  29. package/docs/reference/schema.md +58 -1
  30. package/docs/rich-evidence.md +198 -0
  31. package/docs/server.md +41 -0
  32. package/docs/statecharts.md +2 -1
  33. package/llms-full.txt +380 -3
  34. package/llms.txt +2 -0
  35. package/package.json +6 -1
  36. package/packages/schema/schemas/report-run.schema.json +251 -0
  37. package/packages/schema/schemas/report-runs.schema.json +177 -0
  38. package/packages/schema/schemas/state-node.schema.json +7 -0
  39. package/packages/schema/schemas/test-catalog.schema.json +1177 -0
  40. package/packages/schema/schemas/test-history.schema.json +696 -0
  41. package/packages/server/openapi.json +8676 -5351
  42. package/packages/visualizer/src/app/AppShell.tsx +7 -3
  43. package/packages/visualizer/src/app/router.tsx +26 -3
  44. package/packages/visualizer/src/components/Header.tsx +2 -2
  45. package/packages/visualizer/src/evidence/evidence-context.tsx +10 -1
  46. package/packages/visualizer/src/explorer/Explorer.tsx +433 -0
  47. package/packages/visualizer/src/explorer/ExplorerIndex.tsx +120 -0
  48. package/packages/visualizer/src/explorer/RunsView.tsx +164 -0
  49. package/packages/visualizer/src/explorer/TestDetail.tsx +214 -0
  50. package/packages/visualizer/src/explorer/catalog.tsx +274 -0
  51. package/packages/visualizer/src/explorer/explorer.module.css +1238 -0
  52. package/packages/visualizer/src/explorer/groups.test.ts +87 -0
  53. package/packages/visualizer/src/explorer/groups.ts +126 -0
  54. package/packages/visualizer/src/explorer/navigate.ts +36 -0
  55. package/packages/visualizer/src/explorer/parts.tsx +59 -0
  56. package/packages/visualizer/src/explorer/search.ts +97 -0
  57. package/packages/visualizer/src/find/Finder.tsx +2 -0
  58. package/packages/visualizer/src/find/corpus.ts +13 -6
  59. package/packages/visualizer/src/find/rank.ts +2 -0
  60. package/packages/visualizer/src/evidence/project-home.tsx +0 -45
@@ -0,0 +1,1177 @@
1
+ {
2
+ "$id": "https://github.com/crvouga/atlas/schemas/test-catalog.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "schemaVersion": {
7
+ "type": "number",
8
+ "const": 1
9
+ },
10
+ "version": {
11
+ "description": "Changes whenever the report or its history does",
12
+ "type": "string"
13
+ },
14
+ "generatedAtMs": {
15
+ "type": "number"
16
+ },
17
+ "summary": {
18
+ "type": "object",
19
+ "properties": {
20
+ "tests": {
21
+ "type": "integer",
22
+ "minimum": 0,
23
+ "maximum": 9007199254740991
24
+ },
25
+ "counts": {
26
+ "type": "object",
27
+ "propertyNames": {
28
+ "type": "string",
29
+ "enum": [
30
+ "passed",
31
+ "failed",
32
+ "running",
33
+ "not-run"
34
+ ]
35
+ },
36
+ "additionalProperties": {
37
+ "type": "integer",
38
+ "minimum": 0,
39
+ "maximum": 9007199254740991
40
+ }
41
+ },
42
+ "outcomes": {
43
+ "type": "integer",
44
+ "minimum": 0,
45
+ "maximum": 9007199254740991
46
+ },
47
+ "flaky": {
48
+ "type": "integer",
49
+ "minimum": 0,
50
+ "maximum": 9007199254740991
51
+ },
52
+ "durations": {
53
+ "anyOf": [
54
+ {
55
+ "type": "object",
56
+ "properties": {
57
+ "count": {
58
+ "type": "integer",
59
+ "minimum": 0,
60
+ "maximum": 9007199254740991
61
+ },
62
+ "totalMs": {
63
+ "type": "number"
64
+ },
65
+ "avgMs": {
66
+ "type": "number"
67
+ },
68
+ "p50Ms": {
69
+ "type": "number"
70
+ },
71
+ "p95Ms": {
72
+ "type": "number"
73
+ },
74
+ "minMs": {
75
+ "type": "number"
76
+ },
77
+ "maxMs": {
78
+ "type": "number"
79
+ },
80
+ "lastMs": {
81
+ "type": "number"
82
+ }
83
+ },
84
+ "required": [
85
+ "count",
86
+ "totalMs",
87
+ "avgMs",
88
+ "p50Ms",
89
+ "p95Ms",
90
+ "minMs",
91
+ "maxMs",
92
+ "lastMs"
93
+ ],
94
+ "additionalProperties": {}
95
+ },
96
+ {
97
+ "type": "null"
98
+ }
99
+ ]
100
+ },
101
+ "measured": {
102
+ "type": "integer",
103
+ "minimum": 0,
104
+ "maximum": 9007199254740991
105
+ },
106
+ "withAttachments": {
107
+ "type": "integer",
108
+ "minimum": 0,
109
+ "maximum": 9007199254740991
110
+ },
111
+ "environments": {
112
+ "type": "array",
113
+ "items": {
114
+ "type": "object",
115
+ "properties": {
116
+ "name": {
117
+ "type": "string"
118
+ },
119
+ "tests": {
120
+ "type": "integer",
121
+ "minimum": 0,
122
+ "maximum": 9007199254740991
123
+ },
124
+ "counts": {
125
+ "type": "object",
126
+ "propertyNames": {
127
+ "type": "string",
128
+ "enum": [
129
+ "passed",
130
+ "failed",
131
+ "running",
132
+ "not-run"
133
+ ]
134
+ },
135
+ "additionalProperties": {
136
+ "type": "integer",
137
+ "minimum": 0,
138
+ "maximum": 9007199254740991
139
+ }
140
+ },
141
+ "avgMs": {
142
+ "anyOf": [
143
+ {
144
+ "type": "number"
145
+ },
146
+ {
147
+ "type": "null"
148
+ }
149
+ ]
150
+ }
151
+ },
152
+ "required": [
153
+ "name",
154
+ "tests",
155
+ "counts",
156
+ "avgMs"
157
+ ],
158
+ "additionalProperties": {}
159
+ }
160
+ },
161
+ "producers": {
162
+ "type": "array",
163
+ "items": {
164
+ "type": "object",
165
+ "properties": {
166
+ "name": {
167
+ "type": "string"
168
+ },
169
+ "tests": {
170
+ "type": "integer",
171
+ "minimum": 0,
172
+ "maximum": 9007199254740991
173
+ },
174
+ "counts": {
175
+ "type": "object",
176
+ "propertyNames": {
177
+ "type": "string",
178
+ "enum": [
179
+ "passed",
180
+ "failed",
181
+ "running",
182
+ "not-run"
183
+ ]
184
+ },
185
+ "additionalProperties": {
186
+ "type": "integer",
187
+ "minimum": 0,
188
+ "maximum": 9007199254740991
189
+ }
190
+ },
191
+ "avgMs": {
192
+ "anyOf": [
193
+ {
194
+ "type": "number"
195
+ },
196
+ {
197
+ "type": "null"
198
+ }
199
+ ]
200
+ }
201
+ },
202
+ "required": [
203
+ "name",
204
+ "tests",
205
+ "counts",
206
+ "avgMs"
207
+ ],
208
+ "additionalProperties": {}
209
+ }
210
+ },
211
+ "domains": {
212
+ "type": "array",
213
+ "items": {
214
+ "type": "object",
215
+ "properties": {
216
+ "name": {
217
+ "type": "string"
218
+ },
219
+ "tests": {
220
+ "type": "integer",
221
+ "minimum": 0,
222
+ "maximum": 9007199254740991
223
+ },
224
+ "counts": {
225
+ "type": "object",
226
+ "propertyNames": {
227
+ "type": "string",
228
+ "enum": [
229
+ "passed",
230
+ "failed",
231
+ "running",
232
+ "not-run"
233
+ ]
234
+ },
235
+ "additionalProperties": {
236
+ "type": "integer",
237
+ "minimum": 0,
238
+ "maximum": 9007199254740991
239
+ }
240
+ },
241
+ "avgMs": {
242
+ "anyOf": [
243
+ {
244
+ "type": "number"
245
+ },
246
+ {
247
+ "type": "null"
248
+ }
249
+ ]
250
+ }
251
+ },
252
+ "required": [
253
+ "name",
254
+ "tests",
255
+ "counts",
256
+ "avgMs"
257
+ ],
258
+ "additionalProperties": {}
259
+ }
260
+ },
261
+ "slowest": {
262
+ "type": "array",
263
+ "items": {
264
+ "type": "object",
265
+ "properties": {
266
+ "key": {
267
+ "type": "string"
268
+ },
269
+ "title": {
270
+ "type": "string"
271
+ },
272
+ "specPath": {
273
+ "anyOf": [
274
+ {
275
+ "type": "string"
276
+ },
277
+ {
278
+ "type": "null"
279
+ }
280
+ ]
281
+ },
282
+ "status": {
283
+ "type": "string",
284
+ "enum": [
285
+ "passed",
286
+ "failed",
287
+ "running",
288
+ "not-run"
289
+ ]
290
+ },
291
+ "value": {
292
+ "type": "number"
293
+ }
294
+ },
295
+ "required": [
296
+ "key",
297
+ "title",
298
+ "specPath",
299
+ "status",
300
+ "value"
301
+ ],
302
+ "additionalProperties": {}
303
+ }
304
+ },
305
+ "flakiest": {
306
+ "type": "array",
307
+ "items": {
308
+ "type": "object",
309
+ "properties": {
310
+ "key": {
311
+ "type": "string"
312
+ },
313
+ "title": {
314
+ "type": "string"
315
+ },
316
+ "specPath": {
317
+ "anyOf": [
318
+ {
319
+ "type": "string"
320
+ },
321
+ {
322
+ "type": "null"
323
+ }
324
+ ]
325
+ },
326
+ "status": {
327
+ "type": "string",
328
+ "enum": [
329
+ "passed",
330
+ "failed",
331
+ "running",
332
+ "not-run"
333
+ ]
334
+ },
335
+ "value": {
336
+ "type": "number"
337
+ }
338
+ },
339
+ "required": [
340
+ "key",
341
+ "title",
342
+ "specPath",
343
+ "status",
344
+ "value"
345
+ ],
346
+ "additionalProperties": {}
347
+ }
348
+ },
349
+ "failing": {
350
+ "type": "array",
351
+ "items": {
352
+ "type": "object",
353
+ "properties": {
354
+ "key": {
355
+ "type": "string"
356
+ },
357
+ "title": {
358
+ "type": "string"
359
+ },
360
+ "specPath": {
361
+ "anyOf": [
362
+ {
363
+ "type": "string"
364
+ },
365
+ {
366
+ "type": "null"
367
+ }
368
+ ]
369
+ },
370
+ "status": {
371
+ "type": "string",
372
+ "enum": [
373
+ "passed",
374
+ "failed",
375
+ "running",
376
+ "not-run"
377
+ ]
378
+ },
379
+ "value": {
380
+ "type": "number"
381
+ }
382
+ },
383
+ "required": [
384
+ "key",
385
+ "title",
386
+ "specPath",
387
+ "status",
388
+ "value"
389
+ ],
390
+ "additionalProperties": {}
391
+ }
392
+ },
393
+ "runs": {
394
+ "type": "integer",
395
+ "minimum": 0,
396
+ "maximum": 9007199254740991
397
+ },
398
+ "lastRecordedAtMs": {
399
+ "anyOf": [
400
+ {
401
+ "type": "number"
402
+ },
403
+ {
404
+ "type": "null"
405
+ }
406
+ ]
407
+ },
408
+ "history": {
409
+ "type": "boolean"
410
+ }
411
+ },
412
+ "required": [
413
+ "tests",
414
+ "counts",
415
+ "outcomes",
416
+ "flaky",
417
+ "durations",
418
+ "measured",
419
+ "withAttachments",
420
+ "environments",
421
+ "producers",
422
+ "domains",
423
+ "slowest",
424
+ "flakiest",
425
+ "failing",
426
+ "runs",
427
+ "lastRecordedAtMs",
428
+ "history"
429
+ ],
430
+ "additionalProperties": {}
431
+ },
432
+ "facets": {
433
+ "type": "object",
434
+ "properties": {
435
+ "statuses": {
436
+ "type": "array",
437
+ "items": {
438
+ "type": "object",
439
+ "properties": {
440
+ "value": {
441
+ "type": "string"
442
+ },
443
+ "count": {
444
+ "type": "integer",
445
+ "minimum": 0,
446
+ "maximum": 9007199254740991
447
+ }
448
+ },
449
+ "required": [
450
+ "value",
451
+ "count"
452
+ ],
453
+ "additionalProperties": {}
454
+ }
455
+ },
456
+ "environments": {
457
+ "type": "array",
458
+ "items": {
459
+ "type": "object",
460
+ "properties": {
461
+ "value": {
462
+ "type": "string"
463
+ },
464
+ "count": {
465
+ "type": "integer",
466
+ "minimum": 0,
467
+ "maximum": 9007199254740991
468
+ }
469
+ },
470
+ "required": [
471
+ "value",
472
+ "count"
473
+ ],
474
+ "additionalProperties": {}
475
+ }
476
+ },
477
+ "producers": {
478
+ "type": "array",
479
+ "items": {
480
+ "type": "object",
481
+ "properties": {
482
+ "value": {
483
+ "type": "string"
484
+ },
485
+ "count": {
486
+ "type": "integer",
487
+ "minimum": 0,
488
+ "maximum": 9007199254740991
489
+ }
490
+ },
491
+ "required": [
492
+ "value",
493
+ "count"
494
+ ],
495
+ "additionalProperties": {}
496
+ }
497
+ },
498
+ "domains": {
499
+ "type": "array",
500
+ "items": {
501
+ "type": "object",
502
+ "properties": {
503
+ "value": {
504
+ "type": "string"
505
+ },
506
+ "count": {
507
+ "type": "integer",
508
+ "minimum": 0,
509
+ "maximum": 9007199254740991
510
+ }
511
+ },
512
+ "required": [
513
+ "value",
514
+ "count"
515
+ ],
516
+ "additionalProperties": {}
517
+ }
518
+ },
519
+ "specs": {
520
+ "type": "array",
521
+ "items": {
522
+ "type": "object",
523
+ "properties": {
524
+ "path": {
525
+ "type": "string"
526
+ },
527
+ "title": {
528
+ "type": "string"
529
+ },
530
+ "domain": {
531
+ "type": "string"
532
+ },
533
+ "kind": {
534
+ "type": "string"
535
+ },
536
+ "tests": {
537
+ "type": "integer",
538
+ "minimum": 0,
539
+ "maximum": 9007199254740991
540
+ },
541
+ "counts": {
542
+ "type": "object",
543
+ "propertyNames": {
544
+ "type": "string",
545
+ "enum": [
546
+ "passed",
547
+ "failed",
548
+ "running",
549
+ "not-run"
550
+ ]
551
+ },
552
+ "additionalProperties": {
553
+ "type": "integer",
554
+ "minimum": 0,
555
+ "maximum": 9007199254740991
556
+ }
557
+ }
558
+ },
559
+ "required": [
560
+ "path",
561
+ "title",
562
+ "domain",
563
+ "kind",
564
+ "tests",
565
+ "counts"
566
+ ],
567
+ "additionalProperties": {}
568
+ }
569
+ },
570
+ "tags": {
571
+ "type": "array",
572
+ "items": {
573
+ "type": "object",
574
+ "properties": {
575
+ "value": {
576
+ "type": "string"
577
+ },
578
+ "count": {
579
+ "type": "integer",
580
+ "minimum": 0,
581
+ "maximum": 9007199254740991
582
+ }
583
+ },
584
+ "required": [
585
+ "value",
586
+ "count"
587
+ ],
588
+ "additionalProperties": {}
589
+ }
590
+ },
591
+ "branches": {
592
+ "type": "array",
593
+ "items": {
594
+ "type": "object",
595
+ "properties": {
596
+ "value": {
597
+ "type": "string"
598
+ },
599
+ "count": {
600
+ "type": "integer",
601
+ "minimum": 0,
602
+ "maximum": 9007199254740991
603
+ }
604
+ },
605
+ "required": [
606
+ "value",
607
+ "count"
608
+ ],
609
+ "additionalProperties": {}
610
+ }
611
+ },
612
+ "labels": {
613
+ "type": "object",
614
+ "propertyNames": {
615
+ "type": "string"
616
+ },
617
+ "additionalProperties": {
618
+ "type": "array",
619
+ "items": {
620
+ "type": "object",
621
+ "properties": {
622
+ "value": {
623
+ "type": "string"
624
+ },
625
+ "count": {
626
+ "type": "integer",
627
+ "minimum": 0,
628
+ "maximum": 9007199254740991
629
+ }
630
+ },
631
+ "required": [
632
+ "value",
633
+ "count"
634
+ ],
635
+ "additionalProperties": {}
636
+ }
637
+ }
638
+ }
639
+ },
640
+ "required": [
641
+ "statuses",
642
+ "environments",
643
+ "producers",
644
+ "domains",
645
+ "specs",
646
+ "tags",
647
+ "branches",
648
+ "labels"
649
+ ],
650
+ "additionalProperties": {}
651
+ },
652
+ "total": {
653
+ "description": "Tests the query matched, before offset and limit",
654
+ "type": "integer",
655
+ "minimum": 0,
656
+ "maximum": 9007199254740991
657
+ },
658
+ "offset": {
659
+ "type": "integer",
660
+ "minimum": 0,
661
+ "maximum": 9007199254740991
662
+ },
663
+ "limit": {
664
+ "type": "integer",
665
+ "minimum": 0,
666
+ "maximum": 9007199254740991
667
+ },
668
+ "tests": {
669
+ "type": "array",
670
+ "items": {
671
+ "type": "object",
672
+ "properties": {
673
+ "key": {
674
+ "description": "The test's identity, `JSON.stringify([specPath, id])`. Pass it to `/api/reports/tests/history?key=`",
675
+ "type": "string"
676
+ },
677
+ "id": {
678
+ "type": "string"
679
+ },
680
+ "title": {
681
+ "type": "string"
682
+ },
683
+ "specPath": {
684
+ "anyOf": [
685
+ {
686
+ "type": "string"
687
+ },
688
+ {
689
+ "type": "null"
690
+ }
691
+ ]
692
+ },
693
+ "spec": {
694
+ "description": "The spec it belongs to: recorded by its layers, published in a spec set, or derived from the path",
695
+ "anyOf": [
696
+ {
697
+ "type": "object",
698
+ "properties": {
699
+ "path": {
700
+ "type": "string"
701
+ },
702
+ "title": {
703
+ "type": "string"
704
+ },
705
+ "domain": {
706
+ "type": "string"
707
+ },
708
+ "kind": {
709
+ "type": "string"
710
+ }
711
+ },
712
+ "required": [
713
+ "path",
714
+ "title",
715
+ "domain",
716
+ "kind"
717
+ ],
718
+ "additionalProperties": {}
719
+ },
720
+ {
721
+ "type": "null"
722
+ }
723
+ ]
724
+ },
725
+ "status": {
726
+ "description": "The worst current result across environments: failed, then running, then not-run, then passed",
727
+ "type": "string",
728
+ "enum": [
729
+ "passed",
730
+ "failed",
731
+ "running",
732
+ "not-run"
733
+ ]
734
+ },
735
+ "environments": {
736
+ "type": "array",
737
+ "items": {
738
+ "type": "string"
739
+ }
740
+ },
741
+ "producers": {
742
+ "type": "array",
743
+ "items": {
744
+ "type": "string"
745
+ }
746
+ },
747
+ "outcomes": {
748
+ "description": "The current result per producer, environment and parameter set, newest first",
749
+ "type": "array",
750
+ "items": {
751
+ "type": "object",
752
+ "properties": {
753
+ "at": {
754
+ "description": "When it was recorded, epoch milliseconds",
755
+ "type": "number"
756
+ },
757
+ "status": {
758
+ "type": "string",
759
+ "enum": [
760
+ "passed",
761
+ "failed",
762
+ "running",
763
+ "not-run"
764
+ ]
765
+ },
766
+ "durationMs": {
767
+ "description": "How long it took, or null when the producer did not measure it",
768
+ "anyOf": [
769
+ {
770
+ "type": "number"
771
+ },
772
+ {
773
+ "type": "null"
774
+ }
775
+ ]
776
+ },
777
+ "environment": {
778
+ "description": "The client it checked, such as `desktop-web` or `ios`",
779
+ "anyOf": [
780
+ {
781
+ "type": "string"
782
+ },
783
+ {
784
+ "type": "null"
785
+ }
786
+ ]
787
+ },
788
+ "producer": {
789
+ "type": "string"
790
+ },
791
+ "kind": {
792
+ "type": "string"
793
+ },
794
+ "parameters": {
795
+ "type": "object",
796
+ "propertyNames": {
797
+ "type": "string"
798
+ },
799
+ "additionalProperties": {
800
+ "type": "string"
801
+ }
802
+ },
803
+ "branch": {
804
+ "anyOf": [
805
+ {
806
+ "type": "string"
807
+ },
808
+ {
809
+ "type": "null"
810
+ }
811
+ ]
812
+ },
813
+ "sha": {
814
+ "anyOf": [
815
+ {
816
+ "type": "string"
817
+ },
818
+ {
819
+ "type": "null"
820
+ }
821
+ ]
822
+ },
823
+ "runUrl": {
824
+ "anyOf": [
825
+ {
826
+ "type": "string"
827
+ },
828
+ {
829
+ "type": "null"
830
+ }
831
+ ]
832
+ },
833
+ "run": {
834
+ "description": "The key of the run it belongs to, as `GET /api/reports/runs` lists it",
835
+ "type": "string"
836
+ },
837
+ "layer": {
838
+ "description": "The id of the layer that recorded it",
839
+ "type": "string"
840
+ },
841
+ "backend": {
842
+ "type": "string"
843
+ },
844
+ "detail": {
845
+ "description": "Why it has its status, at most 500 characters",
846
+ "type": "string"
847
+ },
848
+ "evidence": {
849
+ "type": "object",
850
+ "properties": {
851
+ "attachments": {
852
+ "type": "integer",
853
+ "minimum": 0,
854
+ "maximum": 9007199254740991
855
+ },
856
+ "steps": {
857
+ "type": "integer",
858
+ "minimum": 0,
859
+ "maximum": 9007199254740991
860
+ },
861
+ "annotations": {
862
+ "type": "integer",
863
+ "minimum": 0,
864
+ "maximum": 9007199254740991
865
+ },
866
+ "attempts": {
867
+ "type": "integer",
868
+ "minimum": 0,
869
+ "maximum": 9007199254740991
870
+ },
871
+ "links": {
872
+ "type": "integer",
873
+ "minimum": 0,
874
+ "maximum": 9007199254740991
875
+ },
876
+ "tags": {
877
+ "type": "array",
878
+ "items": {
879
+ "type": "string"
880
+ }
881
+ },
882
+ "labels": {
883
+ "type": "object",
884
+ "propertyNames": {
885
+ "type": "string"
886
+ },
887
+ "additionalProperties": {
888
+ "type": "string"
889
+ }
890
+ },
891
+ "roles": {
892
+ "type": "array",
893
+ "items": {
894
+ "type": "string"
895
+ }
896
+ }
897
+ },
898
+ "required": [
899
+ "attachments",
900
+ "steps",
901
+ "annotations",
902
+ "attempts",
903
+ "links",
904
+ "tags",
905
+ "labels",
906
+ "roles"
907
+ ],
908
+ "additionalProperties": {}
909
+ }
910
+ },
911
+ "required": [
912
+ "at",
913
+ "status",
914
+ "durationMs",
915
+ "environment",
916
+ "producer",
917
+ "kind",
918
+ "parameters",
919
+ "branch",
920
+ "sha",
921
+ "runUrl",
922
+ "run",
923
+ "layer",
924
+ "backend",
925
+ "detail"
926
+ ],
927
+ "additionalProperties": {}
928
+ }
929
+ },
930
+ "stats": {
931
+ "type": "object",
932
+ "properties": {
933
+ "results": {
934
+ "type": "integer",
935
+ "minimum": 0,
936
+ "maximum": 9007199254740991
937
+ },
938
+ "passed": {
939
+ "type": "integer",
940
+ "minimum": 0,
941
+ "maximum": 9007199254740991
942
+ },
943
+ "failed": {
944
+ "type": "integer",
945
+ "minimum": 0,
946
+ "maximum": 9007199254740991
947
+ },
948
+ "passRate": {
949
+ "description": "passed / (passed + failed), or null with no completed result",
950
+ "anyOf": [
951
+ {
952
+ "type": "number"
953
+ },
954
+ {
955
+ "type": "null"
956
+ }
957
+ ]
958
+ },
959
+ "flaky": {
960
+ "type": "boolean"
961
+ },
962
+ "flakyReason": {
963
+ "type": "string"
964
+ },
965
+ "flips": {
966
+ "type": "integer",
967
+ "minimum": 0,
968
+ "maximum": 9007199254740991
969
+ },
970
+ "durations": {
971
+ "anyOf": [
972
+ {
973
+ "type": "object",
974
+ "properties": {
975
+ "count": {
976
+ "type": "integer",
977
+ "minimum": 0,
978
+ "maximum": 9007199254740991
979
+ },
980
+ "totalMs": {
981
+ "type": "number"
982
+ },
983
+ "avgMs": {
984
+ "type": "number"
985
+ },
986
+ "p50Ms": {
987
+ "type": "number"
988
+ },
989
+ "p95Ms": {
990
+ "type": "number"
991
+ },
992
+ "minMs": {
993
+ "type": "number"
994
+ },
995
+ "maxMs": {
996
+ "type": "number"
997
+ },
998
+ "lastMs": {
999
+ "type": "number"
1000
+ }
1001
+ },
1002
+ "required": [
1003
+ "count",
1004
+ "totalMs",
1005
+ "avgMs",
1006
+ "p50Ms",
1007
+ "p95Ms",
1008
+ "minMs",
1009
+ "maxMs",
1010
+ "lastMs"
1011
+ ],
1012
+ "additionalProperties": {}
1013
+ },
1014
+ {
1015
+ "type": "null"
1016
+ }
1017
+ ]
1018
+ },
1019
+ "firstSeenMs": {
1020
+ "anyOf": [
1021
+ {
1022
+ "type": "number"
1023
+ },
1024
+ {
1025
+ "type": "null"
1026
+ }
1027
+ ]
1028
+ },
1029
+ "lastSeenMs": {
1030
+ "anyOf": [
1031
+ {
1032
+ "type": "number"
1033
+ },
1034
+ {
1035
+ "type": "null"
1036
+ }
1037
+ ]
1038
+ },
1039
+ "lastPassedAtMs": {
1040
+ "anyOf": [
1041
+ {
1042
+ "type": "number"
1043
+ },
1044
+ {
1045
+ "type": "null"
1046
+ }
1047
+ ]
1048
+ },
1049
+ "lastFailedAtMs": {
1050
+ "anyOf": [
1051
+ {
1052
+ "type": "number"
1053
+ },
1054
+ {
1055
+ "type": "null"
1056
+ }
1057
+ ]
1058
+ },
1059
+ "runs": {
1060
+ "type": "integer",
1061
+ "minimum": 0,
1062
+ "maximum": 9007199254740991
1063
+ },
1064
+ "branches": {
1065
+ "type": "array",
1066
+ "items": {
1067
+ "type": "string"
1068
+ }
1069
+ }
1070
+ },
1071
+ "required": [
1072
+ "results",
1073
+ "passed",
1074
+ "failed",
1075
+ "passRate",
1076
+ "flaky",
1077
+ "flakyReason",
1078
+ "flips",
1079
+ "durations",
1080
+ "firstSeenMs",
1081
+ "lastSeenMs",
1082
+ "lastPassedAtMs",
1083
+ "lastFailedAtMs",
1084
+ "runs",
1085
+ "branches"
1086
+ ],
1087
+ "additionalProperties": {}
1088
+ },
1089
+ "tags": {
1090
+ "type": "array",
1091
+ "items": {
1092
+ "type": "string"
1093
+ }
1094
+ },
1095
+ "labels": {
1096
+ "type": "object",
1097
+ "propertyNames": {
1098
+ "type": "string"
1099
+ },
1100
+ "additionalProperties": {
1101
+ "type": "string"
1102
+ }
1103
+ },
1104
+ "evidence": {
1105
+ "type": "object",
1106
+ "properties": {
1107
+ "attachments": {
1108
+ "type": "integer",
1109
+ "minimum": 0,
1110
+ "maximum": 9007199254740991
1111
+ },
1112
+ "steps": {
1113
+ "type": "integer",
1114
+ "minimum": 0,
1115
+ "maximum": 9007199254740991
1116
+ },
1117
+ "attempts": {
1118
+ "type": "integer",
1119
+ "minimum": 0,
1120
+ "maximum": 9007199254740991
1121
+ },
1122
+ "roles": {
1123
+ "type": "array",
1124
+ "items": {
1125
+ "type": "string"
1126
+ }
1127
+ }
1128
+ },
1129
+ "required": [
1130
+ "attachments",
1131
+ "steps",
1132
+ "attempts",
1133
+ "roles"
1134
+ ],
1135
+ "additionalProperties": {}
1136
+ },
1137
+ "lastRecordedAtMs": {
1138
+ "type": "number"
1139
+ },
1140
+ "live": {
1141
+ "type": "boolean"
1142
+ }
1143
+ },
1144
+ "required": [
1145
+ "key",
1146
+ "id",
1147
+ "title",
1148
+ "specPath",
1149
+ "spec",
1150
+ "status",
1151
+ "environments",
1152
+ "producers",
1153
+ "outcomes",
1154
+ "stats",
1155
+ "tags",
1156
+ "labels",
1157
+ "evidence",
1158
+ "lastRecordedAtMs",
1159
+ "live"
1160
+ ],
1161
+ "additionalProperties": {}
1162
+ }
1163
+ }
1164
+ },
1165
+ "required": [
1166
+ "schemaVersion",
1167
+ "version",
1168
+ "generatedAtMs",
1169
+ "summary",
1170
+ "facets",
1171
+ "total",
1172
+ "offset",
1173
+ "limit",
1174
+ "tests"
1175
+ ],
1176
+ "additionalProperties": {}
1177
+ }