@crvouga/atlas 1.1.0 → 1.3.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 (54) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/reports/src/artifact-query.d.ts +123 -0
  3. package/dist/reports/src/artifact-query.js +234 -0
  4. package/dist/reports/src/evidence-detail.d.ts +14 -3
  5. package/dist/reports/src/evidence-detail.js +34 -19
  6. package/dist/reports/src/evidence-scope.d.ts +83 -0
  7. package/dist/reports/src/evidence-scope.js +129 -0
  8. package/dist/reports/src/evidence-types.d.ts +5 -1
  9. package/dist/reports/src/explorer-types.d.ts +1 -1
  10. package/dist/reports/src/layer-merge.js +3 -2
  11. package/dist/reports/src/layer-types.d.ts +1 -1
  12. package/dist/reports/src/publish-checks.js +1 -0
  13. package/dist/reports/src/reporter.d.ts +1 -1
  14. package/dist/reports/src/reports-explorer-route.d.ts +276 -0
  15. package/dist/reports/src/reports-route.d.ts +276 -0
  16. package/dist/reports/src/test-catalog.d.ts +108 -6
  17. package/dist/reports/src/test-catalog.js +155 -8
  18. package/dist/schema/src/api.d.ts +745 -0
  19. package/dist/schema/src/api.js +48 -6
  20. package/dist/schema/src/layer.d.ts +981 -0
  21. package/dist/schema/src/layer.js +43 -4
  22. package/dist/server/src/app.js +16 -5
  23. package/dist/server/src/openapi.js +42 -3
  24. package/docs/extending.md +1 -0
  25. package/docs/reference/http-api.md +86 -2
  26. package/docs/reference/reports.md +550 -14
  27. package/docs/reference/schema.md +55 -0
  28. package/docs/rich-evidence.md +78 -0
  29. package/docs/server.md +4 -1
  30. package/docs/ui.md +1 -1
  31. package/llms-full.txt +170 -4
  32. package/package.json +1 -1
  33. package/packages/schema/schemas/check-detail.schema.json +673 -1
  34. package/packages/schema/schemas/effective-delta.schema.json +206 -0
  35. package/packages/schema/schemas/effective-evidence.schema.json +206 -0
  36. package/packages/schema/schemas/evidence-page.schema.json +103 -0
  37. package/packages/schema/schemas/layer-rows.schema.json +103 -0
  38. package/packages/schema/schemas/layer.schema.json +1598 -62
  39. package/packages/schema/schemas/publish-checks.schema.json +768 -0
  40. package/packages/schema/schemas/report-run.schema.json +131 -0
  41. package/packages/schema/schemas/report-runs.schema.json +221 -0
  42. package/packages/schema/schemas/test-catalog.schema.json +135 -0
  43. package/packages/schema/schemas/test-history.schema.json +216 -0
  44. package/packages/server/openapi.json +4731 -735
  45. package/packages/visualizer/src/evidence/artifacts.tsx +24 -18
  46. package/packages/visualizer/src/evidence/evidence-scope.tsx +106 -0
  47. package/packages/visualizer/src/evidence/format.ts +11 -0
  48. package/packages/visualizer/src/explorer/ArtifactsView.tsx +162 -0
  49. package/packages/visualizer/src/explorer/Explorer.tsx +47 -3
  50. package/packages/visualizer/src/explorer/RunsView.tsx +43 -19
  51. package/packages/visualizer/src/explorer/catalog.tsx +97 -12
  52. package/packages/visualizer/src/explorer/filters.tsx +279 -0
  53. package/packages/visualizer/src/explorer/search.ts +85 -6
  54. package/packages/visualizer/src/explorer/views.ts +75 -0
@@ -243,6 +243,13 @@
243
243
  "description": "The name of the step that holds it",
244
244
  "type": "string"
245
245
  },
246
+ "tags": {
247
+ "description": "The normalized tags of this attachment itself. Absent when it has none (and in documents of older servers)",
248
+ "type": "array",
249
+ "items": {
250
+ "type": "string"
251
+ }
252
+ },
246
253
  "recording": {
247
254
  "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
248
255
  "type": "string"
@@ -250,6 +257,102 @@
250
257
  "available": {
251
258
  "type": "boolean",
252
259
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
260
+ },
261
+ "scope": {
262
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
263
+ "type": "object",
264
+ "properties": {
265
+ "surface": {
266
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
267
+ "type": "string",
268
+ "minLength": 1
269
+ },
270
+ "deviceKind": {
271
+ "description": "What it ran on, in an open vocabulary: `simulator`, `emulator`, `physical`, `virtual-machine`, `desktop`… A simulator and a physical phone stay distinct values; they are filtered separately",
272
+ "type": "string",
273
+ "minLength": 1
274
+ },
275
+ "syntheticData": {
276
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
277
+ "type": "boolean"
278
+ },
279
+ "dependencies": {
280
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
281
+ "type": "string",
282
+ "minLength": 1
283
+ },
284
+ "audioCaptured": {
285
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
286
+ "type": "boolean"
287
+ },
288
+ "pacing": {
289
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
290
+ "type": "string",
291
+ "minLength": 1
292
+ },
293
+ "asserted": {
294
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
295
+ "type": "array",
296
+ "items": {
297
+ "type": "string"
298
+ }
299
+ },
300
+ "limitations": {
301
+ "description": "Known limits of what this evidence shows, in the producer's words",
302
+ "type": "array",
303
+ "items": {
304
+ "type": "string"
305
+ }
306
+ },
307
+ "declaredBy": {
308
+ "description": "Who or what made this declaration: a tool, a team, a person",
309
+ "type": "string"
310
+ },
311
+ "verified": {
312
+ "description": "The names of the fields above (`surface`, `deviceKind`, `syntheticData`, `dependencies`, `audioCaptured`, `pacing`) that something independent of the producer checked. Every other field is only declared",
313
+ "type": "array",
314
+ "items": {
315
+ "type": "string"
316
+ }
317
+ },
318
+ "verifiedBy": {
319
+ "description": "What checked the `verified` fields",
320
+ "type": "string"
321
+ },
322
+ "provenance": {
323
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
324
+ "type": "array",
325
+ "items": {
326
+ "type": "object",
327
+ "properties": {
328
+ "url": {
329
+ "type": "string",
330
+ "minLength": 1
331
+ },
332
+ "name": {
333
+ "type": "string"
334
+ },
335
+ "rel": {
336
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
337
+ "type": "string"
338
+ }
339
+ },
340
+ "required": [
341
+ "url"
342
+ ],
343
+ "additionalProperties": {}
344
+ }
345
+ },
346
+ "extensions": {
347
+ "type": "object",
348
+ "propertyNames": {
349
+ "type": "string",
350
+ "minLength": 1
351
+ },
352
+ "additionalProperties": {}
353
+ }
354
+ },
355
+ "additionalProperties": {}
253
356
  }
254
357
  },
255
358
  "required": [
@@ -453,6 +556,16 @@
453
556
  "type": "string"
454
557
  }
455
558
  },
559
+ "scopeProfiles": {
560
+ "description": "The scope tokens each distinct playable recording of its current results declares (`device:physical`, `audio:silent`); `[\"unknown\"]` for a recording that declared none. What `?scope=` matches, one recording at a time. Absent when it has no playable recording",
561
+ "type": "array",
562
+ "items": {
563
+ "type": "array",
564
+ "items": {
565
+ "type": "string"
566
+ }
567
+ }
568
+ },
456
569
  "labels": {
457
570
  "type": "object",
458
571
  "propertyNames": {
@@ -681,6 +794,13 @@
681
794
  "description": "The name of the step that holds it",
682
795
  "type": "string"
683
796
  },
797
+ "tags": {
798
+ "description": "The normalized tags of this attachment itself. Absent when it has none (and in documents of older servers)",
799
+ "type": "array",
800
+ "items": {
801
+ "type": "string"
802
+ }
803
+ },
684
804
  "recording": {
685
805
  "description": "What identifies the bytes; references with the same value are one recording. Absent when it cannot be played",
686
806
  "type": "string"
@@ -688,6 +808,102 @@
688
808
  "available": {
689
809
  "type": "boolean",
690
810
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
811
+ },
812
+ "scope": {
813
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
814
+ "type": "object",
815
+ "properties": {
816
+ "surface": {
817
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
818
+ "type": "string",
819
+ "minLength": 1
820
+ },
821
+ "deviceKind": {
822
+ "description": "What it ran on, in an open vocabulary: `simulator`, `emulator`, `physical`, `virtual-machine`, `desktop`… A simulator and a physical phone stay distinct values; they are filtered separately",
823
+ "type": "string",
824
+ "minLength": 1
825
+ },
826
+ "syntheticData": {
827
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
828
+ "type": "boolean"
829
+ },
830
+ "dependencies": {
831
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
832
+ "type": "string",
833
+ "minLength": 1
834
+ },
835
+ "audioCaptured": {
836
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
837
+ "type": "boolean"
838
+ },
839
+ "pacing": {
840
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
841
+ "type": "string",
842
+ "minLength": 1
843
+ },
844
+ "asserted": {
845
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
846
+ "type": "array",
847
+ "items": {
848
+ "type": "string"
849
+ }
850
+ },
851
+ "limitations": {
852
+ "description": "Known limits of what this evidence shows, in the producer's words",
853
+ "type": "array",
854
+ "items": {
855
+ "type": "string"
856
+ }
857
+ },
858
+ "declaredBy": {
859
+ "description": "Who or what made this declaration: a tool, a team, a person",
860
+ "type": "string"
861
+ },
862
+ "verified": {
863
+ "description": "The names of the fields above (`surface`, `deviceKind`, `syntheticData`, `dependencies`, `audioCaptured`, `pacing`) that something independent of the producer checked. Every other field is only declared",
864
+ "type": "array",
865
+ "items": {
866
+ "type": "string"
867
+ }
868
+ },
869
+ "verifiedBy": {
870
+ "description": "What checked the `verified` fields",
871
+ "type": "string"
872
+ },
873
+ "provenance": {
874
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
875
+ "type": "array",
876
+ "items": {
877
+ "type": "object",
878
+ "properties": {
879
+ "url": {
880
+ "type": "string",
881
+ "minLength": 1
882
+ },
883
+ "name": {
884
+ "type": "string"
885
+ },
886
+ "rel": {
887
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
888
+ "type": "string"
889
+ }
890
+ },
891
+ "required": [
892
+ "url"
893
+ ],
894
+ "additionalProperties": {}
895
+ }
896
+ },
897
+ "extensions": {
898
+ "type": "object",
899
+ "propertyNames": {
900
+ "type": "string",
901
+ "minLength": 1
902
+ },
903
+ "additionalProperties": {}
904
+ }
905
+ },
906
+ "additionalProperties": {}
691
907
  }
692
908
  },
693
909
  "required": [