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,546 @@
1
+ ---
2
+ title: expect
3
+ description: "Locator assertions, fixture assertions, and plain value matchers."
4
+ ---
5
+
6
+ Use `expect(locator)` to wait for an app condition and `expect(value)` to
7
+ check a value immediately. `expect.poll` repeatedly reads a value until its
8
+ matcher passes. `expect.soft` keeps a failure for the end of the test body
9
+ instead of throwing it, and `expect.any` and the other
10
+ [asymmetric matchers](#asymmetric-matchers) stand in for values inside a
11
+ structural comparison.
12
+
13
+ ```ts
14
+ /** The `expect(actual)` call: a locator, an engine fixture, or a value, told apart by the argument. */
15
+ export interface ExpectCall {
16
+ (actual: Locator): AsyncExpectation;
17
+ <E extends object>(actual: Expectable<E>): E;
18
+ <T>(actual: T, message?: string): ValueExpectation<T>;
19
+ }
20
+
21
+ /** The `expect.soft(actual)` call: `expect(actual)` whose failures are kept instead of thrown. */
22
+ export interface SoftExpectCall {
23
+ (actual: Locator): AsyncExpectation;
24
+ <E extends object>(actual: Expectable<E>): E;
25
+ <T>(actual: T, message?: string): SoftValueExpectation<T>;
26
+ }
27
+
28
+ /** The `expect` entry: the call, `expect.poll`, `expect.soft`, and the asymmetric matchers. */
29
+ export interface Expect extends ExpectCall {
30
+ /** Re-reads a value until the chosen matcher holds or `timeout` passes. */
31
+ poll<T>(read: () => T | Promise<T>, options?: PollOptions): PollExpectation<T>;
32
+ /** The same matchers, a failure kept on the attempt instead of thrown; the attempt fails once the body has settled. */
33
+ readonly soft: SoftExpectCall;
34
+ any(sample: Class | typeof BigInt | typeof Symbol): AsymmetricMatcher;
35
+ anything(): AsymmetricMatcher;
36
+ objectContaining(sample: object): AsymmetricMatcher;
37
+ arrayContaining(sample: readonly unknown[]): AsymmetricMatcher;
38
+ stringContaining(sample: string): AsymmetricMatcher;
39
+ stringMatching(sample: string | RegExp): AsymmetricMatcher;
40
+ }
41
+ ```
42
+
43
+ Engine fixtures can provide matchers too, such as `expect(browser).toHaveURL()`.
44
+ Such a fixture is an `Expectable<E>`: its engine attached the matcher set `E`
45
+ through [`expectable`](/reference/engine#contributed-fixtures), and
46
+ `expect(fixture)` returns it.
47
+ Other arguments use value matchers, including promises, so await a promise
48
+ before passing its result to `expect`.
49
+
50
+ | Property | Value |
51
+ | --- | --- |
52
+ | Default timeout | `config.assertionTimeout`, 5000 ms |
53
+ | Override | `{ timeout }` in milliseconds, on every locator and `browser` matcher |
54
+ | Unknown option | `INVALID_ARGUMENT` before the first read, from JavaScript too |
55
+ | Negation grace window | A negated matcher passes after 1000 ms of continuous truth, or after the whole budget when `{ timeout }` is shorter than that |
56
+ | Failure code | `ASSERTION_FAILED`, exit code 1 |
57
+
58
+ Locator strictness: except for `toHaveCount` and the list form of
59
+ `toHaveText` and `toContainText`, a positive matcher requires exactly one
60
+ match; zero matches keep polling until the timeout, and multiple matches fail
61
+ immediately with `LOCATOR_AMBIGUOUS`. `toBeHidden`, negated visibility, and
62
+ negated `toBeAttached` accept zero matches.
63
+
64
+ Text comparison is normalized: leading and trailing whitespace is trimmed and
65
+ each run of whitespace collapses to one space. `toHaveText` and
66
+ `toContainText` read the same rendered text as
67
+ [`textContent()`](/reference/screen#locator-reads), `innerText` on the web.
68
+ A `TextMatch` string matches exactly; a `RegExp` uses its own source and
69
+ flags; anything else, such as a predicate function, is `INVALID_ARGUMENT`.
70
+ `toHaveValue` is the exception: a form control's value is compared as it is,
71
+ newlines and trailing spaces included, and the failure message prints it that
72
+ way; a `contenteditable` editor's value is its rendered text, kept the same
73
+ way, and an empty editor reads as `''`. A control the
74
+ platform reports without a value, such as a cleared field on a device, reads
75
+ as `''`. A node whose role carries no value, such as a heading or a link,
76
+ never satisfies `toHaveValue`, negated or not; the message reads
77
+ `no value (not a form control)`. A secure field, such as a password input,
78
+ is never judged: the engine withholds its value and text, so `toHaveValue`,
79
+ `toHaveText`, and `toContainText` throw `POLICY_DENIED` there like
80
+ `inputValue()` and `textContent()`, negated or in list form too, instead of
81
+ reading the withheld value as `''` and passing a filled password field as
82
+ cleared. `toHaveAccessibleName` and the state matchers still answer there.
83
+ Assert the outcome of the fill, not the field.
84
+
85
+ ## Locator matchers
86
+
87
+ ```ts
88
+ /**
89
+ * The locator matchers. An option a matcher does not take, or a flag that is
90
+ * not a boolean, is `INVALID_ARGUMENT` before the first read.
91
+ */
92
+ export interface AsyncExpectation {
93
+ /** Inverts the matcher. A negated matcher passes after 1000 ms of continuous truth. */
94
+ readonly not: AsyncExpectation;
95
+ /** Waits for visibility; `visible: false` waits for hidden or absent state, as `toBeHidden`. */
96
+ toBeVisible(options?: { visible?: boolean; timeout?: number }): Promise<void>;
97
+ /** Waits for hidden or absent state. */
98
+ toBeHidden(options?: { timeout?: number }): Promise<void>;
99
+ /** Waits for one match to exist, visible or not; `attached: false` waits for none. */
100
+ toBeAttached(options?: { attached?: boolean; timeout?: number }): Promise<void>;
101
+ /** Waits for enabled state; `enabled: false` waits for disabled state. */
102
+ toBeEnabled(options?: { enabled?: boolean; timeout?: number }): Promise<void>;
103
+ /** Waits for disabled state. */
104
+ toBeDisabled(options?: { timeout?: number }): Promise<void>;
105
+ /** Waits for checked state; `checked: false` waits for unchecked state. */
106
+ toBeChecked(options?: { checked?: boolean; timeout?: number }): Promise<void>;
107
+ /** Waits for selected state. */
108
+ toBeSelected(options?: { timeout?: number }): Promise<void>;
109
+ /** Waits for expanded state. */
110
+ toBeExpanded(options?: { timeout?: number }): Promise<void>;
111
+ /** Waits for focused state. */
112
+ toBeFocused(options?: { timeout?: number }): Promise<void>;
113
+ /** Waits for exact normalized text; a list waits for exactly that many matches, each with its entry's text, in order. */
114
+ toHaveText(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
115
+ toHaveText(expected: readonly TextMatch[], options?: TextMatcherOptions): Promise<void>;
116
+ /** Waits for contained normalized text; a list waits for each entry to be contained by a distinct match, in order, extra matches allowed. */
117
+ toContainText(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
118
+ toContainText(expected: readonly TextMatch[], options?: TextMatcherOptions): Promise<void>;
119
+ /** Waits for a form control's value, compared as it is. */
120
+ toHaveValue(expected: TextMatch, options?: { timeout?: number }): Promise<void>;
121
+ /** Waits for the attribute to be present; with `value`, for it to match. */
122
+ toHaveAttribute(name: string, options?: { timeout?: number }): Promise<void>;
123
+ toHaveAttribute(name: string, value: TextMatch, options?: TextMatcherOptions): Promise<void>;
124
+ /** Waits for an exact match count. */
125
+ toHaveCount(expected: number, options?: { timeout?: number }): Promise<void>;
126
+ /** Waits for an accessible name. */
127
+ toHaveAccessibleName(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
128
+ }
129
+
130
+ /** Options of a locator matcher that compares text. */
131
+ export interface TextMatcherOptions {
132
+ /** Compares a string case-insensitively; on a RegExp, `true` adds the `i` flag and `false` removes it. */
133
+ ignoreCase?: boolean;
134
+ /** Assertion budget in milliseconds. */
135
+ timeout?: number;
136
+ }
137
+ ```
138
+
139
+ A missing `checked`, `selected`, or `expanded` state counts as `false`, so
140
+ `.not.toBeChecked()` passes on a button or a heading; a node is enabled
141
+ unless it reports `disabled`. On the web, `disabled` is the state the
142
+ browser applies, not the attribute alone: a control inside a
143
+ `<fieldset disabled>` is disabled unless it sits in that fieldset's first
144
+ `<legend>`, and `aria-disabled="true"` on an ancestor disables the widgets
145
+ below it until an `aria-disabled="false"` cuts the chain, the same reading
146
+ Playwright's `toBeDisabled` gives. `toHaveAttribute(name, value)`
147
+ compares like `toHaveText`, after normalization. On a secure field, such as a
148
+ password input, `toHaveAttribute` throws `POLICY_DENIED` like
149
+ `getAttribute()`, for every attribute name and negated too: the field's
150
+ `value` attribute is withheld, so reading it as absent would pass
151
+ `not.toHaveAttribute('value')` on a password field that has one.
152
+
153
+ `toBeAttached` passes once one match exists, hidden or shown, where
154
+ `toBeVisible` needs a shown one. Negated, it passes once nothing matches.
155
+
156
+ The boolean options Playwright gives these matchers work the same way:
157
+ `toBeChecked({ checked: false })` waits for an unchecked node,
158
+ `toBeEnabled({ enabled: false })` for a disabled one,
159
+ `toBeVisible({ visible: false })` for a hidden or absent one, as
160
+ `toBeHidden` does, and `toBeAttached({ attached: false })` for no match.
161
+ `ignoreCase: true` on `toHaveText`, `toContainText`, `toHaveAccessibleName`,
162
+ and the value form of `toHaveAttribute` compares a string case-insensitively
163
+ and adds the `i` flag to a `RegExp`; `ignoreCase: false` removes it.
164
+
165
+ A matcher refuses any other option key, and a flag that is not a boolean, with
166
+ `INVALID_ARGUMENT` before it reads the screen. Types catch these in
167
+ TypeScript, but `e2e run` does not type-check, so the check runs for a
168
+ JavaScript test or a computed option object too. Playwright options e2e does
169
+ not implement, such as `indeterminate` on `toBeChecked` or `useInnerText` on
170
+ `toHaveText`, fail this way instead of passing on the default.
171
+
172
+ `toHaveText([...])` and `toContainText([...])` check a list, with no
173
+ exactly-one rule; the failure message lists every text observed.
174
+ `toHaveText([...])` needs the match count to equal the list length and the
175
+ match at each position to satisfy the entry there, a string exactly after
176
+ normalization, a `RegExp` by test; an empty list holds when nothing matches.
177
+ `toContainText([...])` needs each entry contained by a distinct match, in
178
+ list order, as Playwright's does: extra matches before, between, or after
179
+ are fine, a repeated entry needs a match of its own, and an empty list always
180
+ holds. Negated, it fails as soon as that ordered subsequence exists, so
181
+ `not.toContainText(['Deleted'])` fails while any match contains `Deleted`.
182
+
183
+ ```ts
184
+ await expect(screen.getByRole('status')).toHaveText('Saved');
185
+ await expect(screen.getByRole('alert')).not.toContainText('error', { ignoreCase: true });
186
+ await expect(screen.getByLabel('Subscribe')).toBeChecked({ checked: false });
187
+ await expect(screen.getByTestId('todo')).toHaveCount(3);
188
+ await expect(screen.getByTestId('todo')).toHaveText(['Write spec', /^Ship/, 'Release']);
189
+ await expect(screen.getByTestId('todo')).toContainText(['spec', 'runner', 'Release']);
190
+ await expect(screen.getByTestId('todo')).toContainText(['spec', 'Release']);
191
+ await expect(screen.getByText('Loaded')).toBeAttached();
192
+ await expect(screen.getByRole('dialog')).not.toBeVisible({ timeout: 10_000 });
193
+ ```
194
+
195
+ ## browser matchers
196
+
197
+ Contributed by `@e2e-dev/web`; the type is exported from that package.
198
+ Every matcher call is a recorded `expect.<matcher>` assertion step.
199
+
200
+ ```ts
201
+ export interface BrowserExpectation {
202
+ /** Inverts the matcher. */
203
+ readonly not: BrowserExpectation;
204
+ /** Waits for the current URL to match. */
205
+ toHaveURL(expected: string | RegExp, options?: { timeout?: number }): Promise<void>;
206
+ /** Waits for the current title to match. */
207
+ toHaveTitle(expected: TextMatch, options?: { timeout?: number }): Promise<void>;
208
+ /** Waits for the target's `class` attribute to match: a string is the whole normalized class list, a RegExp is tested against it. */
209
+ toHaveClass(target: Locator, expected: TextMatch, options?: { timeout?: number }): Promise<void>;
210
+ }
211
+ ```
212
+
213
+ A relative `toHaveURL` string resolves against the base URL and matches
214
+ exactly after normalization; a `RegExp` tests the full URL. Anything else,
215
+ such as a predicate function, is `INVALID_ARGUMENT`. Each `browser` matcher takes
216
+ `timeout` only; any other key, such as Playwright's `ignoreCase` on
217
+ `toHaveURL`, is `INVALID_ARGUMENT`.
218
+
219
+ `toHaveClass` polls for the node too: a target that matches nothing yet is one
220
+ more poll, not a failure, until the assertion timeout runs out. An ambiguous
221
+ target still fails at once with `LOCATOR_AMBIGUOUS`. It reads the `class`
222
+ attribute, so `''` matches `class=""` and not an element with no `class`
223
+ attribute at all; Playwright's `toHaveClass('')` accepts both.
224
+
225
+ ```ts
226
+ await expect(browser).toHaveURL('/dashboard');
227
+ await expect(browser).toHaveTitle(/Dashboard/);
228
+ await expect(browser).toHaveClass(browser.locator('.card'), 'card active');
229
+ ```
230
+
231
+ ## Value matchers
232
+
233
+ ```ts
234
+ export interface ValueExpectation<T> {
235
+ /** Inverts the matcher. */
236
+ readonly not: NegatedValueExpectation<T>;
237
+ /** Compares with Object.is. */
238
+ toBe(expected: T): void;
239
+ /** Performs recursive structural equality; `undefined` properties are ignored and class types are not compared. */
240
+ toEqual(expected: unknown): void;
241
+ /** Requires every property of `expected` to match recursively; extra properties on the value are fine, arrays must match element-wise with equal length. */
242
+ toMatchObject(expected: object): void;
243
+ /** Requires a truthy value. */
244
+ toBeTruthy(): void;
245
+ /** Requires a falsy value. */
246
+ toBeFalsy(): void;
247
+ /** Requires null. */
248
+ toBeNull(): void;
249
+ /** Requires undefined. */
250
+ toBeUndefined(): void;
251
+ /** Requires any value but undefined; null passes. */
252
+ toBeDefined(): void;
253
+ /** Requires a `length` property equal to `expected`: a string, an array, or anything array-like. */
254
+ toHaveLength(expected: number): void;
255
+ /** Requires the property at `path` to exist; with `expected`, to equal it by `toEqual` rules. */
256
+ toHaveProperty(path: PropertyPath, ...expected: [] | [expected: unknown]): void;
257
+ /** Requires string or collection containment. */
258
+ toContain(expected: unknown): void;
259
+ /** Requires a string or regexp match. */
260
+ toMatch(expected: string | RegExp): void;
261
+ /** Requires a numeric lower bound. */
262
+ toBeGreaterThan(expected: number): void;
263
+ /** Requires a numeric lower bound, inclusive. */
264
+ toBeGreaterThanOrEqual(expected: number): void;
265
+ /** Requires a numeric upper bound. */
266
+ toBeLessThan(expected: number): void;
267
+ /** Requires a numeric upper bound, inclusive. */
268
+ toBeLessThanOrEqual(expected: number): void;
269
+ /** Requires a number within `10 ** -digits / 2` of `expected`; `digits` defaults to 2. */
270
+ toBeCloseTo(expected: number, digits?: number): void;
271
+ /**
272
+ * Requires the value to pass a synchronous Standard Schema (Zod, Valibot,
273
+ * ArkType, ...) and returns the schema's output, typed:
274
+ * `const users = expect(await response.json()).toMatchSchema(Users)`.
275
+ * A schema that validates asynchronously is `INVALID_ARGUMENT`.
276
+ */
277
+ toMatchSchema<Schema extends StandardSchemaV1>(schema: Schema): StandardSchemaV1.InferOutput<Schema>;
278
+ }
279
+
280
+ /** `expect(value).not`: every value matcher inverted, none returning a value; `Back` is what `.not` returns to. */
281
+ export type NegatedValueExpectation<T, Back = ValueExpectation<T>> = {
282
+ readonly not: Back;
283
+ } & {
284
+ readonly [K in Exclude<keyof ValueExpectation<T>, 'not'>]: (...args: Parameters<ValueExpectation<T>[K]>) => void;
285
+ };
286
+
287
+ /** `expect.soft(value)`: the value matchers, with `toMatchSchema` returning `undefined` after a kept failure. */
288
+ export type SoftValueExpectation<T> = Omit<ValueExpectation<T>, 'toMatchSchema' | 'not'> & {
289
+ readonly not: NegatedValueExpectation<T, SoftValueExpectation<T>>;
290
+ toMatchSchema<Schema extends StandardSchemaV1>(schema: Schema): StandardSchemaV1.InferOutput<Schema> | undefined;
291
+ };
292
+
293
+ /** A class, abstract or not: what `expect.any` takes. */
294
+ export type Class = abstract new (...args: never[]) => unknown;
295
+
296
+ /** A property path for `toHaveProperty`: dotted (`'user.address.city'`) or one key per element (`['user', 'address', 'city']`). */
297
+ export type PropertyPath = string | readonly (string | number)[];
298
+ ```
299
+
300
+ Value matchers run synchronously without retrying. For a value that may still
301
+ change, use [Polling a value](#polling-a-value).
302
+
303
+ ```ts
304
+ const total = await screen.getByTestId('total').textContent();
305
+ expect(total).toContain('$');
306
+ expect(items).toHaveLength(3);
307
+ expect(payload).toEqual({ ok: true });
308
+ expect(order).toMatchObject({ customer: { name: 'Ada' }, lines: [{ sku: 'a' }, { sku: 'b' }] });
309
+ expect(order).toHaveProperty('customer.email', 'ada@example.test');
310
+ expect(totals.lineTotal).toBeCloseTo(60);
311
+ ```
312
+
313
+ `toEqual` compares structure the way Jest's does: primitives with `Object.is`
314
+ (so `NaN` equals `NaN` and `0` does not equal `-0`), arrays and plain objects
315
+ by their contents, `Date` by time, `RegExp` by source and flags, `Map` and
316
+ `Set` by their entries. A property whose value is `undefined` is treated as
317
+ absent, a sparse array equals one holding `undefined`, and a class instance
318
+ equals a plain object with the same properties. There is no `toStrictEqual`.
319
+
320
+ `toMatchObject` reads `expected` as a subset: every property it names must
321
+ match recursively, properties it does not name are ignored. An array in
322
+ `expected` matches an array of the same length, element by element, each
323
+ element again as a subset. Both sides must be objects; a primitive on either
324
+ side is refused.
325
+
326
+ `toHaveProperty` walks a dotted path or an array of keys. Use the array form
327
+ when a key contains a dot, or to index an array by number
328
+ (`['lines', 0, 'sku']`). Inherited properties count; a property holding
329
+ `undefined` exists. With a second argument the value at the path must equal it
330
+ by `toEqual` rules.
331
+
332
+ ### Matching a schema
333
+
334
+ `toMatchSchema` validates a value against a
335
+ [Standard Schema](https://standardschema.dev): a Zod, Valibot, or ArkType
336
+ schema, or any library that implements the spec. Pass the schema your app
337
+ already parses its API with, and the test fails when the API drifts from it.
338
+ It returns the schema's output, typed, so the rest of the test reads
339
+ properties without casting:
340
+
341
+ ```ts
342
+ import { z } from 'zod';
343
+
344
+ const User = z.object({ id: z.number(), name: z.string(), email: z.email() });
345
+
346
+ const users = expect(await response.json()).toMatchSchema(z.array(User));
347
+ expect(users.map((user) => user.name)).toContain('Ada');
348
+ ```
349
+
350
+ A failure lists every issue by its path (`1.email: Invalid email address`).
351
+ The output is the schema's, so defaults and transforms apply. A matcher
352
+ returns before anything could await it, so a schema that validates
353
+ asynchronously (an async refinement) is `INVALID_ARGUMENT`. Negated, it
354
+ passes when the value does not match and returns nothing.
355
+
356
+ A matcher that cannot evaluate its value (`toContain` on a number,
357
+ `toHaveLength` on an object without one) fails as `ASSERTION_FAILED` like a
358
+ mismatch would, so under `expect.poll` a value that has not taken its final
359
+ shape yet is one more failing sample. A `toMatch` pattern that is neither a
360
+ string nor a `RegExp` is `INVALID_ARGUMENT`.
361
+
362
+ The unit-runner matchers (`toThrow`, `toBeInstanceOf`, `toBeNaN`,
363
+ `toStrictEqual`, `resolves`, `rejects`, `expect.extend`) are not part of
364
+ `expect`. An end-to-end test checks what the app shows and what its API
365
+ returns; the value matchers cover that, see
366
+ [Testing APIs](/api-testing). Code-level
367
+ checks belong in the unit runner.
368
+
369
+ Pass a second argument to describe the check in its failure message:
370
+
371
+ ```ts
372
+ expect(created, 'the company exists through the API').toBeTruthy();
373
+ // ASSERTION_FAILED: the company exists through the API: expected undefined to be truthy
374
+ ```
375
+
376
+ Only value expectations take a message; a locator or `browser` expectation
377
+ already names its locator and matcher in the failure.
378
+
379
+ ## Asymmetric matchers
380
+
381
+ An asymmetric matcher stands in for a value inside `toEqual`,
382
+ `toMatchObject`, the collection form of `toContain`, and the value of
383
+ `toHaveProperty`. Where the comparison would test equality, it asks the
384
+ matcher instead. They are Jest's matchers, with Jest's rules.
385
+
386
+ ```ts
387
+ /**
388
+ * A stand-in for a value inside `toEqual`, `toMatchObject`, `toContain`, and
389
+ * `toHaveProperty`: `expect.any(Number)` in place of a number,
390
+ * `expect.objectContaining({ id: 1 })` in place of a record. The structural
391
+ * matchers ask it whether a value matches instead of comparing.
392
+ */
393
+ export interface AsymmetricMatcher {
394
+ /** Whether `other` satisfies the matcher. */
395
+ asymmetricMatch(other: unknown): boolean;
396
+ /** The matcher's name, `ObjectContaining`; a failure message adds the sample. */
397
+ toString(): string;
398
+ }
399
+ ```
400
+
401
+ | Matcher | Matches |
402
+ | --- | --- |
403
+ | `expect.any(Class)` | An instance of the class. For `String`, `Number`, `Boolean`, `BigInt`, `Symbol`, and `Function`, the primitive too; for `Object`, anything `typeof` calls an object, `null` included |
404
+ | `expect.anything()` | Anything but `null` and `undefined` |
405
+ | `expect.objectContaining(sample)` | An object whose properties include every property of `sample`, each compared by `toEqual` rules |
406
+ | `expect.arrayContaining(sample)` | An array holding every element of `sample`, in any order, each compared by `toEqual` rules |
407
+ | `expect.stringContaining(text)` | A string with `text` as a substring |
408
+ | `expect.stringMatching(text \| RegExp)` | A string the RegExp tests true on; a text sample is compiled to a RegExp, so `'a.b'` matches `'axb'` |
409
+
410
+ ```ts
411
+ expect(created).toEqual({
412
+ id: expect.stringMatching(/^usr_/),
413
+ createdAt: expect.any(String),
414
+ roles: expect.arrayContaining(['member']),
415
+ profile: expect.objectContaining({ name: 'Ada' }),
416
+ });
417
+ expect(rows).toContain(expect.objectContaining({ status: 'paid' }));
418
+ expect(response).toHaveProperty('body.total', expect.any(Number));
419
+ ```
420
+
421
+ In a failure message a matcher prints as its description: `Any<Number>`,
422
+ `ObjectContaining {"name":"Ada"}`. Matchers nest: an `objectContaining`
423
+ sample may hold an `expect.any`. The string form of `toContain` takes a
424
+ string only, so `expect('abc').toContain(expect.stringContaining('a'))` is
425
+ refused.
426
+
427
+ ## Soft assertions
428
+
429
+ `expect.soft(actual)` takes what `expect(actual)` takes and returns the same
430
+ matchers. A soft matcher that fails does not throw: the failure is kept on the
431
+ running attempt and the body continues. Once the body has settled, and before
432
+ `afterEach`, the attempt fails with one `ASSERTION_FAILED` that lists every
433
+ kept failure in order. The error's source line is the first soft matcher that
434
+ failed.
435
+
436
+ ```ts
437
+ test('checkout summary', async ({ agent, screen }) => {
438
+ await agent.act('add the "Pro" plan to the cart and open the summary');
439
+ expect.soft(await screen.getByTestId('subtotal').textContent()).toBe('$40.00');
440
+ expect.soft(await screen.getByTestId('tax').textContent()).toBe('$8.00');
441
+ await expect.soft(screen.getByRole('button', 'Pay')).toBeEnabled();
442
+ await expect(screen.getByTestId('total')).toHaveText('$48.00');
443
+ });
444
+ ```
445
+
446
+ ```text
447
+ ASSERTION_FAILED: 2 soft assertions failed
448
+ 1. expected "$40.00" to be "$41.00"
449
+ 2. expect.toBeEnabled failed
450
+ locator: getByRole('button', 'Pay')
451
+ expected: enabled
452
+ observed: states: disabled (match count 1)
453
+ ```
454
+
455
+ A soft locator or `browser` matcher is still a recorded `expect.<matcher>` step,
456
+ marked failed, so the report shows where in the flow it landed. A soft value
457
+ matcher is not a step, the same as a hard one; its failure appears in the
458
+ final error only.
459
+
460
+ When the body throws on its own, or times out, that error stays the
461
+ attempt's verdict and the soft failures are recorded beside it under
462
+ `secondaryErrors`. A body that skips itself with `test.skip(...)` drops them.
463
+
464
+ A soft `toMatchSchema` returns the schema's output when the value matches
465
+ and `undefined` after a kept failure, and its type says so.
466
+
467
+ Outside a test body there is nothing to keep a failure for, so `expect.soft`
468
+ throws at once like `expect`: in a standalone script, and in an `afterEach`
469
+ hook, which runs after the soft failures have been settled. There is no
470
+ `expect.soft.poll`; `expect.poll` has its own timeout to fail on.
471
+
472
+ ## Polling a value
473
+
474
+ `expect.poll(read)` re-reads a value until a matcher passes. Use it to wait for
475
+ an API response or saved data after an app action.
476
+
477
+ ```ts
478
+ export interface PollOptions {
479
+ /** Deadline in milliseconds. Default 5000. */
480
+ timeout?: number;
481
+ /** Pause between reads in milliseconds. Default 100. */
482
+ interval?: number;
483
+ /** Extra line in the timeout error, after the matcher line. */
484
+ message?: string;
485
+ }
486
+
487
+ /**
488
+ * The asynchronous form of every `ValueExpectation<T>` matcher: the same
489
+ * names and parameters, each resolving once the re-read value passes;
490
+ * `toMatchSchema` resolves to the schema's output for the passing read.
491
+ * Derived from `ValueExpectation<T>` so the two cannot drift.
492
+ */
493
+ export type PollExpectation<T> = {
494
+ readonly not: NegatedPollExpectation<T>;
495
+ } & {
496
+ readonly [K in Exclude<keyof ValueExpectation<T>, 'not' | 'toMatchSchema'>]: (
497
+ ...args: Parameters<ValueExpectation<T>[K]>
498
+ ) => Promise<void>;
499
+ } & {
500
+ toMatchSchema<Schema extends StandardSchemaV1>(schema: Schema): Promise<StandardSchemaV1.InferOutput<Schema>>;
501
+ };
502
+
503
+ /** `expect.poll(read).not`: every poll matcher inverted, none resolving to a value. */
504
+ export type NegatedPollExpectation<T> = {
505
+ readonly not: PollExpectation<T>;
506
+ } & {
507
+ readonly [K in Exclude<keyof ValueExpectation<T>, 'not'>]: (...args: Parameters<ValueExpectation<T>[K]>) => Promise<void>;
508
+ };
509
+ ```
510
+
511
+ Every value matcher is available, returning a promise. Each sample calls
512
+ `read` and runs the matcher. A matcher failure or a `read` that throws is one
513
+ failing sample; a `read` that hangs is cut at the deadline.
514
+
515
+ The timeout defaults to `config.assertionTimeout` during an attempt and
516
+ 5000 ms outside one. It is capped by the test deadline in the body, or the
517
+ hook's `cleanupTimeout` during `afterEach`.
518
+
519
+ When the attempt is cancelled or times out, the loop and any read in flight
520
+ stop with `CANCELLED`. `timeout` must be a finite number 0 or more and
521
+ `interval` a finite number above 0; anything else is `INVALID_CONFIG` before
522
+ the first read.
523
+
524
+ At the deadline it throws `ASSERTION_FAILED` naming the matcher, then
525
+ `message` when given, then the last sample: the last matcher failure, the
526
+ last `read` error, or `no read completed`.
527
+
528
+ ```text
529
+ expect.poll(...).toBe(...) timed out after 5000 ms
530
+ the batch never finished
531
+ last: expected "running" to be "done"
532
+ ```
533
+
534
+ ```ts
535
+ await agent.act('create a test named "AI checkout regression" described as {description}', {
536
+ params: { description },
537
+ });
538
+ await expect
539
+ .poll(() => getTest(workspace).then((row) => row?.title), { timeout: 15_000 })
540
+ .toBe('AI checkout regression');
541
+ await expect.poll(async () => (await listTests(workspace)).length).toBeGreaterThan(1);
542
+ await expect.poll(() => readStatus(), { message: 'the batch never finished' }).not.toBe('running');
543
+ ```
544
+
545
+ `expect.poll` is not recorded as a report step; a timeout surfaces only as
546
+ the test's failure.