@e2edev/e2e 0.5.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 (415) hide show
  1. package/README.md +64 -25
  2. package/dist/agent/act.d.ts +2 -2
  3. package/dist/agent/act.js +14 -37
  4. package/dist/agent/act.js.map +1 -1
  5. package/dist/agent/actions.d.ts +2 -2
  6. package/dist/agent/actions.d.ts.map +1 -1
  7. package/dist/agent/actions.js +1 -1
  8. package/dist/agent/ai-sdk.d.ts +1 -2
  9. package/dist/agent/ai-sdk.d.ts.map +1 -1
  10. package/dist/agent/ai-sdk.js +1 -2
  11. package/dist/agent/ai-sdk.js.map +1 -1
  12. package/dist/agent/default-agent.d.ts +10 -32
  13. package/dist/agent/default-agent.d.ts.map +1 -1
  14. package/dist/agent/default-agent.js +6 -13
  15. package/dist/agent/default-agent.js.map +1 -1
  16. package/dist/agent/derived.d.ts +1 -1
  17. package/dist/agent/derived.js +1 -1
  18. package/dist/agent/error.d.ts +2 -4
  19. package/dist/agent/error.d.ts.map +1 -1
  20. package/dist/agent/error.js +3 -5
  21. package/dist/agent/error.js.map +1 -1
  22. package/dist/agent/executor.d.ts +23 -52
  23. package/dist/agent/executor.d.ts.map +1 -1
  24. package/dist/agent/executor.js +1 -2
  25. package/dist/agent/executor.js.map +1 -1
  26. package/dist/agent/index.d.ts +1 -1
  27. package/dist/agent/index.d.ts.map +1 -1
  28. package/dist/agent/index.js +10 -7
  29. package/dist/agent/index.js.map +1 -1
  30. package/dist/agent/invocation.d.ts +8 -6
  31. package/dist/agent/invocation.d.ts.map +1 -1
  32. package/dist/agent/invocation.js +9 -4
  33. package/dist/agent/invocation.js.map +1 -1
  34. package/dist/agent/ledger.d.ts +17 -12
  35. package/dist/agent/ledger.d.ts.map +1 -1
  36. package/dist/agent/ledger.js +6 -9
  37. package/dist/agent/ledger.js.map +1 -1
  38. package/dist/agent/model/adapter.d.ts +7 -4
  39. package/dist/agent/model/adapter.d.ts.map +1 -1
  40. package/dist/agent/model/adapter.js +2 -2
  41. package/dist/agent/model/adapter.js.map +1 -1
  42. package/dist/agent/model/router.d.ts +1 -1
  43. package/dist/agent/model/router.d.ts.map +1 -1
  44. package/dist/agent/model/router.js +1 -1
  45. package/dist/agent/model/router.js.map +1 -1
  46. package/dist/agent/model/sdk.d.ts +11 -1
  47. package/dist/agent/model/sdk.d.ts.map +1 -1
  48. package/dist/agent/model/sdk.js +54 -10
  49. package/dist/agent/model/sdk.js.map +1 -1
  50. package/dist/agent/observation.d.ts +7 -7
  51. package/dist/agent/observation.d.ts.map +1 -1
  52. package/dist/agent/observation.js +7 -7
  53. package/dist/agent/observation.js.map +1 -1
  54. package/dist/agent/phases.d.ts +3 -3
  55. package/dist/agent/phases.d.ts.map +1 -1
  56. package/dist/agent/phases.js +4 -4
  57. package/dist/agent/phases.js.map +1 -1
  58. package/dist/agent/primitives.d.ts +4 -25
  59. package/dist/agent/primitives.d.ts.map +1 -1
  60. package/dist/agent/primitives.js +3 -36
  61. package/dist/agent/primitives.js.map +1 -1
  62. package/dist/agent/prompts.d.ts +1 -1
  63. package/dist/agent/prompts.js +1 -1
  64. package/dist/agent/protocol.d.ts +2 -3
  65. package/dist/agent/protocol.d.ts.map +1 -1
  66. package/dist/agent/protocol.js +2 -3
  67. package/dist/agent/protocol.js.map +1 -1
  68. package/dist/agent/public.d.ts +8 -10
  69. package/dist/agent/public.d.ts.map +1 -1
  70. package/dist/agent/public.js +7 -8
  71. package/dist/agent/public.js.map +1 -1
  72. package/dist/agent/replay.d.ts +2 -2
  73. package/dist/agent/replay.d.ts.map +1 -1
  74. package/dist/agent/replay.js +1 -1
  75. package/dist/agent/secrets.d.ts +3 -3
  76. package/dist/agent/secrets.d.ts.map +1 -1
  77. package/dist/agent/secrets.js +4 -4
  78. package/dist/agent/secrets.js.map +1 -1
  79. package/dist/agent/step-cache.d.ts +1 -1
  80. package/dist/agent/step-cache.d.ts.map +1 -1
  81. package/dist/agent/step-cache.js +7 -1
  82. package/dist/agent/step-cache.js.map +1 -1
  83. package/dist/agent/tool-loop.d.ts +9 -33
  84. package/dist/agent/tool-loop.d.ts.map +1 -1
  85. package/dist/agent/tool-loop.js +15 -38
  86. package/dist/agent/tool-loop.js.map +1 -1
  87. package/dist/agent/tool.d.ts +4 -5
  88. package/dist/agent/tool.d.ts.map +1 -1
  89. package/dist/agent/tool.js +2 -7
  90. package/dist/agent/tool.js.map +1 -1
  91. package/dist/cache/anchors.d.ts +2 -2
  92. package/dist/cache/anchors.d.ts.map +1 -1
  93. package/dist/cache/anchors.js +1 -1
  94. package/dist/cache/context.d.ts +6 -1
  95. package/dist/cache/context.d.ts.map +1 -1
  96. package/dist/cache/context.js +2 -1
  97. package/dist/cache/context.js.map +1 -1
  98. package/dist/cache/decide.d.ts +1 -1
  99. package/dist/cache/decide.js +1 -1
  100. package/dist/cache/identity.d.ts +9 -9
  101. package/dist/cache/identity.d.ts.map +1 -1
  102. package/dist/cache/identity.js +6 -6
  103. package/dist/cache/identity.js.map +1 -1
  104. package/dist/cache/recorder.d.ts +4 -2
  105. package/dist/cache/recorder.d.ts.map +1 -1
  106. package/dist/cache/recorder.js +10 -1
  107. package/dist/cache/recorder.js.map +1 -1
  108. package/dist/cache/relocate.d.ts +2 -2
  109. package/dist/cache/relocate.d.ts.map +1 -1
  110. package/dist/cache/relocate.js +1 -1
  111. package/dist/cache/store.d.ts +1 -1
  112. package/dist/cache/store.js +1 -1
  113. package/dist/cache/trace.d.ts +16 -1
  114. package/dist/cache/trace.d.ts.map +1 -1
  115. package/dist/cache/trace.js +22 -1
  116. package/dist/cache/trace.js.map +1 -1
  117. package/dist/cli/bin.js +9 -1
  118. package/dist/cli/bin.js.map +1 -1
  119. package/dist/cli/cache.d.ts +25 -0
  120. package/dist/cli/cache.d.ts.map +1 -0
  121. package/dist/cli/cache.js +249 -0
  122. package/dist/cli/cache.js.map +1 -0
  123. package/dist/cli/docs-url.d.ts +3 -0
  124. package/dist/cli/docs-url.d.ts.map +1 -0
  125. package/dist/cli/docs-url.js +3 -0
  126. package/dist/cli/docs-url.js.map +1 -0
  127. package/dist/cli/guide.d.ts +4 -0
  128. package/dist/cli/guide.d.ts.map +1 -0
  129. package/dist/cli/guide.js +16 -0
  130. package/dist/cli/guide.js.map +1 -0
  131. package/dist/cli/index.d.ts +1 -1
  132. package/dist/cli/index.d.ts.map +1 -1
  133. package/dist/cli/index.js +211 -42
  134. package/dist/cli/index.js.map +1 -1
  135. package/dist/cli/init/agent-skill.d.ts +34 -0
  136. package/dist/cli/init/agent-skill.d.ts.map +1 -0
  137. package/dist/cli/init/agent-skill.js +44 -0
  138. package/dist/cli/init/agent-skill.js.map +1 -0
  139. package/dist/cli/init/{backends.d.ts → engines.d.ts} +39 -32
  140. package/dist/cli/init/engines.d.ts.map +1 -0
  141. package/dist/cli/init/{backends.js → engines.js} +43 -34
  142. package/dist/cli/init/engines.js.map +1 -0
  143. package/dist/cli/init/package.d.ts +19 -3
  144. package/dist/cli/init/package.d.ts.map +1 -1
  145. package/dist/cli/init/package.js +20 -20
  146. package/dist/cli/init/package.js.map +1 -1
  147. package/dist/cli/init/scaffold.d.ts +3 -3
  148. package/dist/cli/init/scaffold.d.ts.map +1 -1
  149. package/dist/cli/init/scaffold.js +13 -12
  150. package/dist/cli/init/scaffold.js.map +1 -1
  151. package/dist/cli/init.d.ts +14 -2
  152. package/dist/cli/init.d.ts.map +1 -1
  153. package/dist/cli/init.js +104 -25
  154. package/dist/cli/init.js.map +1 -1
  155. package/dist/cli/signals.d.ts +5 -2
  156. package/dist/cli/signals.d.ts.map +1 -1
  157. package/dist/cli/signals.js +9 -3
  158. package/dist/cli/signals.js.map +1 -1
  159. package/dist/cli/skill.d.ts +16 -0
  160. package/dist/cli/skill.d.ts.map +1 -0
  161. package/dist/cli/skill.js +57 -0
  162. package/dist/cli/skill.js.map +1 -0
  163. package/dist/collect/collect.d.ts +40 -3
  164. package/dist/collect/collect.d.ts.map +1 -1
  165. package/dist/collect/collect.js +142 -19
  166. package/dist/collect/collect.js.map +1 -1
  167. package/dist/collect/registry.d.ts +1 -1
  168. package/dist/collect/registry.d.ts.map +1 -1
  169. package/dist/collect/registry.js +2 -2
  170. package/dist/collect/registry.js.map +1 -1
  171. package/dist/collect/select.d.ts +1 -1
  172. package/dist/collect/select.d.ts.map +1 -1
  173. package/dist/collect/select.js +81 -8
  174. package/dist/collect/select.js.map +1 -1
  175. package/dist/config/agent.d.ts +14 -2
  176. package/dist/config/agent.d.ts.map +1 -1
  177. package/dist/config/agent.js +36 -11
  178. package/dist/config/agent.js.map +1 -1
  179. package/dist/config/app.d.ts +76 -19
  180. package/dist/config/app.d.ts.map +1 -1
  181. package/dist/config/app.js +159 -104
  182. package/dist/config/app.js.map +1 -1
  183. package/dist/config/diagnose.d.ts +15 -0
  184. package/dist/config/diagnose.d.ts.map +1 -0
  185. package/dist/config/diagnose.js +122 -0
  186. package/dist/config/diagnose.js.map +1 -0
  187. package/dist/config/load.d.ts +9 -1
  188. package/dist/config/load.d.ts.map +1 -1
  189. package/dist/config/load.js +35 -3
  190. package/dist/config/load.js.map +1 -1
  191. package/dist/config/resolve.d.ts +8 -7
  192. package/dist/config/resolve.d.ts.map +1 -1
  193. package/dist/config/resolve.js +73 -40
  194. package/dist/config/resolve.js.map +1 -1
  195. package/dist/config/validate.d.ts +6 -2
  196. package/dist/config/validate.d.ts.map +1 -1
  197. package/dist/config/validate.js +20 -3
  198. package/dist/config/validate.js.map +1 -1
  199. package/dist/credentials.d.ts +1 -1
  200. package/dist/credentials.d.ts.map +1 -1
  201. package/dist/credentials.js +1 -1
  202. package/dist/credentials.js.map +1 -1
  203. package/dist/{backend → engine}/contract.d.ts +27 -19
  204. package/dist/engine/contract.d.ts.map +1 -0
  205. package/dist/{backend → engine}/contract.js +18 -18
  206. package/dist/engine/contract.js.map +1 -0
  207. package/dist/{backend → engine}/index.d.ts +141 -79
  208. package/dist/engine/index.d.ts.map +1 -0
  209. package/dist/{backend → engine}/index.js +62 -37
  210. package/dist/engine/index.js.map +1 -0
  211. package/dist/engine/session.d.ts +23 -0
  212. package/dist/engine/session.d.ts.map +1 -0
  213. package/dist/{backend → engine}/session.js +58 -51
  214. package/dist/engine/session.js.map +1 -0
  215. package/dist/{backend → engine}/surface.d.ts +11 -11
  216. package/dist/engine/surface.d.ts.map +1 -0
  217. package/dist/{backend → engine}/surface.js +2 -2
  218. package/dist/engine/surface.js.map +1 -0
  219. package/dist/engine/timing.d.ts.map +1 -0
  220. package/dist/engine/timing.js +8 -0
  221. package/dist/engine/timing.js.map +1 -0
  222. package/dist/expect/async.d.ts +1 -1
  223. package/dist/expect/async.d.ts.map +1 -1
  224. package/dist/expect/async.js +37 -1
  225. package/dist/expect/async.js.map +1 -1
  226. package/dist/expect/index.js +1 -1
  227. package/dist/expect/values.d.ts +1 -1
  228. package/dist/expect/values.d.ts.map +1 -1
  229. package/dist/expect/values.js +1 -1
  230. package/dist/expect/values.js.map +1 -1
  231. package/dist/index.d.ts +3 -5
  232. package/dist/index.d.ts.map +1 -1
  233. package/dist/index.js +1 -5
  234. package/dist/index.js.map +1 -1
  235. package/dist/internal/brands.d.ts +1 -1
  236. package/dist/internal/brands.d.ts.map +1 -1
  237. package/dist/internal/brands.js +1 -1
  238. package/dist/internal/brands.js.map +1 -1
  239. package/dist/internal/errors.d.ts +37 -19
  240. package/dist/internal/errors.d.ts.map +1 -1
  241. package/dist/internal/errors.js +94 -44
  242. package/dist/internal/errors.js.map +1 -1
  243. package/dist/internal/globs.d.ts +2 -2
  244. package/dist/internal/globs.d.ts.map +1 -1
  245. package/dist/internal/globs.js +2 -2
  246. package/dist/internal/globs.js.map +1 -1
  247. package/dist/internal/ids.d.ts +3 -3
  248. package/dist/internal/ids.d.ts.map +1 -1
  249. package/dist/internal/ids.js +3 -3
  250. package/dist/internal/ids.js.map +1 -1
  251. package/dist/internal/node-version.d.ts +10 -0
  252. package/dist/internal/node-version.d.ts.map +1 -0
  253. package/dist/internal/node-version.js +28 -0
  254. package/dist/internal/node-version.js.map +1 -0
  255. package/dist/internal/objects.d.ts +21 -0
  256. package/dist/internal/objects.d.ts.map +1 -0
  257. package/dist/internal/objects.js +14 -0
  258. package/dist/internal/objects.js.map +1 -0
  259. package/dist/internal/package-manager.d.ts +10 -0
  260. package/dist/internal/package-manager.d.ts.map +1 -0
  261. package/dist/internal/package-manager.js +43 -0
  262. package/dist/internal/package-manager.js.map +1 -0
  263. package/dist/internal/redact.d.ts +1 -1
  264. package/dist/internal/redact.d.ts.map +1 -1
  265. package/dist/internal/redact.js +1 -1
  266. package/dist/internal/redact.js.map +1 -1
  267. package/dist/internal/suggest.d.ts +16 -0
  268. package/dist/internal/suggest.d.ts.map +1 -0
  269. package/dist/internal/suggest.js +61 -0
  270. package/dist/internal/suggest.js.map +1 -0
  271. package/dist/internal/text.d.ts +1 -1
  272. package/dist/internal/text.d.ts.map +1 -1
  273. package/dist/internal/text.js +1 -1
  274. package/dist/internal/text.js.map +1 -1
  275. package/dist/internal/urls.d.ts +3 -3
  276. package/dist/internal/urls.d.ts.map +1 -1
  277. package/dist/internal/urls.js +8 -3
  278. package/dist/internal/urls.js.map +1 -1
  279. package/dist/locator/engine.d.ts +7 -7
  280. package/dist/locator/engine.d.ts.map +1 -1
  281. package/dist/locator/engine.js +14 -14
  282. package/dist/locator/engine.js.map +1 -1
  283. package/dist/locator/expression.d.ts +5 -3
  284. package/dist/locator/expression.d.ts.map +1 -1
  285. package/dist/locator/expression.js +25 -5
  286. package/dist/locator/expression.js.map +1 -1
  287. package/dist/locator/screen.d.ts +1 -1
  288. package/dist/locator/screen.d.ts.map +1 -1
  289. package/dist/locator/screen.js +3 -3
  290. package/dist/locator/screen.js.map +1 -1
  291. package/dist/report/build.d.ts +10 -9
  292. package/dist/report/build.d.ts.map +1 -1
  293. package/dist/report/build.js +25 -22
  294. package/dist/report/build.js.map +1 -1
  295. package/dist/report/code-frame.d.ts +8 -4
  296. package/dist/report/code-frame.d.ts.map +1 -1
  297. package/dist/report/code-frame.js +23 -18
  298. package/dist/report/code-frame.js.map +1 -1
  299. package/dist/report/debug-steps.js +1 -1
  300. package/dist/report/debug-steps.js.map +1 -1
  301. package/dist/report/format.d.ts +73 -0
  302. package/dist/report/format.d.ts.map +1 -0
  303. package/dist/report/format.js +147 -0
  304. package/dist/report/format.js.map +1 -0
  305. package/dist/report/junit.d.ts +1 -1
  306. package/dist/report/junit.d.ts.map +1 -1
  307. package/dist/report/junit.js +1 -1
  308. package/dist/report/junit.js.map +1 -1
  309. package/dist/report/list.d.ts +96 -47
  310. package/dist/report/list.d.ts.map +1 -1
  311. package/dist/report/list.js +489 -244
  312. package/dist/report/list.js.map +1 -1
  313. package/dist/report/live-window.d.ts +28 -0
  314. package/dist/report/live-window.d.ts.map +1 -0
  315. package/dist/report/live-window.js +102 -0
  316. package/dist/report/live-window.js.map +1 -0
  317. package/dist/report/write.d.ts +1 -1
  318. package/dist/report/write.d.ts.map +1 -1
  319. package/dist/report/write.js +1 -1
  320. package/dist/report/write.js.map +1 -1
  321. package/dist/run/budget.d.ts +2 -2
  322. package/dist/run/budget.js +2 -2
  323. package/dist/run/declared-processes.d.ts +30 -0
  324. package/dist/run/declared-processes.d.ts.map +1 -0
  325. package/dist/run/declared-processes.js +61 -0
  326. package/dist/run/declared-processes.js.map +1 -0
  327. package/dist/run/events.d.ts +30 -2
  328. package/dist/run/events.d.ts.map +1 -1
  329. package/dist/run/events.js.map +1 -1
  330. package/dist/run/execute.d.ts +19 -16
  331. package/dist/run/execute.d.ts.map +1 -1
  332. package/dist/run/execute.js +65 -67
  333. package/dist/run/execute.js.map +1 -1
  334. package/dist/run/fixture-recording.d.ts +10 -4
  335. package/dist/run/fixture-recording.d.ts.map +1 -1
  336. package/dist/run/fixture-recording.js +19 -6
  337. package/dist/run/fixture-recording.js.map +1 -1
  338. package/dist/run/fixtures.d.ts +2 -2
  339. package/dist/run/fixtures.d.ts.map +1 -1
  340. package/dist/run/fixtures.js +72 -44
  341. package/dist/run/fixtures.js.map +1 -1
  342. package/dist/run/in-process.d.ts +1 -1
  343. package/dist/run/in-process.js +1 -1
  344. package/dist/run/managed-process.d.ts +46 -9
  345. package/dist/run/managed-process.d.ts.map +1 -1
  346. package/dist/run/managed-process.js +136 -50
  347. package/dist/run/managed-process.js.map +1 -1
  348. package/dist/run/realm.d.ts +2 -2
  349. package/dist/run/realm.js +2 -2
  350. package/dist/run/runner.d.ts +23 -1
  351. package/dist/run/runner.d.ts.map +1 -1
  352. package/dist/run/runner.js +111 -40
  353. package/dist/run/runner.js.map +1 -1
  354. package/dist/run/scheduler.d.ts +5 -5
  355. package/dist/run/scheduler.d.ts.map +1 -1
  356. package/dist/run/scheduler.js +7 -7
  357. package/dist/run/scheduler.js.map +1 -1
  358. package/dist/run/serial.d.ts +10 -2
  359. package/dist/run/serial.d.ts.map +1 -1
  360. package/dist/run/serial.js +5 -3
  361. package/dist/run/serial.js.map +1 -1
  362. package/dist/run/sessions.d.ts +10 -10
  363. package/dist/run/sessions.d.ts.map +1 -1
  364. package/dist/run/sessions.js +11 -11
  365. package/dist/run/sessions.js.map +1 -1
  366. package/dist/run/steps.d.ts +3 -3
  367. package/dist/run/steps.d.ts.map +1 -1
  368. package/dist/run/steps.js +1 -1
  369. package/dist/run/steps.js.map +1 -1
  370. package/dist/run/units.d.ts +1 -1
  371. package/dist/run/units.js +1 -1
  372. package/dist/run/worker/entry.d.ts +1 -1
  373. package/dist/run/worker/entry.js +2 -2
  374. package/dist/run/worker/entry.js.map +1 -1
  375. package/dist/run/worker/protocol.d.ts +18 -6
  376. package/dist/run/worker/protocol.d.ts.map +1 -1
  377. package/dist/run/worker/protocol.js +1 -1
  378. package/dist/run/worker/protocol.js.map +1 -1
  379. package/dist/run/worker/session.d.ts +2 -2
  380. package/dist/run/worker/session.d.ts.map +1 -1
  381. package/dist/run/worker/session.js +5 -3
  382. package/dist/run/worker/session.js.map +1 -1
  383. package/dist/types.d.ts +58 -41
  384. package/dist/types.d.ts.map +1 -1
  385. package/dist/types.js +2 -2
  386. package/package.json +13 -12
  387. package/skills/e2e/SKILL.md +110 -0
  388. package/skills/e2e/references/agent.md +210 -0
  389. package/skills/e2e/references/debugging.md +81 -0
  390. package/skills/e2e/references/running.md +153 -0
  391. package/skills/e2e/references/setup.md +238 -0
  392. package/skills/e2e/references/writing-tests.md +289 -0
  393. package/dist/backend/contract.d.ts.map +0 -1
  394. package/dist/backend/contract.js.map +0 -1
  395. package/dist/backend/index.d.ts.map +0 -1
  396. package/dist/backend/index.js.map +0 -1
  397. package/dist/backend/session.d.ts +0 -23
  398. package/dist/backend/session.d.ts.map +0 -1
  399. package/dist/backend/session.js.map +0 -1
  400. package/dist/backend/surface.d.ts.map +0 -1
  401. package/dist/backend/surface.js.map +0 -1
  402. package/dist/backend/timing.d.ts.map +0 -1
  403. package/dist/backend/timing.js +0 -8
  404. package/dist/backend/timing.js.map +0 -1
  405. package/dist/cli/init/backends.d.ts.map +0 -1
  406. package/dist/cli/init/backends.js.map +0 -1
  407. package/dist/report/live-status.d.ts +0 -51
  408. package/dist/report/live-status.d.ts.map +0 -1
  409. package/dist/report/live-status.js +0 -163
  410. package/dist/report/live-status.js.map +0 -1
  411. package/dist/run/fixture-legacy.d.ts +0 -36
  412. package/dist/run/fixture-legacy.d.ts.map +0 -1
  413. package/dist/run/fixture-legacy.js +0 -143
  414. package/dist/run/fixture-legacy.js.map +0 -1
  415. /package/dist/{backend → engine}/timing.d.ts +0 -0
@@ -1,14 +1,16 @@
1
1
  /**
2
2
  * Failure-location presentation: finds the user's failing line in a stack and
3
- * renders a small annotated code frame around it. Generic over reporters; the
4
- * list reporter is simply its first consumer.
3
+ * renders a small annotated code frame around it, in vitest's frame style.
4
+ * Generic over reporters; the list reporter is simply its first consumer.
5
5
  */
6
6
  import { readFileSync } from 'node:fs';
7
7
  import path from 'node:path';
8
8
  import { fileURLToPath } from 'node:url';
9
- import pc from 'picocolors';
10
- import { sanitizeText, truncateUtf8 } from '../internal/errors.js';
11
- const MAX_FIELD_BYTES = 8192;
9
+ import { bounded, terminalColumns } from './format.js';
10
+ /** Lines of context on each side of the failing line. */
11
+ const FRAME_RANGE = 2;
12
+ /** A source line longer than this is minified output; the frame would be noise. */
13
+ const MAX_FRAME_LINE_CHARS = 200;
12
14
  const FRAME_PATTERN = /((?:file:\/\/)?\/[^):]+):(\d+):(\d+)\)?\s*$/;
13
15
  /**
14
16
  * First stack frame inside the project and outside node_modules: the line in
@@ -40,8 +42,11 @@ export function userFrame(stack, projectRoot) {
40
42
  }
41
43
  return undefined;
42
44
  }
43
- /** Renders the failing line with one line of context and a column caret. */
44
- export function codeFrame(frame) {
45
+ /**
46
+ * Renders the failing line with two lines of context on each side and a
47
+ * column caret, gutter-numbered like vitest (` 28| code`).
48
+ */
49
+ export function codeFrame(frame, pc) {
45
50
  let source;
46
51
  try {
47
52
  source = readFileSync(frame.file, 'utf8');
@@ -49,23 +54,23 @@ export function codeFrame(frame) {
49
54
  catch {
50
55
  return [];
51
56
  }
52
- const lines = source.split('\n');
57
+ const lines = source.split(/\r?\n/);
53
58
  const index = frame.line - 1;
54
59
  if (index < 0 || index >= lines.length)
55
60
  return [];
56
- const start = Math.max(0, index - 1);
57
- const end = Math.min(lines.length - 1, index + 1);
58
- const width = String(end + 1).length;
61
+ const start = Math.max(0, index - FRAME_RANGE);
62
+ const end = Math.min(lines.length - 1, index + FRAME_RANGE);
63
+ const maxChars = Math.max(20, terminalColumns() - 10);
64
+ const gutter = (no = '') => pc.gray(`${String(no).padStart(3)}|`);
59
65
  const rows = [];
60
66
  for (let i = start; i <= end; i += 1) {
61
- const text = truncateUtf8(sanitizeText(lines[i] ?? ''), MAX_FIELD_BYTES);
62
- const number = String(i + 1).padStart(width);
67
+ const raw = bounded(lines[i] ?? '').replaceAll('\t', ' ');
68
+ if (raw.length > MAX_FRAME_LINE_CHARS)
69
+ return [];
70
+ const text = raw.length > maxChars ? `${raw.slice(0, maxChars - 1)}…` : raw.trimEnd();
71
+ rows.push(`${gutter(i + 1)}${text === '' ? '' : ` ${text}`}`);
63
72
  if (i === index) {
64
- rows.push(`${pc.red('>')} ${number} | ${text}`);
65
- rows.push(` ${' '.repeat(width)} | ${' '.repeat(Math.max(0, frame.column - 1))}${pc.red('^')}`);
66
- }
67
- else {
68
- rows.push(pc.dim(` ${number} | ${text}`));
73
+ rows.push(`${gutter()}${' '.repeat(Math.max(1, frame.column))}${pc.red('^')}`);
69
74
  }
70
75
  }
71
76
  return rows;
@@ -1 +1 @@
1
- {"version":3,"file":"code-frame.js","sourceRoot":"","sources":["../../src/report/code-frame.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-frame.js","sourceRoot":"","sources":["../../src/report/code-frame.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ export function agentStepTable(results, serialGroups) {
26
26
  formatMs(step.durationMs),
27
27
  formatMs(eventMs(step, 'model')),
28
28
  formatMs(eventMs(step, 'observation')),
29
- formatMs(eventMs(step, 'backend')),
29
+ formatMs(eventMs(step, 'engine')),
30
30
  String(step.model?.calls ?? 0),
31
31
  `${String(step.model?.inputTokens ?? 0)}/${String(step.model?.outputTokens ?? 0)}`,
32
32
  step.model?.estimatedCostUsd === undefined ? '-' : formatUsd(step.model.estimatedCostUsd),
@@ -1 +1 @@
1
- {"version":3,"file":"debug-steps.js","sourceRoot":"","sources":["../../src/report/debug-steps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debug-steps.js","sourceRoot":"","sources":["../../src/report/debug-steps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Pure presentation helpers shared by the terminal reporters: colors, the
3
+ * terminal width, durations, counters, and model-usage tallies. Stateless, so
4
+ * the reporters own every decision about what to print and when.
5
+ */
6
+ import picocolors from 'picocolors';
7
+ import type { ResultStatus } from '../run/records.ts';
8
+ import type { StepRecord } from '../run/steps.ts';
9
+ /** A picocolors instance; the reporter decides whether it emits color. */
10
+ export type Colors = ReturnType<typeof picocolors.createColors>;
11
+ /**
12
+ * Sanitized and bounded: the one form untrusted text takes on the terminal.
13
+ * Tabs become spaces, since a tab's width depends on the column it lands in
14
+ * and would break the live window's row accounting.
15
+ */
16
+ export declare function bounded(text: string): string;
17
+ /** Clips to `max` characters with an ellipsis; untouched when it fits. */
18
+ export declare function ellipsize(text: string, max: number): string;
19
+ /** The terminal width; a pty without a size reports 0, which counts as unknown. */
20
+ export declare function terminalColumns(): number;
21
+ /** The terminal height; a pty without a size reports 0, which counts as unknown. */
22
+ export declare function terminalRows(): number;
23
+ /** vitest's duration format: whole milliseconds under a second, two decimals above. */
24
+ export declare function formatTime(ms: number): string;
25
+ /** Wall-clock `HH:MM:SS` for the summary's `Start at` row. */
26
+ export declare function formatClock(date: Date): string;
27
+ /** Compact token count: plain under a thousand, `12.4k`, then `4.2M`. */
28
+ export declare function formatTokens(count: number): string;
29
+ /** One padded summary title, right-aligned like vitest's `Test Files` column. */
30
+ export declare function padTitle(pc: Colors, title: string): string;
31
+ /**
32
+ * The dashes of a full-width rule around `text`: centered, or with the text
33
+ * pushed to the right edge as vitest draws `[1/3]` markers. Uncolored, so the
34
+ * caller colors the dashes and the text independently.
35
+ */
36
+ export declare function rule(text: string, align: 'center' | 'right'): {
37
+ before: string;
38
+ after: string;
39
+ };
40
+ export interface Counters {
41
+ passed: number;
42
+ failed: number;
43
+ flaky: number;
44
+ skipped: number;
45
+ total: number;
46
+ }
47
+ export declare function emptyCounters(): Counters;
48
+ /** The counter a result status lands in: every non-success status is a failure. */
49
+ export declare function statusBucket(status: ResultStatus): 'passed' | 'failed' | 'flaky' | 'skipped';
50
+ /** Counts results by bucket; `total` is the number of items. */
51
+ export declare function tally(items: readonly {
52
+ readonly status: ResultStatus;
53
+ }[]): Counters;
54
+ /** A file's outcome from its tests: failed if any did, skipped if all did, else passed. */
55
+ export declare function fileOutcome(counters: Counters): 'passed' | 'failed' | 'skipped';
56
+ /** `2 failed | 10 passed | 1 flaky (13)` in vitest's colors and order. */
57
+ export declare function stateString(pc: Colors, counters: Counters): string;
58
+ export interface AiUsage {
59
+ calls: number;
60
+ tokens: number;
61
+ costUsd: number | undefined;
62
+ }
63
+ export declare function emptyUsage(): AiUsage;
64
+ export declare function addUsage(into: AiUsage, usage: AiUsage): void;
65
+ /** The model usage of several step lists summed. */
66
+ export declare function stepsUsage(stepLists: readonly (readonly StepRecord[])[]): AiUsage;
67
+ /** The model usage of several items summed. */
68
+ export declare function sumUsage(items: readonly {
69
+ readonly usage: AiUsage;
70
+ }[]): AiUsage;
71
+ /** One dim `ai …` segment, or undefined when no model was used. */
72
+ export declare function aiSegment(usage: AiUsage): string | undefined;
73
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/report/format.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,0EAA0E;AAC1E,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AAQhE;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,mFAAmF;AACnF,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,oFAAoF;AACpF,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE9C;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlD;AAOD,iFAAiF;AACjF,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAM/F;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,IAAI,QAAQ,CAExC;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAE5F;AAED,gEAAgE;AAChE,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS;IAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE,EAAE,GAAG,QAAQ,CAOnF;AAED,2FAA2F;AAC3F,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAI/E;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAQlE;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAI5D;AAcD,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,GAAG,OAAO,CAIjF;AAED,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,OAAO,CAI/E;AAED,mEAAmE;AACnE,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI5D"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Pure presentation helpers shared by the terminal reporters: colors, the
3
+ * terminal width, durations, counters, and model-usage tallies. Stateless, so
4
+ * the reporters own every decision about what to print and when.
5
+ */
6
+ import { stripVTControlCharacters } from 'node:util';
7
+ import picocolors from 'picocolors';
8
+ import { sanitizeText, truncateUtf8 } from '../internal/errors.js';
9
+ /** Every untrusted field is capped here before it reaches the terminal. */
10
+ const MAX_FIELD_BYTES = 8192;
11
+ const LONG_DASH = '⎯';
12
+ /** Width of the summary's right-aligned title column (`Test Files`). */
13
+ const TITLE_WIDTH = 11;
14
+ /**
15
+ * Sanitized and bounded: the one form untrusted text takes on the terminal.
16
+ * Tabs become spaces, since a tab's width depends on the column it lands in
17
+ * and would break the live window's row accounting.
18
+ */
19
+ export function bounded(text) {
20
+ return truncateUtf8(sanitizeText(text), MAX_FIELD_BYTES).replaceAll('\t', ' ');
21
+ }
22
+ /** Clips to `max` characters with an ellipsis; untouched when it fits. */
23
+ export function ellipsize(text, max) {
24
+ const chars = [...text];
25
+ return chars.length <= max ? text : `${chars.slice(0, Math.max(0, max - 1)).join('')}…`;
26
+ }
27
+ /** The terminal width; a pty without a size reports 0, which counts as unknown. */
28
+ export function terminalColumns() {
29
+ return process.stdout.columns || 80;
30
+ }
31
+ /** The terminal height; a pty without a size reports 0, which counts as unknown. */
32
+ export function terminalRows() {
33
+ return process.stdout.rows || 40;
34
+ }
35
+ /** vitest's duration format: whole milliseconds under a second, two decimals above. */
36
+ export function formatTime(ms) {
37
+ return ms > 1_000 ? `${(ms / 1_000).toFixed(2)}s` : `${Math.round(ms)}ms`;
38
+ }
39
+ /** Wall-clock `HH:MM:SS` for the summary's `Start at` row. */
40
+ export function formatClock(date) {
41
+ return date.toTimeString().split(' ')[0] ?? '';
42
+ }
43
+ /** Compact token count: plain under a thousand, `12.4k`, then `4.2M`. */
44
+ export function formatTokens(count) {
45
+ if (count < 1_000)
46
+ return `${count}`;
47
+ if (count < 1_000_000)
48
+ return `${(count / 1_000).toFixed(1)}k`;
49
+ return `${(count / 1_000_000).toFixed(1)}M`;
50
+ }
51
+ /** USD with enough precision for sub-cent model calls. */
52
+ function formatCost(costUsd) {
53
+ return `$${costUsd.toFixed(costUsd < 0.1 ? 4 : 2)}`;
54
+ }
55
+ /** One padded summary title, right-aligned like vitest's `Test Files` column. */
56
+ export function padTitle(pc, title) {
57
+ return pc.dim(`${title.padStart(TITLE_WIDTH)} `);
58
+ }
59
+ /**
60
+ * The dashes of a full-width rule around `text`: centered, or with the text
61
+ * pushed to the right edge as vitest draws `[1/3]` markers. Uncolored, so the
62
+ * caller colors the dashes and the text independently.
63
+ */
64
+ export function rule(text, align) {
65
+ const columns = terminalColumns();
66
+ const width = stripVTControlCharacters(text).length;
67
+ const after = align === 'center' ? Math.max(0, Math.ceil((columns - width) / 2)) : 1;
68
+ const before = Math.max(0, columns - width - after);
69
+ return { before: LONG_DASH.repeat(before), after: LONG_DASH.repeat(after) };
70
+ }
71
+ export function emptyCounters() {
72
+ return { passed: 0, failed: 0, flaky: 0, skipped: 0, total: 0 };
73
+ }
74
+ /** The counter a result status lands in: every non-success status is a failure. */
75
+ export function statusBucket(status) {
76
+ return status === 'passed' || status === 'flaky' || status === 'skipped' ? status : 'failed';
77
+ }
78
+ /** Counts results by bucket; `total` is the number of items. */
79
+ export function tally(items) {
80
+ const counters = emptyCounters();
81
+ for (const item of items) {
82
+ counters[statusBucket(item.status)] += 1;
83
+ counters.total += 1;
84
+ }
85
+ return counters;
86
+ }
87
+ /** A file's outcome from its tests: failed if any did, skipped if all did, else passed. */
88
+ export function fileOutcome(counters) {
89
+ if (counters.failed > 0)
90
+ return 'failed';
91
+ if (counters.total > 0 && counters.skipped === counters.total)
92
+ return 'skipped';
93
+ return 'passed';
94
+ }
95
+ /** `2 failed | 10 passed | 1 flaky (13)` in vitest's colors and order. */
96
+ export function stateString(pc, counters) {
97
+ const parts = [
98
+ counters.failed > 0 ? pc.bold(pc.red(`${counters.failed} failed`)) : undefined,
99
+ pc.bold(pc.green(`${counters.passed} passed`)),
100
+ counters.flaky > 0 ? pc.yellow(`${counters.flaky} flaky`) : undefined,
101
+ counters.skipped > 0 ? pc.gray(`${counters.skipped} skipped`) : undefined,
102
+ ].filter((part) => part !== undefined);
103
+ return `${parts.join(pc.dim(' | '))}${pc.gray(` (${counters.total})`)}`;
104
+ }
105
+ export function emptyUsage() {
106
+ return { calls: 0, tokens: 0, costUsd: undefined };
107
+ }
108
+ export function addUsage(into, usage) {
109
+ into.calls += usage.calls;
110
+ into.tokens += usage.tokens;
111
+ if (usage.costUsd !== undefined)
112
+ into.costUsd = (into.costUsd ?? 0) + usage.costUsd;
113
+ }
114
+ /** Accumulates the model usage of one step list into a running total. */
115
+ function addStepsUsage(usage, steps) {
116
+ for (const step of steps) {
117
+ if (step.model === undefined)
118
+ continue;
119
+ usage.calls += step.model.calls;
120
+ usage.tokens += step.model.inputTokens + step.model.outputTokens;
121
+ if (step.model.estimatedCostUsd !== undefined) {
122
+ usage.costUsd = (usage.costUsd ?? 0) + step.model.estimatedCostUsd;
123
+ }
124
+ }
125
+ }
126
+ /** The model usage of several step lists summed. */
127
+ export function stepsUsage(stepLists) {
128
+ const usage = emptyUsage();
129
+ for (const steps of stepLists)
130
+ addStepsUsage(usage, steps);
131
+ return usage;
132
+ }
133
+ /** The model usage of several items summed. */
134
+ export function sumUsage(items) {
135
+ const total = emptyUsage();
136
+ for (const item of items)
137
+ addUsage(total, item.usage);
138
+ return total;
139
+ }
140
+ /** One dim `ai …` segment, or undefined when no model was used. */
141
+ export function aiSegment(usage) {
142
+ if (usage.calls === 0)
143
+ return undefined;
144
+ const cost = usage.costUsd === undefined ? '' : ` · ${formatCost(usage.costUsd)}`;
145
+ return `ai ${formatTokens(usage.tokens)} tokens${cost}`;
146
+ }
147
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/report/format.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** JUnit XML reporter (spec 06-cli.md): the report-1 document as `.e2e/junit.xml`. */
1
+ /** JUnit XML reporter: the report-1 document as `.e2e/junit.xml`. */
2
2
  import type { Report1Document } from './build.ts';
3
3
  /**
4
4
  * Renders the report-1 document as JUnit XML: one `<testsuite>` per test file
@@ -1 +1 @@
1
- {"version":3,"file":"junit.d.ts","sourceRoot":"","sources":["../../src/report/junit.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAGtF,OAAO,KAAK,EAAE,eAAe,EAAgD,MAAM,YAAY,CAAC;AA0MhG;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAwBjE"}
1
+ {"version":3,"file":"junit.d.ts","sourceRoot":"","sources":["../../src/report/junit.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAGrE,OAAO,KAAK,EAAE,eAAe,EAAgD,MAAM,YAAY,CAAC;AA0MhG;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAwBjE"}
@@ -1,4 +1,4 @@
1
- /** JUnit XML reporter (spec 06-cli.md): the report-1 document as `.e2e/junit.xml`. */
1
+ /** JUnit XML reporter: the report-1 document as `.e2e/junit.xml`. */
2
2
  import { sanitizeText } from '../internal/errors.js';
3
3
  /**
4
4
  * Code units XML 1.0 forbids beyond the control range `sanitizeText` already
@@ -1 +1 @@
1
- {"version":3,"file":"junit.js","sourceRoot":"","sources":["../../src/report/junit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"junit.js","sourceRoot":"","sources":["../../src/report/junit.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,21 @@
1
- /** Human-readable list reporter (spec 06-cli.md). */
1
+ /**
2
+ * Human-readable list reporter, styled after vitest's
3
+ * default reporter: one block per test file and target, a `Failed Tests`
4
+ * section with code frames, and a padded summary. On a TTY a live window
5
+ * below the log shows the running files, their tests, and the counters.
6
+ */
2
7
  import type { RunEventFact } from '../run/events.ts';
3
8
  export interface ListReporterOutput {
4
9
  write(line: string): void;
5
- /** Raw control write for live status rendering; omit to disable it. */
10
+ /** Raw control write for live window rendering; omit to disable it. */
6
11
  raw?(text: string): void;
7
12
  }
13
+ export interface ListReporterOptions {
14
+ /** Paint the live window; defaults to whether stdout is a TTY. */
15
+ live?: boolean;
16
+ /** Emit ANSI colors; defaults to picocolors' detection (TTY, CI, FORCE_COLOR). */
17
+ colors?: boolean;
18
+ }
8
19
  /**
9
20
  * Renders the run's event stream as the CLI's human-readable output. The
10
21
  * reporter is one sink on the run's single event spine, beside a host's
@@ -12,71 +23,109 @@ export interface ListReporterOutput {
12
23
  */
13
24
  export declare class ListReporter {
14
25
  private readonly output;
15
- private passed;
16
- private failed;
17
- private flaky;
18
- private skipped;
19
- private projectRoot;
20
- private readonly status;
21
- /** Base live-status text of each running pair, keyed `${testId}@${target}`. */
22
- private readonly liveBase;
23
- /** Current step line of each running pair, rendered under its header. */
24
- private readonly liveStep;
25
- /** Rolling window of the running step's latest model and backend calls. */
26
- private readonly liveEvents;
27
- /** Pairs whose permanent header line has been written. */
28
- private readonly headerPrinted;
29
- /** Run-wide model usage, summed from every reported result. */
30
- private readonly runAi;
31
- /** Colors follow live rendering: non-interactive sinks get plain text. */
32
26
  private readonly pc;
27
+ private readonly window;
28
+ private readonly separator;
29
+ private projectRoot;
30
+ /** Selected targets in declaration order; decides each badge's color. */
31
+ private targets;
32
+ /** When the run began: the summary's `Start at` and the origin of `Duration`. */
33
+ private startedAt;
34
+ /** File groups keyed `${target}\u0000${file}`, in first-seen order. */
35
+ private readonly groups;
36
+ /** Pairs executing right now, keyed by `pairKey`, in start order. */
37
+ private readonly running;
38
+ private readonly failures;
39
+ /**
40
+ * Serial groups whose members' results are still to come, by group id. The
41
+ * runner emits a group before its member results, and a member's details
42
+ * live only in the group.
43
+ */
44
+ private readonly pendingSerial;
33
45
  /** Run-level errors, printed once at the end; the stream carries them as they happen. */
34
46
  private readonly errors;
35
- constructor(output?: ListReporterOutput, options?: {
36
- live?: boolean;
37
- });
47
+ /** Run-wide model usage, summed from every reported result and serial group. */
48
+ private readonly runUsage;
49
+ constructor(output?: ListReporterOutput, options?: ListReporterOptions);
38
50
  /**
39
51
  * The reporter as an event sink: one dispatch per fact. Bound, so it can be
40
52
  * handed to the run's emitter directly.
41
53
  */
42
54
  readonly handle: (event: RunEventFact) => void;
55
+ /** Writes one permanent line without disturbing the live window. */
56
+ private print;
57
+ /** A target's colored badge, `|web|` when colors are off (vitest's convention). */
58
+ private badge;
59
+ /** A path relative to the project root when inside it, else as given. */
60
+ private displayPath;
61
+ private group;
62
+ private runStarted;
63
+ private plan;
43
64
  /** Acknowledged immediately, so a bounded teardown is not mistaken for a hang. */
44
65
  private runInterrupted;
45
- private runStarted;
46
- /** A worker began one test-target pair: show it in the live status block. */
66
+ /**
67
+ * A worker began one test-target pair: show it in the live window. A serial
68
+ * member replaces the previous member of its group, which has finished
69
+ * executing even though its result only arrives with the whole group.
70
+ */
47
71
  private testStarted;
48
72
  /**
49
- * Streams step progress of a running pair. With a single test running, the
50
- * whole story prints permanently and chronologically: a test header, one
51
- * line per step, one line per model or backend call, and a step summary -
52
- * the scrollback of a run reads without `--debug`. With parallel tests the
53
- * stream would interleave, so each pair instead shows its current step and
54
- * latest calls transiently in the live block.
73
+ * Streams step progress of a running pair. With a single test running, its
74
+ * agent steps print permanently and chronologically under a header naming
75
+ * the file and test - the scrollback of a long agentic run reads without
76
+ * `--debug`. Deterministic steps are fast and many, so they only ever show
77
+ * in the live window. With parallel tests the stream would interleave, so
78
+ * each pair instead shows its current step and latest calls transiently in
79
+ * the live window, and finished agent steps print with the test they
80
+ * belong to.
55
81
  */
56
82
  private step;
83
+ /** Holds a serial group until each of its members' results has read its details. */
84
+ private serialGroup;
57
85
  /**
58
- * Adds one serial group's model usage to the run totals. Member result
59
- * records intentionally carry no attempts, so the group record is the one
60
- * place their steps exist; summing here counts each member exactly once.
86
+ * The details behind one result. A serial member's come from its group; a
87
+ * group that never arrived (a stream out of contract) leaves them empty
88
+ * rather than failing the run.
61
89
  */
62
- private serialGroup;
63
- /** Writes one permanent line without disturbing the live block. */
64
- private writeAboveStatus;
90
+ private detailsOf;
91
+ private testFinished;
92
+ /** Counters over every reported result; the total is the plan's once it has arrived. */
93
+ private testCounters;
94
+ /** Counters over test files; a file lands in an outcome once its block has printed. */
95
+ private fileCounters;
65
96
  /**
66
- * Prints the permanent test header once, before its first step line, so
67
- * collapsed step summaries read under the test they belong to.
97
+ * Prints one file's block: the file line with its counts, then - when the
98
+ * file failed, had a flaky pass, streamed its steps, or is the run's only
99
+ * file - one line per test, as vitest lists tests for a failed module.
68
100
  */
69
- private ensureHeader;
101
+ private printGroup;
102
+ /** One test row under its file line, plus the first error line for a failure. */
103
+ private testLine;
70
104
  /**
71
- * Repaints one live entry: only the active step expands, showing its latest
72
- * calls under the spinner line; between steps the entry collapses to the
73
- * counter (its header is already permanent) or, before any step ran, the
74
- * test title. With parallel pairs the title stays as block context.
105
+ * vitest's padded summary, shared by the live window and the final report:
106
+ * files, tests, model usage, run errors, start time, and elapsed time.
75
107
  */
76
- private redrawLive;
77
- private testFinished;
78
- /** Names the user's failing line and renders a small code frame around it. */
79
- private writeFailureLocation;
108
+ private summaryRows;
109
+ /**
110
+ * The live window: running files and tests, then the summary. The block
111
+ * must fit the screen, because repainting more rows than the terminal has
112
+ * breaks the cursor-up erase: rows left after the summary go to the running
113
+ * tests, each test's calls share what remains once every test has its own
114
+ * line, and tests that still do not fit fold into one `more running` marker.
115
+ */
116
+ private renderWindow;
117
+ /** vitest's `Failed Tests` section: a banner, then each failure with its code frame. */
118
+ private printFailures;
119
+ /** A full-width red rule with a centered `FAIL`-style label. */
120
+ private errorBanner;
121
+ /** Names the user's failing line and renders a code frame around it. */
122
+ private printFailureLocation;
123
+ /**
124
+ * Run-level errors never arrive as results: they abort before, between, or
125
+ * after test execution. Without this the console shows only a bare exit
126
+ * code and the reason lives solely in report.json.
127
+ */
128
+ private printErrors;
80
129
  private runFinished;
81
130
  }
82
131
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/report/list.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAMrD,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,kBAAkB,CAAC;AAWjF,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uEAAuE;IACvE,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AA0FD;;;;GAIG;AACH,qBAAa,YAAY;IAuBrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAtBzB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAC1D,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwD;IAC9E,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAA6C;IAChE,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAEhD,YACmB,MAAM,GAAE,kBAAmC,EAC5D,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,EAKjC;IAED;;;OAGG;IACH,QAAQ,CAAC,MAAM,UAAW,YAAY,KAAG,IAAI,CAiC3C;IAEF,kFAAkF;IAClF,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,UAAU;IASlB,6EAA6E;IAC7E,OAAO,CAAC,WAAW;IAYnB;;;;;;;OAOG;IACH,OAAO,CAAC,IAAI;IA0CZ;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAQnB,mEAAmE;IACnE,OAAO,CAAC,gBAAgB;IAMxB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAMpB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IA2BlB,OAAO,CAAC,YAAY;IAyDpB,8EAA8E;IAC9E,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,WAAW;CAmCpB"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/report/list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,kBAAkB,CAAC;AA8DjF,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,uEAAuE;IACvE,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA+HD;;;;GAIG;AACH,qBAAa,YAAY;IA0BrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAzBzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAAqB;IACxC,yEAAyE;IACzE,OAAO,CAAC,OAAO,CAAyB;IACxC,iFAAiF;IACjF,OAAO,CAAC,SAAS,CAAc;IAC/B,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsE;IACpG,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IAEzC,YACmB,MAAM,GAAE,kBAAmC,EAC5D,OAAO,GAAE,mBAAwB,EAMlC;IAED;;;OAGG;IACH,QAAQ,CAAC,MAAM,UAAW,YAAY,KAAG,IAAI,CAiC3C;IAEF,oEAAoE;IACpE,OAAO,CAAC,KAAK;IAMb,mFAAmF;IACnF,OAAO,CAAC,KAAK;IAQb,yEAAyE;IACzE,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,IAAI;IAOZ,kFAAkF;IAClF,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAoBnB;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAI;IAkDZ,oFAAoF;IACpF,OAAO,CAAC,WAAW;IAInB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;IAyBpB,wFAAwF;IACxF,OAAO,CAAC,YAAY;IAOpB,uFAAuF;IACvF,OAAO,CAAC,YAAY;IASpB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IA0ClB,iFAAiF;IACjF,OAAO,CAAC,QAAQ;IA+BhB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAmBnB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAsDpB,wFAAwF;IACxF,OAAO,CAAC,aAAa;IA0BrB,gEAAgE;IAChE,OAAO,CAAC,WAAW;IAOnB,wEAAwE;IACxE,OAAO,CAAC,oBAAoB;IAU5B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,WAAW;CAyBpB"}