@crvouga/atlas 0.4.0 → 0.6.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 (444) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/README.md +191 -611
  3. package/dist/bun/src/driver.d.ts +41 -7
  4. package/dist/bun/src/driver.js +47 -6
  5. package/dist/bun/src/index.d.ts +8 -0
  6. package/dist/bun/src/index.js +8 -0
  7. package/dist/core/src/cli.d.ts +14 -1
  8. package/dist/core/src/cli.js +35 -1
  9. package/dist/core/src/config.d.ts +77 -4
  10. package/dist/core/src/config.js +110 -17
  11. package/dist/core/src/events/cloudevents.d.ts +54 -9
  12. package/dist/core/src/events/cloudevents.js +60 -9
  13. package/dist/core/src/graph.d.ts +21 -0
  14. package/dist/core/src/graph.js +26 -0
  15. package/dist/core/src/index.d.ts +11 -0
  16. package/dist/core/src/index.js +11 -0
  17. package/dist/core/src/lint.d.ts +30 -0
  18. package/dist/core/src/lint.js +13 -0
  19. package/dist/core/src/plan.d.ts +39 -1
  20. package/dist/core/src/plan.js +28 -1
  21. package/dist/core/src/privacy.d.ts +29 -2
  22. package/dist/core/src/privacy.js +19 -2
  23. package/dist/core/src/report/formats.d.ts +34 -4
  24. package/dist/core/src/report/formats.js +24 -4
  25. package/dist/core/src/report/markdown.d.ts +15 -0
  26. package/dist/core/src/report/markdown.js +8 -0
  27. package/dist/core/src/run/clients.d.ts +44 -5
  28. package/dist/core/src/run/clients.js +46 -2
  29. package/dist/core/src/run/execute.d.ts +75 -16
  30. package/dist/core/src/run/execute.js +71 -18
  31. package/dist/core/src/run/frames.d.ts +13 -4
  32. package/dist/core/src/run/frames.js +19 -4
  33. package/dist/core/src/run/http.d.ts +34 -1
  34. package/dist/core/src/run/http.js +14 -1
  35. package/dist/core/src/run/types.d.ts +76 -3
  36. package/dist/core/src/run/types.js +19 -3
  37. package/dist/core/src/signals.d.ts +49 -5
  38. package/dist/core/src/signals.js +22 -5
  39. package/dist/core/src/spec/compose.d.ts +23 -1
  40. package/dist/core/src/spec/compose.js +10 -1
  41. package/dist/core/src/spec/index.d.ts +9 -1
  42. package/dist/core/src/spec/index.js +9 -1
  43. package/dist/core/src/spec/load.d.ts +22 -1
  44. package/dist/core/src/spec/load.js +31 -1
  45. package/dist/core/src/spec/parse.d.ts +16 -2
  46. package/dist/core/src/spec/parse.js +25 -2
  47. package/dist/core/src/spec/scxml.d.ts +25 -4
  48. package/dist/core/src/spec/scxml.js +36 -4
  49. package/dist/core/src/spec/types.d.ts +52 -1
  50. package/dist/core/src/spec/types.js +24 -0
  51. package/dist/detox/src/index.d.ts +54 -11
  52. package/dist/detox/src/index.js +45 -7
  53. package/dist/playwright/src/driver.d.ts +39 -3
  54. package/dist/playwright/src/driver.js +27 -3
  55. package/dist/playwright/src/index.d.ts +10 -0
  56. package/dist/playwright/src/index.js +10 -0
  57. package/dist/playwright/src/media.d.ts +50 -4
  58. package/dist/playwright/src/media.js +55 -4
  59. package/dist/playwright/src/signals.d.ts +44 -5
  60. package/dist/playwright/src/signals.js +29 -5
  61. package/dist/reports/src/attachment-files.d.ts +44 -0
  62. package/dist/reports/src/attachment-files.js +121 -0
  63. package/dist/reports/src/attachment-response.d.ts +31 -0
  64. package/dist/reports/src/attachment-response.js +55 -0
  65. package/dist/reports/src/aws-credentials.d.ts +48 -0
  66. package/dist/reports/src/aws-credentials.js +221 -0
  67. package/dist/reports/src/browser-navigation.d.ts +14 -0
  68. package/dist/reports/src/browser-navigation.js +7 -0
  69. package/dist/reports/src/bundle.d.ts +34 -2
  70. package/dist/reports/src/bundle.js +38 -2
  71. package/dist/reports/src/catalog.d.ts +34 -3
  72. package/dist/reports/src/catalog.js +17 -3
  73. package/dist/reports/src/cli-stores.d.ts +36 -0
  74. package/dist/reports/src/cli-stores.js +73 -0
  75. package/dist/reports/src/clock.d.ts +7 -2
  76. package/dist/reports/src/clock.js +5 -2
  77. package/dist/reports/src/completion-order.d.ts +18 -5
  78. package/dist/reports/src/completion-order.js +18 -5
  79. package/dist/reports/src/compose.d.ts +80 -0
  80. package/dist/reports/src/compose.js +117 -0
  81. package/dist/reports/src/copy-store.d.ts +29 -0
  82. package/dist/reports/src/copy-store.js +52 -0
  83. package/dist/reports/src/directory-outline.d.ts +38 -0
  84. package/dist/reports/src/directory-outline.js +103 -0
  85. package/dist/reports/src/directory-store.d.ts +20 -0
  86. package/dist/reports/src/directory-store.js +166 -0
  87. package/dist/reports/src/doctor.d.ts +29 -0
  88. package/dist/reports/src/doctor.js +85 -0
  89. package/dist/reports/src/effective-delta.d.ts +34 -0
  90. package/dist/reports/src/effective-delta.js +25 -0
  91. package/dist/reports/src/evidence-detail.d.ts +64 -0
  92. package/dist/reports/src/evidence-detail.js +92 -0
  93. package/dist/reports/src/evidence-live.d.ts +35 -5
  94. package/dist/reports/src/evidence-live.js +18 -2
  95. package/dist/reports/src/evidence-types.d.ts +68 -1
  96. package/dist/reports/src/evidence-types.js +5 -1
  97. package/dist/reports/src/evidence-view.d.ts +43 -4
  98. package/dist/reports/src/evidence-view.js +13 -2
  99. package/dist/reports/src/explorer-types.d.ts +40 -3
  100. package/dist/reports/src/explorer-types.js +8 -0
  101. package/dist/reports/src/explorer-versions.d.ts +9 -1
  102. package/dist/reports/src/explorer-versions.js +18 -1
  103. package/dist/reports/src/export-evidence.d.ts +16 -1
  104. package/dist/reports/src/export-evidence.js +52 -1
  105. package/dist/reports/src/fetcher.d.ts +27 -3
  106. package/dist/reports/src/fetcher.js +11 -3
  107. package/dist/reports/src/format-date.d.ts +6 -0
  108. package/dist/reports/src/format-date.js +6 -0
  109. package/dist/reports/src/format.d.ts +16 -0
  110. package/dist/reports/src/format.js +10 -0
  111. package/dist/reports/src/frames.d.ts +36 -3
  112. package/dist/reports/src/frames.js +22 -3
  113. package/dist/reports/src/hash.d.ts +18 -0
  114. package/dist/reports/src/hash.js +13 -0
  115. package/dist/reports/src/host.d.ts +29 -0
  116. package/dist/reports/src/host.js +64 -0
  117. package/dist/reports/src/html-frame.d.ts +5 -6
  118. package/dist/reports/src/html-frame.js +12 -1
  119. package/dist/reports/src/http-store.d.ts +56 -0
  120. package/dist/reports/src/http-store.js +148 -0
  121. package/dist/reports/src/http.d.ts +7 -0
  122. package/dist/reports/src/http.js +6 -0
  123. package/dist/reports/src/ingest.d.ts +54 -0
  124. package/dist/reports/src/ingest.js +210 -0
  125. package/dist/reports/src/init.d.ts +40 -0
  126. package/dist/reports/src/init.js +369 -0
  127. package/dist/reports/src/junit.d.ts +33 -6
  128. package/dist/reports/src/junit.js +87 -21
  129. package/dist/reports/src/keyboard.d.ts +20 -0
  130. package/dist/reports/src/keyboard.js +11 -0
  131. package/dist/reports/src/keys.d.ts +21 -3
  132. package/dist/reports/src/keys.js +21 -3
  133. package/dist/reports/src/layer-axes.d.ts +35 -5
  134. package/dist/reports/src/layer-axes.js +25 -5
  135. package/dist/reports/src/layer-catalog.d.ts +28 -1
  136. package/dist/reports/src/layer-catalog.js +18 -1
  137. package/dist/reports/src/layer-merge.d.ts +98 -9
  138. package/dist/reports/src/layer-merge.js +147 -31
  139. package/dist/reports/src/layer-source.d.ts +18 -0
  140. package/dist/reports/src/layer-source.js +11 -0
  141. package/dist/reports/src/layer-store.d.ts +42 -0
  142. package/dist/reports/src/layer-store.js +63 -5
  143. package/dist/reports/src/layer-types.d.ts +32 -1
  144. package/dist/reports/src/layers-route.d.ts +47 -4
  145. package/dist/reports/src/layers-route.js +86 -7
  146. package/dist/reports/src/live-reporter.d.ts +34 -0
  147. package/dist/reports/src/live-reporter.js +122 -0
  148. package/dist/reports/src/media-types.d.ts +11 -0
  149. package/dist/reports/src/media-types.js +22 -0
  150. package/dist/reports/src/namespace-guard.d.ts +10 -1
  151. package/dist/reports/src/namespace-guard.js +10 -1
  152. package/dist/reports/src/navigation.d.ts +12 -0
  153. package/dist/reports/src/navigation.js +7 -0
  154. package/dist/reports/src/object-io.d.ts +11 -4
  155. package/dist/reports/src/object-io.js +4 -4
  156. package/dist/reports/src/object-store-conformance.d.ts +27 -0
  157. package/dist/reports/src/object-store-conformance.js +87 -0
  158. package/dist/reports/src/object-store.d.ts +33 -24
  159. package/dist/reports/src/object-store.js +17 -24
  160. package/dist/reports/src/parse-with.d.ts +16 -0
  161. package/dist/reports/src/parse-with.js +14 -0
  162. package/dist/reports/src/performance-part.d.ts +25 -1
  163. package/dist/reports/src/performance-part.js +15 -1
  164. package/dist/reports/src/performance.d.ts +22 -2
  165. package/dist/reports/src/performance.js +12 -2
  166. package/dist/reports/src/persist.d.ts +12 -3
  167. package/dist/reports/src/persist.js +12 -3
  168. package/dist/reports/src/phone.d.ts +18 -1
  169. package/dist/reports/src/phone.js +18 -1
  170. package/dist/reports/src/protocol.d.ts +26 -4
  171. package/dist/reports/src/protocol.js +15 -4
  172. package/dist/reports/src/publication.d.ts +21 -1
  173. package/dist/reports/src/publication.js +21 -1
  174. package/dist/reports/src/publish-checks.d.ts +35 -0
  175. package/dist/reports/src/publish-checks.js +122 -0
  176. package/dist/reports/src/publish.d.ts +42 -9
  177. package/dist/reports/src/publish.js +36 -7
  178. package/dist/reports/src/read.d.ts +46 -16
  179. package/dist/reports/src/read.js +38 -14
  180. package/dist/reports/src/recording-bundle.d.ts +13 -2
  181. package/dist/reports/src/recording-bundle.js +4 -2
  182. package/dist/reports/src/recording-keys.d.ts +15 -1
  183. package/dist/reports/src/recording-keys.js +15 -1
  184. package/dist/reports/src/remote-report.d.ts +28 -7
  185. package/dist/reports/src/remote-report.js +15 -7
  186. package/dist/reports/src/report-cli.d.ts +51 -0
  187. package/dist/reports/src/report-cli.js +486 -0
  188. package/dist/reports/src/report-index.d.ts +99 -0
  189. package/dist/reports/src/report-index.js +337 -0
  190. package/dist/reports/src/report-loader.d.ts +10 -0
  191. package/dist/reports/src/report-loader.js +6 -0
  192. package/dist/reports/src/report-parts.d.ts +29 -3
  193. package/dist/reports/src/report-parts.js +37 -3
  194. package/dist/reports/src/report-status.d.ts +48 -0
  195. package/dist/reports/src/report-status.js +156 -0
  196. package/dist/reports/src/report-types.d.ts +73 -0
  197. package/dist/reports/src/report-types.js +3 -0
  198. package/dist/reports/src/reporter.d.ts +67 -0
  199. package/dist/reports/src/reporter.js +128 -0
  200. package/dist/reports/src/reports-explorer-route.d.ts +541 -0
  201. package/dist/reports/src/reports-explorer-route.js +11 -0
  202. package/dist/reports/src/reports-list-route.d.ts +9 -0
  203. package/dist/reports/src/reports-list-route.js +9 -0
  204. package/dist/reports/src/reports-route.d.ts +561 -22
  205. package/dist/reports/src/reports-route.js +11 -3
  206. package/dist/reports/src/reports-store.d.ts +19 -2
  207. package/dist/reports/src/reports-store.js +10 -2
  208. package/dist/reports/src/resilient-cache.d.ts +14 -1
  209. package/dist/reports/src/resilient-cache.js +8 -1
  210. package/dist/reports/src/retention.d.ts +17 -1
  211. package/dist/reports/src/retention.js +5 -1
  212. package/dist/reports/src/run-bundle.d.ts +63 -0
  213. package/dist/reports/src/run-bundle.js +159 -0
  214. package/dist/reports/src/s3-store.d.ts +79 -0
  215. package/dist/reports/src/s3-store.js +295 -0
  216. package/dist/reports/src/scenario.d.ts +14 -4
  217. package/dist/reports/src/scenario.js +5 -4
  218. package/dist/reports/src/sigv4.d.ts +72 -0
  219. package/dist/reports/src/sigv4.js +96 -0
  220. package/dist/reports/src/snapshot-bundle.d.ts +24 -1
  221. package/dist/reports/src/snapshot-bundle.js +27 -2
  222. package/dist/reports/src/snapshot-surface.d.ts +20 -9
  223. package/dist/reports/src/snapshot-surface.js +32 -19
  224. package/dist/reports/src/source-content.d.ts +23 -0
  225. package/dist/reports/src/source-content.js +30 -1
  226. package/dist/reports/src/source-entries.d.ts +13 -0
  227. package/dist/reports/src/source-entries.js +6 -0
  228. package/dist/reports/src/source-part.d.ts +15 -0
  229. package/dist/reports/src/source-part.js +8 -0
  230. package/dist/reports/src/source-reader.d.ts +11 -0
  231. package/dist/reports/src/source-reader.js +5 -0
  232. package/dist/reports/src/spec-evidence.d.ts +12 -2
  233. package/dist/reports/src/spec-evidence.js +6 -2
  234. package/dist/reports/src/spec-inventory.d.ts +15 -1
  235. package/dist/reports/src/spec-inventory.js +22 -1
  236. package/dist/reports/src/spec-link.d.ts +28 -0
  237. package/dist/reports/src/spec-link.js +70 -0
  238. package/dist/reports/src/spec-set.d.ts +63 -0
  239. package/dist/reports/src/spec-set.js +177 -0
  240. package/dist/reports/src/status.d.ts +10 -0
  241. package/dist/reports/src/status.js +5 -0
  242. package/dist/reports/src/store-prefix.d.ts +28 -0
  243. package/dist/reports/src/store-prefix.js +22 -0
  244. package/dist/reports/src/store-url.d.ts +89 -0
  245. package/dist/reports/src/store-url.js +160 -0
  246. package/dist/reports/src/test-catalog-entity.d.ts +11 -0
  247. package/dist/reports/src/test-catalog-entity.js +6 -0
  248. package/dist/reports/src/types.d.ts +6 -1
  249. package/dist/reports/src/use-report-nav.d.ts +35 -0
  250. package/dist/reports/src/use-report-nav.js +12 -0
  251. package/dist/runners/src/codecept.d.ts +14 -0
  252. package/dist/runners/src/codecept.js +16 -0
  253. package/dist/runners/src/jest.d.ts +50 -0
  254. package/dist/runners/src/jest.js +52 -0
  255. package/dist/runners/src/mocha.d.ts +40 -0
  256. package/dist/runners/src/mocha.js +39 -0
  257. package/dist/runners/src/node-test.d.ts +28 -0
  258. package/dist/runners/src/node-test.js +44 -0
  259. package/dist/runners/src/publish.d.ts +30 -0
  260. package/dist/runners/src/publish.js +68 -0
  261. package/dist/schema/src/api.d.ts +800 -0
  262. package/dist/schema/src/api.js +201 -0
  263. package/dist/schema/src/cli-results.d.ts +210 -0
  264. package/dist/schema/src/cli-results.js +124 -0
  265. package/dist/schema/src/common.d.ts +53 -0
  266. package/dist/schema/src/common.js +42 -0
  267. package/dist/schema/src/index.d.ts +16 -0
  268. package/dist/schema/src/index.js +16 -0
  269. package/dist/schema/src/layer.d.ts +2273 -0
  270. package/dist/schema/src/layer.js +462 -0
  271. package/dist/schema/src/live-run.d.ts +123 -0
  272. package/dist/schema/src/live-run.js +30 -0
  273. package/dist/schema/src/manifest.d.ts +97 -2
  274. package/dist/schema/src/manifest.js +84 -0
  275. package/dist/schema/src/project.d.ts +20 -0
  276. package/dist/schema/src/project.js +10 -0
  277. package/dist/schema/src/report-sources.d.ts +29 -0
  278. package/dist/schema/src/report-sources.js +27 -1
  279. package/dist/schema/src/runs-index.d.ts +17 -1
  280. package/dist/schema/src/runs-index.js +15 -0
  281. package/dist/schema/src/server-config.d.ts +177 -0
  282. package/dist/schema/src/server-config.js +85 -0
  283. package/dist/schema/src/spec.d.ts +69 -0
  284. package/dist/schema/src/spec.js +58 -0
  285. package/dist/server/src/app.d.ts +72 -0
  286. package/dist/server/src/app.js +557 -0
  287. package/dist/server/src/auth.d.ts +41 -0
  288. package/dist/server/src/auth.js +59 -0
  289. package/dist/server/src/config.d.ts +83 -0
  290. package/dist/server/src/config.js +204 -0
  291. package/dist/server/src/dev.d.ts +12 -0
  292. package/dist/server/src/dev.js +89 -0
  293. package/dist/server/src/events.d.ts +29 -0
  294. package/dist/server/src/events.js +101 -0
  295. package/dist/server/src/host.d.ts +30 -0
  296. package/dist/server/src/host.js +115 -0
  297. package/dist/server/src/index.d.ts +18 -0
  298. package/dist/server/src/index.js +18 -0
  299. package/dist/server/src/live-runs.d.ts +52 -0
  300. package/dist/server/src/live-runs.js +229 -0
  301. package/dist/server/src/llms.d.ts +19 -0
  302. package/dist/server/src/llms.js +63 -0
  303. package/dist/server/src/main.d.ts +30 -0
  304. package/dist/server/src/main.js +114 -0
  305. package/dist/server/src/openapi.d.ts +56 -0
  306. package/dist/server/src/openapi.js +438 -0
  307. package/dist/server/src/problem.d.ts +8 -0
  308. package/dist/server/src/problem.js +39 -0
  309. package/dist/server/src/projects.d.ts +3 -0
  310. package/dist/server/src/projects.js +154 -0
  311. package/dist/server/src/settings-page.d.ts +9 -0
  312. package/dist/server/src/settings-page.js +93 -0
  313. package/dist/server/src/settings.d.ts +23 -0
  314. package/dist/server/src/settings.js +72 -0
  315. package/dist/server/src/site.d.ts +15 -0
  316. package/dist/server/src/site.js +78 -0
  317. package/dist/server/src/store-api.d.ts +28 -0
  318. package/dist/server/src/store-api.js +180 -0
  319. package/dist/server/src/validate.d.ts +71 -0
  320. package/dist/server/src/validate.js +197 -0
  321. package/dist/vitest/src/index.d.ts +27 -5
  322. package/dist/vitest/src/index.js +18 -5
  323. package/dist/webdriver/src/driver.d.ts +63 -11
  324. package/dist/webdriver/src/driver.js +57 -6
  325. package/dist/webdriver/src/index.d.ts +8 -0
  326. package/dist/webdriver/src/index.js +1 -0
  327. package/dist/webdriver/src/protocol.d.ts +75 -6
  328. package/dist/webdriver/src/protocol.js +79 -6
  329. package/docs/agents.md +137 -0
  330. package/docs/deploying.md +345 -0
  331. package/docs/dogfooding.md +175 -0
  332. package/docs/extending.md +242 -0
  333. package/docs/integrating.md +485 -0
  334. package/docs/reference/bun.md +141 -0
  335. package/docs/reference/cli.md +148 -0
  336. package/docs/reference/core.md +2432 -0
  337. package/docs/reference/detox.md +150 -0
  338. package/docs/reference/http-api.md +799 -0
  339. package/docs/reference/playwright.md +303 -0
  340. package/docs/reference/reports.md +7152 -0
  341. package/docs/reference/runners.md +169 -0
  342. package/docs/reference/schema.md +1762 -0
  343. package/docs/reference/server.md +825 -0
  344. package/docs/reference/vitest.md +45 -0
  345. package/docs/reference/webdriver.md +330 -0
  346. package/docs/report-backends.md +144 -0
  347. package/docs/report-contract.md +400 -0
  348. package/docs/reporting-issues.md +160 -0
  349. package/docs/runners.md +69 -0
  350. package/docs/server.md +321 -0
  351. package/docs/statecharts.md +643 -0
  352. package/llms-full.txt +4114 -0
  353. package/llms.txt +49 -0
  354. package/package.json +61 -11
  355. package/packages/core/README.md +2 -1
  356. package/packages/reports/README.md +65 -0
  357. package/packages/reports/STORAGE.md +4 -0
  358. package/packages/runners/README.md +6 -0
  359. package/packages/runners/compat/codecept.cjs +2 -0
  360. package/packages/runners/compat/jest.cjs +2 -0
  361. package/packages/runners/compat/mocha.cjs +2 -0
  362. package/packages/schema/README.md +14 -0
  363. package/packages/schema/schemas/atlas-change.schema.json +4 -0
  364. package/packages/schema/schemas/check-detail.schema.json +1032 -0
  365. package/packages/schema/schemas/checks-result.schema.json +26 -0
  366. package/packages/schema/schemas/command-error.schema.json +35 -0
  367. package/packages/schema/schemas/doctor-result.schema.json +60 -0
  368. package/packages/schema/schemas/effective-delta.schema.json +490 -0
  369. package/packages/schema/schemas/effective-evidence.schema.json +471 -0
  370. package/packages/schema/schemas/evidence-page.schema.json +271 -0
  371. package/packages/schema/schemas/hello-event.schema.json +26 -0
  372. package/packages/schema/schemas/init-plan.schema.json +347 -0
  373. package/packages/schema/schemas/layer-rows.schema.json +199 -0
  374. package/packages/schema/schemas/layer.schema.json +2888 -0
  375. package/packages/schema/schemas/live-run-start.schema.json +42 -0
  376. package/packages/schema/schemas/live-run-update.schema.json +93 -0
  377. package/packages/schema/schemas/live-run.schema.json +225 -0
  378. package/packages/schema/schemas/merge-result.schema.json +40 -0
  379. package/packages/schema/schemas/outline.schema.json +62 -0
  380. package/packages/schema/schemas/problem.schema.json +37 -0
  381. package/packages/schema/schemas/project-slug.schema.json +8 -0
  382. package/packages/schema/schemas/project.schema.json +22 -0
  383. package/packages/schema/schemas/projects.schema.json +33 -0
  384. package/packages/schema/schemas/publish-checks.schema.json +1413 -0
  385. package/packages/schema/schemas/publish-result.schema.json +168 -0
  386. package/packages/schema/schemas/ready.schema.json +68 -0
  387. package/packages/schema/schemas/report-event.schema.json +100 -0
  388. package/packages/schema/schemas/report-status.schema.json +370 -0
  389. package/packages/schema/schemas/server-config.schema.json +208 -0
  390. package/packages/schema/schemas/server-editable-settings.schema.json +132 -0
  391. package/packages/schema/schemas/server-info.schema.json +114 -0
  392. package/packages/schema/schemas/server-settings-snapshot.schema.json +285 -0
  393. package/packages/schema/schemas/spec-set.schema.json +103 -0
  394. package/packages/schema/schemas/store-listing.schema.json +29 -0
  395. package/packages/schema/schemas/store-write-result.schema.json +28 -0
  396. package/packages/schema/schemas/stream-result.schema.json +59 -0
  397. package/packages/server/README.md +43 -0
  398. package/packages/server/openapi.json +11021 -0
  399. package/packages/visualizer/README.md +32 -11
  400. package/packages/visualizer/bin/atlas-client.mjs +176 -0
  401. package/packages/visualizer/bin/atlas-visualizer.mjs +2 -175
  402. package/packages/visualizer/src/app/AppShell.tsx +32 -16
  403. package/packages/visualizer/src/app/report-sources.tsx +7 -4
  404. package/packages/visualizer/src/app/router.tsx +3 -3
  405. package/packages/visualizer/src/components/ActivityIndicator.module.css +4 -0
  406. package/packages/visualizer/src/components/ActivityIndicator.tsx +6 -0
  407. package/packages/visualizer/src/components/Header.module.css +101 -192
  408. package/packages/visualizer/src/components/Header.tsx +88 -13
  409. package/packages/visualizer/src/components/ProjectPicker.tsx +64 -0
  410. package/packages/visualizer/src/data/adapters/adapter.ts +5 -17
  411. package/packages/visualizer/src/data/adapters/index.ts +10 -1
  412. package/packages/visualizer/src/data/adapters/report-backend.test.ts +3 -2
  413. package/packages/visualizer/src/data/adapters/report-backend.ts +1 -1
  414. package/packages/visualizer/src/data/queries.ts +14 -7
  415. package/packages/visualizer/src/evidence/api.ts +16 -3
  416. package/packages/visualizer/src/evidence/artifacts.module.css +213 -0
  417. package/packages/visualizer/src/evidence/artifacts.tsx +272 -0
  418. package/packages/visualizer/src/evidence/check-detail.tsx +21 -4
  419. package/packages/visualizer/src/evidence/document-page.tsx +6 -2
  420. package/packages/visualizer/src/evidence/evidence-context.tsx +79 -12
  421. package/packages/visualizer/src/evidence/evidence.module.css +11 -1
  422. package/packages/visualizer/src/evidence/feature-page.tsx +7 -3
  423. package/packages/visualizer/src/evidence/model-page.tsx +6 -2
  424. package/packages/visualizer/src/evidence/project-home.tsx +45 -0
  425. package/packages/visualizer/src/evidence/recording-page.tsx +4 -1
  426. package/packages/visualizer/src/evidence/spec-index.tsx +2 -1
  427. package/packages/visualizer/src/evidence/spec-page.tsx +23 -16
  428. package/packages/visualizer/src/evidence/test-filter.tsx +21 -0
  429. package/packages/visualizer/src/find/Finder.tsx +1 -7
  430. package/packages/visualizer/src/find/open.ts +4 -0
  431. package/packages/visualizer/src/live/live-query.ts +21 -0
  432. package/packages/visualizer/src/live/live-runs.tsx +69 -0
  433. package/packages/visualizer/src/live/live-stream.ts +225 -0
  434. package/packages/visualizer/src/live/report-progress.ts +62 -0
  435. package/packages/visualizer/src/live/test-progress.tsx +34 -0
  436. package/packages/visualizer/src/runtime.ts +35 -0
  437. package/packages/visualizer/src/state/ui-store.ts +3 -2
  438. package/packages/visualizer/src/views/ChartPage.tsx +2 -0
  439. package/packages/visualizer/src/views/ChartTests.tsx +43 -0
  440. package/packages/visualizer/src/views/SidePanel.tsx +2 -0
  441. package/packages/visualizer/vite/atlas-files.test.ts +4 -4
  442. package/packages/visualizer/vite/atlas-files.ts +1 -5
  443. package/packages/visualizer/vite/atlas-server-proxy.ts +37 -0
  444. package/packages/visualizer/vite.config.ts +11 -3
@@ -0,0 +1,1413 @@
1
+ {
2
+ "$id": "https://github.com/crvouga/atlas/schemas/publish-checks.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "producer": {
7
+ "type": "string",
8
+ "minLength": 1
9
+ },
10
+ "checks": {
11
+ "type": "array",
12
+ "items": {
13
+ "type": "object",
14
+ "properties": {
15
+ "id": {
16
+ "description": "The check's stable identity within its producer. The same check must keep the same id in every layer, or layers cannot replace one another",
17
+ "type": "string",
18
+ "minLength": 1
19
+ },
20
+ "title": {
21
+ "type": "string"
22
+ },
23
+ "status": {
24
+ "type": "string",
25
+ "enum": [
26
+ "passed",
27
+ "failed",
28
+ "running",
29
+ "not-run"
30
+ ]
31
+ },
32
+ "detail": {
33
+ "description": "Why it failed, or what was measured",
34
+ "default": "",
35
+ "type": "string"
36
+ },
37
+ "specPath": {
38
+ "description": "The spec this check belongs to, relative to the repository, such as specs/join.feature",
39
+ "type": "string"
40
+ },
41
+ "measurements": {
42
+ "default": [],
43
+ "type": "array",
44
+ "items": {
45
+ "type": "object",
46
+ "properties": {
47
+ "name": {
48
+ "type": "string",
49
+ "minLength": 1
50
+ },
51
+ "value": {
52
+ "description": "A finite number",
53
+ "type": "number"
54
+ },
55
+ "unit": {
56
+ "type": "string"
57
+ },
58
+ "limit": {
59
+ "description": "The allowance. A measurement over it is reported, and never fails the check by itself",
60
+ "type": "number"
61
+ }
62
+ },
63
+ "required": [
64
+ "name",
65
+ "value",
66
+ "unit"
67
+ ],
68
+ "additionalProperties": {}
69
+ }
70
+ },
71
+ "durationMs": {
72
+ "description": "How long the check took, when the producer measured it",
73
+ "type": "number",
74
+ "minimum": 0
75
+ },
76
+ "tags": {
77
+ "description": "Free labels to filter and group by: smoke, slow, flaky…",
78
+ "type": "array",
79
+ "items": {
80
+ "type": "string"
81
+ }
82
+ },
83
+ "labels": {
84
+ "description": "Facts about the result, not part of its identity: owner, severity, browser, os, build. Unlike `parameters` they never split a result into another slot",
85
+ "type": "object",
86
+ "propertyNames": {
87
+ "type": "string"
88
+ },
89
+ "additionalProperties": {
90
+ "type": "string"
91
+ }
92
+ },
93
+ "links": {
94
+ "type": "array",
95
+ "items": {
96
+ "type": "object",
97
+ "properties": {
98
+ "url": {
99
+ "type": "string",
100
+ "minLength": 1
101
+ },
102
+ "name": {
103
+ "type": "string"
104
+ },
105
+ "rel": {
106
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
107
+ "type": "string"
108
+ }
109
+ },
110
+ "required": [
111
+ "url"
112
+ ],
113
+ "additionalProperties": {}
114
+ }
115
+ },
116
+ "attachments": {
117
+ "type": "array",
118
+ "items": {
119
+ "type": "object",
120
+ "properties": {
121
+ "id": {
122
+ "description": "Lets another attachment, step or annotation refer to this one",
123
+ "type": "string"
124
+ },
125
+ "name": {
126
+ "type": "string",
127
+ "minLength": 1
128
+ },
129
+ "role": {
130
+ "type": "string"
131
+ },
132
+ "contentType": {
133
+ "description": "An IANA media type. Absent means application/octet-stream",
134
+ "type": "string"
135
+ },
136
+ "bundleKey": {
137
+ "description": "The key of its bytes in the layer",
138
+ "type": "string"
139
+ },
140
+ "uri": {
141
+ "description": "Where else to read it: an https URL, or a path a host understands",
142
+ "type": "string"
143
+ },
144
+ "text": {
145
+ "description": "A small UTF-8 value, inline",
146
+ "type": "string"
147
+ },
148
+ "bytes": {
149
+ "type": "integer",
150
+ "minimum": 0,
151
+ "maximum": 9007199254740991
152
+ },
153
+ "sha256": {
154
+ "type": "string"
155
+ },
156
+ "width": {
157
+ "type": "number",
158
+ "minimum": 0
159
+ },
160
+ "height": {
161
+ "type": "number",
162
+ "minimum": 0
163
+ },
164
+ "durationMs": {
165
+ "description": "For video and audio",
166
+ "type": "number",
167
+ "minimum": 0
168
+ },
169
+ "description": {
170
+ "type": "string"
171
+ },
172
+ "at": {
173
+ "type": "object",
174
+ "properties": {
175
+ "step": {
176
+ "description": "The `id` of a step",
177
+ "type": "string"
178
+ },
179
+ "offsetMs": {
180
+ "type": "number",
181
+ "minimum": 0
182
+ }
183
+ },
184
+ "additionalProperties": {}
185
+ },
186
+ "poster": {
187
+ "description": "The `id` of an attachment that stands for this one before it is opened",
188
+ "type": "string"
189
+ },
190
+ "captions": {
191
+ "description": "The `id`s of attachments (WebVTT, SRT) that caption this one",
192
+ "type": "array",
193
+ "items": {
194
+ "type": "string"
195
+ }
196
+ },
197
+ "extensions": {
198
+ "type": "object",
199
+ "propertyNames": {
200
+ "type": "string",
201
+ "minLength": 1
202
+ },
203
+ "additionalProperties": {}
204
+ },
205
+ "path": {
206
+ "description": "A file to read, relative to the file this is in. Used by `atlas report publish`",
207
+ "type": "string"
208
+ },
209
+ "base64": {
210
+ "type": "string"
211
+ },
212
+ "data": {
213
+ "description": "From code: the bytes"
214
+ }
215
+ },
216
+ "required": [
217
+ "name"
218
+ ],
219
+ "additionalProperties": {}
220
+ }
221
+ },
222
+ "annotations": {
223
+ "type": "array",
224
+ "items": {
225
+ "type": "object",
226
+ "properties": {
227
+ "type": {
228
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
229
+ "type": "string",
230
+ "minLength": 1
231
+ },
232
+ "message": {
233
+ "type": "string"
234
+ },
235
+ "level": {
236
+ "description": "Conventionally info, warning or error. Anything else is shown as a note",
237
+ "type": "string"
238
+ },
239
+ "at": {
240
+ "type": "object",
241
+ "properties": {
242
+ "step": {
243
+ "description": "The `id` of a step",
244
+ "type": "string"
245
+ },
246
+ "offsetMs": {
247
+ "type": "number",
248
+ "minimum": 0
249
+ }
250
+ },
251
+ "additionalProperties": {}
252
+ },
253
+ "source": {
254
+ "type": "object",
255
+ "properties": {
256
+ "file": {
257
+ "type": "string"
258
+ },
259
+ "line": {
260
+ "type": "integer",
261
+ "minimum": -9007199254740991,
262
+ "maximum": 9007199254740991
263
+ },
264
+ "column": {
265
+ "type": "integer",
266
+ "minimum": -9007199254740991,
267
+ "maximum": 9007199254740991
268
+ }
269
+ },
270
+ "additionalProperties": {}
271
+ },
272
+ "links": {
273
+ "type": "array",
274
+ "items": {
275
+ "type": "object",
276
+ "properties": {
277
+ "url": {
278
+ "type": "string",
279
+ "minLength": 1
280
+ },
281
+ "name": {
282
+ "type": "string"
283
+ },
284
+ "rel": {
285
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
286
+ "type": "string"
287
+ }
288
+ },
289
+ "required": [
290
+ "url"
291
+ ],
292
+ "additionalProperties": {}
293
+ }
294
+ },
295
+ "extensions": {
296
+ "type": "object",
297
+ "propertyNames": {
298
+ "type": "string",
299
+ "minLength": 1
300
+ },
301
+ "additionalProperties": {}
302
+ }
303
+ },
304
+ "required": [
305
+ "type",
306
+ "message"
307
+ ],
308
+ "additionalProperties": {}
309
+ }
310
+ },
311
+ "extensions": {
312
+ "type": "object",
313
+ "propertyNames": {
314
+ "type": "string",
315
+ "minLength": 1
316
+ },
317
+ "additionalProperties": {}
318
+ },
319
+ "steps": {
320
+ "type": "array",
321
+ "items": {
322
+ "type": "object",
323
+ "properties": {
324
+ "id": {
325
+ "type": "string"
326
+ },
327
+ "parentId": {
328
+ "type": "string"
329
+ },
330
+ "name": {
331
+ "type": "string"
332
+ },
333
+ "kind": {
334
+ "description": "An open vocabulary: action, assertion, hook, request, span, given, when, then…",
335
+ "type": "string"
336
+ },
337
+ "status": {
338
+ "description": "Conventionally passed, failed, skipped. Anything else is shown as it is",
339
+ "type": "string"
340
+ },
341
+ "offsetMs": {
342
+ "description": "When it started, after the check did",
343
+ "type": "number",
344
+ "minimum": 0
345
+ },
346
+ "durationMs": {
347
+ "type": "number",
348
+ "minimum": 0
349
+ },
350
+ "detail": {
351
+ "type": "string"
352
+ },
353
+ "attachments": {
354
+ "type": "array",
355
+ "items": {
356
+ "type": "object",
357
+ "properties": {
358
+ "id": {
359
+ "description": "Lets another attachment, step or annotation refer to this one",
360
+ "type": "string"
361
+ },
362
+ "name": {
363
+ "type": "string",
364
+ "minLength": 1
365
+ },
366
+ "role": {
367
+ "type": "string"
368
+ },
369
+ "contentType": {
370
+ "description": "An IANA media type. Absent means application/octet-stream",
371
+ "type": "string"
372
+ },
373
+ "bundleKey": {
374
+ "description": "The key of its bytes in the layer",
375
+ "type": "string"
376
+ },
377
+ "uri": {
378
+ "description": "Where else to read it: an https URL, or a path a host understands",
379
+ "type": "string"
380
+ },
381
+ "text": {
382
+ "description": "A small UTF-8 value, inline",
383
+ "type": "string"
384
+ },
385
+ "bytes": {
386
+ "type": "integer",
387
+ "minimum": 0,
388
+ "maximum": 9007199254740991
389
+ },
390
+ "sha256": {
391
+ "type": "string"
392
+ },
393
+ "width": {
394
+ "type": "number",
395
+ "minimum": 0
396
+ },
397
+ "height": {
398
+ "type": "number",
399
+ "minimum": 0
400
+ },
401
+ "durationMs": {
402
+ "description": "For video and audio",
403
+ "type": "number",
404
+ "minimum": 0
405
+ },
406
+ "description": {
407
+ "type": "string"
408
+ },
409
+ "at": {
410
+ "type": "object",
411
+ "properties": {
412
+ "step": {
413
+ "description": "The `id` of a step",
414
+ "type": "string"
415
+ },
416
+ "offsetMs": {
417
+ "type": "number",
418
+ "minimum": 0
419
+ }
420
+ },
421
+ "additionalProperties": {}
422
+ },
423
+ "poster": {
424
+ "description": "The `id` of an attachment that stands for this one before it is opened",
425
+ "type": "string"
426
+ },
427
+ "captions": {
428
+ "description": "The `id`s of attachments (WebVTT, SRT) that caption this one",
429
+ "type": "array",
430
+ "items": {
431
+ "type": "string"
432
+ }
433
+ },
434
+ "extensions": {
435
+ "type": "object",
436
+ "propertyNames": {
437
+ "type": "string",
438
+ "minLength": 1
439
+ },
440
+ "additionalProperties": {}
441
+ },
442
+ "path": {
443
+ "description": "A file to read, relative to the file this is in. Used by `atlas report publish`",
444
+ "type": "string"
445
+ },
446
+ "base64": {
447
+ "type": "string"
448
+ },
449
+ "data": {
450
+ "description": "From code: the bytes"
451
+ }
452
+ },
453
+ "required": [
454
+ "name"
455
+ ],
456
+ "additionalProperties": {}
457
+ }
458
+ },
459
+ "annotations": {
460
+ "type": "array",
461
+ "items": {
462
+ "type": "object",
463
+ "properties": {
464
+ "type": {
465
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
466
+ "type": "string",
467
+ "minLength": 1
468
+ },
469
+ "message": {
470
+ "type": "string"
471
+ },
472
+ "level": {
473
+ "description": "Conventionally info, warning or error. Anything else is shown as a note",
474
+ "type": "string"
475
+ },
476
+ "at": {
477
+ "type": "object",
478
+ "properties": {
479
+ "step": {
480
+ "description": "The `id` of a step",
481
+ "type": "string"
482
+ },
483
+ "offsetMs": {
484
+ "type": "number",
485
+ "minimum": 0
486
+ }
487
+ },
488
+ "additionalProperties": {}
489
+ },
490
+ "source": {
491
+ "type": "object",
492
+ "properties": {
493
+ "file": {
494
+ "type": "string"
495
+ },
496
+ "line": {
497
+ "type": "integer",
498
+ "minimum": -9007199254740991,
499
+ "maximum": 9007199254740991
500
+ },
501
+ "column": {
502
+ "type": "integer",
503
+ "minimum": -9007199254740991,
504
+ "maximum": 9007199254740991
505
+ }
506
+ },
507
+ "additionalProperties": {}
508
+ },
509
+ "links": {
510
+ "type": "array",
511
+ "items": {
512
+ "type": "object",
513
+ "properties": {
514
+ "url": {
515
+ "type": "string",
516
+ "minLength": 1
517
+ },
518
+ "name": {
519
+ "type": "string"
520
+ },
521
+ "rel": {
522
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
523
+ "type": "string"
524
+ }
525
+ },
526
+ "required": [
527
+ "url"
528
+ ],
529
+ "additionalProperties": {}
530
+ }
531
+ },
532
+ "extensions": {
533
+ "type": "object",
534
+ "propertyNames": {
535
+ "type": "string",
536
+ "minLength": 1
537
+ },
538
+ "additionalProperties": {}
539
+ }
540
+ },
541
+ "required": [
542
+ "type",
543
+ "message"
544
+ ],
545
+ "additionalProperties": {}
546
+ }
547
+ },
548
+ "extensions": {
549
+ "type": "object",
550
+ "propertyNames": {
551
+ "type": "string",
552
+ "minLength": 1
553
+ },
554
+ "additionalProperties": {}
555
+ }
556
+ },
557
+ "required": [
558
+ "name"
559
+ ],
560
+ "additionalProperties": {}
561
+ }
562
+ },
563
+ "attempts": {
564
+ "type": "array",
565
+ "items": {
566
+ "type": "object",
567
+ "properties": {
568
+ "index": {
569
+ "type": "integer",
570
+ "minimum": 0,
571
+ "maximum": 9007199254740991
572
+ },
573
+ "status": {
574
+ "type": "string",
575
+ "enum": [
576
+ "passed",
577
+ "failed",
578
+ "running",
579
+ "not-run"
580
+ ]
581
+ },
582
+ "durationMs": {
583
+ "type": "number",
584
+ "minimum": 0
585
+ },
586
+ "startedAtMs": {
587
+ "type": "number",
588
+ "minimum": 0
589
+ },
590
+ "detail": {
591
+ "type": "string"
592
+ },
593
+ "steps": {
594
+ "type": "array",
595
+ "items": {
596
+ "type": "object",
597
+ "properties": {
598
+ "id": {
599
+ "type": "string"
600
+ },
601
+ "parentId": {
602
+ "type": "string"
603
+ },
604
+ "name": {
605
+ "type": "string"
606
+ },
607
+ "kind": {
608
+ "description": "An open vocabulary: action, assertion, hook, request, span, given, when, then…",
609
+ "type": "string"
610
+ },
611
+ "status": {
612
+ "description": "Conventionally passed, failed, skipped. Anything else is shown as it is",
613
+ "type": "string"
614
+ },
615
+ "offsetMs": {
616
+ "description": "When it started, after the check did",
617
+ "type": "number",
618
+ "minimum": 0
619
+ },
620
+ "durationMs": {
621
+ "type": "number",
622
+ "minimum": 0
623
+ },
624
+ "detail": {
625
+ "type": "string"
626
+ },
627
+ "attachments": {
628
+ "type": "array",
629
+ "items": {
630
+ "type": "object",
631
+ "properties": {
632
+ "id": {
633
+ "description": "Lets another attachment, step or annotation refer to this one",
634
+ "type": "string"
635
+ },
636
+ "name": {
637
+ "type": "string",
638
+ "minLength": 1
639
+ },
640
+ "role": {
641
+ "type": "string"
642
+ },
643
+ "contentType": {
644
+ "description": "An IANA media type. Absent means application/octet-stream",
645
+ "type": "string"
646
+ },
647
+ "bundleKey": {
648
+ "description": "The key of its bytes in the layer",
649
+ "type": "string"
650
+ },
651
+ "uri": {
652
+ "description": "Where else to read it: an https URL, or a path a host understands",
653
+ "type": "string"
654
+ },
655
+ "text": {
656
+ "description": "A small UTF-8 value, inline",
657
+ "type": "string"
658
+ },
659
+ "bytes": {
660
+ "type": "integer",
661
+ "minimum": 0,
662
+ "maximum": 9007199254740991
663
+ },
664
+ "sha256": {
665
+ "type": "string"
666
+ },
667
+ "width": {
668
+ "type": "number",
669
+ "minimum": 0
670
+ },
671
+ "height": {
672
+ "type": "number",
673
+ "minimum": 0
674
+ },
675
+ "durationMs": {
676
+ "description": "For video and audio",
677
+ "type": "number",
678
+ "minimum": 0
679
+ },
680
+ "description": {
681
+ "type": "string"
682
+ },
683
+ "at": {
684
+ "type": "object",
685
+ "properties": {
686
+ "step": {
687
+ "description": "The `id` of a step",
688
+ "type": "string"
689
+ },
690
+ "offsetMs": {
691
+ "type": "number",
692
+ "minimum": 0
693
+ }
694
+ },
695
+ "additionalProperties": {}
696
+ },
697
+ "poster": {
698
+ "description": "The `id` of an attachment that stands for this one before it is opened",
699
+ "type": "string"
700
+ },
701
+ "captions": {
702
+ "description": "The `id`s of attachments (WebVTT, SRT) that caption this one",
703
+ "type": "array",
704
+ "items": {
705
+ "type": "string"
706
+ }
707
+ },
708
+ "extensions": {
709
+ "type": "object",
710
+ "propertyNames": {
711
+ "type": "string",
712
+ "minLength": 1
713
+ },
714
+ "additionalProperties": {}
715
+ },
716
+ "path": {
717
+ "description": "A file to read, relative to the file this is in. Used by `atlas report publish`",
718
+ "type": "string"
719
+ },
720
+ "base64": {
721
+ "type": "string"
722
+ },
723
+ "data": {
724
+ "description": "From code: the bytes"
725
+ }
726
+ },
727
+ "required": [
728
+ "name"
729
+ ],
730
+ "additionalProperties": {}
731
+ }
732
+ },
733
+ "annotations": {
734
+ "type": "array",
735
+ "items": {
736
+ "type": "object",
737
+ "properties": {
738
+ "type": {
739
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
740
+ "type": "string",
741
+ "minLength": 1
742
+ },
743
+ "message": {
744
+ "type": "string"
745
+ },
746
+ "level": {
747
+ "description": "Conventionally info, warning or error. Anything else is shown as a note",
748
+ "type": "string"
749
+ },
750
+ "at": {
751
+ "type": "object",
752
+ "properties": {
753
+ "step": {
754
+ "description": "The `id` of a step",
755
+ "type": "string"
756
+ },
757
+ "offsetMs": {
758
+ "type": "number",
759
+ "minimum": 0
760
+ }
761
+ },
762
+ "additionalProperties": {}
763
+ },
764
+ "source": {
765
+ "type": "object",
766
+ "properties": {
767
+ "file": {
768
+ "type": "string"
769
+ },
770
+ "line": {
771
+ "type": "integer",
772
+ "minimum": -9007199254740991,
773
+ "maximum": 9007199254740991
774
+ },
775
+ "column": {
776
+ "type": "integer",
777
+ "minimum": -9007199254740991,
778
+ "maximum": 9007199254740991
779
+ }
780
+ },
781
+ "additionalProperties": {}
782
+ },
783
+ "links": {
784
+ "type": "array",
785
+ "items": {
786
+ "type": "object",
787
+ "properties": {
788
+ "url": {
789
+ "type": "string",
790
+ "minLength": 1
791
+ },
792
+ "name": {
793
+ "type": "string"
794
+ },
795
+ "rel": {
796
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
797
+ "type": "string"
798
+ }
799
+ },
800
+ "required": [
801
+ "url"
802
+ ],
803
+ "additionalProperties": {}
804
+ }
805
+ },
806
+ "extensions": {
807
+ "type": "object",
808
+ "propertyNames": {
809
+ "type": "string",
810
+ "minLength": 1
811
+ },
812
+ "additionalProperties": {}
813
+ }
814
+ },
815
+ "required": [
816
+ "type",
817
+ "message"
818
+ ],
819
+ "additionalProperties": {}
820
+ }
821
+ },
822
+ "extensions": {
823
+ "type": "object",
824
+ "propertyNames": {
825
+ "type": "string",
826
+ "minLength": 1
827
+ },
828
+ "additionalProperties": {}
829
+ }
830
+ },
831
+ "required": [
832
+ "name"
833
+ ],
834
+ "additionalProperties": {}
835
+ }
836
+ },
837
+ "attachments": {
838
+ "type": "array",
839
+ "items": {
840
+ "type": "object",
841
+ "properties": {
842
+ "id": {
843
+ "description": "Lets another attachment, step or annotation refer to this one",
844
+ "type": "string"
845
+ },
846
+ "name": {
847
+ "type": "string",
848
+ "minLength": 1
849
+ },
850
+ "role": {
851
+ "type": "string"
852
+ },
853
+ "contentType": {
854
+ "description": "An IANA media type. Absent means application/octet-stream",
855
+ "type": "string"
856
+ },
857
+ "bundleKey": {
858
+ "description": "The key of its bytes in the layer",
859
+ "type": "string"
860
+ },
861
+ "uri": {
862
+ "description": "Where else to read it: an https URL, or a path a host understands",
863
+ "type": "string"
864
+ },
865
+ "text": {
866
+ "description": "A small UTF-8 value, inline",
867
+ "type": "string"
868
+ },
869
+ "bytes": {
870
+ "type": "integer",
871
+ "minimum": 0,
872
+ "maximum": 9007199254740991
873
+ },
874
+ "sha256": {
875
+ "type": "string"
876
+ },
877
+ "width": {
878
+ "type": "number",
879
+ "minimum": 0
880
+ },
881
+ "height": {
882
+ "type": "number",
883
+ "minimum": 0
884
+ },
885
+ "durationMs": {
886
+ "description": "For video and audio",
887
+ "type": "number",
888
+ "minimum": 0
889
+ },
890
+ "description": {
891
+ "type": "string"
892
+ },
893
+ "at": {
894
+ "type": "object",
895
+ "properties": {
896
+ "step": {
897
+ "description": "The `id` of a step",
898
+ "type": "string"
899
+ },
900
+ "offsetMs": {
901
+ "type": "number",
902
+ "minimum": 0
903
+ }
904
+ },
905
+ "additionalProperties": {}
906
+ },
907
+ "poster": {
908
+ "description": "The `id` of an attachment that stands for this one before it is opened",
909
+ "type": "string"
910
+ },
911
+ "captions": {
912
+ "description": "The `id`s of attachments (WebVTT, SRT) that caption this one",
913
+ "type": "array",
914
+ "items": {
915
+ "type": "string"
916
+ }
917
+ },
918
+ "extensions": {
919
+ "type": "object",
920
+ "propertyNames": {
921
+ "type": "string",
922
+ "minLength": 1
923
+ },
924
+ "additionalProperties": {}
925
+ },
926
+ "path": {
927
+ "description": "A file to read, relative to the file this is in. Used by `atlas report publish`",
928
+ "type": "string"
929
+ },
930
+ "base64": {
931
+ "type": "string"
932
+ },
933
+ "data": {
934
+ "description": "From code: the bytes"
935
+ }
936
+ },
937
+ "required": [
938
+ "name"
939
+ ],
940
+ "additionalProperties": {}
941
+ }
942
+ },
943
+ "annotations": {
944
+ "type": "array",
945
+ "items": {
946
+ "type": "object",
947
+ "properties": {
948
+ "type": {
949
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
950
+ "type": "string",
951
+ "minLength": 1
952
+ },
953
+ "message": {
954
+ "type": "string"
955
+ },
956
+ "level": {
957
+ "description": "Conventionally info, warning or error. Anything else is shown as a note",
958
+ "type": "string"
959
+ },
960
+ "at": {
961
+ "type": "object",
962
+ "properties": {
963
+ "step": {
964
+ "description": "The `id` of a step",
965
+ "type": "string"
966
+ },
967
+ "offsetMs": {
968
+ "type": "number",
969
+ "minimum": 0
970
+ }
971
+ },
972
+ "additionalProperties": {}
973
+ },
974
+ "source": {
975
+ "type": "object",
976
+ "properties": {
977
+ "file": {
978
+ "type": "string"
979
+ },
980
+ "line": {
981
+ "type": "integer",
982
+ "minimum": -9007199254740991,
983
+ "maximum": 9007199254740991
984
+ },
985
+ "column": {
986
+ "type": "integer",
987
+ "minimum": -9007199254740991,
988
+ "maximum": 9007199254740991
989
+ }
990
+ },
991
+ "additionalProperties": {}
992
+ },
993
+ "links": {
994
+ "type": "array",
995
+ "items": {
996
+ "type": "object",
997
+ "properties": {
998
+ "url": {
999
+ "type": "string",
1000
+ "minLength": 1
1001
+ },
1002
+ "name": {
1003
+ "type": "string"
1004
+ },
1005
+ "rel": {
1006
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
1007
+ "type": "string"
1008
+ }
1009
+ },
1010
+ "required": [
1011
+ "url"
1012
+ ],
1013
+ "additionalProperties": {}
1014
+ }
1015
+ },
1016
+ "extensions": {
1017
+ "type": "object",
1018
+ "propertyNames": {
1019
+ "type": "string",
1020
+ "minLength": 1
1021
+ },
1022
+ "additionalProperties": {}
1023
+ }
1024
+ },
1025
+ "required": [
1026
+ "type",
1027
+ "message"
1028
+ ],
1029
+ "additionalProperties": {}
1030
+ }
1031
+ },
1032
+ "extensions": {
1033
+ "type": "object",
1034
+ "propertyNames": {
1035
+ "type": "string",
1036
+ "minLength": 1
1037
+ },
1038
+ "additionalProperties": {}
1039
+ }
1040
+ },
1041
+ "required": [
1042
+ "index",
1043
+ "status"
1044
+ ],
1045
+ "additionalProperties": {}
1046
+ }
1047
+ }
1048
+ },
1049
+ "required": [
1050
+ "id",
1051
+ "title",
1052
+ "status"
1053
+ ],
1054
+ "additionalProperties": {}
1055
+ }
1056
+ },
1057
+ "kind": {
1058
+ "default": "checks",
1059
+ "type": "string",
1060
+ "minLength": 1
1061
+ },
1062
+ "title": {
1063
+ "type": "string"
1064
+ },
1065
+ "recordedAtMs": {
1066
+ "type": "number",
1067
+ "minimum": 0
1068
+ },
1069
+ "sha": {
1070
+ "default": null,
1071
+ "anyOf": [
1072
+ {
1073
+ "type": "string"
1074
+ },
1075
+ {
1076
+ "type": "null"
1077
+ }
1078
+ ]
1079
+ },
1080
+ "branch": {
1081
+ "default": null,
1082
+ "anyOf": [
1083
+ {
1084
+ "type": "string"
1085
+ },
1086
+ {
1087
+ "type": "null"
1088
+ }
1089
+ ]
1090
+ },
1091
+ "runUrl": {
1092
+ "default": null,
1093
+ "anyOf": [
1094
+ {
1095
+ "type": "string"
1096
+ },
1097
+ {
1098
+ "type": "null"
1099
+ }
1100
+ ]
1101
+ },
1102
+ "environment": {
1103
+ "anyOf": [
1104
+ {
1105
+ "type": "string"
1106
+ },
1107
+ {
1108
+ "type": "null"
1109
+ }
1110
+ ]
1111
+ },
1112
+ "parameters": {
1113
+ "default": {},
1114
+ "type": "object",
1115
+ "propertyNames": {
1116
+ "type": "string"
1117
+ },
1118
+ "additionalProperties": {
1119
+ "type": "string"
1120
+ }
1121
+ },
1122
+ "freshness": {
1123
+ "type": "string",
1124
+ "enum": [
1125
+ "unknown",
1126
+ "modified"
1127
+ ]
1128
+ },
1129
+ "specs": {
1130
+ "default": [],
1131
+ "type": "array",
1132
+ "items": {
1133
+ "type": "object",
1134
+ "properties": {
1135
+ "path": {
1136
+ "type": "string",
1137
+ "minLength": 1
1138
+ },
1139
+ "domain": {
1140
+ "type": "string"
1141
+ },
1142
+ "kind": {
1143
+ "type": "string"
1144
+ },
1145
+ "title": {
1146
+ "type": "string"
1147
+ },
1148
+ "fingerprint": {
1149
+ "description": "Identity of the spec text the layer was recorded against, to warn when the spec changed since",
1150
+ "type": "string"
1151
+ }
1152
+ },
1153
+ "required": [
1154
+ "path",
1155
+ "domain",
1156
+ "kind",
1157
+ "title"
1158
+ ],
1159
+ "additionalProperties": {}
1160
+ }
1161
+ },
1162
+ "tags": {
1163
+ "description": "Free labels to filter and group by: smoke, slow, flaky…",
1164
+ "type": "array",
1165
+ "items": {
1166
+ "type": "string"
1167
+ }
1168
+ },
1169
+ "labels": {
1170
+ "description": "Facts about the result, not part of its identity: owner, severity, browser, os, build. Unlike `parameters` they never split a result into another slot",
1171
+ "type": "object",
1172
+ "propertyNames": {
1173
+ "type": "string"
1174
+ },
1175
+ "additionalProperties": {
1176
+ "type": "string"
1177
+ }
1178
+ },
1179
+ "links": {
1180
+ "type": "array",
1181
+ "items": {
1182
+ "type": "object",
1183
+ "properties": {
1184
+ "url": {
1185
+ "type": "string",
1186
+ "minLength": 1
1187
+ },
1188
+ "name": {
1189
+ "type": "string"
1190
+ },
1191
+ "rel": {
1192
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
1193
+ "type": "string"
1194
+ }
1195
+ },
1196
+ "required": [
1197
+ "url"
1198
+ ],
1199
+ "additionalProperties": {}
1200
+ }
1201
+ },
1202
+ "attachments": {
1203
+ "description": "Attached to the whole layer: a CI log, a coverage report, a trace archive",
1204
+ "type": "array",
1205
+ "items": {
1206
+ "type": "object",
1207
+ "properties": {
1208
+ "id": {
1209
+ "description": "Lets another attachment, step or annotation refer to this one",
1210
+ "type": "string"
1211
+ },
1212
+ "name": {
1213
+ "type": "string",
1214
+ "minLength": 1
1215
+ },
1216
+ "role": {
1217
+ "type": "string"
1218
+ },
1219
+ "contentType": {
1220
+ "description": "An IANA media type. Absent means application/octet-stream",
1221
+ "type": "string"
1222
+ },
1223
+ "bundleKey": {
1224
+ "description": "The key of its bytes in the layer",
1225
+ "type": "string"
1226
+ },
1227
+ "uri": {
1228
+ "description": "Where else to read it: an https URL, or a path a host understands",
1229
+ "type": "string"
1230
+ },
1231
+ "text": {
1232
+ "description": "A small UTF-8 value, inline",
1233
+ "type": "string"
1234
+ },
1235
+ "bytes": {
1236
+ "type": "integer",
1237
+ "minimum": 0,
1238
+ "maximum": 9007199254740991
1239
+ },
1240
+ "sha256": {
1241
+ "type": "string"
1242
+ },
1243
+ "width": {
1244
+ "type": "number",
1245
+ "minimum": 0
1246
+ },
1247
+ "height": {
1248
+ "type": "number",
1249
+ "minimum": 0
1250
+ },
1251
+ "durationMs": {
1252
+ "description": "For video and audio",
1253
+ "type": "number",
1254
+ "minimum": 0
1255
+ },
1256
+ "description": {
1257
+ "type": "string"
1258
+ },
1259
+ "at": {
1260
+ "type": "object",
1261
+ "properties": {
1262
+ "step": {
1263
+ "description": "The `id` of a step",
1264
+ "type": "string"
1265
+ },
1266
+ "offsetMs": {
1267
+ "type": "number",
1268
+ "minimum": 0
1269
+ }
1270
+ },
1271
+ "additionalProperties": {}
1272
+ },
1273
+ "poster": {
1274
+ "description": "The `id` of an attachment that stands for this one before it is opened",
1275
+ "type": "string"
1276
+ },
1277
+ "captions": {
1278
+ "description": "The `id`s of attachments (WebVTT, SRT) that caption this one",
1279
+ "type": "array",
1280
+ "items": {
1281
+ "type": "string"
1282
+ }
1283
+ },
1284
+ "extensions": {
1285
+ "type": "object",
1286
+ "propertyNames": {
1287
+ "type": "string",
1288
+ "minLength": 1
1289
+ },
1290
+ "additionalProperties": {}
1291
+ },
1292
+ "path": {
1293
+ "description": "A file to read, relative to the file this is in. Used by `atlas report publish`",
1294
+ "type": "string"
1295
+ },
1296
+ "base64": {
1297
+ "type": "string"
1298
+ },
1299
+ "data": {
1300
+ "description": "From code: the bytes"
1301
+ }
1302
+ },
1303
+ "required": [
1304
+ "name"
1305
+ ],
1306
+ "additionalProperties": {}
1307
+ }
1308
+ },
1309
+ "annotations": {
1310
+ "type": "array",
1311
+ "items": {
1312
+ "type": "object",
1313
+ "properties": {
1314
+ "type": {
1315
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
1316
+ "type": "string",
1317
+ "minLength": 1
1318
+ },
1319
+ "message": {
1320
+ "type": "string"
1321
+ },
1322
+ "level": {
1323
+ "description": "Conventionally info, warning or error. Anything else is shown as a note",
1324
+ "type": "string"
1325
+ },
1326
+ "at": {
1327
+ "type": "object",
1328
+ "properties": {
1329
+ "step": {
1330
+ "description": "The `id` of a step",
1331
+ "type": "string"
1332
+ },
1333
+ "offsetMs": {
1334
+ "type": "number",
1335
+ "minimum": 0
1336
+ }
1337
+ },
1338
+ "additionalProperties": {}
1339
+ },
1340
+ "source": {
1341
+ "type": "object",
1342
+ "properties": {
1343
+ "file": {
1344
+ "type": "string"
1345
+ },
1346
+ "line": {
1347
+ "type": "integer",
1348
+ "minimum": -9007199254740991,
1349
+ "maximum": 9007199254740991
1350
+ },
1351
+ "column": {
1352
+ "type": "integer",
1353
+ "minimum": -9007199254740991,
1354
+ "maximum": 9007199254740991
1355
+ }
1356
+ },
1357
+ "additionalProperties": {}
1358
+ },
1359
+ "links": {
1360
+ "type": "array",
1361
+ "items": {
1362
+ "type": "object",
1363
+ "properties": {
1364
+ "url": {
1365
+ "type": "string",
1366
+ "minLength": 1
1367
+ },
1368
+ "name": {
1369
+ "type": "string"
1370
+ },
1371
+ "rel": {
1372
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
1373
+ "type": "string"
1374
+ }
1375
+ },
1376
+ "required": [
1377
+ "url"
1378
+ ],
1379
+ "additionalProperties": {}
1380
+ }
1381
+ },
1382
+ "extensions": {
1383
+ "type": "object",
1384
+ "propertyNames": {
1385
+ "type": "string",
1386
+ "minLength": 1
1387
+ },
1388
+ "additionalProperties": {}
1389
+ }
1390
+ },
1391
+ "required": [
1392
+ "type",
1393
+ "message"
1394
+ ],
1395
+ "additionalProperties": {}
1396
+ }
1397
+ },
1398
+ "extensions": {
1399
+ "type": "object",
1400
+ "propertyNames": {
1401
+ "type": "string",
1402
+ "minLength": 1
1403
+ },
1404
+ "additionalProperties": {}
1405
+ }
1406
+ },
1407
+ "required": [
1408
+ "producer",
1409
+ "checks",
1410
+ "recordedAtMs"
1411
+ ],
1412
+ "additionalProperties": {}
1413
+ }