e2e 0.15.1 → 0.16.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 (1019) hide show
  1. package/README.md +51 -24
  2. package/dist/.build.json +1 -1
  3. package/dist/agent/act-validation.d.ts +10 -1
  4. package/dist/agent/act-validation.js +48 -1
  5. package/dist/agent/act.d.ts +1 -2
  6. package/dist/agent/act.js +25 -8
  7. package/dist/agent/action-dispatcher.d.ts +0 -1
  8. package/dist/agent/action-dispatcher.js +0 -1
  9. package/dist/agent/action-names.d.ts +0 -1
  10. package/dist/agent/action-names.js +0 -1
  11. package/dist/agent/actions.d.ts +0 -1
  12. package/dist/agent/actions.js +0 -1
  13. package/dist/agent/agent-brand.d.ts +0 -1
  14. package/dist/agent/agent-brand.js +0 -1
  15. package/dist/agent/ai-sdk.d.ts +7 -1
  16. package/dist/agent/ai-sdk.js +11 -1
  17. package/dist/agent/call-options.d.ts +0 -1
  18. package/dist/agent/call-options.js +0 -1
  19. package/dist/agent/default-agent.d.ts +0 -1
  20. package/dist/agent/default-agent.js +0 -1
  21. package/dist/agent/derived.d.ts +0 -1
  22. package/dist/agent/derived.js +0 -1
  23. package/dist/agent/error.d.ts +16 -4
  24. package/dist/agent/error.js +25 -7
  25. package/dist/agent/executor.d.ts +0 -1
  26. package/dist/agent/executor.js +0 -1
  27. package/dist/agent/index.d.ts +0 -1
  28. package/dist/agent/index.js +0 -1
  29. package/dist/agent/interactive-step.d.ts +0 -1
  30. package/dist/agent/interactive-step.js +0 -1
  31. package/dist/agent/invocation.d.ts +0 -1
  32. package/dist/agent/invocation.js +10 -5
  33. package/dist/agent/ledger.d.ts +0 -1
  34. package/dist/agent/ledger.js +0 -1
  35. package/dist/agent/loop-guards.d.ts +0 -1
  36. package/dist/agent/loop-guards.js +0 -1
  37. package/dist/agent/model/adapter.d.ts +0 -1
  38. package/dist/agent/model/adapter.js +0 -1
  39. package/dist/agent/model/overflow.d.ts +0 -1
  40. package/dist/agent/model/overflow.js +0 -1
  41. package/dist/agent/model/provider-hints.d.ts +0 -1
  42. package/dist/agent/model/provider-hints.js +0 -1
  43. package/dist/agent/model/schema.d.ts +0 -1
  44. package/dist/agent/model/schema.js +0 -1
  45. package/dist/agent/model/sdk.d.ts +0 -1
  46. package/dist/agent/model/sdk.js +0 -1
  47. package/dist/agent/model/stall.d.ts +0 -1
  48. package/dist/agent/model/stall.js +0 -1
  49. package/dist/agent/model/tool-choice.d.ts +24 -2
  50. package/dist/agent/model/tool-choice.js +27 -2
  51. package/dist/agent/observation-budget.d.ts +0 -1
  52. package/dist/agent/observation-budget.js +0 -1
  53. package/dist/agent/observation-feed.d.ts +0 -1
  54. package/dist/agent/observation-feed.js +0 -1
  55. package/dist/agent/observation.d.ts +0 -1
  56. package/dist/agent/observation.js +0 -1
  57. package/dist/agent/operation-queue.d.ts +0 -1
  58. package/dist/agent/operation-queue.js +0 -1
  59. package/dist/agent/phases.d.ts +0 -1
  60. package/dist/agent/phases.js +0 -1
  61. package/dist/agent/pixels.d.ts +0 -1
  62. package/dist/agent/pixels.js +0 -1
  63. package/dist/agent/point-tap.d.ts +0 -1
  64. package/dist/agent/point-tap.js +0 -1
  65. package/dist/agent/primitives.d.ts +6 -1
  66. package/dist/agent/primitives.js +4 -2
  67. package/dist/agent/prompts.d.ts +0 -1
  68. package/dist/agent/prompts.js +0 -1
  69. package/dist/agent/protocol.d.ts +0 -1
  70. package/dist/agent/protocol.js +0 -1
  71. package/dist/agent/public.d.ts +0 -1
  72. package/dist/agent/public.js +0 -1
  73. package/dist/agent/reading.d.ts +0 -1
  74. package/dist/agent/reading.js +0 -1
  75. package/dist/agent/replay.d.ts +0 -1
  76. package/dist/agent/replay.js +0 -1
  77. package/dist/agent/screen-update.d.ts +0 -1
  78. package/dist/agent/screen-update.js +0 -1
  79. package/dist/agent/scroll-target.d.ts +0 -1
  80. package/dist/agent/scroll-target.js +0 -1
  81. package/dist/agent/secrets.d.ts +0 -1
  82. package/dist/agent/secrets.js +0 -1
  83. package/dist/agent/settle-policy.d.ts +0 -1
  84. package/dist/agent/settle-policy.js +0 -1
  85. package/dist/agent/step-accounting.d.ts +0 -1
  86. package/dist/agent/step-accounting.js +0 -1
  87. package/dist/agent/step-cache.d.ts +14 -4
  88. package/dist/agent/step-cache.js +13 -4
  89. package/dist/agent/tool-loop.d.ts +0 -1
  90. package/dist/agent/tool-loop.js +62 -10
  91. package/dist/agent/tool-output.d.ts +0 -1
  92. package/dist/agent/tool-output.js +0 -1
  93. package/dist/agent/tool.d.ts +0 -1
  94. package/dist/agent/tool.js +0 -1
  95. package/dist/agent/transcript-compaction.d.ts +0 -1
  96. package/dist/agent/transcript-compaction.js +0 -1
  97. package/dist/agent/upload-paths.d.ts +0 -1
  98. package/dist/agent/upload-paths.js +0 -1
  99. package/dist/agent/usage.d.ts +0 -1
  100. package/dist/agent/usage.js +0 -1
  101. package/dist/cache/anchors.d.ts +0 -1
  102. package/dist/cache/anchors.js +0 -1
  103. package/dist/cache/context.d.ts +19 -7
  104. package/dist/cache/context.js +15 -22
  105. package/dist/cache/decide.d.ts +0 -1
  106. package/dist/cache/decide.js +0 -1
  107. package/dist/cache/identity.d.ts +0 -1
  108. package/dist/cache/identity.js +0 -1
  109. package/dist/cache/recorder.d.ts +0 -1
  110. package/dist/cache/recorder.js +0 -1
  111. package/dist/cache/relocate.d.ts +0 -1
  112. package/dist/cache/relocate.js +0 -1
  113. package/dist/cache/route.d.ts +0 -1
  114. package/dist/cache/route.js +0 -1
  115. package/dist/cache/store.d.ts +0 -1
  116. package/dist/cache/store.js +0 -1
  117. package/dist/cache/template.d.ts +0 -1
  118. package/dist/cache/template.js +0 -1
  119. package/dist/cache/trace.d.ts +0 -1
  120. package/dist/cache/trace.js +0 -1
  121. package/dist/cli/bin.d.ts +0 -1
  122. package/dist/cli/bin.js +0 -1
  123. package/dist/cli/cache.d.ts +0 -1
  124. package/dist/cli/cache.js +0 -1
  125. package/dist/cli/docs-url.d.ts +0 -1
  126. package/dist/cli/docs-url.js +0 -1
  127. package/dist/cli/feedback.d.ts +0 -1
  128. package/dist/cli/feedback.js +0 -1
  129. package/dist/cli/guide.d.ts +0 -1
  130. package/dist/cli/guide.js +0 -1
  131. package/dist/cli/index.d.ts +0 -1
  132. package/dist/cli/index.js +2 -3
  133. package/dist/cli/init/agent-skill.d.ts +0 -1
  134. package/dist/cli/init/agent-skill.js +0 -1
  135. package/dist/cli/init/engines.d.ts +0 -1
  136. package/dist/cli/init/engines.js +0 -1
  137. package/dist/cli/init/gateways.d.ts +0 -1
  138. package/dist/cli/init/gateways.js +0 -1
  139. package/dist/cli/init/mcp-config.d.ts +0 -1
  140. package/dist/cli/init/mcp-config.js +0 -1
  141. package/dist/cli/init/package.d.ts +0 -1
  142. package/dist/cli/init/package.js +0 -1
  143. package/dist/cli/init/scaffold.d.ts +1 -1
  144. package/dist/cli/init/scaffold.js +2 -2
  145. package/dist/cli/init/sibling-versions.json +1 -1
  146. package/dist/cli/init/versions.d.ts +0 -1
  147. package/dist/cli/init/versions.js +0 -1
  148. package/dist/cli/init.d.ts +0 -1
  149. package/dist/cli/init.js +0 -1
  150. package/dist/cli/mcp.d.ts +9 -2
  151. package/dist/cli/mcp.js +14 -2
  152. package/dist/cli/signals.d.ts +0 -1
  153. package/dist/cli/signals.js +0 -1
  154. package/dist/cli/skill.d.ts +0 -1
  155. package/dist/cli/skill.js +0 -1
  156. package/dist/cli/telemetry.d.ts +0 -1
  157. package/dist/cli/telemetry.js +1 -2
  158. package/dist/cli/wordmark.d.ts +0 -1
  159. package/dist/cli/wordmark.js +0 -1
  160. package/dist/collect/collect.d.ts +0 -1
  161. package/dist/collect/collect.js +3 -2
  162. package/dist/collect/registry.d.ts +6 -3
  163. package/dist/collect/registry.js +31 -14
  164. package/dist/collect/select.d.ts +0 -1
  165. package/dist/collect/select.js +0 -1
  166. package/dist/config/agent.d.ts +0 -1
  167. package/dist/config/agent.js +0 -1
  168. package/dist/config/app.d.ts +0 -1
  169. package/dist/config/app.js +0 -1
  170. package/dist/config/command.d.ts +0 -1
  171. package/dist/config/command.js +0 -1
  172. package/dist/config/diagnose.d.ts +0 -1
  173. package/dist/config/diagnose.js +0 -1
  174. package/dist/config/esm-hooks.d.ts +0 -1
  175. package/dist/config/esm-hooks.js +0 -1
  176. package/dist/config/load.d.ts +0 -1
  177. package/dist/config/load.js +0 -1
  178. package/dist/config/resolve.d.ts +0 -1
  179. package/dist/config/resolve.js +0 -1
  180. package/dist/config/secrets.d.ts +0 -1
  181. package/dist/config/secrets.js +0 -1
  182. package/dist/config/targets.d.ts +0 -1
  183. package/dist/config/targets.js +0 -1
  184. package/dist/config/validate.d.ts +0 -1
  185. package/dist/config/validate.js +0 -1
  186. package/dist/engine/contract.d.ts +0 -1
  187. package/dist/engine/contract.js +0 -1
  188. package/dist/engine/index.d.ts +1 -2
  189. package/dist/engine/index.js +4 -4
  190. package/dist/engine/manifest.d.ts +0 -1
  191. package/dist/engine/manifest.js +0 -1
  192. package/dist/engine/recording.d.ts +0 -1
  193. package/dist/engine/recording.js +0 -1
  194. package/dist/engine/resolve.d.ts +0 -1
  195. package/dist/engine/resolve.js +0 -1
  196. package/dist/engine/session.d.ts +0 -1
  197. package/dist/engine/session.js +0 -1
  198. package/dist/engine/surface.d.ts +0 -1
  199. package/dist/engine/surface.js +0 -1
  200. package/dist/engine/timing.d.ts +0 -1
  201. package/dist/engine/timing.js +0 -1
  202. package/dist/expect/async.d.ts +0 -1
  203. package/dist/expect/async.js +99 -58
  204. package/dist/expect/attempt.d.ts +0 -1
  205. package/dist/expect/attempt.js +0 -1
  206. package/dist/expect/index.d.ts +0 -1
  207. package/dist/expect/index.js +0 -1
  208. package/dist/expect/poll.d.ts +0 -1
  209. package/dist/expect/poll.js +0 -1
  210. package/dist/expect/soft.d.ts +0 -1
  211. package/dist/expect/soft.js +0 -1
  212. package/dist/expect/values.d.ts +0 -1
  213. package/dist/expect/values.js +1 -2
  214. package/dist/explore/body.d.ts +0 -1
  215. package/dist/explore/body.js +0 -1
  216. package/dist/explore/executor.d.ts +0 -1
  217. package/dist/explore/executor.js +0 -1
  218. package/dist/explore/index.d.ts +0 -1
  219. package/dist/explore/index.js +16 -2
  220. package/dist/explore/plan.d.ts +0 -1
  221. package/dist/explore/plan.js +0 -1
  222. package/dist/explore/progress.d.ts +0 -1
  223. package/dist/explore/progress.js +0 -1
  224. package/dist/explore/state.d.ts +0 -1
  225. package/dist/explore/state.js +0 -1
  226. package/dist/index.d.ts +0 -1
  227. package/dist/index.js +0 -1
  228. package/dist/internal/ai-trace.d.ts +0 -1
  229. package/dist/internal/ai-trace.js +0 -1
  230. package/dist/internal/atomic-write.d.ts +0 -1
  231. package/dist/internal/atomic-write.js +0 -1
  232. package/dist/internal/brands.d.ts +0 -1
  233. package/dist/internal/brands.js +0 -1
  234. package/dist/internal/debug.d.ts +0 -1
  235. package/dist/internal/debug.js +0 -1
  236. package/dist/internal/env.d.ts +0 -1
  237. package/dist/internal/env.js +0 -1
  238. package/dist/internal/errors.d.ts +0 -1
  239. package/dist/internal/errors.js +0 -1
  240. package/dist/internal/geometry.d.ts +0 -1
  241. package/dist/internal/geometry.js +0 -1
  242. package/dist/internal/git.d.ts +0 -1
  243. package/dist/internal/git.js +0 -1
  244. package/dist/internal/globs.d.ts +0 -1
  245. package/dist/internal/globs.js +0 -1
  246. package/dist/internal/ids.d.ts +0 -1
  247. package/dist/internal/ids.js +0 -1
  248. package/dist/internal/json-value.d.ts +0 -1
  249. package/dist/internal/json-value.js +0 -1
  250. package/dist/internal/keys.d.ts +0 -1
  251. package/dist/internal/keys.js +0 -1
  252. package/dist/internal/node-version.d.ts +0 -1
  253. package/dist/internal/node-version.js +0 -1
  254. package/dist/internal/objects.d.ts +0 -1
  255. package/dist/internal/objects.js +0 -1
  256. package/dist/internal/options.d.ts +0 -1
  257. package/dist/internal/options.js +0 -1
  258. package/dist/internal/package-manager.d.ts +0 -1
  259. package/dist/internal/package-manager.js +0 -1
  260. package/dist/internal/package-version.d.ts +0 -1
  261. package/dist/internal/package-version.js +0 -1
  262. package/dist/internal/paths.d.ts +0 -1
  263. package/dist/internal/paths.js +0 -1
  264. package/dist/internal/realm-slot.d.ts +0 -1
  265. package/dist/internal/realm-slot.js +0 -1
  266. package/dist/internal/recording-modes.d.ts +0 -1
  267. package/dist/internal/recording-modes.js +0 -1
  268. package/dist/internal/redact.d.ts +0 -1
  269. package/dist/internal/redact.js +0 -1
  270. package/dist/internal/regexp.d.ts +0 -1
  271. package/dist/internal/regexp.js +0 -1
  272. package/dist/internal/roles.d.ts +0 -1
  273. package/dist/internal/roles.js +0 -1
  274. package/dist/internal/skip.d.ts +0 -1
  275. package/dist/internal/skip.js +0 -1
  276. package/dist/internal/source.d.ts +0 -1
  277. package/dist/internal/source.js +0 -1
  278. package/dist/internal/standard-schema.d.ts +0 -1
  279. package/dist/internal/standard-schema.js +0 -1
  280. package/dist/internal/suggest.d.ts +0 -1
  281. package/dist/internal/suggest.js +0 -1
  282. package/dist/internal/text.d.ts +8 -1
  283. package/dist/internal/text.js +13 -2
  284. package/dist/internal/time.d.ts +0 -1
  285. package/dist/internal/time.js +0 -1
  286. package/dist/internal/urls.d.ts +0 -1
  287. package/dist/internal/urls.js +0 -1
  288. package/dist/internal/vcs.d.ts +0 -1
  289. package/dist/internal/vcs.js +0 -1
  290. package/dist/internal/zip.d.ts +0 -1
  291. package/dist/internal/zip.js +0 -1
  292. package/dist/locator/engine.d.ts +0 -1
  293. package/dist/locator/engine.js +0 -1
  294. package/dist/locator/expression.d.ts +0 -1
  295. package/dist/locator/expression.js +0 -1
  296. package/dist/locator/screen.d.ts +0 -1
  297. package/dist/locator/screen.js +0 -1
  298. package/dist/mcp/catalog.d.ts +4 -1
  299. package/dist/mcp/catalog.js +2 -3
  300. package/dist/mcp/config.d.ts +0 -1
  301. package/dist/mcp/config.js +0 -1
  302. package/dist/mcp/recording.d.ts +0 -1
  303. package/dist/mcp/recording.js +0 -1
  304. package/dist/mcp/server.d.ts +8 -1
  305. package/dist/mcp/server.js +8 -5
  306. package/dist/mcp/session.d.ts +4 -2
  307. package/dist/mcp/session.js +43 -21
  308. package/dist/mcp/sessions.d.ts +2 -1
  309. package/dist/mcp/sessions.js +5 -2
  310. package/dist/mcp/tools.d.ts +7 -6
  311. package/dist/mcp/tools.js +36 -11
  312. package/dist/mcp/usage.d.ts +61 -0
  313. package/dist/mcp/usage.js +73 -0
  314. package/dist/oauth/callback-server.d.ts +0 -1
  315. package/dist/oauth/callback-server.js +0 -1
  316. package/dist/oauth/chatgpt.d.ts +0 -1
  317. package/dist/oauth/chatgpt.js +0 -1
  318. package/dist/oauth/cli.d.ts +0 -1
  319. package/dist/oauth/cli.js +0 -1
  320. package/dist/oauth/copilot.d.ts +0 -1
  321. package/dist/oauth/copilot.js +0 -1
  322. package/dist/oauth/device-code.d.ts +0 -1
  323. package/dist/oauth/device-code.js +0 -1
  324. package/dist/oauth/errors.d.ts +0 -1
  325. package/dist/oauth/errors.js +0 -1
  326. package/dist/oauth/fetch.d.ts +0 -1
  327. package/dist/oauth/fetch.js +0 -1
  328. package/dist/oauth/grok.d.ts +0 -1
  329. package/dist/oauth/grok.js +0 -1
  330. package/dist/oauth/jwt.d.ts +0 -1
  331. package/dist/oauth/jwt.js +0 -1
  332. package/dist/oauth/login.d.ts +0 -1
  333. package/dist/oauth/login.js +0 -1
  334. package/dist/oauth/models.d.ts +0 -1
  335. package/dist/oauth/models.js +0 -1
  336. package/dist/oauth/pkce.d.ts +0 -1
  337. package/dist/oauth/pkce.js +0 -1
  338. package/dist/oauth/providers/github-copilot.d.ts +0 -1
  339. package/dist/oauth/providers/github-copilot.js +10 -3
  340. package/dist/oauth/providers/openai.d.ts +0 -1
  341. package/dist/oauth/providers/openai.js +1 -2
  342. package/dist/oauth/providers/xai.d.ts +0 -1
  343. package/dist/oauth/providers/xai.js +0 -1
  344. package/dist/oauth/providers.d.ts +0 -1
  345. package/dist/oauth/providers.js +0 -1
  346. package/dist/oauth/sse.d.ts +0 -1
  347. package/dist/oauth/sse.js +0 -1
  348. package/dist/oauth/store.d.ts +0 -1
  349. package/dist/oauth/store.js +0 -1
  350. package/dist/oauth/token-endpoint.d.ts +0 -1
  351. package/dist/oauth/token-endpoint.js +0 -1
  352. package/dist/oauth/types.d.ts +0 -1
  353. package/dist/oauth/types.js +0 -1
  354. package/dist/params.d.ts +0 -1
  355. package/dist/params.js +0 -1
  356. package/dist/report/build.d.ts +0 -1
  357. package/dist/report/build.js +0 -1
  358. package/dist/report/builtin.d.ts +0 -1
  359. package/dist/report/builtin.js +0 -1
  360. package/dist/report/code-frame.d.ts +0 -1
  361. package/dist/report/code-frame.js +0 -1
  362. package/dist/report/debug-steps.d.ts +0 -1
  363. package/dist/report/debug-steps.js +0 -1
  364. package/dist/report/explore-text.d.ts +0 -1
  365. package/dist/report/explore-text.js +0 -1
  366. package/dist/report/failure-text.d.ts +0 -1
  367. package/dist/report/failure-text.js +0 -1
  368. package/dist/report/format.d.ts +0 -1
  369. package/dist/report/format.js +0 -1
  370. package/dist/report/json.d.ts +0 -1
  371. package/dist/report/json.js +0 -1
  372. package/dist/report/junit.d.ts +0 -1
  373. package/dist/report/junit.js +0 -1
  374. package/dist/report/list-explore.d.ts +0 -1
  375. package/dist/report/list-explore.js +0 -1
  376. package/dist/report/list-model.d.ts +0 -1
  377. package/dist/report/list-model.js +0 -1
  378. package/dist/report/list-steps.d.ts +0 -1
  379. package/dist/report/list-steps.js +0 -1
  380. package/dist/report/list.d.ts +0 -1
  381. package/dist/report/list.js +0 -1
  382. package/dist/report/live-window.d.ts +0 -1
  383. package/dist/report/live-window.js +0 -1
  384. package/dist/report/markdown-text.d.ts +0 -1
  385. package/dist/report/markdown-text.js +0 -1
  386. package/dist/report/markdown.d.ts +0 -1
  387. package/dist/report/markdown.js +0 -1
  388. package/dist/report/outcome.d.ts +0 -1
  389. package/dist/report/outcome.js +0 -1
  390. package/dist/report/repeats.d.ts +0 -1
  391. package/dist/report/repeats.js +0 -1
  392. package/dist/report/running-tree.d.ts +0 -1
  393. package/dist/report/running-tree.js +0 -1
  394. package/dist/report/write.d.ts +0 -1
  395. package/dist/report/write.js +0 -1
  396. package/dist/run/app-ports.d.ts +0 -1
  397. package/dist/run/app-ports.js +0 -1
  398. package/dist/run/artifacts.d.ts +0 -1
  399. package/dist/run/artifacts.js +0 -1
  400. package/dist/run/budget.d.ts +0 -1
  401. package/dist/run/budget.js +0 -1
  402. package/dist/run/declared-processes.d.ts +0 -1
  403. package/dist/run/declared-processes.js +0 -1
  404. package/dist/run/events.d.ts +0 -1
  405. package/dist/run/events.js +0 -1
  406. package/dist/run/execute.d.ts +0 -1
  407. package/dist/run/execute.js +27 -13
  408. package/dist/run/extended-fixtures.d.ts +0 -1
  409. package/dist/run/extended-fixtures.js +0 -1
  410. package/dist/run/failure-evidence.d.ts +0 -1
  411. package/dist/run/failure-evidence.js +0 -1
  412. package/dist/run/fixture-recording.d.ts +0 -1
  413. package/dist/run/fixture-recording.js +0 -1
  414. package/dist/run/fixtures.d.ts +0 -1
  415. package/dist/run/fixtures.js +0 -1
  416. package/dist/run/in-process.d.ts +0 -1
  417. package/dist/run/in-process.js +0 -1
  418. package/dist/run/last-run.d.ts +0 -1
  419. package/dist/run/last-run.js +0 -1
  420. package/dist/run/managed-process.d.ts +0 -1
  421. package/dist/run/managed-process.js +0 -1
  422. package/dist/run/output.d.ts +0 -1
  423. package/dist/run/output.js +0 -1
  424. package/dist/run/process-pool.d.ts +0 -1
  425. package/dist/run/process-pool.js +0 -1
  426. package/dist/run/provision.d.ts +0 -1
  427. package/dist/run/provision.js +0 -1
  428. package/dist/run/realm.d.ts +2 -1
  429. package/dist/run/realm.js +1 -2
  430. package/dist/run/records.d.ts +0 -1
  431. package/dist/run/records.js +0 -1
  432. package/dist/run/retry.d.ts +0 -1
  433. package/dist/run/retry.js +0 -1
  434. package/dist/run/runner.d.ts +2 -1
  435. package/dist/run/runner.js +1 -2
  436. package/dist/run/scheduler.d.ts +0 -1
  437. package/dist/run/scheduler.js +0 -1
  438. package/dist/run/secrecy.d.ts +15 -1
  439. package/dist/run/secrecy.js +27 -2
  440. package/dist/run/serial.d.ts +0 -1
  441. package/dist/run/serial.js +0 -1
  442. package/dist/run/sessions.d.ts +0 -1
  443. package/dist/run/sessions.js +0 -1
  444. package/dist/run/standalone.d.ts +0 -1
  445. package/dist/run/standalone.js +3 -3
  446. package/dist/run/steps.d.ts +2 -3
  447. package/dist/run/steps.js +4 -2
  448. package/dist/run/trace-redaction.d.ts +0 -1
  449. package/dist/run/trace-redaction.js +0 -1
  450. package/dist/run/unit-runner.d.ts +0 -1
  451. package/dist/run/unit-runner.js +0 -1
  452. package/dist/run/units.d.ts +0 -1
  453. package/dist/run/units.js +0 -1
  454. package/dist/run/worker/entry.d.ts +0 -1
  455. package/dist/run/worker/entry.js +2 -3
  456. package/dist/run/worker/handle.d.ts +0 -1
  457. package/dist/run/worker/handle.js +0 -1
  458. package/dist/run/worker/protocol.d.ts +0 -1
  459. package/dist/run/worker/protocol.js +0 -1
  460. package/dist/run/worker/session.d.ts +0 -1
  461. package/dist/run/worker/session.js +0 -1
  462. package/dist/run/worker-models.d.ts +0 -1
  463. package/dist/run/worker-models.js +0 -1
  464. package/dist/secrets.d.ts +0 -1
  465. package/dist/secrets.js +0 -1
  466. package/dist/telemetry/checkout.d.ts +0 -1
  467. package/dist/telemetry/checkout.js +0 -1
  468. package/dist/telemetry/environment.d.ts +0 -1
  469. package/dist/telemetry/environment.js +0 -1
  470. package/dist/telemetry/events.d.ts +26 -10
  471. package/dist/telemetry/events.js +107 -13
  472. package/dist/telemetry/failure-kind.d.ts +0 -1
  473. package/dist/telemetry/failure-kind.js +0 -1
  474. package/dist/telemetry/posthog.d.ts +0 -1
  475. package/dist/telemetry/posthog.js +0 -1
  476. package/dist/telemetry/project.d.ts +0 -1
  477. package/dist/telemetry/project.js +0 -1
  478. package/dist/telemetry/store.d.ts +0 -1
  479. package/dist/telemetry/store.js +0 -1
  480. package/dist/telemetry/telemetry.d.ts +19 -8
  481. package/dist/telemetry/telemetry.js +26 -9
  482. package/dist/telemetry/token.d.ts +0 -1
  483. package/dist/telemetry/token.js +0 -1
  484. package/dist/types.d.ts +26 -24
  485. package/dist/types.js +0 -1
  486. package/docs/agent-steps.mdx +126 -0
  487. package/docs/agents.mdx +217 -0
  488. package/docs/api-testing.mdx +65 -0
  489. package/docs/authentication.mdx +345 -0
  490. package/docs/browser.mdx +440 -0
  491. package/docs/bug-bash.mdx +90 -0
  492. package/docs/cache.mdx +306 -0
  493. package/docs/ci.mdx +210 -0
  494. package/docs/coding-agents.mdx +183 -0
  495. package/docs/debugging.mdx +291 -0
  496. package/docs/executors.mdx +243 -0
  497. package/docs/explore.mdx +174 -0
  498. package/docs/github.mdx +184 -0
  499. package/docs/index.mdx +82 -0
  500. package/docs/integrations/eas.mdx +216 -0
  501. package/docs/integrations/index.mdx +24 -0
  502. package/docs/integrations/kernel.mdx +163 -0
  503. package/docs/migrate/cypress.mdx +124 -0
  504. package/docs/migrate/detox.mdx +140 -0
  505. package/docs/migrate/maestro.mdx +229 -0
  506. package/docs/migrate/playwright.mdx +430 -0
  507. package/docs/migrate/selenium.mdx +110 -0
  508. package/docs/mobile-ci.mdx +567 -0
  509. package/docs/mobile.mdx +595 -0
  510. package/docs/models.mdx +241 -0
  511. package/docs/quickstart.mdx +260 -0
  512. package/docs/reference/agent.mdx +524 -0
  513. package/docs/reference/app.mdx +72 -0
  514. package/docs/reference/cli.mdx +819 -0
  515. package/docs/reference/config.mdx +986 -0
  516. package/docs/reference/engine.mdx +1363 -0
  517. package/docs/reference/environment.mdx +113 -0
  518. package/docs/reference/errors.mdx +143 -0
  519. package/docs/reference/expect.mdx +546 -0
  520. package/docs/reference/mcp.mdx +205 -0
  521. package/docs/reference/mobile.mdx +522 -0
  522. package/docs/reference/reporters.mdx +216 -0
  523. package/docs/reference/screen.mdx +688 -0
  524. package/docs/reference/test.mdx +449 -0
  525. package/docs/reference/web.mdx +615 -0
  526. package/docs/security.mdx +308 -0
  527. package/docs/starting-your-app.mdx +231 -0
  528. package/docs/subscriptions.mdx +166 -0
  529. package/docs/telemetry.mdx +227 -0
  530. package/docs/tools.mdx +150 -0
  531. package/docs/viewports.mdx +146 -0
  532. package/docs/writing-an-engine.mdx +316 -0
  533. package/docs/writing-tests.mdx +256 -0
  534. package/package.json +5 -3
  535. package/skills/e2e/SKILL.md +4 -1
  536. package/skills/e2e/references/agent.md +3 -1
  537. package/skills/e2e/references/mcp.md +3 -0
  538. package/skills/e2e/references/setup.md +19 -4
  539. package/skills/e2e/references/writing-tests.md +11 -0
  540. package/dist/agent/act-validation.d.ts.map +0 -1
  541. package/dist/agent/act-validation.js.map +0 -1
  542. package/dist/agent/act.d.ts.map +0 -1
  543. package/dist/agent/act.js.map +0 -1
  544. package/dist/agent/action-dispatcher.d.ts.map +0 -1
  545. package/dist/agent/action-dispatcher.js.map +0 -1
  546. package/dist/agent/action-names.d.ts.map +0 -1
  547. package/dist/agent/action-names.js.map +0 -1
  548. package/dist/agent/actions.d.ts.map +0 -1
  549. package/dist/agent/actions.js.map +0 -1
  550. package/dist/agent/agent-brand.d.ts.map +0 -1
  551. package/dist/agent/agent-brand.js.map +0 -1
  552. package/dist/agent/ai-sdk.d.ts.map +0 -1
  553. package/dist/agent/ai-sdk.js.map +0 -1
  554. package/dist/agent/call-options.d.ts.map +0 -1
  555. package/dist/agent/call-options.js.map +0 -1
  556. package/dist/agent/default-agent.d.ts.map +0 -1
  557. package/dist/agent/default-agent.js.map +0 -1
  558. package/dist/agent/derived.d.ts.map +0 -1
  559. package/dist/agent/derived.js.map +0 -1
  560. package/dist/agent/error.d.ts.map +0 -1
  561. package/dist/agent/error.js.map +0 -1
  562. package/dist/agent/executor.d.ts.map +0 -1
  563. package/dist/agent/executor.js.map +0 -1
  564. package/dist/agent/index.d.ts.map +0 -1
  565. package/dist/agent/index.js.map +0 -1
  566. package/dist/agent/interactive-step.d.ts.map +0 -1
  567. package/dist/agent/interactive-step.js.map +0 -1
  568. package/dist/agent/invocation.d.ts.map +0 -1
  569. package/dist/agent/invocation.js.map +0 -1
  570. package/dist/agent/ledger.d.ts.map +0 -1
  571. package/dist/agent/ledger.js.map +0 -1
  572. package/dist/agent/loop-guards.d.ts.map +0 -1
  573. package/dist/agent/loop-guards.js.map +0 -1
  574. package/dist/agent/model/adapter.d.ts.map +0 -1
  575. package/dist/agent/model/adapter.js.map +0 -1
  576. package/dist/agent/model/overflow.d.ts.map +0 -1
  577. package/dist/agent/model/overflow.js.map +0 -1
  578. package/dist/agent/model/provider-hints.d.ts.map +0 -1
  579. package/dist/agent/model/provider-hints.js.map +0 -1
  580. package/dist/agent/model/schema.d.ts.map +0 -1
  581. package/dist/agent/model/schema.js.map +0 -1
  582. package/dist/agent/model/sdk.d.ts.map +0 -1
  583. package/dist/agent/model/sdk.js.map +0 -1
  584. package/dist/agent/model/stall.d.ts.map +0 -1
  585. package/dist/agent/model/stall.js.map +0 -1
  586. package/dist/agent/model/tool-choice.d.ts.map +0 -1
  587. package/dist/agent/model/tool-choice.js.map +0 -1
  588. package/dist/agent/observation-budget.d.ts.map +0 -1
  589. package/dist/agent/observation-budget.js.map +0 -1
  590. package/dist/agent/observation-feed.d.ts.map +0 -1
  591. package/dist/agent/observation-feed.js.map +0 -1
  592. package/dist/agent/observation.d.ts.map +0 -1
  593. package/dist/agent/observation.js.map +0 -1
  594. package/dist/agent/operation-queue.d.ts.map +0 -1
  595. package/dist/agent/operation-queue.js.map +0 -1
  596. package/dist/agent/phases.d.ts.map +0 -1
  597. package/dist/agent/phases.js.map +0 -1
  598. package/dist/agent/pixels.d.ts.map +0 -1
  599. package/dist/agent/pixels.js.map +0 -1
  600. package/dist/agent/point-tap.d.ts.map +0 -1
  601. package/dist/agent/point-tap.js.map +0 -1
  602. package/dist/agent/primitives.d.ts.map +0 -1
  603. package/dist/agent/primitives.js.map +0 -1
  604. package/dist/agent/prompts.d.ts.map +0 -1
  605. package/dist/agent/prompts.js.map +0 -1
  606. package/dist/agent/protocol.d.ts.map +0 -1
  607. package/dist/agent/protocol.js.map +0 -1
  608. package/dist/agent/public.d.ts.map +0 -1
  609. package/dist/agent/public.js.map +0 -1
  610. package/dist/agent/reading.d.ts.map +0 -1
  611. package/dist/agent/reading.js.map +0 -1
  612. package/dist/agent/replay.d.ts.map +0 -1
  613. package/dist/agent/replay.js.map +0 -1
  614. package/dist/agent/screen-update.d.ts.map +0 -1
  615. package/dist/agent/screen-update.js.map +0 -1
  616. package/dist/agent/scroll-target.d.ts.map +0 -1
  617. package/dist/agent/scroll-target.js.map +0 -1
  618. package/dist/agent/secrets.d.ts.map +0 -1
  619. package/dist/agent/secrets.js.map +0 -1
  620. package/dist/agent/settle-policy.d.ts.map +0 -1
  621. package/dist/agent/settle-policy.js.map +0 -1
  622. package/dist/agent/step-accounting.d.ts.map +0 -1
  623. package/dist/agent/step-accounting.js.map +0 -1
  624. package/dist/agent/step-cache.d.ts.map +0 -1
  625. package/dist/agent/step-cache.js.map +0 -1
  626. package/dist/agent/tool-loop.d.ts.map +0 -1
  627. package/dist/agent/tool-loop.js.map +0 -1
  628. package/dist/agent/tool-output.d.ts.map +0 -1
  629. package/dist/agent/tool-output.js.map +0 -1
  630. package/dist/agent/tool.d.ts.map +0 -1
  631. package/dist/agent/tool.js.map +0 -1
  632. package/dist/agent/transcript-compaction.d.ts.map +0 -1
  633. package/dist/agent/transcript-compaction.js.map +0 -1
  634. package/dist/agent/upload-paths.d.ts.map +0 -1
  635. package/dist/agent/upload-paths.js.map +0 -1
  636. package/dist/agent/usage.d.ts.map +0 -1
  637. package/dist/agent/usage.js.map +0 -1
  638. package/dist/cache/anchors.d.ts.map +0 -1
  639. package/dist/cache/anchors.js.map +0 -1
  640. package/dist/cache/context.d.ts.map +0 -1
  641. package/dist/cache/context.js.map +0 -1
  642. package/dist/cache/decide.d.ts.map +0 -1
  643. package/dist/cache/decide.js.map +0 -1
  644. package/dist/cache/identity.d.ts.map +0 -1
  645. package/dist/cache/identity.js.map +0 -1
  646. package/dist/cache/recorder.d.ts.map +0 -1
  647. package/dist/cache/recorder.js.map +0 -1
  648. package/dist/cache/relocate.d.ts.map +0 -1
  649. package/dist/cache/relocate.js.map +0 -1
  650. package/dist/cache/route.d.ts.map +0 -1
  651. package/dist/cache/route.js.map +0 -1
  652. package/dist/cache/store.d.ts.map +0 -1
  653. package/dist/cache/store.js.map +0 -1
  654. package/dist/cache/template.d.ts.map +0 -1
  655. package/dist/cache/template.js.map +0 -1
  656. package/dist/cache/trace.d.ts.map +0 -1
  657. package/dist/cache/trace.js.map +0 -1
  658. package/dist/cli/bin.d.ts.map +0 -1
  659. package/dist/cli/bin.js.map +0 -1
  660. package/dist/cli/cache.d.ts.map +0 -1
  661. package/dist/cli/cache.js.map +0 -1
  662. package/dist/cli/docs-url.d.ts.map +0 -1
  663. package/dist/cli/docs-url.js.map +0 -1
  664. package/dist/cli/feedback.d.ts.map +0 -1
  665. package/dist/cli/feedback.js.map +0 -1
  666. package/dist/cli/guide.d.ts.map +0 -1
  667. package/dist/cli/guide.js.map +0 -1
  668. package/dist/cli/index.d.ts.map +0 -1
  669. package/dist/cli/index.js.map +0 -1
  670. package/dist/cli/init/agent-skill.d.ts.map +0 -1
  671. package/dist/cli/init/agent-skill.js.map +0 -1
  672. package/dist/cli/init/engines.d.ts.map +0 -1
  673. package/dist/cli/init/engines.js.map +0 -1
  674. package/dist/cli/init/gateways.d.ts.map +0 -1
  675. package/dist/cli/init/gateways.js.map +0 -1
  676. package/dist/cli/init/mcp-config.d.ts.map +0 -1
  677. package/dist/cli/init/mcp-config.js.map +0 -1
  678. package/dist/cli/init/package.d.ts.map +0 -1
  679. package/dist/cli/init/package.js.map +0 -1
  680. package/dist/cli/init/scaffold.d.ts.map +0 -1
  681. package/dist/cli/init/scaffold.js.map +0 -1
  682. package/dist/cli/init/versions.d.ts.map +0 -1
  683. package/dist/cli/init/versions.js.map +0 -1
  684. package/dist/cli/init.d.ts.map +0 -1
  685. package/dist/cli/init.js.map +0 -1
  686. package/dist/cli/mcp.d.ts.map +0 -1
  687. package/dist/cli/mcp.js.map +0 -1
  688. package/dist/cli/signals.d.ts.map +0 -1
  689. package/dist/cli/signals.js.map +0 -1
  690. package/dist/cli/skill.d.ts.map +0 -1
  691. package/dist/cli/skill.js.map +0 -1
  692. package/dist/cli/telemetry.d.ts.map +0 -1
  693. package/dist/cli/telemetry.js.map +0 -1
  694. package/dist/cli/wordmark.d.ts.map +0 -1
  695. package/dist/cli/wordmark.js.map +0 -1
  696. package/dist/collect/collect.d.ts.map +0 -1
  697. package/dist/collect/collect.js.map +0 -1
  698. package/dist/collect/registry.d.ts.map +0 -1
  699. package/dist/collect/registry.js.map +0 -1
  700. package/dist/collect/select.d.ts.map +0 -1
  701. package/dist/collect/select.js.map +0 -1
  702. package/dist/config/agent.d.ts.map +0 -1
  703. package/dist/config/agent.js.map +0 -1
  704. package/dist/config/app.d.ts.map +0 -1
  705. package/dist/config/app.js.map +0 -1
  706. package/dist/config/command.d.ts.map +0 -1
  707. package/dist/config/command.js.map +0 -1
  708. package/dist/config/diagnose.d.ts.map +0 -1
  709. package/dist/config/diagnose.js.map +0 -1
  710. package/dist/config/esm-hooks.d.ts.map +0 -1
  711. package/dist/config/esm-hooks.js.map +0 -1
  712. package/dist/config/load.d.ts.map +0 -1
  713. package/dist/config/load.js.map +0 -1
  714. package/dist/config/resolve.d.ts.map +0 -1
  715. package/dist/config/resolve.js.map +0 -1
  716. package/dist/config/secrets.d.ts.map +0 -1
  717. package/dist/config/secrets.js.map +0 -1
  718. package/dist/config/targets.d.ts.map +0 -1
  719. package/dist/config/targets.js.map +0 -1
  720. package/dist/config/validate.d.ts.map +0 -1
  721. package/dist/config/validate.js.map +0 -1
  722. package/dist/engine/contract.d.ts.map +0 -1
  723. package/dist/engine/contract.js.map +0 -1
  724. package/dist/engine/index.d.ts.map +0 -1
  725. package/dist/engine/index.js.map +0 -1
  726. package/dist/engine/manifest.d.ts.map +0 -1
  727. package/dist/engine/manifest.js.map +0 -1
  728. package/dist/engine/recording.d.ts.map +0 -1
  729. package/dist/engine/recording.js.map +0 -1
  730. package/dist/engine/resolve.d.ts.map +0 -1
  731. package/dist/engine/resolve.js.map +0 -1
  732. package/dist/engine/session.d.ts.map +0 -1
  733. package/dist/engine/session.js.map +0 -1
  734. package/dist/engine/surface.d.ts.map +0 -1
  735. package/dist/engine/surface.js.map +0 -1
  736. package/dist/engine/timing.d.ts.map +0 -1
  737. package/dist/engine/timing.js.map +0 -1
  738. package/dist/expect/async.d.ts.map +0 -1
  739. package/dist/expect/async.js.map +0 -1
  740. package/dist/expect/attempt.d.ts.map +0 -1
  741. package/dist/expect/attempt.js.map +0 -1
  742. package/dist/expect/index.d.ts.map +0 -1
  743. package/dist/expect/index.js.map +0 -1
  744. package/dist/expect/poll.d.ts.map +0 -1
  745. package/dist/expect/poll.js.map +0 -1
  746. package/dist/expect/soft.d.ts.map +0 -1
  747. package/dist/expect/soft.js.map +0 -1
  748. package/dist/expect/values.d.ts.map +0 -1
  749. package/dist/expect/values.js.map +0 -1
  750. package/dist/explore/body.d.ts.map +0 -1
  751. package/dist/explore/body.js.map +0 -1
  752. package/dist/explore/executor.d.ts.map +0 -1
  753. package/dist/explore/executor.js.map +0 -1
  754. package/dist/explore/index.d.ts.map +0 -1
  755. package/dist/explore/index.js.map +0 -1
  756. package/dist/explore/plan.d.ts.map +0 -1
  757. package/dist/explore/plan.js.map +0 -1
  758. package/dist/explore/progress.d.ts.map +0 -1
  759. package/dist/explore/progress.js.map +0 -1
  760. package/dist/explore/state.d.ts.map +0 -1
  761. package/dist/explore/state.js.map +0 -1
  762. package/dist/index.d.ts.map +0 -1
  763. package/dist/index.js.map +0 -1
  764. package/dist/internal/ai-trace.d.ts.map +0 -1
  765. package/dist/internal/ai-trace.js.map +0 -1
  766. package/dist/internal/atomic-write.d.ts.map +0 -1
  767. package/dist/internal/atomic-write.js.map +0 -1
  768. package/dist/internal/brands.d.ts.map +0 -1
  769. package/dist/internal/brands.js.map +0 -1
  770. package/dist/internal/debug.d.ts.map +0 -1
  771. package/dist/internal/debug.js.map +0 -1
  772. package/dist/internal/env.d.ts.map +0 -1
  773. package/dist/internal/env.js.map +0 -1
  774. package/dist/internal/errors.d.ts.map +0 -1
  775. package/dist/internal/errors.js.map +0 -1
  776. package/dist/internal/geometry.d.ts.map +0 -1
  777. package/dist/internal/geometry.js.map +0 -1
  778. package/dist/internal/git.d.ts.map +0 -1
  779. package/dist/internal/git.js.map +0 -1
  780. package/dist/internal/globs.d.ts.map +0 -1
  781. package/dist/internal/globs.js.map +0 -1
  782. package/dist/internal/ids.d.ts.map +0 -1
  783. package/dist/internal/ids.js.map +0 -1
  784. package/dist/internal/json-value.d.ts.map +0 -1
  785. package/dist/internal/json-value.js.map +0 -1
  786. package/dist/internal/keys.d.ts.map +0 -1
  787. package/dist/internal/keys.js.map +0 -1
  788. package/dist/internal/node-version.d.ts.map +0 -1
  789. package/dist/internal/node-version.js.map +0 -1
  790. package/dist/internal/objects.d.ts.map +0 -1
  791. package/dist/internal/objects.js.map +0 -1
  792. package/dist/internal/options.d.ts.map +0 -1
  793. package/dist/internal/options.js.map +0 -1
  794. package/dist/internal/package-manager.d.ts.map +0 -1
  795. package/dist/internal/package-manager.js.map +0 -1
  796. package/dist/internal/package-version.d.ts.map +0 -1
  797. package/dist/internal/package-version.js.map +0 -1
  798. package/dist/internal/paths.d.ts.map +0 -1
  799. package/dist/internal/paths.js.map +0 -1
  800. package/dist/internal/realm-slot.d.ts.map +0 -1
  801. package/dist/internal/realm-slot.js.map +0 -1
  802. package/dist/internal/recording-modes.d.ts.map +0 -1
  803. package/dist/internal/recording-modes.js.map +0 -1
  804. package/dist/internal/redact.d.ts.map +0 -1
  805. package/dist/internal/redact.js.map +0 -1
  806. package/dist/internal/regexp.d.ts.map +0 -1
  807. package/dist/internal/regexp.js.map +0 -1
  808. package/dist/internal/roles.d.ts.map +0 -1
  809. package/dist/internal/roles.js.map +0 -1
  810. package/dist/internal/skip.d.ts.map +0 -1
  811. package/dist/internal/skip.js.map +0 -1
  812. package/dist/internal/source.d.ts.map +0 -1
  813. package/dist/internal/source.js.map +0 -1
  814. package/dist/internal/standard-schema.d.ts.map +0 -1
  815. package/dist/internal/standard-schema.js.map +0 -1
  816. package/dist/internal/suggest.d.ts.map +0 -1
  817. package/dist/internal/suggest.js.map +0 -1
  818. package/dist/internal/text.d.ts.map +0 -1
  819. package/dist/internal/text.js.map +0 -1
  820. package/dist/internal/time.d.ts.map +0 -1
  821. package/dist/internal/time.js.map +0 -1
  822. package/dist/internal/urls.d.ts.map +0 -1
  823. package/dist/internal/urls.js.map +0 -1
  824. package/dist/internal/vcs.d.ts.map +0 -1
  825. package/dist/internal/vcs.js.map +0 -1
  826. package/dist/internal/zip.d.ts.map +0 -1
  827. package/dist/internal/zip.js.map +0 -1
  828. package/dist/locator/engine.d.ts.map +0 -1
  829. package/dist/locator/engine.js.map +0 -1
  830. package/dist/locator/expression.d.ts.map +0 -1
  831. package/dist/locator/expression.js.map +0 -1
  832. package/dist/locator/screen.d.ts.map +0 -1
  833. package/dist/locator/screen.js.map +0 -1
  834. package/dist/mcp/catalog.d.ts.map +0 -1
  835. package/dist/mcp/catalog.js.map +0 -1
  836. package/dist/mcp/config.d.ts.map +0 -1
  837. package/dist/mcp/config.js.map +0 -1
  838. package/dist/mcp/recording.d.ts.map +0 -1
  839. package/dist/mcp/recording.js.map +0 -1
  840. package/dist/mcp/server.d.ts.map +0 -1
  841. package/dist/mcp/server.js.map +0 -1
  842. package/dist/mcp/session.d.ts.map +0 -1
  843. package/dist/mcp/session.js.map +0 -1
  844. package/dist/mcp/sessions.d.ts.map +0 -1
  845. package/dist/mcp/sessions.js.map +0 -1
  846. package/dist/mcp/tools.d.ts.map +0 -1
  847. package/dist/mcp/tools.js.map +0 -1
  848. package/dist/oauth/callback-server.d.ts.map +0 -1
  849. package/dist/oauth/callback-server.js.map +0 -1
  850. package/dist/oauth/chatgpt.d.ts.map +0 -1
  851. package/dist/oauth/chatgpt.js.map +0 -1
  852. package/dist/oauth/cli.d.ts.map +0 -1
  853. package/dist/oauth/cli.js.map +0 -1
  854. package/dist/oauth/copilot.d.ts.map +0 -1
  855. package/dist/oauth/copilot.js.map +0 -1
  856. package/dist/oauth/device-code.d.ts.map +0 -1
  857. package/dist/oauth/device-code.js.map +0 -1
  858. package/dist/oauth/errors.d.ts.map +0 -1
  859. package/dist/oauth/errors.js.map +0 -1
  860. package/dist/oauth/fetch.d.ts.map +0 -1
  861. package/dist/oauth/fetch.js.map +0 -1
  862. package/dist/oauth/grok.d.ts.map +0 -1
  863. package/dist/oauth/grok.js.map +0 -1
  864. package/dist/oauth/jwt.d.ts.map +0 -1
  865. package/dist/oauth/jwt.js.map +0 -1
  866. package/dist/oauth/login.d.ts.map +0 -1
  867. package/dist/oauth/login.js.map +0 -1
  868. package/dist/oauth/models.d.ts.map +0 -1
  869. package/dist/oauth/models.js.map +0 -1
  870. package/dist/oauth/pkce.d.ts.map +0 -1
  871. package/dist/oauth/pkce.js.map +0 -1
  872. package/dist/oauth/providers/github-copilot.d.ts.map +0 -1
  873. package/dist/oauth/providers/github-copilot.js.map +0 -1
  874. package/dist/oauth/providers/openai.d.ts.map +0 -1
  875. package/dist/oauth/providers/openai.js.map +0 -1
  876. package/dist/oauth/providers/xai.d.ts.map +0 -1
  877. package/dist/oauth/providers/xai.js.map +0 -1
  878. package/dist/oauth/providers.d.ts.map +0 -1
  879. package/dist/oauth/providers.js.map +0 -1
  880. package/dist/oauth/sse.d.ts.map +0 -1
  881. package/dist/oauth/sse.js.map +0 -1
  882. package/dist/oauth/store.d.ts.map +0 -1
  883. package/dist/oauth/store.js.map +0 -1
  884. package/dist/oauth/token-endpoint.d.ts.map +0 -1
  885. package/dist/oauth/token-endpoint.js.map +0 -1
  886. package/dist/oauth/types.d.ts.map +0 -1
  887. package/dist/oauth/types.js.map +0 -1
  888. package/dist/params.d.ts.map +0 -1
  889. package/dist/params.js.map +0 -1
  890. package/dist/report/build.d.ts.map +0 -1
  891. package/dist/report/build.js.map +0 -1
  892. package/dist/report/builtin.d.ts.map +0 -1
  893. package/dist/report/builtin.js.map +0 -1
  894. package/dist/report/code-frame.d.ts.map +0 -1
  895. package/dist/report/code-frame.js.map +0 -1
  896. package/dist/report/debug-steps.d.ts.map +0 -1
  897. package/dist/report/debug-steps.js.map +0 -1
  898. package/dist/report/explore-text.d.ts.map +0 -1
  899. package/dist/report/explore-text.js.map +0 -1
  900. package/dist/report/failure-text.d.ts.map +0 -1
  901. package/dist/report/failure-text.js.map +0 -1
  902. package/dist/report/format.d.ts.map +0 -1
  903. package/dist/report/format.js.map +0 -1
  904. package/dist/report/json.d.ts.map +0 -1
  905. package/dist/report/json.js.map +0 -1
  906. package/dist/report/junit.d.ts.map +0 -1
  907. package/dist/report/junit.js.map +0 -1
  908. package/dist/report/list-explore.d.ts.map +0 -1
  909. package/dist/report/list-explore.js.map +0 -1
  910. package/dist/report/list-model.d.ts.map +0 -1
  911. package/dist/report/list-model.js.map +0 -1
  912. package/dist/report/list-steps.d.ts.map +0 -1
  913. package/dist/report/list-steps.js.map +0 -1
  914. package/dist/report/list.d.ts.map +0 -1
  915. package/dist/report/list.js.map +0 -1
  916. package/dist/report/live-window.d.ts.map +0 -1
  917. package/dist/report/live-window.js.map +0 -1
  918. package/dist/report/markdown-text.d.ts.map +0 -1
  919. package/dist/report/markdown-text.js.map +0 -1
  920. package/dist/report/markdown.d.ts.map +0 -1
  921. package/dist/report/markdown.js.map +0 -1
  922. package/dist/report/outcome.d.ts.map +0 -1
  923. package/dist/report/outcome.js.map +0 -1
  924. package/dist/report/repeats.d.ts.map +0 -1
  925. package/dist/report/repeats.js.map +0 -1
  926. package/dist/report/running-tree.d.ts.map +0 -1
  927. package/dist/report/running-tree.js.map +0 -1
  928. package/dist/report/write.d.ts.map +0 -1
  929. package/dist/report/write.js.map +0 -1
  930. package/dist/run/app-ports.d.ts.map +0 -1
  931. package/dist/run/app-ports.js.map +0 -1
  932. package/dist/run/artifacts.d.ts.map +0 -1
  933. package/dist/run/artifacts.js.map +0 -1
  934. package/dist/run/budget.d.ts.map +0 -1
  935. package/dist/run/budget.js.map +0 -1
  936. package/dist/run/declared-processes.d.ts.map +0 -1
  937. package/dist/run/declared-processes.js.map +0 -1
  938. package/dist/run/events.d.ts.map +0 -1
  939. package/dist/run/events.js.map +0 -1
  940. package/dist/run/execute.d.ts.map +0 -1
  941. package/dist/run/execute.js.map +0 -1
  942. package/dist/run/extended-fixtures.d.ts.map +0 -1
  943. package/dist/run/extended-fixtures.js.map +0 -1
  944. package/dist/run/failure-evidence.d.ts.map +0 -1
  945. package/dist/run/failure-evidence.js.map +0 -1
  946. package/dist/run/fixture-recording.d.ts.map +0 -1
  947. package/dist/run/fixture-recording.js.map +0 -1
  948. package/dist/run/fixtures.d.ts.map +0 -1
  949. package/dist/run/fixtures.js.map +0 -1
  950. package/dist/run/in-process.d.ts.map +0 -1
  951. package/dist/run/in-process.js.map +0 -1
  952. package/dist/run/last-run.d.ts.map +0 -1
  953. package/dist/run/last-run.js.map +0 -1
  954. package/dist/run/managed-process.d.ts.map +0 -1
  955. package/dist/run/managed-process.js.map +0 -1
  956. package/dist/run/output.d.ts.map +0 -1
  957. package/dist/run/output.js.map +0 -1
  958. package/dist/run/process-pool.d.ts.map +0 -1
  959. package/dist/run/process-pool.js.map +0 -1
  960. package/dist/run/provision.d.ts.map +0 -1
  961. package/dist/run/provision.js.map +0 -1
  962. package/dist/run/realm.d.ts.map +0 -1
  963. package/dist/run/realm.js.map +0 -1
  964. package/dist/run/records.d.ts.map +0 -1
  965. package/dist/run/records.js.map +0 -1
  966. package/dist/run/retry.d.ts.map +0 -1
  967. package/dist/run/retry.js.map +0 -1
  968. package/dist/run/runner.d.ts.map +0 -1
  969. package/dist/run/runner.js.map +0 -1
  970. package/dist/run/scheduler.d.ts.map +0 -1
  971. package/dist/run/scheduler.js.map +0 -1
  972. package/dist/run/secrecy.d.ts.map +0 -1
  973. package/dist/run/secrecy.js.map +0 -1
  974. package/dist/run/serial.d.ts.map +0 -1
  975. package/dist/run/serial.js.map +0 -1
  976. package/dist/run/sessions.d.ts.map +0 -1
  977. package/dist/run/sessions.js.map +0 -1
  978. package/dist/run/standalone.d.ts.map +0 -1
  979. package/dist/run/standalone.js.map +0 -1
  980. package/dist/run/steps.d.ts.map +0 -1
  981. package/dist/run/steps.js.map +0 -1
  982. package/dist/run/trace-redaction.d.ts.map +0 -1
  983. package/dist/run/trace-redaction.js.map +0 -1
  984. package/dist/run/unit-runner.d.ts.map +0 -1
  985. package/dist/run/unit-runner.js.map +0 -1
  986. package/dist/run/units.d.ts.map +0 -1
  987. package/dist/run/units.js.map +0 -1
  988. package/dist/run/worker/entry.d.ts.map +0 -1
  989. package/dist/run/worker/entry.js.map +0 -1
  990. package/dist/run/worker/handle.d.ts.map +0 -1
  991. package/dist/run/worker/handle.js.map +0 -1
  992. package/dist/run/worker/protocol.d.ts.map +0 -1
  993. package/dist/run/worker/protocol.js.map +0 -1
  994. package/dist/run/worker/session.d.ts.map +0 -1
  995. package/dist/run/worker/session.js.map +0 -1
  996. package/dist/run/worker-models.d.ts.map +0 -1
  997. package/dist/run/worker-models.js.map +0 -1
  998. package/dist/secrets.d.ts.map +0 -1
  999. package/dist/secrets.js.map +0 -1
  1000. package/dist/telemetry/checkout.d.ts.map +0 -1
  1001. package/dist/telemetry/checkout.js.map +0 -1
  1002. package/dist/telemetry/environment.d.ts.map +0 -1
  1003. package/dist/telemetry/environment.js.map +0 -1
  1004. package/dist/telemetry/events.d.ts.map +0 -1
  1005. package/dist/telemetry/events.js.map +0 -1
  1006. package/dist/telemetry/failure-kind.d.ts.map +0 -1
  1007. package/dist/telemetry/failure-kind.js.map +0 -1
  1008. package/dist/telemetry/posthog.d.ts.map +0 -1
  1009. package/dist/telemetry/posthog.js.map +0 -1
  1010. package/dist/telemetry/project.d.ts.map +0 -1
  1011. package/dist/telemetry/project.js.map +0 -1
  1012. package/dist/telemetry/store.d.ts.map +0 -1
  1013. package/dist/telemetry/store.js.map +0 -1
  1014. package/dist/telemetry/telemetry.d.ts.map +0 -1
  1015. package/dist/telemetry/telemetry.js.map +0 -1
  1016. package/dist/telemetry/token.d.ts.map +0 -1
  1017. package/dist/telemetry/token.js.map +0 -1
  1018. package/dist/types.d.ts.map +0 -1
  1019. package/dist/types.js.map +0 -1
@@ -0,0 +1,819 @@
1
+ ---
2
+ title: CLI
3
+ description: Commands, flags, output formats, and exit codes.
4
+ ---
5
+
6
+ <CodeGroup>
7
+ ```bash npm
8
+ npx e2e init [directory]
9
+ npx e2e login [provider]
10
+ npx e2e logout [provider]
11
+ npx e2e models [provider]
12
+ npx e2e guide [topic]
13
+ npx e2e mcp [options]
14
+ npx e2e run [files...] [options]
15
+ npx e2e explore [goal] [options]
16
+ npx e2e list [files...] [options]
17
+ npx e2e cache ls|clear|stats [--config <path>]
18
+ npx e2e feedback -m <text> [options]
19
+ npx e2e telemetry [status|enable|disable]
20
+ npx e2e --help
21
+ npx e2e --version
22
+ ```
23
+
24
+ ```bash pnpm
25
+ pnpm dlx e2e init [directory]
26
+ pnpm exec e2e login [provider]
27
+ pnpm exec e2e logout [provider]
28
+ pnpm exec e2e models [provider]
29
+ pnpm exec e2e guide [topic]
30
+ pnpm exec e2e mcp [options]
31
+ pnpm exec e2e run [files...] [options]
32
+ pnpm exec e2e explore [goal] [options]
33
+ pnpm exec e2e list [files...] [options]
34
+ pnpm exec e2e cache ls|clear|stats [--config <path>]
35
+ pnpm exec e2e feedback -m <text> [options]
36
+ pnpm exec e2e telemetry [status|enable|disable]
37
+ pnpm exec e2e --help
38
+ pnpm exec e2e --version
39
+ ```
40
+
41
+ ```bash bun
42
+ bunx e2e init [directory]
43
+ bunx e2e login [provider]
44
+ bunx e2e logout [provider]
45
+ bunx e2e models [provider]
46
+ bunx e2e guide [topic]
47
+ bunx e2e mcp [options]
48
+ bunx e2e run [files...] [options]
49
+ bunx e2e explore [goal] [options]
50
+ bunx e2e list [files...] [options]
51
+ bunx e2e cache ls|clear|stats [--config <path>]
52
+ bunx e2e feedback -m <text> [options]
53
+ bunx e2e telemetry [status|enable|disable]
54
+ bunx e2e --help
55
+ bunx e2e --version
56
+ ```
57
+ </CodeGroup>
58
+
59
+ The CLI needs Node.js 22.12 or newer.
60
+
61
+ ## Help and version
62
+
63
+ | Flag | Behavior |
64
+ | --- | --- |
65
+ | `-h`, `--help` | Prints the help of the command it follows and exits 0. `e2e help run` is the same as `e2e run --help`. |
66
+ | `-v`, `--version` | Prints the installed `e2e` version and exits 0. |
67
+
68
+ ```console
69
+ $ npx e2e --version
70
+ 0.14.0
71
+ ```
72
+
73
+ Output is colored on a terminal or in CI, plain when piped or when `NO_COLOR`
74
+ is set. `FORCE_COLOR` keeps the colors. `e2e` without a command prints the
75
+ help on stderr and exits 2.
76
+
77
+ On a terminal at least 55 columns wide, `e2e --help` opens with the e2e
78
+ wordmark, the site's lettering drawn in block characters; piped output and
79
+ narrower terminals get the text alone.
80
+
81
+ ## e2e init
82
+
83
+ Scaffolds a project and adds `e2e` to `devDependencies`. Existing
84
+ config and test files are skipped. With a `directory` argument the project is
85
+ scaffolded there.
86
+
87
+ On a terminal, the wizard opens with the e2e wordmark written in over about
88
+ a second, letter by letter, the way a pen writes it. With `--yes`, in CI, on
89
+ a dumb terminal, and on a terminal shorter than 11 rows the wordmark prints at
90
+ once, and piped output never shows it. Ctrl-C or SIGTERM while it is being
91
+ written exits 130.
92
+
93
+ For a new project, the wizard asks you to choose:
94
+
95
+ - The engine. **Web** (Playwright, the default) adds `@e2e-dev/web`.
96
+ **Mobile (iOS/Android)** adds `@e2e-dev/mobile`, defaults to iOS on
97
+ macOS and Android elsewhere, and opens Settings. **None** adds nothing.
98
+ - A model provider or subscription for agent steps. Choose Vercel AI Gateway,
99
+ OpenRouter, an OpenAI-compatible endpoint, ChatGPT, GitHub Copilot, or
100
+ SuperGrok. Choose None for tests that only use locators. The wizard adds
101
+ the required packages and model config. Subscription users then sign in
102
+ with `e2e login`. See [Models](/models) and [Subscriptions](/subscriptions).
103
+ - Where to install the agent skill (see [e2e guide](#e2e-guide)):
104
+ `.agents/skills/` for Codex, Cursor, Copilot, Gemini CLI, OpenCode, and
105
+ Zed, and `.claude/skills/` for Claude Code. Both are preselected; with
106
+ both, `.claude/skills/e2e` is a symlink to `.agents/skills/e2e`, the
107
+ layout `npx skills add` produces.
108
+ - Where to register the [MCP server](/reference/mcp): `.mcp.json` for
109
+ Claude Code and `.cursor/mcp.json` for Cursor. Both are preselected.
110
+
111
+ After confirming the file changes, choose whether to install the selected
112
+ dependencies. The installer follows the project's `packageManager` field or
113
+ lockfile, then the invoking package manager, then npm.
114
+
115
+ | Argument or flag | Type | Default | Behavior |
116
+ | --- | --- | --- | --- |
117
+ | `[directory]` | path | the working directory | Where to scaffold; created when missing |
118
+ | `-y`, `--yes` | boolean | `false` | Uses the Web engine and Vercel AI Gateway, installs the skill and MCP config in both locations, and skips dependency installation |
119
+
120
+ | Creates | Content |
121
+ | --- | --- |
122
+ | `package.json` | Created as a private ESM package when missing; otherwise only missing dependencies and scripts are added. Sibling packages (`@e2e-dev/web`, `@e2e-dev/mobile`) get the caret range of the version released with the CLI, or that exact version when the CLI is a prerelease. A `test:e2e` script runs `e2e run` unless one exists |
123
+ | `e2e.config.ts` | One target for the selected engine, with the app in its `app`. Playwright reads `APP_URL` (default `http://localhost:3000`) into `app.url` and shows `app.command` in a comment. Mobile sets `app: { bundleId: 'Settings' }` on iOS and `com.android.settings` on Android. With a gateway, `agents.default` is `{ model, system }` |
124
+ | `tests/example.e2e.ts` | An app-open test that passes against any page, plus a commented agent test. Device setup gets a Settings check instead |
125
+ | `.gitignore` | Appends `node_modules/`, `.e2e/artifacts/`, `.e2e/cache/`, `.e2e/sessions/`, `.e2e/report.json`, `.e2e/ai-trace.json`, `.e2e/junit.xml`, `.e2e/summary.md`, `.e2e/failures/`, `.e2e/logs/`, and `.e2e/videos/`. Committing the cache is opt-in; see [commit the replay cache](/cache#commit-the-replay-cache) |
126
+ | `.agents/skills/e2e/`, `.claude/skills/e2e/` | `SKILL.md` and one `references/<topic>.md` per `e2e guide` topic. With both chosen, the Claude Code directory is a relative symlink (`../../.agents/skills/e2e`) to the copy |
127
+ | `.mcp.json`, `.cursor/mcp.json` | Registers `e2e mcp` without changing other servers |
128
+
129
+ <CodeGroup>
130
+ ```bash npm
131
+ npx e2e init --yes
132
+ ```
133
+
134
+ ```bash pnpm
135
+ pnpm dlx e2e init --yes
136
+ ```
137
+
138
+ ```bash bun
139
+ bunx e2e init --yes
140
+ ```
141
+ </CodeGroup>
142
+
143
+ Re-running `init` keeps an existing config and adds no packages for it. Once
144
+ a skill directory exists, later runs refresh copies that differ from the
145
+ installed version and never add a directory the project did not choose. A
146
+ `.claude/skills/e2e/` copy from an earlier version becomes the symlink when
147
+ it holds nothing but the shipped files; one with other files in it stays a
148
+ copy and is refreshed. A skill directory that is a symlink elsewhere, or sits
149
+ under one, is never written through: `--yes` skips it with a warning naming
150
+ the link and its target, and an interactive run offers to replace a linked
151
+ skill directory with a copy, or with the link where the link goes. A
152
+ copy with a directory where a file goes, or a file where a directory goes, is
153
+ skipped with a warning naming the entry; `init` removes nothing to repair it.
154
+
155
+ Cancellation leaves files untouched and exits 0. An invalid `package.json`
156
+ exits 2 before any write. Without a terminal on stdin and stdout, `init`
157
+ without `--yes` exits 2 and names the flag.
158
+
159
+ ## e2e login
160
+
161
+ <CodeGroup>
162
+ ```bash npm
163
+ npx e2e login openai # ChatGPT, browser sign-in
164
+ npx e2e login openai --device # sign in with a device code
165
+ npx e2e login github-copilot --from-gh # use your GitHub CLI login
166
+ npx e2e login github-copilot --client-id <id> [--enterprise-url <host>]
167
+ npx e2e login spacexai # SuperGrok, device code
168
+ npx e2e login # choose a provider
169
+ ```
170
+
171
+ ```bash pnpm
172
+ pnpm exec e2e login openai # ChatGPT, browser sign-in
173
+ pnpm exec e2e login openai --device # sign in with a device code
174
+ pnpm exec e2e login github-copilot --from-gh # use your GitHub CLI login
175
+ pnpm exec e2e login github-copilot --client-id <id> [--enterprise-url <host>]
176
+ pnpm exec e2e login spacexai # SuperGrok, device code
177
+ pnpm exec e2e login # choose a provider
178
+ ```
179
+
180
+ ```bash bun
181
+ bunx e2e login openai # ChatGPT, browser sign-in
182
+ bunx e2e login openai --device # sign in with a device code
183
+ bunx e2e login github-copilot --from-gh # use your GitHub CLI login
184
+ bunx e2e login github-copilot --client-id <id> [--enterprise-url <host>]
185
+ bunx e2e login spacexai # SuperGrok, device code
186
+ bunx e2e login # choose a provider
187
+ ```
188
+ </CodeGroup>
189
+
190
+ Signs in to a subscription and stores credentials in
191
+ `$XDG_CONFIG_HOME/e2e/oauth.json`, by default `~/.config/e2e/oauth.json`. A failed sign-in exits 1, a cancelled one 130; an
192
+ unknown provider exits 2. See [Subscriptions](/subscriptions) for model
193
+ configuration.
194
+
195
+ | Argument or flag | Type | Default | Behavior |
196
+ | --- | --- | --- | --- |
197
+ | `[provider]` | `openai`, `github-copilot`, or `spacexai` | a picker | The subscription to sign in to |
198
+ | `--device` | boolean | `false` | ChatGPT: show a code to enter on another device instead of opening a browser |
199
+ | `--from-gh` | boolean | `false` | GitHub Copilot: reuse the token of the signed-in GitHub CLI |
200
+ | `--client-id <id>` | string | none | GitHub Copilot: the client id of your GitHub OAuth App with the device flow enabled |
201
+ | `--enterprise-url <host>` | string | none | GitHub Copilot: the GitHub Enterprise host |
202
+
203
+ ## e2e logout
204
+
205
+ <CodeGroup>
206
+ ```bash npm
207
+ npx e2e logout # pick one of the stored logins
208
+ npx e2e logout openai # forget one
209
+ ```
210
+
211
+ ```bash pnpm
212
+ pnpm exec e2e logout # pick one of the stored logins
213
+ pnpm exec e2e logout openai # forget one
214
+ ```
215
+
216
+ ```bash bun
217
+ bunx e2e logout # pick one of the stored logins
218
+ bunx e2e logout openai # forget one
219
+ ```
220
+ </CodeGroup>
221
+
222
+ ## e2e models
223
+
224
+ <CodeGroup>
225
+ ```bash npm
226
+ npx e2e models # every stored login
227
+ npx e2e models openai # one provider
228
+ ```
229
+
230
+ ```bash pnpm
231
+ pnpm exec e2e models # every stored login
232
+ pnpm exec e2e models openai # one provider
233
+ ```
234
+
235
+ ```bash bun
236
+ bunx e2e models # every stored login
237
+ bunx e2e models openai # one provider
238
+ ```
239
+ </CodeGroup>
240
+
241
+ Asks the vendor which models the stored login serves and prints one line per
242
+ model: the id `chatgpt()`, `copilot()`, or `grok()` takes, the vendor's name
243
+ for it, and its notes (reasoning levels, vision, preview, hidden, and for
244
+ Copilot `not enabled` or `no chat completions` when `copilot()` cannot call
245
+ it). Without a
246
+ stored login, or when the named provider has none, exits 1 with the sign-in
247
+ command; when one of several logins fails to list, the others still print and
248
+ the command exits 1. An unknown provider exits 2. See
249
+ [Pick a model](/subscriptions#pick-a-model).
250
+
251
+ ## e2e guide
252
+
253
+ <CodeGroup>
254
+ ```bash npm
255
+ npx e2e guide # the overview
256
+ npx e2e guide setup # one topic
257
+ ```
258
+
259
+ ```bash pnpm
260
+ pnpm exec e2e guide # the overview
261
+ pnpm exec e2e guide setup # one topic
262
+ ```
263
+
264
+ ```bash bun
265
+ bunx e2e guide # the overview
266
+ bunx e2e guide setup # one topic
267
+ ```
268
+ </CodeGroup>
269
+
270
+ Prints the skill that `init` installs. `guide` alone prints the overview;
271
+ `guide <topic>` prints one of `setup`, `writing-tests`, `agent`, `running`,
272
+ `explore`, `debugging`, `mcp`, or `bug-bash`. An unknown topic exits 2 and names the
273
+ valid ones. The same skill installs with `npx skills add tester-army/e2e`.
274
+ See [Coding agents](/coding-agents).
275
+
276
+ ## e2e mcp
277
+
278
+ <CodeGroup>
279
+ ```bash npm
280
+ npx e2e mcp [--config <path>] [--target <name>] [--headless] [--max-sessions <n>]
281
+ ```
282
+
283
+ ```bash pnpm
284
+ pnpm exec e2e mcp [--config <path>] [--target <name>] [--headless] [--max-sessions <n>]
285
+ ```
286
+
287
+ ```bash bun
288
+ bunx e2e mcp [--config <path>] [--target <name>] [--headless] [--max-sessions <n>]
289
+ ```
290
+ </CodeGroup>
291
+
292
+ An MCP server on stdio that gives a coding agent a live session on the app.
293
+ Flags, tools, and session rules are on the [MCP server](/reference/mcp) page.
294
+
295
+ ## e2e run
296
+
297
+ ### Positional arguments
298
+
299
+ ```bash
300
+ e2e run [files...]
301
+ ```
302
+
303
+ Test files, directories, or globs relative to the project root:
304
+
305
+ - a file path (`tests/signup.e2e.ts`) selects that file;
306
+ - a directory (`tests/agent`, `.`) selects every discovered test file beneath
307
+ it;
308
+ - a bare name selects every discovered file whose path ends with it at a
309
+ segment boundary. `signup.e2e.ts` and `agent/signup.e2e.ts` both select
310
+ `tests/agent/signup.e2e.ts`. Without a `/` or `.` it matches the file name
311
+ with extensions dropped, so `signup` selects it too;
312
+ - any of these with `:line` appended (`tests/signup.e2e.ts:12`, `signup:12`)
313
+ selects only the test declared at that line of each file it names: the line
314
+ the `test(` call opens on, as an editor or a report's `source` shows it. A
315
+ serial group runs whole when a line names one member. Several lines of one
316
+ file add up; naming the file without a line selects it whole. When no test
317
+ is declared at a named line, `NO_TESTS` names the positional and the lines
318
+ the file declares tests at. A positional that exists on disk as written is
319
+ a path, even when its name ends in `:12`;
320
+ - a glob (`'tests/**/*.smoke.e2e.ts'`, quoted) uses the grammar of the config
321
+ `tests` globs: `*`, `?`, and a whole `**` segment. Braces, character
322
+ classes, and extglobs are `INVALID_GLOB` with a hint rather than a pattern
323
+ that matches nothing: there is no expansion, so name one glob per
324
+ alternative. `./`, `..`, a trailing `/`, and an absolute path inside the
325
+ project resolve as they do for any positional path, and an existing file or
326
+ directory is selected by its path whatever its name is spelled with.
327
+
328
+ Positionals narrow the config globs and the tag, platform, and capability
329
+ filters; they never bypass them. Names and globs are case-sensitive on every
330
+ OS. A path outside the project root is `COLLECTION_ERROR`.
331
+
332
+ The runner imports every discovered test file, even when you select only a
333
+ few. This lets a selected test find its session setup in another file.
334
+ Other ordinary tests remain unselected. A collection error in a selected
335
+ file, or in any file of a run with no positionals, fails the run. A file the
336
+ positionals left out that fails to import or register its tests is skipped
337
+ with a notice, so a half-written file elsewhere in the suite does not stop
338
+ `npx e2e run tests/login.e2e.ts`; if a selected test's session then has no
339
+ setup test, the error names that file as where the setup may be.
340
+
341
+ A positional starting with `-` that names no file is a usage error, exit 2.
342
+ This is what `pnpm test:e2e -- --headed` produces: the `--` reaches e2e and
343
+ `--headed` would otherwise be taken for a file. The message names the direct
344
+ form, `pnpm exec e2e run --headed`.
345
+
346
+ When nothing is left to run, `NO_TESTS` names the cause: no file matched the
347
+ globs (with look-alike files such as `tests/login.test.ts`), a positional
348
+ matched nothing (with the nearest path), a matched file registered no tests,
349
+ or every test was filtered out.
350
+
351
+ ### Flags
352
+
353
+ | Flag | Type | Default | Behavior |
354
+ | --- | --- | --- | --- |
355
+ | `--config <path>` | string | discovered | Explicit config path. A missing file is `CONFIG_NOT_FOUND`. |
356
+ | `--target <ids>` | comma-separated or repeated | every configured target | Selects targets by name. Only the app commands of selected targets start. An unknown ID is `UNKNOWN_TARGET`. |
357
+ | `--tag <tags>` | comma-separated or repeated | none | Only tests carrying the tags: any of them, or every one with `--tag-mode all`. When the filter leaves nothing to run, `NO_TESTS` counts the tests it filtered, marks each tag no test declares, and names the nearest declared one. |
358
+ | `--tag-mode <mode>` | `any` or `all` | `any` | How several tags combine: any of them, or every one. |
359
+ | `--exclude-tag <tags>` | comma-separated or repeated | none | Leaves out every test carrying any of the tags, whatever `--tag` or a positional selected. A serial group still runs whole when any member is selected; tag the serial `describe` to exclude the flow. |
360
+ | `--grep <pattern>` | regular expression, repeatable | none | Only tests whose title matches one of the patterns. The text matched is the describe titles and the test title joined by one space (`checkout pays`); the file and the tags are not part of it. A bare pattern is case-sensitive; `'/pattern/i'` adds flags. A pattern that does not compile is a usage error, exit 2. |
361
+ | `--grep-invert <pattern>` | regular expression, repeatable | none | Leaves out every test whose title matches one of the patterns. Same text and pattern forms as `--grep`; both together keep the tests `--grep` matches minus the ones `--grep-invert` matches. |
362
+ | `--last-failed` | boolean | `false` | Only the tests the previous run did not pass, read from the `report.json` this run overwrites, `<output>/report.json` (`--output`, else the config's [`output`](/reference/config#output)): failed, timed out, interrupted, or skipped because a setup, a serial predecessor, a hook, or the worker failed, and every test it selected in the describe or file, on that target, of a `beforeAll` or `afterAll` that failed (for a setup, the tests that consume its session). A rerun that runs the hook again reports it again if it still fails; another filter that leaves its tests out leaves the failure out of the next report too. A test is named per target and agent. No report is `NO_LAST_RUN`; a previous run with nothing failed selects nothing, `NO_TESTS` unless `--pass-with-no-tests`. |
363
+ | `--shard <index/total>` | `2/3` | none | Runs one contiguous slice of the selected tests, cut once every other filter applied. Slices differ in size by at most one test, a serial group counts as one and is never split, and each shard brings only the setup tests its own tests need. Every shard runs the same command with a different index; the order is the report order, so the same suite shards the same way on every machine. A shard that gets no test is `NO_TESTS` unless `--pass-with-no-tests`. See [Sharding](/ci#sharding). |
364
+ | `--headed` | boolean | `false` | Visible UI when the engine supports it. |
365
+ | `--agent <names>` | comma-separated or repeated | `default` | Runs unpinned tests once per selected agent. For a test with `{ agent }`, selects the shared names when there is overlap; otherwise keeps the test's selection. An unknown name is `INVALID_CONFIG`. |
366
+ | `--retries <n>` | integer 0-10 | config | Replaces `config.retries`. |
367
+ | `--workers <n>` | integer 1-1024 | config | Replaces `config.workers`. |
368
+ | `--repeat-each <n>` | integer, at least 1 | `1` | Runs every selected test this many times. Each run is a result of its own, with `repeat` 0 through `n - 1` and its own `id`; the list reporter titles the later runs `(repeat #1)`, `(repeat #2)`, and their artifacts go under a `repeat-<n>` directory. Setup tests run once. With the replay cache on, the first run records and the later ones replay, so pair it with `--no-cache` to exercise the model each time. The `list` summary adds a `Repeats` row (`1 of 2 tests passed all 5 runs`) and one line per test that did not pass every run, naming each run that failed; the `markdown` page carries the same tally. |
369
+ | `--max-failures <n>` | integer, at least 1 | none | Stops the run once this many tests have failed or timed out. Nothing more is dispatched, the tests running on other workers end as `interrupted`, and the tests not started, the rest of the file whose test reached the limit included, are skipped with cause `failure-limit` and the reason `run stopped after 3 failures (--max-failures 3)`. The exit code is the failures' own, 1, not 130. |
370
+ | `--reporter <ids>` | comma-separated list | config | Replaces the built-in IDs in `config.reporters`: `list`, `json`, `junit`, `markdown`. `json` with `list` is `INVALID_CONFIG`. [Reporter objects](/reference/reporters) in the config keep running. |
371
+ | `--output <dir>` | string | config, else `.e2e` | The results directory for this run, over the config's [`output`](/reference/config#output): the report, the reporter files, the AI trace, `artifacts/` (cleared once the run's tests start), and `sessions/`. Resolved from the project root; one the run cannot own is `INVALID_CONFIG`. The removed `--artifacts <dir>` fails with the `--output` it maps to: `--artifacts out/artifacts` is `--output out`, and a directory whose parent is the project root or outside it maps to `--output .e2e`. |
372
+ | `--no-cache` | boolean | `false` | Replay cache off for this run, whatever `config.cache` says. |
373
+ | `--strict-cache` | boolean | `false` | Turns on `cache.strict` for this run: a step whose recording exists but no longer replays fails with `REPLAY_STALE` instead of handing off to the agent. See [Fail on a stale recording](/cache#fail-on-a-stale-recording). |
374
+ | `--pass-with-no-tests` | boolean | `false` | Exit 0 instead of `NO_TESTS` when nothing is selected. |
375
+ | `--debug` | boolean | `false` | Phase timings and an agent step table on stderr after the run. |
376
+ | `--ai-trace` | boolean | `false` | Records every model call to `<output>/ai-trace.json`, an AI SDK devtools database. Open it with [unbox-ai](https://github.com/tester-army/unbox-ai). |
377
+ | `--trace [mode]` | `off`, `on`, `retain-on-failure`, `on-first-retry`, or `on-all-retries` | config | Which attempts record a trace, over the config's and every target's `trace`; a test's own `trace` still wins. A bare `--trace` is `on`, `--trace off` skips the cost for one run. It applies to the targets whose engine can trace; the run names the others in one notice. The value is optional and greedy, so `--trace tests/a.e2e.ts` reads the file as a mode and fails: write `--trace=<mode>`, or put test files before `--trace`. See [trace](/reference/config#trace). |
378
+ | `--video [mode]` | a recording mode, as `--trace` | config | Which attempts record a video (WebM on a browser engine, MP4 on a device engine), over the config's and every target's `video`; a test's own `video` still wins. A bare `--video` is `on`. It applies to the targets whose engine can record; the run names the others in one notice. Greedy like `--trace`: write `--video=<mode>`, or put test files before `--video`. See [video](/reference/config#video). |
379
+
380
+ Out-of-range `--retries` and `--workers` fail with `INVALID_CONFIG` before
381
+ anything starts, the same as the config value would. `--target`, `--tag`,
382
+ `--exclude-tag`, and `--agent` take each name once; an empty value (`--tag ''`,
383
+ or `--tag "$TAGS"` with the variable unset) is a usage error, exit 2, never a
384
+ wider selection.
385
+
386
+ Filters only narrow, and each applies after the one before: positionals, then
387
+ `.only`, `--tag`, `--exclude-tag`, `--grep`, `--grep-invert`, `--last-failed`,
388
+ then the platform and capability rules, then `--shard`. When they leave
389
+ nothing to run, `NO_TESTS` counts the tests each filter removed, names the tags
390
+ and patterns, and marks a tag no test declares.
391
+
392
+ `--debug` appends two tables to stderr. Phase timings are summed across the
393
+ runner and every worker. The agent step table lists every agent step in
394
+ execution order with its per-phase split, model calls, tokens, and cost when
395
+ the provider reported one.
396
+
397
+ ```console
398
+ $ npx e2e run --debug
399
+ ...
400
+ [e2e debug] phase timings (wall 14.2s)
401
+ phase count total avg max
402
+ scheduler 1 11.8s 11.8s 11.8s
403
+ test.body 6 10.1s 1.7s 3.9s
404
+ session.launch 6 1.1s 183ms 410ms
405
+ engine.prepare 1 612ms 612ms 612ms
406
+ collect 1 420ms 420ms 420ms
407
+ config.load 1 118ms 118ms 118ms
408
+ realm.import 1 96ms 96ms 96ms
409
+ session.close 6 88ms 15ms 31ms
410
+ engine.init 1 74ms 74ms 74ms
411
+
412
+ [e2e debug] agent steps (execution order, model anthropic/claude-sonnet-4.5, total $0.0312)
413
+ step total model observe action calls tokens in/out cached cost
414
+ act "add a todo named groceries" 3.9s 2.8s 410ms 620ms 3 9412/388 61% (5740) $0.0198
415
+ assert "the list shows groceries" 1.2s 1.1s 88ms 0ms 1 3120/41 0% (0) $0.0114
416
+ ```
417
+
418
+ `cached` is the share of input tokens the provider served from its prompt
419
+ cache, `-` when it reports no split. The report records the same per step
420
+ (`model.cacheReadTokens`, `model.cacheWriteTokens`) and per run
421
+ (`usage.modelCachedTokens`).
422
+
423
+ <CodeGroup>
424
+ ```bash npm
425
+ npx e2e run
426
+ npx e2e run tests/signup.e2e.ts --tag smoke
427
+ npx e2e run tests/signup.e2e.ts:12
428
+ npx e2e run tests/agent
429
+ npx e2e run 'tests/**/*.smoke.e2e.ts'
430
+ npx e2e run --target web,webkit --tag smoke,billing --tag-mode all
431
+ npx e2e run --tag smoke --exclude-tag slow
432
+ npx e2e run --grep checkout --grep-invert '/refund/i'
433
+ npx e2e run --last-failed
434
+ npx e2e run --shard 2/3
435
+ npx e2e run --reporter json --workers 4 --retries 2
436
+ npx e2e run --max-failures 3
437
+ npx e2e run --repeat-each 5 --no-cache tests/checkout.e2e.ts
438
+ npx e2e run --reporter list,junit
439
+ ```
440
+
441
+ ```bash pnpm
442
+ pnpm exec e2e run
443
+ pnpm exec e2e run tests/signup.e2e.ts --tag smoke
444
+ pnpm exec e2e run tests/signup.e2e.ts:12
445
+ pnpm exec e2e run tests/agent
446
+ pnpm exec e2e run 'tests/**/*.smoke.e2e.ts'
447
+ pnpm exec e2e run --target web,webkit --tag smoke,billing --tag-mode all
448
+ pnpm exec e2e run --tag smoke --exclude-tag slow
449
+ pnpm exec e2e run --grep checkout --grep-invert '/refund/i'
450
+ pnpm exec e2e run --last-failed
451
+ pnpm exec e2e run --shard 2/3
452
+ pnpm exec e2e run --reporter json --workers 4 --retries 2
453
+ pnpm exec e2e run --max-failures 3
454
+ pnpm exec e2e run --repeat-each 5 --no-cache tests/checkout.e2e.ts
455
+ pnpm exec e2e run --reporter list,junit
456
+ ```
457
+
458
+ ```bash bun
459
+ bunx e2e run
460
+ bunx e2e run tests/signup.e2e.ts --tag smoke
461
+ bunx e2e run tests/signup.e2e.ts:12
462
+ bunx e2e run tests/agent
463
+ bunx e2e run 'tests/**/*.smoke.e2e.ts'
464
+ bunx e2e run --target web,webkit --tag smoke,billing --tag-mode all
465
+ bunx e2e run --tag smoke --exclude-tag slow
466
+ bunx e2e run --grep checkout --grep-invert '/refund/i'
467
+ bunx e2e run --last-failed
468
+ bunx e2e run --shard 2/3
469
+ bunx e2e run --reporter json --workers 4 --retries 2
470
+ bunx e2e run --max-failures 3
471
+ bunx e2e run --repeat-each 5 --no-cache tests/checkout.e2e.ts
472
+ bunx e2e run --reporter list,junit
473
+ ```
474
+ </CodeGroup>
475
+
476
+ ### Output
477
+
478
+ | Reporter | Writes |
479
+ | --- | --- |
480
+ | `list` | Terminal progress, failures with code frames, and a run summary. On a TTY, live progress includes the current agent step, model turns, tool calls, and reasoning excerpts. Untrusted fields are capped at 8 KiB and stripped of control characters. |
481
+ | `json` | The report document to stdout and nothing else there, so `e2e run --reporter json \| jq` works. Same document as `<output>/report.json`, described by `schema/report-v1.schema.json` in the package. The shape changes only with the `schemaVersion` field (`report-1` today). Cannot be combined with `list`. |
482
+ | `junit` | `junit.xml` beside the report. One `<testsuite>` per file, one `<testcase>` per test-target pair named `title > path [target]`. A test-class error is a `<failure>`, any other an `<error>`, a skip a `<skipped>` with its reason. Run-level errors form a `run` suite. |
483
+ | `markdown` | `summary.md` beside the report with counts, cost, errors, and failure details. Failed and flaky tests also get a page under `failures/` there, with steps, model turns, and the screen at failure. Exploration runs show findings. [`@e2e-dev/github`](/github) uses this summary for pull request comments. |
484
+
485
+ Every run that gets to its tests writes `report.json` under the [output directory](/reference/config#output)
486
+ (`.e2e` by default) whatever the reporters are, and the reporters' files
487
+ beside it. A run that stops before (a config or collection error,
488
+ `NO_TESTS`, `NO_LAST_RUN`, `UNSUPPORTED_ARTIFACT`, an app command that
489
+ fails to start, an interrupt) writes none of them and leaves the previous
490
+ run's files in place; its errors are on the terminal and in the exit code. A `junit.xml` or `summary.md` that could not be written is a
491
+ line on stderr, never a run error.
492
+
493
+ With `--ai-trace`, the run also writes `<output>/ai-trace.json`: one entry per
494
+ model round trip with the exact prompt, tool definitions, response, usage,
495
+ and provider metadata. Observations in it are already redacted. Inline image
496
+ and file bytes are replaced with byte counts. Open it with
497
+ `npx unbox-ai .e2e/ai-trace.json` for the default output; see [Debugging a run](/debugging#agent-steps).
498
+
499
+ ### Signals
500
+
501
+ Signals escalate.
502
+
503
+ 1. The first `SIGINT` or `SIGTERM` interrupts. The running test ends with
504
+ status `interrupted`, its `afterEach` hooks and session close run within
505
+ the cleanup budget, and every worker disposes its engine. The tests not
506
+ started are skipped with cause `infrastructure-unavailable` and the reason
507
+ `run interrupted before execution`, so the report lists every planned
508
+ test and `--last-failed` runs the interrupted and the unstarted ones
509
+ again. The runner writes the report and exits 130. An interrupt before
510
+ any test starts (during collection, an engine's `prepare`, or app
511
+ startup) writes no report and leaves the previous one in place.
512
+ 2. A second signal forces. Workers dispose their engines at once and are
513
+ killed when the cleanup budget is spent. The report is still written.
514
+ 3. A third signal exits on the spot, after killing the process groups of every
515
+ app command the run started. A process attached through
516
+ `reuseExisting` is left alone.
517
+
518
+ A worker whose runner disappears disposes its engine and exits within the
519
+ cleanup budget.
520
+
521
+ ## e2e explore
522
+
523
+ ```bash
524
+ e2e explore [goal]
525
+ ```
526
+
527
+ A run with no test file. The agent gets a goal, plans one exploration step
528
+ at a time, reports defects through its `report_finding` tool, and ends with an
529
+ assessment. The default goal is `Explore the app and find bugs`. See
530
+ [Exploring without a test](/explore).
531
+
532
+ | Flag | Type | Default | Behavior |
533
+ | --- | --- | --- | --- |
534
+ | `--config <path>` | string | discovered | Explicit config path, with the same errors as `run`. |
535
+ | `--target <id>` | string | the first configured target | The one target to explore. Several targets and no flag explores the first and says so on stderr. An unknown name is `UNKNOWN_TARGET`. |
536
+ | `--agent <name>` | string | `default` | The configured agent the exploration runs as. Its model, tools, and context are reused; a hand-rolled `StepExecutor` is replaced by the built-in agent, with a notice. An unknown name is `INVALID_CONFIG`. |
537
+ | `--session <name>` | string | none | Starts signed in. The setup test in the config's test files that declares this session runs first, and the exploration restores what it saved, as a test with `{ session }` does. No other test runs. A name no setup test declares is `COLLECTION_ERROR`, naming the declared ones, before any app process starts. See [Start signed in](/explore#start-signed-in). |
538
+ | `--max-steps <n>` | integer 1-12 | `8` | Exploration steps at most. Out of range exits 2. |
539
+ | `--timeout <ms>` | integer 180000-900000 | `600000` | The run's wall clock. The last minute is kept for the closing assessment. Out of range exits 2. |
540
+ | `--headed` | boolean | `false` | Requests visible UI when the engine supports it. |
541
+ | `--reporter <ids>` | comma-separated list | resolved config value | As for `run`. The exploration summary rows print under the `list` summary; `json` carries the record in the report. |
542
+ | `--output <dir>` | string | config, else `.e2e` | As for `run`; a finding's evidence screenshot is one of the attempt's artifacts under `<output>/artifacts`. |
543
+ | `--debug` | boolean | `false` | As for `run`: phase timings and the agent step table. |
544
+ | `--ai-trace` | boolean | `false` | As for `run`. |
545
+ | `--trace [mode]` | a recording mode | config | As for `run`: one trace of the whole exploration. A bare `--trace` is `on`; `retain-on-failure` keeps it only when the exploration did not pass. The exploration is one attempt, so `on-first-retry` and `on-all-retries` record nothing, and neither does the CI default: `CI=1 e2e explore` needs `--trace on` for a trace, and its plan-time notice says so. Put the goal before `--trace`, or write `--trace=<mode>`. |
546
+ | `--video [mode]` | a recording mode | config | As for `run`: one video of the whole exploration (WebM on a browser engine, MP4 on a device engine). A bare `--video` is `on`; `retain-on-failure` keeps it only when the exploration did not pass. The exploration is one attempt, so a retry mode records nothing. Put the goal before `--video`, or write `--video=<mode>`. |
547
+
548
+ The run has one result, under the virtual file `explore`, titled by the goal.
549
+ With `--session`, the report also holds the setup test's result and lists the
550
+ project's other tests as skipped with cause `filtered`, as `run` lists the
551
+ tests of a file no positional named.
552
+ The exploration runs with the replay cache off and zero retries whatever the
553
+ config says. A `--session` setup test runs as it would for `run`, with the
554
+ config's agents, cache, and retries.
555
+ `<output>/report.json` gains `run.explore`: the goal, the budgets, why the run
556
+ ended (`finished`, `step-limit`, `time`, `stuck`, or `aborted`), the
557
+ assessment, the steps, and the findings.
558
+
559
+ Exit codes: `0` when steps ran and no finding of kind `issue` was reported,
560
+ `1` when one was or when no step ran at all, `2` and `3` as for `run`, `130`
561
+ on Ctrl-C.
562
+
563
+ <CodeGroup>
564
+ ```bash npm
565
+ npx e2e explore
566
+ npx e2e explore 'Explore the checkout flow like a first-time buyer and report anything off'
567
+ npx e2e explore --target web --max-steps 4 --headed
568
+ npx e2e explore 'Hunt for broken forms and dead links' --agent thorough --video
569
+ ```
570
+
571
+ ```bash pnpm
572
+ pnpm exec e2e explore
573
+ pnpm exec e2e explore 'Explore the checkout flow like a first-time buyer and report anything off'
574
+ pnpm exec e2e explore --target web --max-steps 4 --headed
575
+ pnpm exec e2e explore 'Hunt for broken forms and dead links' --agent thorough --video
576
+ ```
577
+
578
+ ```bash bun
579
+ bunx e2e explore
580
+ bunx e2e explore 'Explore the checkout flow like a first-time buyer and report anything off'
581
+ bunx e2e explore --target web --max-steps 4 --headed
582
+ bunx e2e explore 'Hunt for broken forms and dead links' --agent thorough --video
583
+ ```
584
+ </CodeGroup>
585
+
586
+ ## e2e list
587
+
588
+ ```bash
589
+ e2e list [files...]
590
+ ```
591
+
592
+ A dry run. `list` selects tests exactly as `run` does, prints one line per
593
+ test-target pair, and exits. No app process, engine, or worker starts, and
594
+ nothing is written.
595
+
596
+ Positionals and the selection flags (`--config`, `--target`, `--tag`,
597
+ `--tag-mode`, `--exclude-tag`, `--grep`, `--grep-invert`, `--last-failed`,
598
+ `--shard`, `--pass-with-no-tests`) are those of `run`; `--last-failed` reads
599
+ `report.json` under the config's [`output`](/reference/config#output). `--reporter` accepts `list` (the default) or `json`.
600
+
601
+ | Reporter | Writes |
602
+ | --- | --- |
603
+ | `list` | One line per pair, `file › title [target]`, in selection order, with the describe path joined by ` › ` (`tests/billing.e2e.ts › checkout › pays [web]`), then each tag the test declares as `#tag` (`tests/billing.e2e.ts › checkout › pays [web] #smoke #billing`). A skipped test keeps its line with `(skipped: <reason>)` appended. Setup tests are listed like any other. |
604
+ | `json` | `{ "pairs": [...] }` to stdout. Each pair carries `file`, `title`, `titlePath`, `kind` (`test` or `setup`), `tags` (the tags the test declares, `[]` when none), `target`, `disposition` (`run` or `skip`), and `skipReason` when skipped. |
605
+
606
+ Pairs a filter removed are not listed.
607
+
608
+ <CodeGroup>
609
+ ```bash npm
610
+ npx e2e list
611
+ npx e2e list tests/signup.e2e.ts
612
+ npx e2e list --tag smoke --target web
613
+ npx e2e list --grep checkout --exclude-tag slow
614
+ npx e2e list --reporter json
615
+ ```
616
+
617
+ ```bash pnpm
618
+ pnpm exec e2e list
619
+ pnpm exec e2e list tests/signup.e2e.ts
620
+ pnpm exec e2e list --tag smoke --target web
621
+ pnpm exec e2e list --grep checkout --exclude-tag slow
622
+ pnpm exec e2e list --reporter json
623
+ ```
624
+
625
+ ```bash bun
626
+ bunx e2e list
627
+ bunx e2e list tests/signup.e2e.ts
628
+ bunx e2e list --tag smoke --target web
629
+ bunx e2e list --grep checkout --exclude-tag slow
630
+ bunx e2e list --reporter json
631
+ ```
632
+ </CodeGroup>
633
+
634
+ ## e2e cache
635
+
636
+ Inspect or clear the replay cache. These commands load the discovered config
637
+ or `--config <path>`, honor `cache.dir`, and exit 0 on an empty store. The
638
+ default directory is `.e2e/cache/`.
639
+
640
+ | Command | Prints |
641
+ | --- | --- |
642
+ | `e2e cache ls` | One row per entry: the test and target it was recorded for, the first 12 characters of its instruction digest, its age, and how many actions a replay would run (`(truncated)` when recording hit the action cap). Rows are grouped by test, then target, oldest first. |
643
+ | `e2e cache stats` | The store directory, the number of readable entries, their total size, and the number of unreadable files when there are any. |
644
+ | `e2e cache clear` | Deletes every cache file, then the directory when nothing else is left in it, and reports how many files went. |
645
+
646
+ <CodeGroup>
647
+ ```bash npm
648
+ npx e2e cache ls
649
+ npx e2e cache stats
650
+ npx e2e cache clear
651
+ npx e2e cache ls --config packages/web/e2e.config.ts
652
+ ```
653
+
654
+ ```bash pnpm
655
+ pnpm exec e2e cache ls
656
+ pnpm exec e2e cache stats
657
+ pnpm exec e2e cache clear
658
+ pnpm exec e2e cache ls --config packages/web/e2e.config.ts
659
+ ```
660
+
661
+ ```bash bun
662
+ bunx e2e cache ls
663
+ bunx e2e cache stats
664
+ bunx e2e cache clear
665
+ bunx e2e cache ls --config packages/web/e2e.config.ts
666
+ ```
667
+ </CodeGroup>
668
+
669
+ ```text
670
+ TEST TARGET INSTRUCTION AGE ACTIONS
671
+ tests/billing.e2e.ts::upgrades web 4f1c0a9d3b62 2h 4
672
+ tests/signup.e2e.ts::signs%20up web 9ab7715ce004 3d 7 (truncated)
673
+ ```
674
+
675
+ An entry recorded before entries carried provenance prints `-` in those
676
+ columns and still replays. A file the store cannot read (truncated, over the
677
+ 1 MiB ceiling, or from a newer schema) is counted separately on stderr, treated
678
+ as a miss by a run, and removed by `clear`. Files the runner never wrote are
679
+ left alone.
680
+
681
+ <Note>
682
+ These commands read the file store only. With a custom `cache.store` they
683
+ exit 2 and say so.
684
+ </Note>
685
+
686
+ ## e2e feedback
687
+
688
+ <CodeGroup>
689
+ ```bash npm
690
+ npx e2e feedback -m <text> [--type bug|docs|feature|other] [options]
691
+ ```
692
+
693
+ ```bash pnpm
694
+ pnpm exec e2e feedback -m <text> [--type bug|docs|feature|other] [options]
695
+ ```
696
+
697
+ ```bash bun
698
+ bunx e2e feedback -m <text> [--type bug|docs|feature|other] [options]
699
+ ```
700
+ </CodeGroup>
701
+
702
+ Sends one report about e2e itself to the e2e team: something broke, the docs
703
+ or the skill misled, or a capability is missing. Coding agents are welcome to
704
+ send one when they hit a problem with e2e, not with the app under test.
705
+
706
+ | Flag | Meaning |
707
+ | --- | --- |
708
+ | `-m, --message <text>` | Required. One or two sentences on the problem, at most 2000 characters |
709
+ | `--type <type>` | `bug`, `docs`, `feature`, or `other` (default) |
710
+ | `--task <text>` | What you were trying to do |
711
+ | `--expected <text>` | What you expected to happen |
712
+ | `--actual <text>` | What happened instead, with the error code and message |
713
+ | `--approach <text>` | What you tried, workarounds included |
714
+ | `--command <text>` | The e2e command or API involved, at most 200 characters |
715
+ | `--agent <text>` | The coding agent and model sending it, at most 200 characters |
716
+ | `--dry-run` | Print the event that would be sent and send nothing |
717
+
718
+ `--task`, `--expected`, `--actual`, and `--approach` take up to 4000
719
+ characters each. A blank or longer value exits 2.
720
+
721
+ <CodeGroup>
722
+ ```bash npm
723
+ npx e2e feedback --type bug -m "list ignores --grep" --command "e2e list --grep checkout"
724
+ npx e2e feedback --type docs -m "The mcp topic never says how to close a session"
725
+ npx e2e feedback --type feature -m "Need a way to set the viewport per test" --dry-run
726
+ ```
727
+
728
+ ```bash pnpm
729
+ pnpm exec e2e feedback --type bug -m "list ignores --grep" --command "e2e list --grep checkout"
730
+ pnpm exec e2e feedback --type docs -m "The mcp topic never says how to close a session"
731
+ pnpm exec e2e feedback --type feature -m "Need a way to set the viewport per test" --dry-run
732
+ ```
733
+
734
+ ```bash bun
735
+ bunx e2e feedback --type bug -m "list ignores --grep" --command "e2e list --grep checkout"
736
+ bunx e2e feedback --type docs -m "The mcp topic never says how to close a session"
737
+ bunx e2e feedback --type feature -m "Need a way to set the viewport per test" --dry-run
738
+ ```
739
+ </CodeGroup>
740
+
741
+ The report goes to the same PostHog project as [telemetry](/telemetry#feedback),
742
+ as one `e2e_feedback` event, together with the anonymous machine facts every
743
+ telemetry event carries. Before sending, the value of every environment
744
+ variable whose name holds `KEY`, `TOKEN`, `SECRET`, `PASS`, `_PWD`,
745
+ `CREDENTIAL`, `AUTH`, `COOKIE`, or `PRIVATE` becomes `<secret:NAME>` when it
746
+ is at least six characters long, the minimum for a config secret, since a
747
+ shorter one would rewrite ordinary words. Bearer tokens,
748
+ URL credentials, private keys, JWTs, and common API key shapes become
749
+ `<redacted>`. Do not paste app data, page content, or test files.
750
+
751
+ Feedback is sent only when you run the command, so a saved
752
+ `e2e telemetry disable` does not stop it. `E2E_TELEMETRY_DISABLED=1` and
753
+ `DO_NOT_TRACK=1` do: with either set the command exits 2 and sends nothing,
754
+ so a CI job or a fleet that opted out sends nothing even when an agent runs
755
+ it. `E2E_TELEMETRY_DEBUG=1` prints it like `--dry-run`. It prints a reference
756
+ id and exits 0 once PostHog accepts the event, or exits 3 when PostHog did
757
+ not confirm it; the report may still have arrived, so the message names its
758
+ reference id.
759
+
760
+ ## e2e telemetry
761
+
762
+ Shows whether anonymous usage telemetry is on, and switches it.
763
+ [Telemetry](/telemetry) lists every property sent.
764
+
765
+ | Command | Effect |
766
+ | --- | --- |
767
+ | `e2e telemetry`, `e2e telemetry status` | Prints `Status: enabled`, or `Status: disabled` with the reason: the variable that is set, the saved choice, or a preferences directory that cannot be written. |
768
+ | `e2e telemetry disable` | Saves the opt-out to `~/.config/e2e/telemetry.json` (`$XDG_CONFIG_HOME/e2e/` when set, `%APPDATA%\e2e\` on Windows) and prints the status. |
769
+ | `e2e telemetry enable` | Saves the opt-in and prints the status. A variable set in the environment still wins, and the status says so. |
770
+
771
+ <CodeGroup>
772
+ ```bash npm
773
+ npx e2e telemetry
774
+ npx e2e telemetry disable
775
+ E2E_TELEMETRY_DEBUG=1 npx e2e run
776
+ ```
777
+
778
+ ```bash pnpm
779
+ pnpm exec e2e telemetry
780
+ pnpm exec e2e telemetry disable
781
+ E2E_TELEMETRY_DEBUG=1 pnpm exec e2e run
782
+ ```
783
+
784
+ ```bash bun
785
+ bunx e2e telemetry
786
+ bunx e2e telemetry disable
787
+ E2E_TELEMETRY_DEBUG=1 bunx e2e run
788
+ ```
789
+ </CodeGroup>
790
+
791
+ `E2E_TELEMETRY_DISABLED=1` and `DO_NOT_TRACK=1` turn telemetry off without
792
+ touching the file. `E2E_TELEMETRY_DEBUG=1` prints every event to stderr and
793
+ sends nothing. The first command on a machine other than `e2e init` and
794
+ `e2e telemetry` prints a notice once; in CI nothing is printed and no file is written.
795
+
796
+ ## Exit codes
797
+
798
+ | Code | Meaning |
799
+ | ---: | --- |
800
+ | 0 | All selected tests passed, were flaky, or were explicitly skipped |
801
+ | 1 | Final test or setup failure, or test timeout |
802
+ | 2 | CLI, config, collection, dependency, credential, model-config, or policy error |
803
+ | 3 | Engine, app process, model provider, artifact, or cleanup infrastructure failure; `e2e feedback` that could not be delivered |
804
+ | 4 | Internal runner invariant or unhandled runner error |
805
+ | 130 | Interrupted by a user or CI signal |
806
+
807
+ Precedence for a mixed run is `130 > 4 > 3 > 2 > 1 > 0`. The report keeps every
808
+ individual result; precedence affects only the process exit code.
809
+
810
+ Argument parsing failures exit 2 with a one-line error on stderr.
811
+
812
+ ## Diagnostics
813
+
814
+ A message that rejects a name suggests the nearest valid one. Keys from other
815
+ runners' configs (`testDir`, `baseURL`, `webServer`, `projects`) say where
816
+ that fact lives here. A failing `import` in the config or a test file ends
817
+ with the install or add command for the project's package manager, or the
818
+ subpaths the package exports. A model credential the provider rejects names
819
+ the variable the provider reads.