@e2edev/e2e 0.6.1 → 0.8.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 (283) hide show
  1. package/README.md +15 -11
  2. package/dist/agent/act-validation.d.ts +9 -3
  3. package/dist/agent/act-validation.d.ts.map +1 -1
  4. package/dist/agent/act-validation.js +23 -4
  5. package/dist/agent/act-validation.js.map +1 -1
  6. package/dist/agent/act.d.ts +2 -2
  7. package/dist/agent/act.d.ts.map +1 -1
  8. package/dist/agent/act.js +231 -41
  9. package/dist/agent/act.js.map +1 -1
  10. package/dist/agent/actions.d.ts +14 -14
  11. package/dist/agent/actions.d.ts.map +1 -1
  12. package/dist/agent/actions.js +12 -2
  13. package/dist/agent/actions.js.map +1 -1
  14. package/dist/agent/default-agent.d.ts +1 -1
  15. package/dist/agent/default-agent.d.ts.map +1 -1
  16. package/dist/agent/default-agent.js +19 -84
  17. package/dist/agent/default-agent.js.map +1 -1
  18. package/dist/agent/executor.d.ts +14 -0
  19. package/dist/agent/executor.d.ts.map +1 -1
  20. package/dist/agent/executor.js.map +1 -1
  21. package/dist/agent/index.d.ts.map +1 -1
  22. package/dist/agent/index.js +14 -6
  23. package/dist/agent/index.js.map +1 -1
  24. package/dist/agent/invocation.d.ts +1 -8
  25. package/dist/agent/invocation.d.ts.map +1 -1
  26. package/dist/agent/invocation.js +7 -51
  27. package/dist/agent/invocation.js.map +1 -1
  28. package/dist/agent/ledger.d.ts.map +1 -1
  29. package/dist/agent/ledger.js +10 -1
  30. package/dist/agent/ledger.js.map +1 -1
  31. package/dist/agent/loop-guards.d.ts +21 -0
  32. package/dist/agent/loop-guards.d.ts.map +1 -1
  33. package/dist/agent/loop-guards.js +48 -0
  34. package/dist/agent/loop-guards.js.map +1 -1
  35. package/dist/agent/model/sdk.d.ts +18 -0
  36. package/dist/agent/model/sdk.d.ts.map +1 -1
  37. package/dist/agent/model/sdk.js +10 -4
  38. package/dist/agent/model/sdk.js.map +1 -1
  39. package/dist/agent/observation-budget.d.ts +27 -0
  40. package/dist/agent/observation-budget.d.ts.map +1 -0
  41. package/dist/agent/observation-budget.js +43 -0
  42. package/dist/agent/observation-budget.js.map +1 -0
  43. package/dist/agent/observation.d.ts +40 -7
  44. package/dist/agent/observation.d.ts.map +1 -1
  45. package/dist/agent/observation.js +56 -11
  46. package/dist/agent/observation.js.map +1 -1
  47. package/dist/agent/phases.d.ts +1 -1
  48. package/dist/agent/phases.d.ts.map +1 -1
  49. package/dist/agent/phases.js +11 -13
  50. package/dist/agent/phases.js.map +1 -1
  51. package/dist/agent/primitives.d.ts +14 -2
  52. package/dist/agent/primitives.d.ts.map +1 -1
  53. package/dist/agent/primitives.js +98 -54
  54. package/dist/agent/primitives.js.map +1 -1
  55. package/dist/agent/screen-update.d.ts +47 -0
  56. package/dist/agent/screen-update.d.ts.map +1 -0
  57. package/dist/agent/screen-update.js +222 -0
  58. package/dist/agent/screen-update.js.map +1 -0
  59. package/dist/agent/step-cache.d.ts +46 -18
  60. package/dist/agent/step-cache.d.ts.map +1 -1
  61. package/dist/agent/step-cache.js +100 -60
  62. package/dist/agent/step-cache.js.map +1 -1
  63. package/dist/agent/tool-loop.d.ts.map +1 -1
  64. package/dist/agent/tool-loop.js +28 -4
  65. package/dist/agent/tool-loop.js.map +1 -1
  66. package/dist/cache/anchors.d.ts.map +1 -1
  67. package/dist/cache/anchors.js +21 -1
  68. package/dist/cache/anchors.js.map +1 -1
  69. package/dist/cache/decide.d.ts +13 -3
  70. package/dist/cache/decide.d.ts.map +1 -1
  71. package/dist/cache/decide.js +35 -0
  72. package/dist/cache/decide.js.map +1 -1
  73. package/dist/cache/relocate.d.ts +11 -1
  74. package/dist/cache/relocate.d.ts.map +1 -1
  75. package/dist/cache/relocate.js +48 -17
  76. package/dist/cache/relocate.js.map +1 -1
  77. package/dist/cache/store.d.ts.map +1 -1
  78. package/dist/cache/store.js +3 -14
  79. package/dist/cache/store.js.map +1 -1
  80. package/dist/cache/trace.d.ts +12 -0
  81. package/dist/cache/trace.d.ts.map +1 -1
  82. package/dist/cache/trace.js +21 -0
  83. package/dist/cache/trace.js.map +1 -1
  84. package/dist/cli/docs-url.d.ts +1 -1
  85. package/dist/cli/docs-url.d.ts.map +1 -1
  86. package/dist/cli/docs-url.js +1 -1
  87. package/dist/cli/docs-url.js.map +1 -1
  88. package/dist/cli/index.d.ts.map +1 -1
  89. package/dist/cli/index.js +60 -9
  90. package/dist/cli/index.js.map +1 -1
  91. package/dist/cli/init/engines.d.ts +2 -3
  92. package/dist/cli/init/engines.d.ts.map +1 -1
  93. package/dist/cli/init/engines.js +3 -4
  94. package/dist/cli/init/engines.js.map +1 -1
  95. package/dist/cli/init/scaffold.d.ts.map +1 -1
  96. package/dist/cli/init/scaffold.js +2 -0
  97. package/dist/cli/init/scaffold.js.map +1 -1
  98. package/dist/cli/signals.d.ts +3 -3
  99. package/dist/cli/signals.js +3 -3
  100. package/dist/cli/telemetry.d.ts +12 -0
  101. package/dist/cli/telemetry.d.ts.map +1 -0
  102. package/dist/cli/telemetry.js +40 -0
  103. package/dist/cli/telemetry.js.map +1 -0
  104. package/dist/collect/select.d.ts +2 -0
  105. package/dist/collect/select.d.ts.map +1 -1
  106. package/dist/collect/select.js +15 -11
  107. package/dist/collect/select.js.map +1 -1
  108. package/dist/config/agent.d.ts +6 -2
  109. package/dist/config/agent.d.ts.map +1 -1
  110. package/dist/config/agent.js +30 -3
  111. package/dist/config/agent.js.map +1 -1
  112. package/dist/config/diagnose.d.ts.map +1 -1
  113. package/dist/config/diagnose.js +1 -0
  114. package/dist/config/diagnose.js.map +1 -1
  115. package/dist/config/load.d.ts +2 -2
  116. package/dist/config/load.js +2 -2
  117. package/dist/config/resolve.d.ts +16 -4
  118. package/dist/config/resolve.d.ts.map +1 -1
  119. package/dist/config/resolve.js +107 -44
  120. package/dist/config/resolve.js.map +1 -1
  121. package/dist/engine/contract.d.ts +6 -1
  122. package/dist/engine/contract.d.ts.map +1 -1
  123. package/dist/engine/contract.js.map +1 -1
  124. package/dist/engine/index.d.ts +61 -6
  125. package/dist/engine/index.d.ts.map +1 -1
  126. package/dist/engine/index.js +25 -5
  127. package/dist/engine/index.js.map +1 -1
  128. package/dist/engine/session.d.ts.map +1 -1
  129. package/dist/engine/session.js +6 -0
  130. package/dist/engine/session.js.map +1 -1
  131. package/dist/engine/surface.d.ts +6 -2
  132. package/dist/engine/surface.d.ts.map +1 -1
  133. package/dist/index.d.ts +1 -1
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +1 -1
  136. package/dist/index.js.map +1 -1
  137. package/dist/internal/ai-trace.d.ts +1 -5
  138. package/dist/internal/ai-trace.d.ts.map +1 -1
  139. package/dist/internal/ai-trace.js +82 -11
  140. package/dist/internal/ai-trace.js.map +1 -1
  141. package/dist/internal/atomic-write.d.ts +17 -0
  142. package/dist/internal/atomic-write.d.ts.map +1 -0
  143. package/dist/internal/atomic-write.js +44 -0
  144. package/dist/internal/atomic-write.js.map +1 -0
  145. package/dist/internal/env.d.ts +6 -0
  146. package/dist/internal/env.d.ts.map +1 -0
  147. package/dist/internal/env.js +12 -0
  148. package/dist/internal/env.js.map +1 -0
  149. package/dist/internal/options.d.ts +9 -0
  150. package/dist/internal/options.d.ts.map +1 -0
  151. package/dist/internal/options.js +27 -0
  152. package/dist/internal/options.js.map +1 -0
  153. package/dist/locator/expression.js +1 -1
  154. package/dist/locator/expression.js.map +1 -1
  155. package/dist/locator/screen.d.ts.map +1 -1
  156. package/dist/locator/screen.js +4 -2
  157. package/dist/locator/screen.js.map +1 -1
  158. package/dist/report/build.d.ts +2 -1
  159. package/dist/report/build.d.ts.map +1 -1
  160. package/dist/report/build.js +11 -4
  161. package/dist/report/build.js.map +1 -1
  162. package/dist/report/list-model.d.ts +14 -5
  163. package/dist/report/list-model.d.ts.map +1 -1
  164. package/dist/report/list.d.ts +59 -5
  165. package/dist/report/list.d.ts.map +1 -1
  166. package/dist/report/list.js +171 -31
  167. package/dist/report/list.js.map +1 -1
  168. package/dist/report/running-tree.d.ts +7 -6
  169. package/dist/report/running-tree.d.ts.map +1 -1
  170. package/dist/report/running-tree.js +13 -8
  171. package/dist/report/running-tree.js.map +1 -1
  172. package/dist/report/write.d.ts +1 -1
  173. package/dist/report/write.d.ts.map +1 -1
  174. package/dist/report/write.js +3 -6
  175. package/dist/report/write.js.map +1 -1
  176. package/dist/run/artifacts.d.ts.map +1 -1
  177. package/dist/run/artifacts.js +20 -2
  178. package/dist/run/artifacts.js.map +1 -1
  179. package/dist/run/events.d.ts +73 -15
  180. package/dist/run/events.d.ts.map +1 -1
  181. package/dist/run/events.js +7 -7
  182. package/dist/run/events.js.map +1 -1
  183. package/dist/run/execute.d.ts +31 -5
  184. package/dist/run/execute.d.ts.map +1 -1
  185. package/dist/run/execute.js +73 -25
  186. package/dist/run/execute.js.map +1 -1
  187. package/dist/run/fixtures.d.ts +9 -1
  188. package/dist/run/fixtures.d.ts.map +1 -1
  189. package/dist/run/fixtures.js +5 -4
  190. package/dist/run/fixtures.js.map +1 -1
  191. package/dist/run/in-process.d.ts +1 -1
  192. package/dist/run/in-process.d.ts.map +1 -1
  193. package/dist/run/in-process.js +6 -3
  194. package/dist/run/in-process.js.map +1 -1
  195. package/dist/run/managed-process.d.ts +8 -2
  196. package/dist/run/managed-process.d.ts.map +1 -1
  197. package/dist/run/managed-process.js +12 -0
  198. package/dist/run/managed-process.js.map +1 -1
  199. package/dist/run/records.d.ts +15 -1
  200. package/dist/run/records.d.ts.map +1 -1
  201. package/dist/run/runner.d.ts +16 -7
  202. package/dist/run/runner.d.ts.map +1 -1
  203. package/dist/run/runner.js +182 -98
  204. package/dist/run/runner.js.map +1 -1
  205. package/dist/run/scheduler.d.ts +6 -6
  206. package/dist/run/scheduler.d.ts.map +1 -1
  207. package/dist/run/scheduler.js +54 -23
  208. package/dist/run/scheduler.js.map +1 -1
  209. package/dist/run/serial.d.ts +2 -4
  210. package/dist/run/serial.d.ts.map +1 -1
  211. package/dist/run/serial.js +4 -2
  212. package/dist/run/serial.js.map +1 -1
  213. package/dist/run/sessions.d.ts.map +1 -1
  214. package/dist/run/sessions.js +3 -4
  215. package/dist/run/sessions.js.map +1 -1
  216. package/dist/run/steps.d.ts +28 -1
  217. package/dist/run/steps.d.ts.map +1 -1
  218. package/dist/run/steps.js +14 -0
  219. package/dist/run/steps.js.map +1 -1
  220. package/dist/run/unit-runner.d.ts +7 -2
  221. package/dist/run/unit-runner.d.ts.map +1 -1
  222. package/dist/run/units.d.ts +8 -0
  223. package/dist/run/units.d.ts.map +1 -1
  224. package/dist/run/units.js +11 -0
  225. package/dist/run/units.js.map +1 -1
  226. package/dist/run/worker/entry.js +1 -0
  227. package/dist/run/worker/entry.js.map +1 -1
  228. package/dist/run/worker/handle.d.ts +1 -1
  229. package/dist/run/worker/handle.d.ts.map +1 -1
  230. package/dist/run/worker/handle.js +1 -1
  231. package/dist/run/worker/handle.js.map +1 -1
  232. package/dist/run/worker/protocol.d.ts +12 -1
  233. package/dist/run/worker/protocol.d.ts.map +1 -1
  234. package/dist/run/worker/protocol.js.map +1 -1
  235. package/dist/run/worker/session.d.ts +2 -0
  236. package/dist/run/worker/session.d.ts.map +1 -1
  237. package/dist/run/worker/session.js +5 -0
  238. package/dist/run/worker/session.js.map +1 -1
  239. package/dist/run/worker-models.d.ts +27 -0
  240. package/dist/run/worker-models.d.ts.map +1 -0
  241. package/dist/run/worker-models.js +49 -0
  242. package/dist/run/worker-models.js.map +1 -0
  243. package/dist/telemetry/environment.d.ts +33 -0
  244. package/dist/telemetry/environment.d.ts.map +1 -0
  245. package/dist/telemetry/environment.js +96 -0
  246. package/dist/telemetry/environment.js.map +1 -0
  247. package/dist/telemetry/events.d.ts +25 -0
  248. package/dist/telemetry/events.d.ts.map +1 -0
  249. package/dist/telemetry/events.js +107 -0
  250. package/dist/telemetry/events.js.map +1 -0
  251. package/dist/telemetry/posthog.d.ts +31 -0
  252. package/dist/telemetry/posthog.d.ts.map +1 -0
  253. package/dist/telemetry/posthog.js +29 -0
  254. package/dist/telemetry/posthog.js.map +1 -0
  255. package/dist/telemetry/project.d.ts +18 -0
  256. package/dist/telemetry/project.d.ts.map +1 -0
  257. package/dist/telemetry/project.js +55 -0
  258. package/dist/telemetry/project.js.map +1 -0
  259. package/dist/telemetry/store.d.ts +53 -0
  260. package/dist/telemetry/store.d.ts.map +1 -0
  261. package/dist/telemetry/store.js +153 -0
  262. package/dist/telemetry/store.js.map +1 -0
  263. package/dist/telemetry/telemetry.d.ts +89 -0
  264. package/dist/telemetry/telemetry.d.ts.map +1 -0
  265. package/dist/telemetry/telemetry.js +187 -0
  266. package/dist/telemetry/telemetry.js.map +1 -0
  267. package/dist/types.d.ts +103 -38
  268. package/dist/types.d.ts.map +1 -1
  269. package/package.json +2 -6
  270. package/skills/e2e/SKILL.md +0 -2
  271. package/skills/e2e/references/agent.md +33 -15
  272. package/skills/e2e/references/debugging.md +4 -2
  273. package/skills/e2e/references/running.md +7 -5
  274. package/skills/e2e/references/setup.md +16 -10
  275. package/skills/e2e/references/writing-tests.md +6 -5
  276. package/dist/internal/trace.d.ts +0 -18
  277. package/dist/internal/trace.d.ts.map +0 -1
  278. package/dist/internal/trace.js +0 -46
  279. package/dist/internal/trace.js.map +0 -1
  280. package/dist/run/public.d.ts +0 -19
  281. package/dist/run/public.d.ts.map +0 -1
  282. package/dist/run/public.js +0 -11
  283. package/dist/run/public.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"managed-process.d.ts","sourceRoot":"","sources":["../../src/run/managed-process.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAKrG,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA4BjD;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAqBD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED;;;;GAIG;AACH,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,cAAc,CAAS;IAE/B,YACmB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACpB,KAAK,GAAE,mBAAwB,EAC9C;IAEJ,0GAA0G;IAC1G,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;;;;;;;;;;;OAaG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2G/C;IAED;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAef,gHAAgH;IAC1G,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB1B;CACF;AAED;;;;GAIG;AACH,qBAAa,YAAY;IAOrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGf;IAET,YACmB,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,mBAAwB,EAC9C;IAEJ;;;OAGG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAe/C;IAED;;;;;;OAMG;IACG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7D;CACF"}
1
+ {"version":3,"file":"managed-process.d.ts","sourceRoot":"","sources":["../../src/run/managed-process.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAKrG,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA4BjD;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAqBD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,6FAA6F;IAC7F,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/E;AAED;;;;GAIG;AACH,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,cAAc,CAAS;IAE/B,YACmB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACpB,KAAK,GAAE,mBAAwB,EAC9C;IAEJ,0GAA0G;IAC1G,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;;;;;;;;;;;OAaG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/C;IAED,6EAA6E;YAC/D,MAAM;IA6GpB;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAef,gHAAgH;IAC1G,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB1B;CACF;AAED;;;;GAIG;AACH,qBAAa,YAAY;IAOrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGf;IAET,YACmB,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,mBAAwB,EAC9C;IAEJ;;;OAGG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAe/C;IAED;;;;;;OAMG;IACG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7D;CACF"}
@@ -92,6 +92,18 @@ export class ManagedProcess {
92
92
  * The probe spends from the same `startupTimeout` budget as the wait.
93
93
  */
94
94
  async start(signal) {
95
+ // A function, not a narrowed local: the signal flips while `launch` awaits.
96
+ const aborted = () => signal?.aborted === true;
97
+ if (aborted())
98
+ return;
99
+ const startedAt = Date.now();
100
+ this.hooks.starting?.(this.label);
101
+ await this.launch(signal);
102
+ if (!aborted())
103
+ this.hooks.ready?.(this.label, Date.now() - startedAt, this.reusedExisting);
104
+ }
105
+ /** The preflight probe, the spawn, and the readiness wait behind `start`. */
106
+ async launch(signal) {
95
107
  // A function, not a narrowed local: the signal flips while the loop awaits.
96
108
  const aborted = () => signal?.aborted === true;
97
109
  if (aborted())
@@ -1 +1 @@
1
- {"version":3,"file":"managed-process.js","sourceRoot":"","sources":["../../src/run/managed-process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-process.js","sourceRoot":"","sources":["../../src/run/managed-process.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,21 @@ export interface ArtifactRecord {
19
19
  sha256?: string;
20
20
  /** The configured `ArtifactStore`'s reference for this artifact, when one accepted it. */
21
21
  ref?: string;
22
- redaction: 'none' | 'complete';
22
+ /**
23
+ * When a time-based artifact began recording: a video segment's first frame
24
+ * is at or just after this instant, so `step.startedAt - artifact.startedAt`
25
+ * is the step's offset into it.
26
+ */
27
+ startedAt?: string;
28
+ /**
29
+ * Mirrors report-1: how much of the file the runner masked. Screenshots and
30
+ * traces are `complete`; a video is `incomplete`, since a recording masks
31
+ * nothing (a secure field renders its own dots, but anything else the
32
+ * screen showed is in the frames), and is kept as it is. report-1 also
33
+ * admits an `incomplete` artifact without a `path`, one its producer
34
+ * withheld; this runner never writes one.
35
+ */
36
+ redaction: 'complete' | 'not-required' | 'incomplete';
23
37
  producer: ArtifactProducer;
24
38
  }
25
39
  export interface AttemptRecord {
@@ -1 +1 @@
1
- {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/run/records.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/run/records.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /** Run orchestration: config, collection, selection, execution, reporting. */
2
2
  import { type Report1Document } from '../report/build.ts';
3
- import { type RunEventSink, type RunExitCode } from './events.ts';
3
+ import { type RunEventSink, type RunExitCode, type RunStatus } from './events.ts';
4
4
  import type { ResultRecord } from './records.ts';
5
5
  import type { E2EConfig } from '../types.ts';
6
6
  export interface RunOptions {
@@ -23,13 +23,21 @@ export interface RunOptions {
23
23
  /** Records every model call to `.e2e/ai-trace.json` (`--ai-trace`). */
24
24
  aiTrace?: boolean | undefined;
25
25
  /**
26
- * A config value instead of a discovered file the embedding-host entry
27
- * point (see the embedding guide). May hold live values (executors, driver
28
- * handles, model instances, cache stores, secret providers), which cannot
29
- * cross a process boundary, so the run executes in-process on one worker.
26
+ * Records a video of every attempt (`--video`), on top of the configured
27
+ * artifact kinds. The engine must be able to record; one that cannot fails
28
+ * the run with `UNSUPPORTED_ARTIFACT` before any test starts.
29
+ */
30
+ video?: boolean | undefined;
31
+ /**
32
+ * A config value instead of a discovered file, for the test harness. May
33
+ * hold live values (executors, engine handles, model instances, cache
34
+ * stores, secret providers), which cannot cross a process boundary, so the
35
+ * run executes in-process on one worker.
30
36
  */
31
37
  rawConfig?: E2EConfig | undefined;
38
+ /** The environment the run resolves against, instead of `process.env`. */
32
39
  env?: NodeJS.ProcessEnv | undefined;
40
+ /** Suppresses the list reporter. */
33
41
  quiet?: boolean | undefined;
34
42
  /** Cancellation: the running test ends, its teardown runs, the run finishes as `interrupted`. */
35
43
  interruptSignal?: AbortSignal | undefined;
@@ -40,7 +48,7 @@ export interface RunOptions {
40
48
  * the CLI's Ctrl-C ladder (`cli/signals.ts`) feeds these two.
41
49
  */
42
50
  forceSignal?: AbortSignal | undefined;
43
- /** Structured, JSON-serializable run events for embedding hosts. */
51
+ /** A second sink on the run's event spine, beside the list reporter. */
44
52
  onEvent?: RunEventSink | undefined;
45
53
  }
46
54
  /** The selection flags of `run`, without anything that would start a process. */
@@ -67,7 +75,8 @@ export declare function list(options?: ListOptions): Promise<{
67
75
  }>;
68
76
  export interface RunOutcome {
69
77
  exitCode: RunExitCode;
70
- status: 'passed' | 'failed' | 'error' | 'interrupted';
78
+ /** The same status `report.run.status` and the `run-finished` event carry. */
79
+ status: RunStatus;
71
80
  report: Report1Document;
72
81
  reportPath: string | undefined;
73
82
  /** Where the JUnit XML was written; undefined unless the `junit` reporter was selected. */
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/run/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/run/runner.ts"],"names":[],"mappings":"AAAA,8EAA8E;AA4B9E,OAAO,EAA+B,KAAK,eAAe,EAAyB,MAAM,oBAAoB,CAAC;AAM9G,OAAO,EAAwC,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAqC,MAAM,aAAa,CAAC;AAE3J,OAAO,KAAK,EAAE,YAAY,EAA+B,MAAM,cAAc,CAAC;AAM9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACtC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAC/D,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,iGAAiG;IACjG,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,wEAAwE;IACxE,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACpC;AAED,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,UAAU,EACV,KAAK,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,iBAAiB,GAAG,WAAW,GAAG,KAAK,CAC5G,CAAC;AAEF,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CAyBtF;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,8EAA8E;IAC9E,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,2FAA2F;IAC3F,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,gFAAgF;IAChF,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAClC;AASD,yEAAyE;AACzE,wBAAsB,GAAG,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAwfvE"}
@@ -3,7 +3,7 @@ import path from 'node:path';
3
3
  import { discoverConfig, loadConfigModule, missingConfigError } from '../config/load.js';
4
4
  import { isCiMode, resolveConfig, } from '../config/resolve.js';
5
5
  import { collect } from '../collect/collect.js';
6
- import { select } from '../collect/select.js';
6
+ import { select, selectTargets } from '../collect/select.js';
7
7
  import { classifyError, combineExitCodes, ConfigurationError, E2EError, errorMessage, exitCodeForCategory, serializeError, translateProvisioningError, } from '../internal/errors.js';
8
8
  import { loadAiSdk } from '../agent/ai-sdk.js';
9
9
  import { AiTraceCollector, AiTraceRecorder, registerAiTraceRecorder } from '../internal/ai-trace.js';
@@ -18,6 +18,7 @@ import { ManagedProcess, ServiceStack } from './managed-process.js';
18
18
  import { createRunEventEmitter, toEventResult } from './events.js';
19
19
  import { inProcessSpawner } from './in-process.js';
20
20
  import { runUnits } from './scheduler.js';
21
+ import { buildWorkPlans, plannedSlots } from './units.js';
21
22
  import { SessionStore } from './sessions.js';
22
23
  import { childProcessSpawner } from './worker/handle.js';
23
24
  import { setCredentialRegistry } from '../credentials.js';
@@ -62,7 +63,13 @@ export async function run(options = {}) {
62
63
  const cwd = options.cwd ?? process.cwd();
63
64
  const env = options.env ?? process.env;
64
65
  const runId = uuidv7();
65
- const startedAt = timestamp();
66
+ /**
67
+ * When the run began executing: taken again right before `plan`, once
68
+ * collection and provisioning are done, so a first-run download is never
69
+ * part of the reported span. A run that fails before then keeps its launch
70
+ * time, and the span is the time it took to fail.
71
+ */
72
+ let startedAt = timestamp();
66
73
  const debug = new DebugTrace(options.debug === true);
67
74
  const aiTrace = options.aiTrace === true ? new AiTraceCollector() : undefined;
68
75
  /** The in-process recorder; child-process workers own their own. */
@@ -89,15 +96,16 @@ export async function run(options = {}) {
89
96
  cli.reporters = options.reporters;
90
97
  if (options.noCache === true)
91
98
  cli.cache = 'off';
99
+ if (options.video === true)
100
+ cli.video = true;
92
101
  // Config resolves before anything is emitted, and its failure is kept rather
93
102
  // than thrown: the reporter set is config truth (CLI overrides merge during
94
103
  // resolution), so the emitter below is built exactly once from the set
95
104
  // actually in force. When config itself failed, the CLI's own value is the
96
105
  // best available, and the failure still renders through it.
97
106
  const loaded = await debug.time('config.load', () => loadRunConfig(options, cwd, env, cli)).then((config) => ({ config, error: undefined }), (cause) => ({ config: undefined, error: classifyError(cause) }));
98
- // The event stream is the run's single spine: the list reporter is just one
99
- // sink on it, beside the host's, so the CLI and a host can never see
100
- // different stories.
107
+ // The event stream is the run's single spine: the list reporter is one sink
108
+ // on it, beside any other, so every consumer sees the same story.
101
109
  const reporters = loaded.config?.reporters ?? options.reporters ?? ['list'];
102
110
  const emit = createRunEventEmitter([
103
111
  options.quiet === true || !reporters.includes('list') ? undefined : new ListReporter().handle,
@@ -114,6 +122,20 @@ export async function run(options = {}) {
114
122
  const recordFailure = (cause, phase) => {
115
123
  recordRunError({ error: serializeError(classifyError(cause), phase === undefined ? {} : { phase }) });
116
124
  };
125
+ /**
126
+ * A worker's run-level configuration failure stops the run through the
127
+ * interrupt signal, recorded once: workers that meet the same failure in
128
+ * parallel report the one already on the way out. The work it cuts short is
129
+ * interrupted, but the run is not: its exit code is the error's, not 130.
130
+ */
131
+ let runAborted = false;
132
+ const abortRun = (runError) => {
133
+ if (runAborted)
134
+ return;
135
+ runAborted = true;
136
+ recordRunError(runError);
137
+ interruptController.abort();
138
+ };
117
139
  /**
118
140
  * The exit code is a fold over run state — every result, every run error,
119
141
  * the interrupt — never threaded through by hand. A run error recorded
@@ -124,7 +146,7 @@ export async function run(options = {}) {
124
146
  ...resultExitCodes(results),
125
147
  ...runErrors.map((runError) => exitCodeForCategory(runError.error.category)),
126
148
  ...(interruptController.signal.aborted ? [130] : []),
127
- ]);
149
+ ].filter((code) => code !== 130 || !runAborted));
128
150
  const buildRunReport = (exitCode) => buildReport({
129
151
  runId,
130
152
  config: loaded.config,
@@ -214,8 +236,11 @@ export async function run(options = {}) {
214
236
  reportPath = await writeCanonicalReport(loaded.config, runErrors.length === recorded ? document : buildRunReport(currentExitCode()));
215
237
  }
216
238
  const exitCode = currentExitCode();
217
- const status = statusOf(exitCode);
218
239
  const report = buildRunReport(exitCode);
240
+ // Read back from the report rather than recomputed: the report derives
241
+ // `blocked` from the results, and the outcome and the event must agree
242
+ // with the file a host reads afterwards.
243
+ const status = report.run.status;
219
244
  setCredentialRegistry(undefined);
220
245
  emit({
221
246
  type: 'run-finished',
@@ -245,74 +270,84 @@ export async function run(options = {}) {
245
270
  runId,
246
271
  projectId: config.projectId,
247
272
  projectRoot: config.projectRoot,
273
+ artifactsRoot: resolveArtifactsRoot(config, options.artifactsDir),
248
274
  ci: isCiMode(env),
249
275
  targets: config.targets.map((target) => target.name),
250
- ...(config.agent.model === undefined
251
- ? {}
252
- : { model: `${config.agent.model.provider}/${config.agent.model.id}` }),
276
+ ...(config.agent.model === undefined ? {} : { model: modelName(config.agent.model) }),
277
+ ...(config.agent.visionModel === undefined ? {} : { visionModel: modelName(config.agent.visionModel) }),
253
278
  });
254
279
  const executeRun = async () => {
255
280
  const interrupted = interruptController.signal;
256
- // Each engine declares the app it drives: the dependency processes it
257
- // needs and the command that starts it. Declarations are deduplicated
258
- // across targets (two browsers on one dev server share one process), and
259
- // every service is ready before the first app command starts. Nothing
260
- // spawns once the run was interrupted. A reused process or an ignored
261
- // `reuseExisting` narrates as a run notice.
262
- const processHooks = {
263
- ci: isCiMode(env),
264
- notice: (message) => emit({ type: 'notice', target: 'app', message }),
265
- };
266
- const declared = declaredProcesses(config.targets);
267
- if (declared.services.length > 0) {
268
- const stack = new ServiceStack(declared.services, config.projectRoot, processHooks);
269
- services = stack;
270
- await debug.time('app.services.start', () => stack.start(interrupted));
271
- if (interrupted.aborted)
272
- return;
273
- }
274
- for (const { label, command, readyUrl } of declared.commands) {
275
- const app = new ManagedProcess(label, command, config.projectRoot, { readyUrl }, processHooks);
276
- appProcesses.push(app);
277
- await debug.time(`app.start(${label})`, () => app.start(interrupted));
278
- if (interrupted.aborted)
279
- return;
280
- }
281
- // A run cancelled before any test could start collects nothing: the
282
- // interrupt alone decides the outcome.
281
+ // A run cancelled before it began collects nothing: the interrupt alone
282
+ // decides the outcome.
283
283
  if (interrupted.aborted)
284
284
  return;
285
+ // Which targets the run is for, settled before anything is collected,
286
+ // downloaded, or started: an unknown --target is a collection failure.
287
+ let targets;
288
+ try {
289
+ targets = selectTargets(config.targets, options.targetIds);
290
+ }
291
+ catch (cause) {
292
+ recordFailure(cause, 'collection');
293
+ return;
294
+ }
295
+ // Each selected engine declares the app it drives: the dependency
296
+ // processes it needs and the command that starts it. Declarations are
297
+ // deduplicated across targets (two browsers on one dev server share one
298
+ // process) and checked for consistency here, first; the processes start
299
+ // only after the plan, and only for the selected targets.
300
+ const declared = declaredProcesses(targets);
301
+ /**
302
+ * Narrates and times one setup step on the event spine. A step that
303
+ * throws ends as a run error, and a step the interrupt cut short reports
304
+ * nothing more; either way no `finished` follows.
305
+ */
306
+ const setupStep = async (step, work) => {
307
+ emit({ type: 'setup', step, state: 'started' });
308
+ const startedMs = Date.now();
309
+ const result = await work();
310
+ if (!interrupted.aborted)
311
+ emit({ type: 'setup', step, state: 'finished', durationMs: Date.now() - startedMs });
312
+ return result;
313
+ };
314
+ // Collection comes first and starts no process: a collection failure or
315
+ // NO_TESTS is reported before any dev server boots or browser downloads.
285
316
  let planned;
286
317
  try {
287
- planned = await debug.time('collect', async () => {
318
+ planned = await setupStep({ kind: 'collect' }, () => debug.time('collect', async () => {
288
319
  const collection = await collect(config, options.files);
289
320
  const selection = select(collection, config, selectionFilters(options), options.passWithNoTests !== undefined ? { passWithNoTests: options.passWithNoTests } : {});
290
321
  return { collection, selection };
291
- });
322
+ }));
292
323
  }
293
324
  catch (cause) {
294
325
  recordFailure(cause, 'collection');
295
326
  return;
296
327
  }
297
328
  const { collection, selection } = planned;
298
- emit({ type: 'plan', total: selection.pairs.length, files: plannedFiles(selection) });
299
- const artifactsRoot = resolveArtifactsRoot(config, options.artifactsDir);
300
- const sessionsRoot = path.join(config.projectRoot, '.e2e', 'sessions');
301
- const store = SessionStore.create(runId, sessionsRoot);
302
- sessionStore = store;
303
329
  // Pre-flight: grade every selected target from its engine declaration
304
330
  // before any worker starts, so a config that asks for more than the
305
331
  // engine offers fails here, once, instead of inside a launch budget.
306
332
  for (const { target } of selection.perTarget) {
307
333
  targetProvenance.set(target.name, validateEngine(target, config));
308
334
  }
335
+ // The work units, built once: the same plans tell each engine's `prepare`
336
+ // how many worker slots to provision and the scheduler what to dispatch.
337
+ const plans = buildWorkPlans(selection, collection, config.projectRoot);
338
+ // Workers re-load the config module themselves, so a file-backed config
339
+ // runs across processes. A supplied `rawConfig` cannot cross a process
340
+ // boundary (it may hold live engine handles), so it runs in-process
341
+ // against one worker.
342
+ const runWorkers = config.configPath === undefined ? 1 : config.workers;
309
343
  // Provisioning: an engine that must fetch something onto this machine (a
310
- // first-run browser download) does it here, once per target and before
311
- // any worker, outside every launch budget. Only an interrupt cuts it
312
- // short, and its progress streams as `notice` events, so the reporter
313
- // prints it instead of a worker's stderr fighting the live status block.
344
+ // first-run browser download) does it here, once per target, before the
345
+ // app starts and before the run's clock starts. Only an interrupt cuts it
346
+ // short. Each target is one setup step, and the engine's progress lines
347
+ // stream as `notice` events under it, so the reporter prints them instead
348
+ // of a worker's stderr fighting the live status block.
314
349
  try {
315
- await debug.time('engine.prepare', () => prepareEngines(selection.perTarget.map(({ target }) => target), { runId, env, signal: interrupted }, (target, message) => emit({ type: 'notice', target, message })));
350
+ await debug.time('engine.prepare', () => prepareEngines(plans, runWorkers, { runId, env, signal: interrupted }, emit));
316
351
  }
317
352
  catch (cause) {
318
353
  if (!interrupted.aborted)
@@ -321,52 +356,85 @@ export async function run(options = {}) {
321
356
  }
322
357
  if (interrupted.aborted)
323
358
  return;
324
- // Workers re-load the config module themselves, so a file-backed config
325
- // runs across processes. A programmatic `rawConfig` cannot cross a process
326
- // boundary (it may hold live engine handles), so it runs in-process
327
- // against one worker. Either way the scheduler is the only engine.
359
+ // The run's clock starts here, once collection and provisioning are done.
360
+ // `plan` marks the moment and the report's `startedAt` agrees with it, so
361
+ // everything a run pays for every time (the app, the tests, the report)
362
+ // is on the clock and a one-off download is not.
363
+ startedAt = timestamp();
364
+ emit({ type: 'plan', total: selection.pairs.length, files: plannedFiles(selection) });
365
+ // Every service is ready before the first app command starts. Nothing
366
+ // spawns once the run was interrupted. Each process is one setup step; a
367
+ // reused process or an ignored `reuseExisting` narrates as a run notice.
368
+ const processHooks = (kind) => ({
369
+ ci: isCiMode(env),
370
+ notice: (message) => emit({ type: 'notice', target: 'app', message }),
371
+ starting: (label) => emit({ type: 'setup', step: { kind, label }, state: 'started' }),
372
+ ready: (label, durationMs, reused) => emit({
373
+ type: 'setup',
374
+ step: { kind, label },
375
+ state: 'finished',
376
+ durationMs,
377
+ ...(reused ? { outcome: 'reused' } : {}),
378
+ }),
379
+ });
380
+ if (declared.services.length > 0) {
381
+ const stack = new ServiceStack(declared.services, config.projectRoot, processHooks('service'));
382
+ services = stack;
383
+ await debug.time('app.services.start', () => stack.start(interrupted));
384
+ if (interrupted.aborted)
385
+ return;
386
+ }
387
+ for (const { label, command, readyUrl } of declared.commands) {
388
+ const app = new ManagedProcess(label, command, config.projectRoot, { readyUrl }, processHooks('app'));
389
+ appProcesses.push(app);
390
+ await debug.time(`app.start(${label})`, () => app.start(interrupted));
391
+ if (interrupted.aborted)
392
+ return;
393
+ }
394
+ // A run cancelled while the app was starting runs no test: the interrupt
395
+ // alone decides the outcome.
396
+ if (interrupted.aborted)
397
+ return;
398
+ const artifactsRoot = resolveArtifactsRoot(config, options.artifactsDir);
399
+ const sessionsRoot = path.join(config.projectRoot, '.e2e', 'sessions');
400
+ const store = SessionStore.create(runId, sessionsRoot);
401
+ sessionStore = store;
402
+ // Both transports are reached through `SpawnUnitRunner`: the scheduler is
403
+ // the only engine either way.
328
404
  if (aiTrace !== undefined && config.configPath === undefined) {
329
405
  // In-process execution shares this process with the runner, so the
330
406
  // recorder lives here and is drained straight into the collector.
331
407
  aiTraceRecorder = new AiTraceRecorder();
332
408
  await registerAiTraceRecorder(aiTraceRecorder, loadAiSdk);
333
409
  }
334
- const transport = config.configPath === undefined
335
- ? {
336
- workers: 1,
337
- spawn: inProcessSpawner({
338
- config,
339
- selection,
340
- runId,
341
- artifactsRoot,
342
- sessionStore: store,
343
- headed: options.headed ?? false,
344
- debug,
345
- }),
346
- }
347
- : {
348
- workers: config.workers,
349
- spawn: childProcessSpawner({
350
- configPath: config.configPath,
351
- projectRoot: config.projectRoot,
352
- configDigest: config.configDigest,
353
- cli,
354
- runId,
355
- artifactsRoot,
356
- headed: options.headed ?? false,
357
- sessionsRoot,
358
- sessionKeyBase64: store.exportKeyForWorker(),
359
- debug: debug.enabled,
360
- aiTrace: aiTrace !== undefined,
361
- env,
362
- }),
363
- };
410
+ const spawn = config.configPath === undefined
411
+ ? inProcessSpawner({
412
+ config,
413
+ selection,
414
+ runId,
415
+ artifactsRoot,
416
+ sessionStore: store,
417
+ headed: options.headed ?? false,
418
+ debug,
419
+ })
420
+ : childProcessSpawner({
421
+ configPath: config.configPath,
422
+ projectRoot: config.projectRoot,
423
+ configDigest: config.configDigest,
424
+ cli,
425
+ runId,
426
+ artifactsRoot,
427
+ headed: options.headed ?? false,
428
+ sessionsRoot,
429
+ sessionKeyBase64: store.exportKeyForWorker(),
430
+ debug: debug.enabled,
431
+ aiTrace: aiTrace !== undefined,
432
+ env,
433
+ });
364
434
  await debug.time('scheduler', () => runUnits({
365
- selection,
366
- collection,
367
- projectRoot: config.projectRoot,
368
- workers: transport.workers,
369
- spawn: transport.spawn,
435
+ plans,
436
+ workers: runWorkers,
437
+ spawn,
370
438
  interruptGraceMs: config.timeout + config.cleanupTimeout,
371
439
  interruptSignal: interrupted,
372
440
  forceSignal: forceController.signal,
@@ -381,6 +449,7 @@ export async function run(options = {}) {
381
449
  emit({ type: 'serial-group', group });
382
450
  },
383
451
  onRunError: recordRunError,
452
+ onRunAbort: abortRun,
384
453
  onTestStart: (start, targetName) => emit({ type: 'test-started', ...start, target: targetName }),
385
454
  onProgress: (testId, targetName, progress) => emit({ type: 'step', testId, target: targetName, progress }),
386
455
  onDebug: (snapshot) => debug.merge(snapshot),
@@ -446,33 +515,47 @@ export async function run(options = {}) {
446
515
  }
447
516
  }
448
517
  /**
449
- * Runs each target's `prepare` hook in turn. Sequential on purpose: two
450
- * engines provisioning the same toolchain would race, and the notices of
451
- * one download read better than two interleaved.
518
+ * Runs each target's `prepare` hook in turn, before `plan` is emitted and the
519
+ * run's clock starts, each as one `setup` step with the hook's progress lines
520
+ * streaming as `notice` events under it. Sequential on purpose: two engines
521
+ * provisioning the same toolchain would race, and the notices of one download
522
+ * read better than two interleaved.
452
523
  */
453
- async function prepareEngines(targets, scope, notice) {
454
- for (const target of targets) {
524
+ async function prepareEngines(plans, runWorkers, scope, emit) {
525
+ for (const plan of plans) {
526
+ const { target } = plan;
455
527
  const engine = target.engine;
456
528
  if (engine?.prepare === undefined)
457
529
  continue;
458
530
  if (scope.signal.aborted)
459
531
  return;
532
+ const step = { kind: 'prepare', target: target.name, engine: engine.name };
533
+ emit({ type: 'setup', step, state: 'started' });
534
+ const startedMs = Date.now();
460
535
  try {
461
536
  // The same `env` the workers are started with: what prepare provisions
462
537
  // must be where a worker's launch will look for it.
463
538
  await engine.prepare({
464
539
  runId: scope.runId,
465
540
  targetName: target.name,
541
+ slots: plannedSlots(plan, runWorkers),
466
542
  env: scope.env,
467
543
  signal: scope.signal,
468
- log: (line) => notice(target.name, line),
544
+ log: (line) => emit({ type: 'notice', target: target.name, message: line }),
469
545
  });
470
546
  }
471
547
  catch (cause) {
472
548
  throw translateProvisioningError(cause, ` while preparing engine ${engine.name} for target "${target.name}"`);
473
549
  }
550
+ if (!scope.signal.aborted) {
551
+ emit({ type: 'setup', step, state: 'finished', durationMs: Date.now() - startedMs });
552
+ }
474
553
  }
475
554
  }
555
+ /** A configured model as `run-started` and the reporter name it. */
556
+ function modelName(model) {
557
+ return `${model.provider}/${model.id}`;
558
+ }
476
559
  function selectionFilters(options) {
477
560
  return {
478
561
  ...(options.tags !== undefined ? { tags: options.tags } : {}),
@@ -520,6 +603,7 @@ function plannedFiles(selection) {
520
603
  }
521
604
  return [...files.values()];
522
605
  }
606
+ /** The exit-code status the report builder starts from; `blocked` is derived from the results there. */
523
607
  function statusOf(exitCode) {
524
608
  return exitCode === 0 ? 'passed' : exitCode === 1 ? 'failed' : exitCode === 130 ? 'interrupted' : 'error';
525
609
  }
@@ -529,10 +613,10 @@ function statusOf(exitCode) {
529
613
  */
530
614
  function validateEngine(target, config) {
531
615
  const provenance = describeTarget(target);
532
- // The default artifact set is best-effort: an engine without evidence
533
- // capture simply records none. Asking for one explicitly is a contract.
534
- for (const artifact of config.artifactsExplicit ? config.artifacts : []) {
535
- if (!provenance.artifactCapabilities.includes(artifact)) {
616
+ // A best-effort kind is captured when the engine can; a required one is a
617
+ // contract the engine must be able to honour before any test starts.
618
+ for (const [artifact, policy] of config.artifacts) {
619
+ if (policy === 'required' && !provenance.artifactCapabilities.includes(artifact)) {
536
620
  throw new ConfigurationError('UNSUPPORTED_ARTIFACT', `target "${target.name}" (engine ${provenance.engine.name}) does not support the configured "${artifact}" artifact`);
537
621
  }
538
622
  }