@gfdelarue/testkit 0.4.5 → 0.5.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 (774) hide show
  1. package/README.md +666 -463
  2. package/bin/testkit-windows-owner-arm64.exe +0 -0
  3. package/bin/testkit-windows-owner-x64.exe +0 -0
  4. package/dist/app/bugs/ci-report.js +2 -2
  5. package/dist/app/bugs/ci-summary.js +3 -3
  6. package/dist/app/bugs/draft.js +3 -3
  7. package/dist/app/bugs/file.js +1 -1
  8. package/dist/app/bugs/gate.js +1 -1
  9. package/dist/app/bugs/guide.js +3 -3
  10. package/dist/app/bugs/issue.js +4 -4
  11. package/dist/app/bugs/known-failures.js +1 -1
  12. package/dist/app/bugs/record.js +2 -2
  13. package/dist/app/bugs/run-reading.js +1 -1
  14. package/dist/app/bugs/supplied-reproduce.js +1 -0
  15. package/dist/app/campaigns/campaign.js +1 -1
  16. package/dist/app/cleanup/index.js +1 -1
  17. package/dist/app/db-schema/prepare.js +1 -1
  18. package/dist/app/destroy/index.js +1 -1
  19. package/dist/app/discover/index.js +2 -2
  20. package/dist/app/doctor/index.js +1 -1
  21. package/dist/app/environments/config-driven.js +1 -1
  22. package/dist/app/environments/environment-file.js +1 -0
  23. package/dist/app/environments/file-setup.js +1 -0
  24. package/dist/app/environments/routing.js +1 -1
  25. package/dist/app/environments/static-values.js +1 -0
  26. package/dist/app/environments/supplied-input.js +1 -0
  27. package/dist/app/environments/supplied.js +1 -1
  28. package/dist/app/environments/task-databases.js +2 -0
  29. package/dist/app/inspect/artifacts.js +1 -1
  30. package/dist/app/inspect/index.js +1 -1
  31. package/dist/app/lint/index.js +1 -1
  32. package/dist/app/lint/native.js +1 -1
  33. package/dist/app/lint/options.js +1 -1
  34. package/dist/app/lint/rules/data.js +1 -1
  35. package/dist/app/lint/rules/engine-imports.js +1 -1
  36. package/dist/app/lint/rules/syntax.js +1 -1
  37. package/dist/app/lint/rules/unit.js +1 -1
  38. package/dist/app/reports/prepare.js +1 -1
  39. package/dist/app/run/caller-redaction.js +1 -0
  40. package/dist/app/run/engine-execution-failures.js +1 -1
  41. package/dist/app/run/engine-execution-reporting.js +1 -1
  42. package/dist/app/run/engine-execution.js +1 -1
  43. package/dist/app/run/engine-orchestration.js +1 -1
  44. package/dist/app/run/environment.js +1 -1
  45. package/dist/app/run/failure-details.js +1 -1
  46. package/dist/app/run/live-run.js +1 -1
  47. package/dist/app/run/orchestrator.js +1 -1
  48. package/dist/app/run/planning.js +1 -1
  49. package/dist/app/run/request.js +1 -1
  50. package/dist/app/run/results.js +1 -1
  51. package/dist/app/run/run-events.js +1 -1
  52. package/dist/app/run/run-finalization.js +1 -1
  53. package/dist/app/run/scheduler/estimates.js +1 -1
  54. package/dist/app/run/scheduler/identity.js +1 -1
  55. package/dist/app/run/scheduler/index.js +1 -1
  56. package/dist/app/run/setup/runtime-node-setup-protocol.js +1 -1
  57. package/dist/app/run/setup/runtime-node-setup-worker.js +1 -1
  58. package/dist/app/run/setup/runtime-node-setup.js +2 -2
  59. package/dist/app/run/task-batches.js +1 -1
  60. package/dist/app/run/worker-loop.js +1 -1
  61. package/dist/app/status/runs.js +1 -1
  62. package/dist/app/typecheck/index.js +4 -4
  63. package/dist/cli/command-catalog.js +1 -1
  64. package/dist/cli/command-flags.js +1 -1
  65. package/dist/cli/commands/artifacts.js +2 -2
  66. package/dist/cli/commands/bug/file.js +2 -2
  67. package/dist/cli/commands/bug/record.js +2 -2
  68. package/dist/cli/commands/discover.js +1 -1
  69. package/dist/cli/commands/run.js +2 -2
  70. package/dist/cli/commands/typecheck.js +1 -1
  71. package/dist/cli/commands/workspace.js +1 -1
  72. package/dist/cli/framework/errors.js +1 -1
  73. package/dist/cli/framework/execute.js +7 -6
  74. package/dist/cli/framework/parser.js +1 -1
  75. package/dist/cli/operations/run/operation.js +2 -2
  76. package/dist/cli/renderers/bug/text.js +1 -1
  77. package/dist/cli/renderers/discover/report.js +1 -1
  78. package/dist/cli/renderers/run/events.js +2 -2
  79. package/dist/cli/renderers/run/formatting.js +1 -1
  80. package/dist/cli/renderers/run/status.js +1 -1
  81. package/dist/cli/renderers/run/text-reporter.js +24 -22
  82. package/dist/cli/terminal/colors.js +1 -1
  83. package/dist/cli/terminal/layout.js +2 -2
  84. package/dist/config/authoring/http-methods.js +1 -1
  85. package/dist/config/loader/config-loader.js +1 -1
  86. package/dist/config/loader/decode-execution.js +1 -1
  87. package/dist/config/loader/dependencies.js +1 -1
  88. package/dist/config/loader/discover-tests.js +1 -1
  89. package/dist/config/loader/discovery-summary.js +1 -1
  90. package/dist/config/loader/discovery.js +2 -2
  91. package/dist/config/loader/env.js +1 -1
  92. package/dist/config/loader/file-metadata.js +1 -1
  93. package/dist/config/loader/groups.js +1 -1
  94. package/dist/config/loader/index.js +1 -1
  95. package/dist/config/loader/load.js +1 -1
  96. package/dist/config/loader/managed-configs.js +1 -1
  97. package/dist/config/loader/owned-discovery.js +1 -0
  98. package/dist/config/loader/path-policy.js +1 -1
  99. package/dist/config/loader/runtime-isolation.js +1 -1
  100. package/dist/config/loader/runtime.js +1 -1
  101. package/dist/config/loader/skip-config.js +1 -1
  102. package/dist/config/loader/task-policy.js +1 -0
  103. package/dist/config/loader/test-selection.js +1 -1
  104. package/dist/config/loader/validation.js +1 -1
  105. package/dist/database/admin.js +2 -2
  106. package/dist/database/bindings.js +1 -0
  107. package/dist/database/cleanup.js +1 -1
  108. package/dist/database/docker-metadata.js +3 -3
  109. package/dist/database/docker.js +3 -3
  110. package/dist/database/index.js +1 -1
  111. package/dist/database/local-postgres.js +1 -1
  112. package/dist/database/naming.js +1 -1
  113. package/dist/database/postgres/connection-check.js +1 -0
  114. package/dist/database/postgres/protocol.js +2 -0
  115. package/dist/database/schema-operations.js +1 -1
  116. package/dist/database/schema-source.js +3 -3
  117. package/dist/database/source-schema-env.js +1 -0
  118. package/dist/database/state-files.js +1 -1
  119. package/dist/database/state.js +1 -1
  120. package/dist/database/steps.js +3 -3
  121. package/dist/domain/file-timeout.js +1 -1
  122. package/dist/domain/identifiers.js +1 -1
  123. package/dist/domain/retired-test-types.js +1 -0
  124. package/dist/domain/runtime-isolation-contract.js +1 -1
  125. package/dist/domain/suite-selection.js +1 -1
  126. package/dist/domain/test-types.js +1 -1
  127. package/dist/engines/adapters/evidence-files.js +1 -1
  128. package/dist/engines/adapters/execution.js +1 -1
  129. package/dist/engines/adapters/json-bounds.js +2 -0
  130. package/dist/engines/adapters/native-report.js +1 -1
  131. package/dist/engines/api/execution.js +1 -1
  132. package/dist/engines/api/index.js +1 -1
  133. package/dist/engines/api/runtime-artifact.js +1 -1
  134. package/dist/engines/catalog.js +1 -1
  135. package/dist/engines/contracts/environment-values.js +1 -0
  136. package/dist/engines/definitions.js +1 -1
  137. package/dist/engines/environment/handles.js +1 -0
  138. package/dist/engines/environment/index.js +1 -0
  139. package/dist/engines/factory.js +1 -1
  140. package/dist/engines/installations/node-vitest.js +1 -1
  141. package/dist/engines/installations/package-resolution.js +1 -1
  142. package/dist/engines/installations/playwright.js +1 -1
  143. package/dist/engines/managed-module-resolution.js +2 -2
  144. package/dist/engines/manager.js +1 -1
  145. package/dist/engines/node-vitest/adapter/adapter.js +1 -1
  146. package/dist/engines/node-vitest/adapter/driver.js +2 -0
  147. package/dist/engines/node-vitest/adapter/evidence.js +2 -2
  148. package/dist/engines/node-vitest/adapter/failure-details.js +4 -2
  149. package/dist/engines/node-vitest/adapter/reporter.js +1 -1
  150. package/dist/engines/node-vitest/adapter/workspace.js +26 -188
  151. package/dist/engines/node-vitest/inventory/index.js +2 -0
  152. package/dist/engines/node-vitest/inventory/list-files.js +3 -0
  153. package/dist/engines/node-vitest/runtime/contract/index.js +1 -1
  154. package/dist/engines/node-vitest/runtime/data/http.js +1 -1
  155. package/dist/engines/node-vitest/runtime/data/index.js +1 -1
  156. package/dist/engines/node-vitest/runtime/data/report.js +5 -6
  157. package/dist/engines/node-vitest/runtime/data/scenario.js +2 -2
  158. package/dist/engines/node-vitest/runtime/runtime-input.js +1 -1
  159. package/dist/engines/node-vitest/selection.js +1 -0
  160. package/dist/engines/playwright/adapter/adapter.js +1 -1
  161. package/dist/engines/playwright/adapter/config.js +3 -3
  162. package/dist/engines/playwright/adapter/evidence-validation.js +1 -1
  163. package/dist/engines/playwright/adapter/evidence.js +1 -1
  164. package/dist/engines/playwright/adapter/reporter.js +1 -1
  165. package/dist/engines/playwright/runtime/config-file.js +1 -1
  166. package/dist/engines/playwright/runtime/config.js +1 -1
  167. package/dist/engines/playwright/runtime/runtime-input.js +29 -10
  168. package/dist/engines/runtime-input-file.js +1 -1
  169. package/dist/environment/lifecycle-controller.js +1 -1
  170. package/dist/environment/lifecycle.js +1 -1
  171. package/dist/environment/ready-environment.js +1 -1
  172. package/dist/environment/run-stopping.js +1 -1
  173. package/dist/environment/runtime-contexts.js +1 -1
  174. package/dist/environment/runtime-manager.js +1 -1
  175. package/dist/environment/runtime-planning.js +1 -1
  176. package/dist/environment/runtime-preparation.js +1 -1
  177. package/dist/environment/services.js +3 -3
  178. package/dist/environment/template.js +1 -1
  179. package/dist/evidence/artifact-config.js +1 -1
  180. package/dist/evidence/artifacts.js +2 -2
  181. package/dist/evidence/bundles.js +1 -1
  182. package/dist/evidence/environment-record.js +1 -1
  183. package/dist/evidence/index.js +1 -1
  184. package/dist/evidence/read-run.js +1 -1
  185. package/dist/evidence/reading.js +1 -1
  186. package/dist/evidence/redaction.js +4 -0
  187. package/dist/evidence/reporting.js +1 -1
  188. package/dist/evidence/run-model.js +1 -0
  189. package/dist/evidence/storage.js +2 -2
  190. package/dist/evidence/timing.js +1 -1
  191. package/dist/kernel/error-serialization.js +1 -1
  192. package/dist/kernel/redaction-targets.js +1 -0
  193. package/dist/kernel/redaction.js +4 -1
  194. package/dist/kernel/unknown-values.js +1 -1
  195. package/dist/process/environment.js +1 -1
  196. package/dist/process/execa-bundle.json +3 -3
  197. package/dist/process/files/json-file.js +1 -1
  198. package/dist/process/host/platform.js +1 -1
  199. package/dist/process/host-process.js +1 -1
  200. package/dist/process/index.js +1 -1
  201. package/dist/process/locks.js +4 -4
  202. package/dist/process/port-listener.js +2 -0
  203. package/dist/process/process-group.js +1 -1
  204. package/dist/process/process.js +32 -32
  205. package/dist/process/readiness.js +1 -1
  206. package/dist/process/ready-deadline.js +1 -0
  207. package/dist/process/runs/ownership.js +1 -1
  208. package/dist/process/runs/stop.js +1 -1
  209. package/dist/process/service-processes.js +1 -1
  210. package/dist/process/windows-cli-owner.js +3 -3
  211. package/dist/process/windows-native.js +1 -1
  212. package/dist/repo/fingerprint-policy.js +1 -1
  213. package/dist/repo/managed-git.js +1 -1
  214. package/dist/repo/physical-tree.js +1 -1
  215. package/dist/repo/state.js +4 -4
  216. package/dist/steps/build-config.js +1 -1
  217. package/dist/steps/configured-step-testkit-modules.js +1 -1
  218. package/dist/steps/configured-steps.js +1 -1
  219. package/dist/steps/environment.js +1 -1
  220. package/dist/steps/index.js +1 -1
  221. package/dist/toolchains/index.js +3 -3
  222. package/dist/toolchains/semver.js +1 -1
  223. package/dist/toolchains/vitest/index.js +1 -1
  224. package/dist/tracker/redaction.js +1 -2
  225. package/dist/{config/runtime/build-assets.d.ts → types/config-build-assets.d.ts} +5 -3
  226. package/dist/{database/steps.d.ts → types/config-database-steps.d.ts} +7 -7
  227. package/dist/{config/runtime/next-runtime-tsconfig.d.ts → types/config-next-runtime-tsconfig.d.ts} +5 -3
  228. package/dist/types/config.d.ts +501 -0
  229. package/dist/types/drizzle.d.ts +13 -0
  230. package/dist/{config/runtime/env/index.d.ts → types/env.d.ts} +22 -20
  231. package/dist/types/environment.d.ts +40 -0
  232. package/dist/types/index.d.ts +21 -0
  233. package/dist/types/node-vitest-contract.d.ts +75 -0
  234. package/dist/types/node-vitest-data.d.ts +407 -0
  235. package/dist/types/playwright.d.ts +130 -0
  236. package/dist/types/tooling-vitest.d.ts +13 -0
  237. package/dist/types/workspace.d.ts +617 -0
  238. package/docs/bug-records.md +37 -37
  239. package/docs/engines.md +213 -0
  240. package/docs/test-types.md +35 -33
  241. package/package.json +22 -29
  242. package/testkit-config-schema.md +378 -184
  243. package/dist/app/bugs/areas.d.ts +0 -38
  244. package/dist/app/bugs/assessment.d.ts +0 -9
  245. package/dist/app/bugs/categories.d.ts +0 -41
  246. package/dist/app/bugs/ci-report.d.ts +0 -21
  247. package/dist/app/bugs/ci-summary.d.ts +0 -13
  248. package/dist/app/bugs/draft.d.ts +0 -70
  249. package/dist/app/bugs/facts.d.ts +0 -49
  250. package/dist/app/bugs/file.d.ts +0 -45
  251. package/dist/app/bugs/gate.d.ts +0 -22
  252. package/dist/app/bugs/guide.d.ts +0 -20
  253. package/dist/app/bugs/issue.d.ts +0 -18
  254. package/dist/app/bugs/known-failures.d.ts +0 -49
  255. package/dist/app/bugs/record.d.ts +0 -14
  256. package/dist/app/bugs/run-reading.d.ts +0 -51
  257. package/dist/app/bugs/store.d.ts +0 -34
  258. package/dist/app/campaigns/brief.d.ts +0 -7
  259. package/dist/app/campaigns/campaign.d.ts +0 -14
  260. package/dist/app/campaigns/index.d.ts +0 -38
  261. package/dist/app/campaigns/store.d.ts +0 -5
  262. package/dist/app/campaigns/summary.d.ts +0 -13
  263. package/dist/app/cleanup/index.d.ts +0 -52
  264. package/dist/app/db-schema/prepare.d.ts +0 -11
  265. package/dist/app/db-schema/refresh.d.ts +0 -17
  266. package/dist/app/db-schema/verify.d.ts +0 -11
  267. package/dist/app/destroy/index.d.ts +0 -16
  268. package/dist/app/discover/index.d.ts +0 -8
  269. package/dist/app/doctor/index.d.ts +0 -17
  270. package/dist/app/environments/config-driven.d.ts +0 -5
  271. package/dist/app/environments/routing.d.ts +0 -6
  272. package/dist/app/environments/supplied.d.ts +0 -3
  273. package/dist/app/file-selection.d.ts +0 -1
  274. package/dist/app/inspect/artifacts.d.ts +0 -30
  275. package/dist/app/inspect/index.d.ts +0 -112
  276. package/dist/app/lint/index.d.ts +0 -28
  277. package/dist/app/lint/native.d.ts +0 -10
  278. package/dist/app/lint/options.d.ts +0 -66
  279. package/dist/app/lint/policy.d.ts +0 -21
  280. package/dist/app/lint/rules/data.d.ts +0 -3
  281. package/dist/app/lint/rules/engine-imports.d.ts +0 -3
  282. package/dist/app/lint/rules/syntax.d.ts +0 -4
  283. package/dist/app/lint/rules/unit.d.ts +0 -3
  284. package/dist/app/lint/shared.d.ts +0 -34
  285. package/dist/app/package-inspection.d.ts +0 -20
  286. package/dist/app/reports/files.d.ts +0 -13
  287. package/dist/app/reports/prepare.d.ts +0 -20
  288. package/dist/app/reports/publish.d.ts +0 -21
  289. package/dist/app/run/endpoint-readiness.d.ts +0 -43
  290. package/dist/app/run/endpoint-readiness.js +0 -1
  291. package/dist/app/run/engine-evidence-persistence.d.ts +0 -39
  292. package/dist/app/run/engine-execution-cleanup.d.ts +0 -8
  293. package/dist/app/run/engine-execution-cleanup.js +0 -1
  294. package/dist/app/run/engine-execution-failures.d.ts +0 -41
  295. package/dist/app/run/engine-execution-observer.d.ts +0 -21
  296. package/dist/app/run/engine-execution-reporting.d.ts +0 -17
  297. package/dist/app/run/engine-execution.d.ts +0 -65
  298. package/dist/app/run/engine-failure-stack.d.ts +0 -1
  299. package/dist/app/run/engine-orchestration.d.ts +0 -30
  300. package/dist/app/run/environment.d.ts +0 -33
  301. package/dist/app/run/failure-details.d.ts +0 -37
  302. package/dist/app/run/live-run.d.ts +0 -29
  303. package/dist/app/run/operation-progress.d.ts +0 -13
  304. package/dist/app/run/orchestrator.d.ts +0 -75
  305. package/dist/app/run/planning-types.d.ts +0 -68
  306. package/dist/app/run/planning.d.ts +0 -14
  307. package/dist/app/run/request.d.ts +0 -30
  308. package/dist/app/run/results.d.ts +0 -161
  309. package/dist/app/run/run-events.d.ts +0 -144
  310. package/dist/app/run/run-finalization.d.ts +0 -56
  311. package/dist/app/run/run-guards.d.ts +0 -3
  312. package/dist/app/run/runtime-failures.d.ts +0 -18
  313. package/dist/app/run/runtime-fixtures.d.ts +0 -2
  314. package/dist/app/run/runtime-task-types.d.ts +0 -20
  315. package/dist/app/run/scheduler/estimates.d.ts +0 -32
  316. package/dist/app/run/scheduler/identity.d.ts +0 -9
  317. package/dist/app/run/scheduler/index.d.ts +0 -124
  318. package/dist/app/run/scheduler/locks.d.ts +0 -6
  319. package/dist/app/run/scheduler/observations.d.ts +0 -20
  320. package/dist/app/run/selection.d.ts +0 -9
  321. package/dist/app/run/setup/runtime-node-setup-errors.d.ts +0 -13
  322. package/dist/app/run/setup/runtime-node-setup-protocol.d.ts +0 -85
  323. package/dist/app/run/setup/runtime-node-setup-worker.d.ts +0 -1
  324. package/dist/app/run/setup/runtime-node-setup.d.ts +0 -48
  325. package/dist/app/run/task-batches.d.ts +0 -23
  326. package/dist/app/run/task-leases.d.ts +0 -15
  327. package/dist/app/run/worker-loop.d.ts +0 -66
  328. package/dist/app/setup/playwright.d.ts +0 -22
  329. package/dist/app/status/index.d.ts +0 -9
  330. package/dist/app/status/model.d.ts +0 -29
  331. package/dist/app/status/runs.d.ts +0 -99
  332. package/dist/app/stop/index.d.ts +0 -14
  333. package/dist/app/tracker/index.d.ts +0 -13
  334. package/dist/app/tracker/remote.d.ts +0 -13
  335. package/dist/app/tracker/token.d.ts +0 -7
  336. package/dist/app/typecheck/index.d.ts +0 -63
  337. package/dist/cli/command-catalog.d.ts +0 -156
  338. package/dist/cli/command-flags.d.ts +0 -19
  339. package/dist/cli/command-registry.d.ts +0 -3
  340. package/dist/cli/commands/artifacts.d.ts +0 -48
  341. package/dist/cli/commands/bug/file.d.ts +0 -16
  342. package/dist/cli/commands/bug/guide.d.ts +0 -5
  343. package/dist/cli/commands/bug/record.d.ts +0 -9
  344. package/dist/cli/commands/campaign/finish.d.ts +0 -10
  345. package/dist/cli/commands/campaign/start.d.ts +0 -7
  346. package/dist/cli/commands/campaign/status.d.ts +0 -13
  347. package/dist/cli/commands/ci/report.d.ts +0 -15
  348. package/dist/cli/commands/cleanup.d.ts +0 -13
  349. package/dist/cli/commands/db/schema/refresh.d.ts +0 -2
  350. package/dist/cli/commands/db/schema/verify.d.ts +0 -2
  351. package/dist/cli/commands/destroy.d.ts +0 -9
  352. package/dist/cli/commands/discover.d.ts +0 -2
  353. package/dist/cli/commands/doctor.d.ts +0 -2
  354. package/dist/cli/commands/guard/unsafe-entrypoint.d.ts +0 -2
  355. package/dist/cli/commands/lint.d.ts +0 -2
  356. package/dist/cli/commands/report/prepare.d.ts +0 -12
  357. package/dist/cli/commands/report/publish.d.ts +0 -13
  358. package/dist/cli/commands/run/status.d.ts +0 -5
  359. package/dist/cli/commands/run/stop.d.ts +0 -7
  360. package/dist/cli/commands/run.d.ts +0 -9
  361. package/dist/cli/commands/setup/playwright.d.ts +0 -2
  362. package/dist/cli/commands/status.d.ts +0 -5
  363. package/dist/cli/commands/stop.d.ts +0 -12
  364. package/dist/cli/commands/typecheck.d.ts +0 -2
  365. package/dist/cli/commands/workspace.d.ts +0 -2
  366. package/dist/cli/entrypoint.d.ts +0 -1
  367. package/dist/cli/framework/command.d.ts +0 -21
  368. package/dist/cli/framework/definitions.d.ts +0 -100
  369. package/dist/cli/framework/errors.d.ts +0 -6
  370. package/dist/cli/framework/execute.d.ts +0 -14
  371. package/dist/cli/framework/help.d.ts +0 -11
  372. package/dist/cli/framework/index.d.ts +0 -3
  373. package/dist/cli/framework/parser.d.ts +0 -6
  374. package/dist/cli/index.d.ts +0 -4
  375. package/dist/cli/json-errors.d.ts +0 -3
  376. package/dist/cli/operations/db/schema/refresh/operation.d.ts +0 -7
  377. package/dist/cli/operations/db/schema/verify/operation.d.ts +0 -7
  378. package/dist/cli/operations/run/operation.d.ts +0 -26
  379. package/dist/cli/process-signal.d.ts +0 -1
  380. package/dist/cli/renderers/bug/text.d.ts +0 -8
  381. package/dist/cli/renderers/campaign/text.d.ts +0 -2
  382. package/dist/cli/renderers/ci/text.d.ts +0 -2
  383. package/dist/cli/renderers/cleanup/format.d.ts +0 -14
  384. package/dist/cli/renderers/db-schema/text.d.ts +0 -4
  385. package/dist/cli/renderers/destroy/text.d.ts +0 -4
  386. package/dist/cli/renderers/discover/report.d.ts +0 -7
  387. package/dist/cli/renderers/discover/text.d.ts +0 -3
  388. package/dist/cli/renderers/doctor/text.d.ts +0 -2
  389. package/dist/cli/renderers/lint/text.d.ts +0 -2
  390. package/dist/cli/renderers/run/events.d.ts +0 -8
  391. package/dist/cli/renderers/run/failure.d.ts +0 -8
  392. package/dist/cli/renderers/run/formatting.d.ts +0 -79
  393. package/dist/cli/renderers/run/status.d.ts +0 -6
  394. package/dist/cli/renderers/run/text-reporter.d.ts +0 -19
  395. package/dist/cli/renderers/status/text.d.ts +0 -2
  396. package/dist/cli/renderers/stop/text.d.ts +0 -7
  397. package/dist/cli/renderers/typecheck/text.d.ts +0 -2
  398. package/dist/cli/terminal/colors.d.ts +0 -10
  399. package/dist/cli/terminal/layout.d.ts +0 -11
  400. package/dist/cli/version-drift.d.ts +0 -25
  401. package/dist/config/authoring/build-config-contract.d.ts +0 -27
  402. package/dist/config/authoring/configured-step-contract.d.ts +0 -18
  403. package/dist/config/authoring/http-execution-contract.d.ts +0 -70
  404. package/dist/config/authoring/http-methods.d.ts +0 -18
  405. package/dist/config/authoring/index.d.ts +0 -372
  406. package/dist/config/authoring/preset-env.d.ts +0 -19
  407. package/dist/config/authoring/runtime.d.ts +0 -64
  408. package/dist/config/loader/bugs.d.ts +0 -15
  409. package/dist/config/loader/config-loader.d.ts +0 -9
  410. package/dist/config/loader/database-materialization.d.ts +0 -19
  411. package/dist/config/loader/database-roles.d.ts +0 -2
  412. package/dist/config/loader/database.d.ts +0 -55
  413. package/dist/config/loader/decode-discovery.d.ts +0 -5
  414. package/dist/config/loader/decode-execution.d.ts +0 -7
  415. package/dist/config/loader/dependencies.d.ts +0 -7
  416. package/dist/config/loader/discover-tests.d.ts +0 -111
  417. package/dist/config/loader/discovery-summary.d.ts +0 -29
  418. package/dist/config/loader/discovery.d.ts +0 -53
  419. package/dist/config/loader/env.d.ts +0 -4
  420. package/dist/config/loader/execution-model.d.ts +0 -15
  421. package/dist/config/loader/file-metadata.d.ts +0 -19
  422. package/dist/config/loader/groups.d.ts +0 -33
  423. package/dist/config/loader/index.d.ts +0 -10
  424. package/dist/config/loader/load.d.ts +0 -89
  425. package/dist/config/loader/managed-configs.d.ts +0 -23
  426. package/dist/config/loader/path-policy.d.ts +0 -9
  427. package/dist/config/loader/paths.d.ts +0 -5
  428. package/dist/config/loader/runtime-isolation.d.ts +0 -44
  429. package/dist/config/loader/runtime.d.ts +0 -16
  430. package/dist/config/loader/skip-config.d.ts +0 -44
  431. package/dist/config/loader/test-selection.d.ts +0 -15
  432. package/dist/config/loader/validation.d.ts +0 -15
  433. package/dist/config/loader/values.d.ts +0 -3
  434. package/dist/config/loader/values.js +0 -1
  435. package/dist/database/activity-gate.d.ts +0 -22
  436. package/dist/database/admin.d.ts +0 -31
  437. package/dist/database/cleanup.d.ts +0 -36
  438. package/dist/database/configured-steps.d.ts +0 -27
  439. package/dist/database/constants.d.ts +0 -11
  440. package/dist/database/docker-metadata.d.ts +0 -3
  441. package/dist/database/docker.d.ts +0 -65
  442. package/dist/database/drizzle/index.d.ts +0 -13
  443. package/dist/database/fingerprint.d.ts +0 -12
  444. package/dist/database/index.d.ts +0 -39
  445. package/dist/database/lifecycle-cleanup.d.ts +0 -8
  446. package/dist/database/local-postgres.d.ts +0 -71
  447. package/dist/database/naming.d.ts +0 -17
  448. package/dist/database/postgres/index.d.ts +0 -71
  449. package/dist/database/progress.d.ts +0 -6
  450. package/dist/database/roles.d.ts +0 -19
  451. package/dist/database/runtime-config.d.ts +0 -16
  452. package/dist/database/runtime-reservations.d.ts +0 -19
  453. package/dist/database/schema-operations.d.ts +0 -18
  454. package/dist/database/schema-source.d.ts +0 -96
  455. package/dist/database/source-refresh-lock.d.ts +0 -8
  456. package/dist/database/source-url.d.ts +0 -21
  457. package/dist/database/state-files.d.ts +0 -13
  458. package/dist/database/state.d.ts +0 -26
  459. package/dist/database/template-steps.d.ts +0 -39
  460. package/dist/domain/file-timeout.d.ts +0 -25
  461. package/dist/domain/identifiers.d.ts +0 -9
  462. package/dist/domain/operation-display.d.ts +0 -10
  463. package/dist/domain/operation-reason.d.ts +0 -5
  464. package/dist/domain/postgres-route.d.ts +0 -4
  465. package/dist/domain/runtime-identity.d.ts +0 -1
  466. package/dist/domain/runtime-isolation-contract.d.ts +0 -5
  467. package/dist/domain/service-name.d.ts +0 -2
  468. package/dist/domain/suite-selection.d.ts +0 -20
  469. package/dist/domain/test-outcomes.d.ts +0 -2
  470. package/dist/domain/test-types.d.ts +0 -16
  471. package/dist/engines/adapters/evidence-files.d.ts +0 -32
  472. package/dist/engines/adapters/evidence-identity.d.ts +0 -12
  473. package/dist/engines/adapters/execution.d.ts +0 -41
  474. package/dist/engines/adapters/native-report.d.ts +0 -25
  475. package/dist/engines/adapters/node-startup-cache.d.ts +0 -8
  476. package/dist/engines/adapters/workspace.d.ts +0 -4
  477. package/dist/engines/api/capabilities.d.ts +0 -21
  478. package/dist/engines/api/capabilities.js +0 -1
  479. package/dist/engines/api/evidence.d.ts +0 -38
  480. package/dist/engines/api/execution-observer.d.ts +0 -8
  481. package/dist/engines/api/execution-scope.d.ts +0 -17
  482. package/dist/engines/api/execution.d.ts +0 -101
  483. package/dist/engines/api/index.d.ts +0 -5
  484. package/dist/engines/api/k6-runtime-input.d.ts +0 -26
  485. package/dist/engines/api/k6-runtime-input.js +0 -1
  486. package/dist/engines/api/runtime-artifact.d.ts +0 -19
  487. package/dist/engines/bundle-cache.d.ts +0 -32
  488. package/dist/engines/catalog.d.ts +0 -27
  489. package/dist/engines/contracts/fixture-manifest.d.ts +0 -34
  490. package/dist/engines/contracts/json-bounds.d.ts +0 -36
  491. package/dist/engines/contracts/json-bounds.js +0 -2
  492. package/dist/engines/contracts/k6-repository-configuration.d.ts +0 -12
  493. package/dist/engines/contracts/k6-repository-configuration.js +0 -1
  494. package/dist/engines/contracts/test-context.d.ts +0 -15
  495. package/dist/engines/contracts/test-context.js +0 -1
  496. package/dist/engines/definitions.d.ts +0 -23
  497. package/dist/engines/factory.d.ts +0 -6
  498. package/dist/engines/generated-performance.d.ts +0 -1
  499. package/dist/engines/installation-catalog.d.ts +0 -27
  500. package/dist/engines/installation-catalog.js +0 -1
  501. package/dist/engines/installations/k6.d.ts +0 -98
  502. package/dist/engines/installations/k6.js +0 -1
  503. package/dist/engines/installations/node-vitest.d.ts +0 -33
  504. package/dist/engines/installations/package-requirements.d.ts +0 -28
  505. package/dist/engines/installations/package-resolution.d.ts +0 -51
  506. package/dist/engines/installations/playwright-resolution-child.d.ts +0 -1
  507. package/dist/engines/installations/playwright.d.ts +0 -75
  508. package/dist/engines/installations/types.d.ts +0 -10
  509. package/dist/engines/k6/adapter/bundle.d.ts +0 -25
  510. package/dist/engines/k6/adapter/bundle.js +0 -112
  511. package/dist/engines/k6/adapter/evidence.d.ts +0 -15
  512. package/dist/engines/k6/adapter/evidence.js +0 -4
  513. package/dist/engines/k6/adapter/executor.d.ts +0 -13
  514. package/dist/engines/k6/adapter/executor.js +0 -1
  515. package/dist/engines/k6/adapter/index.d.ts +0 -1
  516. package/dist/engines/k6/adapter/index.js +0 -1
  517. package/dist/engines/k6/adapter/input.d.ts +0 -21
  518. package/dist/engines/k6/adapter/input.js +0 -1
  519. package/dist/engines/k6/adapter/native-summary.d.ts +0 -11
  520. package/dist/engines/k6/adapter/native-summary.js +0 -1
  521. package/dist/engines/k6/adapter/repository-configuration.d.ts +0 -2
  522. package/dist/engines/k6/adapter/repository-configuration.js +0 -1
  523. package/dist/engines/k6/authoring-type-paths.d.ts +0 -3
  524. package/dist/engines/k6/authoring-type-paths.js +0 -1
  525. package/dist/engines/k6/runtime/ambient-types/bundle-manifest.json +0 -146
  526. package/dist/engines/k6/runtime/ambient-types/k6/LICENSE +0 -21
  527. package/dist/engines/k6/runtime/ambient-types/k6/browser/index.d.ts +0 -6332
  528. package/dist/engines/k6/runtime/ambient-types/k6/crypto/index.d.ts +0 -218
  529. package/dist/engines/k6/runtime/ambient-types/k6/data/index.d.ts +0 -16
  530. package/dist/engines/k6/runtime/ambient-types/k6/encoding/index.d.ts +0 -46
  531. package/dist/engines/k6/runtime/ambient-types/k6/execution/index.d.ts +0 -127
  532. package/dist/engines/k6/runtime/ambient-types/k6/experimental/csv/index.d.ts +0 -96
  533. package/dist/engines/k6/runtime/ambient-types/k6/experimental/fs/index.d.ts +0 -104
  534. package/dist/engines/k6/runtime/ambient-types/k6/experimental/redis/index.d.ts +0 -821
  535. package/dist/engines/k6/runtime/ambient-types/k6/experimental/streams/index.d.ts +0 -198
  536. package/dist/engines/k6/runtime/ambient-types/k6/global.d.ts +0 -83
  537. package/dist/engines/k6/runtime/ambient-types/k6/html/index.d.ts +0 -1325
  538. package/dist/engines/k6/runtime/ambient-types/k6/http/index.d.ts +0 -806
  539. package/dist/engines/k6/runtime/ambient-types/k6/index.d.ts +0 -126
  540. package/dist/engines/k6/runtime/ambient-types/k6/metrics/index.d.ts +0 -66
  541. package/dist/engines/k6/runtime/ambient-types/k6/net/grpc/index.d.ts +0 -247
  542. package/dist/engines/k6/runtime/ambient-types/k6/options/index.d.ts +0 -459
  543. package/dist/engines/k6/runtime/ambient-types/k6/package.json +0 -79
  544. package/dist/engines/k6/runtime/ambient-types/k6/secrets/index.d.ts +0 -36
  545. package/dist/engines/k6/runtime/ambient-types/k6/timers/index.d.ts +0 -47
  546. package/dist/engines/k6/runtime/ambient-types/k6/websockets/index.d.ts +0 -324
  547. package/dist/engines/k6/runtime/ambient-types/k6/ws/index.d.ts +0 -283
  548. package/dist/engines/k6/runtime/ambient-types/xk6-sql/LICENSE +0 -201
  549. package/dist/engines/k6/runtime/ambient-types/xk6-sql/index.d.ts +0 -397
  550. package/dist/engines/k6/runtime/ambient-types/xk6-sql/package.json +0 -15
  551. package/dist/engines/k6/runtime/artifacts.d.ts +0 -2
  552. package/dist/engines/k6/runtime/artifacts.js +0 -1
  553. package/dist/engines/k6/runtime/checks.d.ts +0 -17
  554. package/dist/engines/k6/runtime/checks.js +0 -1
  555. package/dist/engines/k6/runtime/dal-fixtures.d.ts +0 -24
  556. package/dist/engines/k6/runtime/dal-fixtures.js +0 -1
  557. package/dist/engines/k6/runtime/dal-suite.d.ts +0 -24
  558. package/dist/engines/k6/runtime/dal-suite.js +0 -1
  559. package/dist/engines/k6/runtime/dal.d.ts +0 -10
  560. package/dist/engines/k6/runtime/dal.js +0 -1
  561. package/dist/engines/k6/runtime/fixtures.d.ts +0 -3
  562. package/dist/engines/k6/runtime/fixtures.js +0 -1
  563. package/dist/engines/k6/runtime/http-assertions.d.ts +0 -19
  564. package/dist/engines/k6/runtime/http-assertions.js +0 -1
  565. package/dist/engines/k6/runtime/http-checks.d.ts +0 -19
  566. package/dist/engines/k6/runtime/http-checks.js +0 -1
  567. package/dist/engines/k6/runtime/http-suite-runtime.d.ts +0 -103
  568. package/dist/engines/k6/runtime/http-suite-runtime.js +0 -1
  569. package/dist/engines/k6/runtime/http.d.ts +0 -15
  570. package/dist/engines/k6/runtime/http.js +0 -1
  571. package/dist/engines/k6/runtime/index.d.ts +0 -11
  572. package/dist/engines/k6/runtime/index.js +0 -1
  573. package/dist/engines/k6/runtime/input.d.ts +0 -3
  574. package/dist/engines/k6/runtime/input.js +0 -1
  575. package/dist/engines/k6/runtime/k6-repository-configuration.d.ts +0 -9
  576. package/dist/engines/k6/runtime/k6-repository-configuration.js +0 -1
  577. package/dist/engines/k6/runtime/node-setup.d.ts +0 -13
  578. package/dist/engines/k6/runtime/node-setup.js +0 -1
  579. package/dist/engines/k6/runtime/runtime-globals.d.ts +0 -10
  580. package/dist/engines/k6/runtime/runtime.d.ts +0 -54
  581. package/dist/engines/k6/runtime/runtime.js +0 -1
  582. package/dist/engines/k6/runtime/shared/assertion-details.d.ts +0 -19
  583. package/dist/engines/k6/runtime/shared/assertion-details.js +0 -2
  584. package/dist/engines/k6/runtime/shared/db-normalization.d.ts +0 -19
  585. package/dist/engines/k6/runtime/shared/db-normalization.js +0 -1
  586. package/dist/engines/k6/runtime/shared/error-body.d.ts +0 -3
  587. package/dist/engines/k6/runtime/shared/error-body.js +0 -1
  588. package/dist/engines/k6/runtime/shared/file-data.d.ts +0 -1
  589. package/dist/engines/k6/runtime/shared/file-data.js +0 -1
  590. package/dist/engines/k6/runtime/shared/fixture-engine.d.ts +0 -8
  591. package/dist/engines/k6/runtime/shared/fixture-engine.js +0 -2
  592. package/dist/engines/k6/runtime/shared/http-check-plan.d.ts +0 -29
  593. package/dist/engines/k6/runtime/shared/http-check-plan.js +0 -1
  594. package/dist/engines/k6/runtime/shared/http-parsing.d.ts +0 -10
  595. package/dist/engines/k6/runtime/shared/http-parsing.js +0 -3
  596. package/dist/engines/k6/runtime/shared/ordering.d.ts +0 -2
  597. package/dist/engines/k6/runtime/shared/ordering.js +0 -1
  598. package/dist/engines/k6/runtime/shared/properties.d.ts +0 -1
  599. package/dist/engines/k6/runtime/shared/properties.js +0 -1
  600. package/dist/engines/k6/runtime/suite.d.ts +0 -4
  601. package/dist/engines/k6/runtime/suite.js +0 -1
  602. package/dist/engines/k6/runtime/types.d.ts +0 -244
  603. package/dist/engines/k6/runtime/types.js +0 -1
  604. package/dist/engines/k6/runtime/xk6-sql-driver-postgres.d.ts +0 -7
  605. package/dist/engines/k6/runtime/xk6-sql-driver-postgres.js +0 -1
  606. package/dist/engines/managed-module-resolution-policy-input.d.ts +0 -8
  607. package/dist/engines/managed-module-resolution-policy.d.ts +0 -25
  608. package/dist/engines/managed-module-resolution.d.ts +0 -13
  609. package/dist/engines/manager.d.ts +0 -25
  610. package/dist/engines/node-vitest/adapter/adapter.d.ts +0 -16
  611. package/dist/engines/node-vitest/adapter/consumer-typescript-paths.d.ts +0 -17
  612. package/dist/engines/node-vitest/adapter/consumer-typescript-paths.js +0 -3
  613. package/dist/engines/node-vitest/adapter/evidence.d.ts +0 -33
  614. package/dist/engines/node-vitest/adapter/failure-details.d.ts +0 -3
  615. package/dist/engines/node-vitest/adapter/index.d.ts +0 -1
  616. package/dist/engines/node-vitest/adapter/reporter.d.ts +0 -7
  617. package/dist/engines/node-vitest/adapter/resolution.d.ts +0 -12
  618. package/dist/engines/node-vitest/adapter/resolution.js +0 -1
  619. package/dist/engines/node-vitest/adapter/workspace.d.ts +0 -19
  620. package/dist/engines/node-vitest/runtime/contract/index.d.ts +0 -64
  621. package/dist/engines/node-vitest/runtime/data/http.d.ts +0 -4
  622. package/dist/engines/node-vitest/runtime/data/index.d.ts +0 -8
  623. package/dist/engines/node-vitest/runtime/data/primitives.d.ts +0 -1
  624. package/dist/engines/node-vitest/runtime/data/report.d.ts +0 -3
  625. package/dist/engines/node-vitest/runtime/data/runner.d.ts +0 -4
  626. package/dist/engines/node-vitest/runtime/data/scenario.d.ts +0 -11
  627. package/dist/engines/node-vitest/runtime/data/types.d.ts +0 -384
  628. package/dist/engines/node-vitest/runtime/runtime-input.d.ts +0 -64
  629. package/dist/engines/playwright/adapter/adapter.d.ts +0 -18
  630. package/dist/engines/playwright/adapter/attachments.d.ts +0 -26
  631. package/dist/engines/playwright/adapter/config.d.ts +0 -45
  632. package/dist/engines/playwright/adapter/evidence-validation.d.ts +0 -9
  633. package/dist/engines/playwright/adapter/evidence.d.ts +0 -32
  634. package/dist/engines/playwright/adapter/failure-details.d.ts +0 -2
  635. package/dist/engines/playwright/adapter/index.d.ts +0 -3
  636. package/dist/engines/playwright/adapter/reporter.d.ts +0 -12
  637. package/dist/engines/playwright/runtime/config-file.d.ts +0 -2
  638. package/dist/engines/playwright/runtime/config.d.ts +0 -24
  639. package/dist/engines/playwright/runtime/index.d.ts +0 -4
  640. package/dist/engines/playwright/runtime/runtime-input.d.ts +0 -36
  641. package/dist/engines/playwright/runtime/sandbox.d.ts +0 -84
  642. package/dist/engines/runtime-input-file.d.ts +0 -27
  643. package/dist/environment/lifecycle-artifacts.d.ts +0 -7
  644. package/dist/environment/lifecycle-controller.d.ts +0 -60
  645. package/dist/environment/lifecycle.d.ts +0 -32
  646. package/dist/environment/maintenance.d.ts +0 -68
  647. package/dist/environment/planning-types.d.ts +0 -33
  648. package/dist/environment/ports.d.ts +0 -10
  649. package/dist/environment/ready-environment.d.ts +0 -16
  650. package/dist/environment/run-environment.d.ts +0 -39
  651. package/dist/environment/run-stopping.d.ts +0 -13
  652. package/dist/environment/runtime-contexts.d.ts +0 -37
  653. package/dist/environment/runtime-manager.d.ts +0 -87
  654. package/dist/environment/runtime-planning.d.ts +0 -16
  655. package/dist/environment/runtime-preparation.d.ts +0 -30
  656. package/dist/environment/runtime-service.d.ts +0 -12
  657. package/dist/environment/services.d.ts +0 -56
  658. package/dist/environment/state.d.ts +0 -15
  659. package/dist/environment/status-runtime.d.ts +0 -53
  660. package/dist/environment/template.d.ts +0 -164
  661. package/dist/evidence/artifact-config.d.ts +0 -14
  662. package/dist/evidence/artifact-validation.d.ts +0 -4
  663. package/dist/evidence/artifacts.d.ts +0 -75
  664. package/dist/evidence/bundles.d.ts +0 -27
  665. package/dist/evidence/ci-provenance.d.ts +0 -9
  666. package/dist/evidence/contracts.d.ts +0 -154
  667. package/dist/evidence/environment-record.d.ts +0 -22
  668. package/dist/evidence/file-evidence.d.ts +0 -23
  669. package/dist/evidence/finalization.d.ts +0 -9
  670. package/dist/evidence/index.d.ts +0 -8
  671. package/dist/evidence/logs.d.ts +0 -31
  672. package/dist/evidence/operation-timings.d.ts +0 -60
  673. package/dist/evidence/read-bundle.d.ts +0 -4
  674. package/dist/evidence/read-fields.d.ts +0 -21
  675. package/dist/evidence/read-provenance.d.ts +0 -2
  676. package/dist/evidence/read-redaction.d.ts +0 -2
  677. package/dist/evidence/read-retention.d.ts +0 -2
  678. package/dist/evidence/read-run.d.ts +0 -2
  679. package/dist/evidence/reading.d.ts +0 -28
  680. package/dist/evidence/reporting-types.d.ts +0 -349
  681. package/dist/evidence/reporting.d.ts +0 -3
  682. package/dist/evidence/secure-file-copy.d.ts +0 -24
  683. package/dist/evidence/setup-progress.d.ts +0 -63
  684. package/dist/evidence/step-output.d.ts +0 -16
  685. package/dist/evidence/storage-inventory.d.ts +0 -27
  686. package/dist/evidence/storage.d.ts +0 -25
  687. package/dist/evidence/timing.d.ts +0 -23
  688. package/dist/file.d.ts +0 -11
  689. package/dist/index.d.ts +0 -4
  690. package/dist/kernel/error-serialization.d.ts +0 -40
  691. package/dist/kernel/redaction.d.ts +0 -2
  692. package/dist/kernel/unknown-values.d.ts +0 -11
  693. package/dist/kernel/work-metrics.d.ts +0 -6
  694. package/dist/process/capture-output.d.ts +0 -7
  695. package/dist/process/command-shell.d.ts +0 -1
  696. package/dist/process/environment-overlay.d.ts +0 -17
  697. package/dist/process/environment.d.ts +0 -33
  698. package/dist/process/files/contained-path.d.ts +0 -8
  699. package/dist/process/files/directory-status.d.ts +0 -14
  700. package/dist/process/files/dotenv.d.ts +0 -2
  701. package/dist/process/files/file-snapshot.d.ts +0 -34
  702. package/dist/process/files/json-file.d.ts +0 -11
  703. package/dist/process/files/paths.d.ts +0 -3
  704. package/dist/process/files/product-dir.d.ts +0 -1
  705. package/dist/process/files/temp-dir.d.ts +0 -11
  706. package/dist/process/host/metadata.d.ts +0 -6
  707. package/dist/process/host/platform.d.ts +0 -57
  708. package/dist/process/host-command.d.ts +0 -4
  709. package/dist/process/host-inspection-command.d.ts +0 -13
  710. package/dist/process/host-process.d.ts +0 -19
  711. package/dist/process/index.d.ts +0 -9
  712. package/dist/process/lifecycle-fence.d.ts +0 -10
  713. package/dist/process/locks.d.ts +0 -28
  714. package/dist/process/process-contracts.d.ts +0 -78
  715. package/dist/process/process-group.d.ts +0 -12
  716. package/dist/process/process-identity.d.ts +0 -27
  717. package/dist/process/process-limits.d.ts +0 -6
  718. package/dist/process/process.d.ts +0 -12
  719. package/dist/process/readiness.d.ts +0 -43
  720. package/dist/process/recovery.d.ts +0 -3
  721. package/dist/process/runs/inspection.d.ts +0 -5
  722. package/dist/process/runs/manifest.d.ts +0 -86
  723. package/dist/process/runs/ownership.d.ts +0 -11
  724. package/dist/process/runs/product-state.d.ts +0 -2
  725. package/dist/process/runs/schema.d.ts +0 -3
  726. package/dist/process/runs/stop.d.ts +0 -19
  727. package/dist/process/runtime-socket.d.ts +0 -4
  728. package/dist/process/service-processes.d.ts +0 -13
  729. package/dist/process/shutdown.d.ts +0 -10
  730. package/dist/process/stoppable-settlement.d.ts +0 -26
  731. package/dist/process/url-redaction.d.ts +0 -1
  732. package/dist/process/windows-cli-owner.d.ts +0 -2
  733. package/dist/process/windows-native.d.ts +0 -12
  734. package/dist/process/windows-process-identity.d.ts +0 -4
  735. package/dist/repo/ci-environment.d.ts +0 -7
  736. package/dist/repo/fingerprint-policy.d.ts +0 -13
  737. package/dist/repo/git-path.d.ts +0 -2
  738. package/dist/repo/history.d.ts +0 -17
  739. package/dist/repo/managed-git.d.ts +0 -10
  740. package/dist/repo/metadata.d.ts +0 -3
  741. package/dist/repo/physical-tree.d.ts +0 -37
  742. package/dist/repo/publish-directory.d.ts +0 -20
  743. package/dist/repo/remote.d.ts +0 -6
  744. package/dist/repo/state.d.ts +0 -26
  745. package/dist/repo/tree-listing.d.ts +0 -10
  746. package/dist/steps/build-config.d.ts +0 -34
  747. package/dist/steps/configured-step-testkit-modules.d.ts +0 -19
  748. package/dist/steps/configured-steps.d.ts +0 -51
  749. package/dist/steps/environment.d.ts +0 -82
  750. package/dist/steps/index.d.ts +0 -2
  751. package/dist/steps/module-runner.d.ts +0 -1
  752. package/dist/steps/run.d.ts +0 -36
  753. package/dist/toolchains/archive.d.ts +0 -53
  754. package/dist/toolchains/esbuild.d.ts +0 -9
  755. package/dist/toolchains/host-node-support.d.ts +0 -3
  756. package/dist/toolchains/index.d.ts +0 -114
  757. package/dist/toolchains/managed-node-releases.d.ts +0 -28
  758. package/dist/toolchains/node-cache.d.ts +0 -20
  759. package/dist/toolchains/node-integrity.d.ts +0 -18
  760. package/dist/toolchains/node-provisioning.d.ts +0 -29
  761. package/dist/toolchains/semver.d.ts +0 -13
  762. package/dist/toolchains/shared-operation.d.ts +0 -11
  763. package/dist/toolchains/timeouts.d.ts +0 -1
  764. package/dist/toolchains/vitest/index.d.ts +0 -13
  765. package/dist/tracker/gitea.d.ts +0 -14
  766. package/dist/tracker/github.d.ts +0 -14
  767. package/dist/tracker/http.d.ts +0 -33
  768. package/dist/tracker/index.d.ts +0 -4
  769. package/dist/tracker/redaction.d.ts +0 -4
  770. package/dist/tracker/requests.d.ts +0 -17
  771. package/dist/tracker/responses.d.ts +0 -24
  772. package/dist/tracker/types.d.ts +0 -51
  773. package/docs/engine-architecture.md +0 -682
  774. /package/dist/engines/{k6/runtime/runtime-globals.js → api/profiles.js} +0 -0
@@ -45,10 +45,10 @@ Two overlapping refund requests for one order both pay out.
45
45
  ## Reproduce
46
46
 
47
47
  ```sh
48
- npx testkit run --file src/checkout/__testkit__/refund.int.testkit.ts
48
+ npx testkit run --file src/checkout/__testkit__/refund.contract.testkit.ts
49
49
  ```
50
50
 
51
- Test: `src/checkout/__testkit__/refund.int.testkit.ts`, "a refund pays out once".
51
+ Test: `src/checkout/__testkit__/refund.contract.testkit.ts`, "a refund pays out once".
52
52
  Found at `4f0c2d1e9b7a4c3d8e6f5a4b3c2d1e0f9a8b7c6d`.
53
53
  Fault: `src/checkout/refunds.ts`, lines 41 to 58.
54
54
 
@@ -66,9 +66,9 @@ Fault: `src/checkout/refunds.ts`, lines 41 to 58.
66
66
  "escape": "no-test",
67
67
  "caughtBy": "campaign",
68
68
  "campaign": "refunds-2026-10",
69
- "testType": "int",
69
+ "testType": "contract",
70
70
  "test": {
71
- "file": "src/checkout/__testkit__/refund.int.testkit.ts",
71
+ "file": "src/checkout/__testkit__/refund.contract.testkit.ts",
72
72
  "title": "a refund pays out once"
73
73
  },
74
74
  "foundAt": "4f0c2d1e9b7a4c3d8e6f5a4b3c2d1e0f9a8b7c6d",
@@ -86,29 +86,40 @@ Fault: `src/checkout/refunds.ts`, lines 41 to 58.
86
86
 
87
87
  The reproduce command runs from the repository root. When `testkit.config.ts` is in a subdirectory, the command carries `--dir <directory>` and the `--file` path is relative to that directory. The `Test:` and `Fault:` lines always give paths from the repository root.
88
88
 
89
- A fault on one line reads `line 41`.
89
+ When `testkit bug file` ran the test against [supplied values](../README.md#run-against-a-supplied-environment), the command ends with the `--base-url`, `--endpoint`, `--env-from`, and `--environment-file` flags it was given, as given. They hold no raw secret: `--env-from` names host variables, the environment file stays outside the issue, and `testkit bug file` accepts a URL only without credentials, a query, or a fragment, and an endpoint name only of letters, digits, dot, underscore, and hyphen. It refuses `--database` and `--env`, whose values the command would otherwise carry, and a relative `--environment-file` unless it runs from the repository root. It checks these values, and that every `--env-from` host variable is set, before it contacts the tracker. The command is written for a POSIX shell: flags and simple mappings appear unquoted, and any argument that needs quoting, such as a URL with brackets or a path with a space, is quoted for that shell. The facts block does not change.
90
90
 
91
- An issue for a k6 script that fails as a whole covers the whole file. Its facts block has no `test.title`, and its `Test:` line quotes the `test.title` of the bug record as the finder's description of the script.
91
+ A fault on one line reads `line 41`.
92
92
 
93
93
  ```markdown
94
- Test: `src/health/__testkit__/health.int.testkit.ts`, the whole script, recorded as "the health endpoint answers".
94
+ Test: `src/health/__testkit__/health.contract.testkit.ts`, the whole script, recorded as "the health endpoint answers".
95
95
  ```
96
96
 
97
- Testkit redacts the secrets it recognises in the title, in every section, and in `test.title`. It does so when it records the bug and again when it files the issue. It recognises these forms.
97
+ Testkit redacts the secrets it recognises in the title, in every section, and in `test.title`. It does so when it records the bug and again when it files the issue. `testkit run` applies the same rules when it stores a run result. Testkit recognises these forms.
98
98
 
99
99
  - The value of a `KEY=value` assignment whose key names a secret.
100
100
  - The password in a URL.
101
101
  - The value of an `Authorization`, `Proxy-Authorization`, `Cookie`, or `Set-Cookie` header.
102
- - A JSON string value whose key names a secret.
102
+ - A JSON string value whose key names a secret, including JSON that is itself inside a JSON string, as in `{"message":"{\"token\":\"…\"}"}`. Testkit reads the key's escapes, so `"\u0074oken"` names a secret too.
103
+ - The value of a single-quoted `'password': '…'` member, in any letter case. It ends at the next apostrophe that no backslash precedes, or with the line.
103
104
 
104
- A key names a secret when it contains `PASSWORD`, `TOKEN`, `SECRET`, `PRIVATE_KEY`, `AUTH`, `COOKIE`, `SESSION`, or `API_KEY` in any letter case. Testkit cannot recognise every secret, so the finder must still keep credentials, tokens, and passwords out of the record.
105
+ A key names a secret when it contains `PASSWORD`, `TOKEN`, `SECRET`, `PRIVATE_KEY`, `AUTH`, `COOKIE`, `SESSION`, or `API_KEY` in any letter case. Still keep credentials, tokens, and passwords out of the record.
105
106
 
106
- An assigned value ends at the first space, with three exceptions.
107
+ An assigned value ends at the first space, with four exceptions.
107
108
 
108
109
  - A value that starts with `"` or `'` ends at the next such quote on its line. When the line has no such quote, the value ends with the line.
110
+ - A quoted value inside a JSON string (`\"`), or inside JSON that is itself inside a JSON string (`\\\"`), ends at the next quote escaped to the same depth. A quote escaped more deeply belongs to the value. The value ends sooner at a quote escaped less deeply, such as the quote that closes the JSON string, at an escaped line break at its own depth or less, or with the line. A value quoted with an escaped apostrophe, `\'`, works the same way. JSON doesn't escape apostrophes, so each JSON layer only doubles the backslashes (`\\'`). A plain apostrophe inside the value belongs to it.
109
111
  - A value that starts with `Basic`, `Bearer`, `Digest`, `Negotiate`, or `Token` and then a space or a tab ends with the line.
110
112
  - Under a key that ends in `_URL`, Testkit keeps a value that starts with a scheme, such as `https://`, and redacts the URL's password only.
111
113
 
114
+ When `testkit run` stores a result, it redacts JSON one string value at a time. That covers text that is a JSON object, array, or string, and a line whose text from its first `{` or `[` is JSON. Each string value gets the rules above, and so does JSON inside a string. A value that runs to a space or to the end of its line therefore ends with its string, and the record's other values stay as they are. Other text gets the rules as written, and so does JSON in two cases:
115
+
116
+ - a rule reading the whole line would redact across the line's first `{` or `[`;
117
+ - a secret Testkit resolved from the run's environment, whole or cut short, crosses the JSON's edge or spans more than one string.
118
+
119
+ A string that holds such a secret in escaped form is redacted as decoded text when the escaped text decodes to the secret, or, for a secret cut short, to the start of one, and redacted whole otherwise. Where these rules and a resolved secret overlap, Testkit redacts every character that either would redact.
120
+
121
+ Testkit writes `<redacted>` in place of the value. A quoted value keeps its quotes, as in `PASSWORD="<redacted>"`, so redacting the text again changes nothing. A `<redacted>` that the text already holds counts as part of the value, so `TOKEN=<redacted>example-secret` becomes `TOKEN=<redacted>`. A secret resolved from the run's environment can itself contain part of `<redacted>`, or a character Testkit reserves. Such a secret can match text that redaction creates, so where it takes part, `testkit run` redacts the whole line of a log, or the whole JSON string, when it stores the result. When such a secret spans lines, or takes part only across lines, `testkit run` redacts every line between the nearest JSON lines instead, or the whole text when it holds none.
122
+
112
123
  A URL password is the text between `://user:` and the last `@` before the next `/` or space. The user can be empty, as in `redis://:password@cache`. Testkit does not recognise a password that holds a `/`, or a token that stands alone as the user, as in `https://token@host`.
113
124
 
114
125
  Testkit does not rewrite a path or an area's name. `testkit bug record` rejects a record whose `test.file` or `fault.path` holds text that Testkit redacts. `testkit bug file` stops when the area's name or the reproduce command holds such text.
@@ -214,29 +225,25 @@ An area id matches `^[a-z0-9]+(?:-[a-z0-9]+)*$` and is at most 40 characters lon
214
225
 
215
226
  ## Known failures
216
227
 
217
- A failed file reports its failures in one of three forms.
228
+ A failed file reports its failures in one of two forms.
218
229
 
219
- | Failure | When |
220
- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
221
- | Named failure | The engine names the test that failed. One failure for each title. |
222
- | Script failure | A k6 script fails as a whole: it calls `fail()`, throws while it runs, fails a k6 `check()`, or fails a threshold. One per file. |
223
- | Unnamed failure | The file fails any other way, such as a crash, a timeout, a file that does not load, a Vitest error outside a test, a Playwright error outside a spec, or a k6 script that throws during `setup`. |
230
+ | Failure | When |
231
+ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
232
+ | Named failure | The engine names the test that failed. One failure for each title. |
233
+ | Unnamed failure | The file fails any other way, such as a crash, a timeout, a file that does not load, a Vitest error outside a test, a Playwright error outside a spec. |
224
234
 
225
235
  A named failure's title comes from the engine.
226
236
 
227
- | Engine | Title |
228
- | ---------- | -------------------------------------------------------------------------------------------------------------------------------- |
229
- | Vitest | The names of the `describe` blocks around the test and the test's own name, joined by single spaces. |
230
- | Playwright | The names of the `describe` blocks around the spec and the spec's own title, joined by single spaces. |
231
- | k6 | The label of a failed assertion from `@gfdelarue/testkit/k6`, or the assertion's request and default title when it has no label. |
237
+ | Engine | Title |
238
+ | ---------- | ----------------------------------------------------------------------------------------------------- |
239
+ | Vitest | The names of the `describe` blocks around the test and the test's own name, joined by single spaces. |
240
+ | Playwright | The names of the `describe` blocks around the spec and the spec's own title, joined by single spaces. |
232
241
 
233
242
  A Playwright title holds neither the file path nor the project name. A spec that fails in two projects is one named failure.
234
243
 
235
- A k6 assertion on a response has a default title when the script gives it no label. Those assertions are `expect.status`, `expect.statusOneOf`, `expect.notStatus`, `expect.json`, `expect.jsonPath`, `expect.error.shape`, and `expect.error.message`. Testkit names such a failure by its request and the default title, as in `GET /health > status is 201`. Inside a k6 `group`, the group's name comes first, as in `orders > GET /health > status is 201`. Any other assertion with no label keeps its default title, such as `row count is 2`. A label names its failure as written, even when it reads like a default title. Two failures in one file whose titles are equal are one named failure.
236
-
237
244
  When a file reports named failures, `testkit bug file` rejects a bug record whose `test.title` is not one of their titles. Its message lists the titles a bug record can use.
238
245
 
239
- Testkit files no bug under a title that spans lines or holds text it redacts as a secret, so no issue with a `test.title` covers such a failure. `testkit run` redacts some secrets when it stores a run result and writes `<redacted>` in their place. A title that the run result stores with `<redacted>` is such a title. Rename the test, or give the assertion a label, so that its title is one line and holds no such text. [Issue body](#issue-body) lists what Testkit redacts.
246
+ Testkit files no bug under a title that spans lines or holds text it redacts as a secret, so no issue with a `test.title` covers such a failure. `testkit run` redacts those secrets when it stores a run result and writes `<redacted>` in their place. A title that the run result stores with `<redacted>` is such a title. Rename the test, or give the assertion a label, so that its title is one line and holds no such text. [Issue body](#issue-body) lists what Testkit redacts.
240
247
 
241
248
  Vitest reports an error outside a test when a hook such as `beforeAll` throws, or when code throws after its test has returned. The file then reports one unnamed failure beside its named failures.
242
249
 
@@ -250,22 +257,15 @@ A file also reports one unnamed failure beside its named failures when the engin
250
257
  - A Playwright config sets `failOnFlakyTests` and a spec passes only on a retry. A spec that passes on a retry is no named failure, so no issue can cover it.
251
258
  - A Playwright spec fails in a file other than the selected one, such as a spec in a project that the selected file's project depends on or a spec in a teardown project. That spec is no named failure of the selected file, so no issue can cover it. A spec's file is the file that Playwright loaded. A compiled file whose source map names the selected file is still another file.
252
259
  - Testkit cannot keep a file that a Playwright spec attached, or cannot store the evidence of the Playwright run.
253
- - A k6 process whose thresholds failed ends on a signal or with an exit code other than 99.
254
- - A k6 process whose script threw an error ends on a signal or with an exit code other than 0 or 99, or leaves no summary that Testkit can read.
255
-
256
- A k6 script reports a script failure and no named failure when it fails only through `fail()`, a thrown error, a k6 `check()`, or a threshold. `testkit bug file` then files one issue for the whole file, and the issue's facts carry no `test.title`.
257
-
258
- A k6 script reports its named failures and one script failure when it also fails that way beside the assertions the run names. Testkit tells a k6 `check()` from its own assertions by count. The k6 summary counts every failed check, and each failed assertion from `@gfdelarue/testkit/k6` is one failed check. When the summary's count differs from the number of failed assertions the run names, or the summary carries no count, the file has a script failure.
259
260
 
260
261
  A failure is known when an open issue with the `testkit` label covers it. The issue's `test.file` must equal the failing file's path from the repository root.
261
262
 
262
263
  | Failure | Covered by |
263
264
  | --------------- | ----------------------------------------------------------------------------------------------------- |
264
265
  | Named failure | An issue whose `test.title` equals the failure's title, or an issue whose facts have no `test.title`. |
265
- | Script failure | An issue whose facts have no `test.title`. |
266
266
  | Unnamed failure | No issue. |
267
267
 
268
- An issue with a `test.title` covers that one title and nothing else. An issue with no `test.title` covers the whole file. That is every named failure in the file and its script failure, and never an unnamed failure. An unnamed failure is always new. Closing an issue makes the next failure it covered new.
268
+ An issue with a `test.title` covers that one title and nothing else. An issue with no `test.title` covers the whole file. That is every named failure in the file, and never an unnamed failure. An unnamed failure is always new. Closing an issue makes the next failure it covered new.
269
269
 
270
270
  When Testkit cannot read the issues, every failure is new.
271
271
 
@@ -282,7 +282,7 @@ When Testkit cannot read the issues, every failure is new.
282
282
  | Target URL | The CI run's URL, when the CI provider gives one. |
283
283
  | Description | See below. At most 140 characters. |
284
284
 
285
- The description has one of three forms.
285
+ The description has one of two forms.
286
286
 
287
287
  | Run | Description |
288
288
  | -------------------------------- | -------------------------- |
@@ -294,12 +294,12 @@ The counts are failures. A script failure counts as one failure. An unnamed fail
294
294
 
295
295
  Testkit redacts the secrets it recognises in the reason. [Issue body](#issue-body) lists the forms.
296
296
 
297
- `testkit run` redacts some secrets when it stores the run result, and that redaction can stop before the secret's end. The description therefore ends at the first `<redacted>` in the stored reason. A redacted URL password is the exception. `testkit run` redacts a URL password whole, so the description continues past it.
297
+ A run result stored before Testkit 0.5.0 can keep the rest of a secret after a `<redacted>`. The description therefore ends at the first `<redacted>` in the stored reason, keeping a quote that directly follows it. A redacted URL password is the exception. `testkit run` always redacted a URL password whole, so the description continues past it.
298
298
 
299
299
  ## Pull request comment
300
300
 
301
- `testkit ci report` keeps one comment on the run's pull request and updates it in place. The comment's first line is `<!-- testkit-ci-report -->`, or `<!-- testkit-ci-report:<context> -->` when the context is not `testkit`. Testkit finds its comment by that line.
301
+ `testkit ci report` keeps one comment on the run's pull request and updates it in place. The comment's first line is `<!-- testkit-ci-report -->`, or `<!-- testkit-ci-report:<context> -->` when the context is not `testkit`. Testkit updates the comment that starts with that line, and adds one when no comment does, so each context keeps its own comment.
302
302
 
303
303
  The comment names each failure by its file and its title. Testkit redacts the secrets it recognises in both, in the reason for a run that failed outside its tests, and in the reason it could not read the open bugs. [Issue body](#issue-body) lists the forms.
304
304
 
305
- A file, a title, or a run's reason that the run result stores with `<redacted>` ends there in the comment and in the step summary, as it does in the [commit status](#commit-status). A title such as `rejects PASSWORD=<redacted> with 401` shows as `rejects PASSWORD=<redacted>`.
305
+ A file, a title, or a run's reason that the run result stores with `<redacted>` ends there in the comment and in the step summary, as it does in the [commit status](#commit-status). A title such as `rejects PASSWORD=<redacted> with 401` shows as `rejects PASSWORD=<redacted>`, and `rejects PASSWORD="<redacted>" with 401` shows as `rejects PASSWORD="<redacted>"`.
@@ -0,0 +1,213 @@
1
+ # Engines
2
+
3
+ Testkit runs tests with two engines: `node-vitest` and `playwright`.
4
+ [Execution engines](../README.md#execution-engines) says which files each one
5
+ runs. This page covers what a test author or a CI setup needs from each engine:
6
+ native authoring, typechecking, the environment a test receives, Playwright
7
+ attachments, and installation.
8
+
9
+ ## Engine-native authoring
10
+
11
+ Each engine keeps its own test language. The root package declares a typed
12
+ file's engine, and each engine's subpath exposes that engine's API.
13
+
14
+ Node/Vitest runs plain Vitest test files, and data and contract suites:
15
+
16
+ ```ts
17
+ import { defineFile } from "@gfdelarue/testkit";
18
+ import { dataScenario } from "@gfdelarue/testkit/node-vitest/data";
19
+ import { expect } from "vitest";
20
+
21
+ export const testkit = defineFile({ engine: "node-vitest" });
22
+
23
+ dataScenario("records checkout traffic", ({ count, record }) => {
24
+ record("checkout", { count: 1 });
25
+ count("orders", 1);
26
+ expect(1).toBe(1);
27
+ });
28
+ ```
29
+
30
+ Playwright runs UI suites and keeps ordinary Playwright configuration:
31
+
32
+ ```ts
33
+ import { defineFile } from "@gfdelarue/testkit";
34
+ import { expect, test } from "@playwright/test";
35
+
36
+ export const testkit = defineFile({ engine: "playwright" });
37
+
38
+ test("shows the account", async ({ page }) => {
39
+ await page.goto("/account");
40
+ await expect(page.getByRole("heading", { name: "Account" })).toBeVisible();
41
+ });
42
+ ```
43
+
44
+ ## Typechecking
45
+
46
+ `testkit typecheck` groups the discovered test files by engine and by their
47
+ nearest tsconfig, and checks each group with native `tsc --noEmit`. Plain Vitest
48
+ test files written in TypeScript join the Node/Vitest program, and plain
49
+ JavaScript files are skipped. Config and Node/Vitest use Node types and ES2022;
50
+ Playwright adds DOM and DOM.Iterable. Each check has a deadline and can be
51
+ cancelled. When a program fails, the report includes the programs that passed
52
+ before it.
53
+
54
+ Testkit supports consumer TypeScript 5.9.3 and 6.0.2. Each program uses the
55
+ compiler installed beside its nearest tsconfig or in an ancestor directory, and
56
+ otherwise Testkit's bundled compiler. Config checking starts at the product
57
+ root. Runtime toolchain settings don't select the typecheck compiler.
58
+
59
+ TypeScript follows transitive imports and workspace links and reports type
60
+ errors. Programs inherit the consumer's compiler options and aliases, but a
61
+ tsconfig's `files`, `include`, and project references don't add test roots.
62
+ Testkit's authoring declarations and its pinned engine packages take precedence
63
+ over conflicting consumer packages. A helper shared by several engines must
64
+ typecheck in each engine's program. Testkit's generated configs don't set
65
+ `baseUrl`, so they need no deprecation suppression and you never edit them.
66
+ Aliases inherited from a config with `baseUrl` keep their target directory and
67
+ fallback order.
68
+
69
+ ### Playwright support files
70
+
71
+ A Playwright program always includes the discovered UI suites and the nearest
72
+ `playwright.config.*` above the owning group's roots. Typechecking never runs
73
+ that config. For support files that the config names as strings or chooses at
74
+ run time, add a `tsconfig.playwright.json` in the test file's directory or an
75
+ ancestor inside the product root:
76
+
77
+ ```json
78
+ {
79
+ "extends": "./tsconfig.json",
80
+ "files": ["global/setup.ts", "global/teardown.ts"],
81
+ "include": ["fixtures/**/*.ts", "reporters/**/*.ts", "projects/**/*.ts"],
82
+ "exclude": ["projects/generated/**"]
83
+ }
84
+ ```
85
+
86
+ The nearest companion takes precedence over the ordinary tsconfig for that
87
+ Playwright scope. Its `extends`, `files`, `include`, and `exclude` select the
88
+ support files that join the Playwright program. Use it for global setup and
89
+ teardown, reporters, fixtures, and dependency and teardown projects, including
90
+ every variant of a multi-project config. An empty companion can supply options
91
+ alone. Without a companion, Testkit checks the implicit roots, what they import,
92
+ and the existing Next ambient and fixture defaults. Project references don't
93
+ run.
94
+
95
+ TypeScript follows imported helpers, but it can't find a file that only a
96
+ runtime string or function names. Include those files in the companion.
97
+
98
+ ## Environment
99
+
100
+ The environment declared for a test is part of the test's input. Each engine
101
+ exposes it through its own authoring surface:
102
+
103
+ - Node/Vitest data and contract callbacks read it from immutable `context.env`.
104
+ - Playwright files read immutable `context.env` from `readPlaywrightContext()`
105
+ when Testkit runs them.
106
+
107
+ Outside a Testkit run, a Node/Vitest authoring context has an empty `env`, and
108
+ `readPlaywrightContext()` returns `null`.
109
+
110
+ Typed Node/Vitest files, and plain files under `--vitest-runner managed`, also
111
+ see each value as an immutable, non-enumerable `process.env.KEY` property, so
112
+ libraries that read `process.env` see it. `process.env` isn't the enumerable
113
+ list of the test's values, though. A Node child that inherits Testkit's
114
+ bootstrap sees the values too. A non-Node child process receives only the
115
+ values the test passes it. Plain files under the repository's Vitest get the
116
+ values as ordinary environment variables, which tests and child processes can
117
+ read, enumerate, change, and delete like any other.
118
+
119
+ Test files of every engine may import `@gfdelarue/testkit/environment` and read
120
+ named endpoints, databases, and handles with `endpoint(name)`, `database(name)`,
121
+ and `handle(name)`. See
122
+ [Named endpoints and databases](../README.md#named-endpoints-and-databases) and
123
+ [Handles](../README.md#handles). `testkit.config.ts` and lifecycle step modules
124
+ may not import it. In Node, a handle's operations use `node:http`, so a test
125
+ that replaces `fetch` doesn't reroute them.
126
+
127
+ Testkit checks the consumer environment's names case-insensitively. Empty
128
+ names, names containing `=` or NUL, values containing NUL, and names that
129
+ differ only in case fail instead of being normalized. Every engine reserves
130
+ the keys `APPDATA`, `ComSpec`, `HOME`, `LANG`, `LC_ALL`, `LOCALAPPDATA`, `PATH`,
131
+ `PATHEXT`, `SystemRoot`, `TEMP`, `TMP`, `TMPDIR`, `USERPROFILE`,
132
+ `XDG_CACHE_HOME`, `XDG_CONFIG_HOME`, and `XDG_DATA_HOME`.
133
+
134
+ Each engine also reserves these prefixes and keys, and limits the consumer
135
+ environment:
136
+
137
+ | Engine | Reserved prefixes | Other reserved keys | Consumer environment limit |
138
+ | ------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
139
+ | `node-vitest` | none | `BASE_URL`, `FORCE_COLOR`, `NODE_OPTIONS`, `NO_COLOR`, `UPDATE_SNAPSHOT`, `VITEST_POOL_ID`, `VITEST_WORKER_ID`, `TESTKIT_ACTIVE`, `TESTKIT_DATA_ARTIFACT_DIR`, `TESTKIT_INVOCATION_ID`, `TESTKIT_LEASE_DIR`, `TESTKIT_LEASE_ID`, `TESTKIT_MODE`, `TESTKIT_NODE_VITEST_INPUT_FILE`, `TESTKIT_NODE_VITEST_INPUT_SHA256`, `TESTKIT_RUNTIME_ID`, `TESTKIT_TEST_FILE`, `TESTKIT_TEST_ID` | 512 entries and 4 MiB of UTF-8 key/value data; 8 MiB for all of the test's inputs together |
140
+ | `playwright` | `TESTKIT_`, `PLAYWRIGHT_`, `PWTEST_`, `PW_TEST_` | `BASE_URL`, `FORCE_COLOR`, `NODE_OPTIONS`, `NO_COLOR` | 512 entries and 2 MiB of UTF-8 key/value data; 4 MiB for all of the test's inputs together |
141
+
142
+ Prefixes and keys match in any letter case. The processes Testkit starts have
143
+ separate environment limits, which consumer values don't count toward: 24,576
144
+ character units for Testkit's own Vitest, and 64 entries and 24 KiB for
145
+ Playwright. The repository's Vitest starts with the shell's environment and the
146
+ group's values, so only the operating system's limit applies to it. The
147
+ reservations keep consumer
148
+ configuration from overriding the endpoint, cancellation, deadline, reporter,
149
+ module-resolution, and native-runner controls Testkit sets.
150
+
151
+ ## Compilation cache
152
+
153
+ Node/Vitest and Playwright reuse Node's compilation cache across a run's files.
154
+ Only compiled code is shared: evaluated modules, globals, and runner state stay
155
+ in each test process. The cache lasts for one run. Setting Node's own cache controls or enabling V8 coverage
156
+ turns it off, and a cache Testkit can't use falls back to running without one.
157
+
158
+ Testkit rejects a file it reads for a test, such as a fixture, when a symlink
159
+ leads it outside the product directory. A file inside the product whose name
160
+ starts with `..`, such as `..fixtures/input.json`, is fine.
161
+
162
+ ## Playwright reports and attachments
163
+
164
+ Testkit adds its reporter after the product's reporters, including JSON
165
+ reporters, so the product's reporters keep running.
166
+
167
+ A Playwright attachment may hold at most 64 MiB, and one file's attachments at
168
+ most 256 MiB in total, whether the test attached a body or a path. An
169
+ attachment over a limit fails the task with `PLAYWRIGHT_ATTACHMENT_LIMIT`,
170
+ which names the attachment, the limit, and the bytes it held, and takes
171
+ precedence over the spec's own result. An attachment that can't be read fails
172
+ the task as an infrastructure failure when no spec failed. Either way, the
173
+ results, assertion details, and accepted attachments of the rest of the file
174
+ are kept, and every rejected attachment stays in the evidence. Cancellation,
175
+ timeouts, and process failures keep their precedence over both.
176
+
177
+ ## Installation
178
+
179
+ Consumers declare one dependency, `@gfdelarue/testkit`. It installs Vitest
180
+ 4.1.11 and Playwright 1.59.1. Plain Vitest test files run with the product's own
181
+ Vitest 4.x and its config; see
182
+ [Plain Vitest test files](../README.md#plain-vitest-test-files). Otherwise a
183
+ product's copies of Vitest, Vite, esbuild, TypeScript, or Playwright don't
184
+ replace the versions Testkit runs.
185
+
186
+ Keep optional dependencies enabled because JavaScript tools such as esbuild
187
+ use platform-specific optional packages. The product's lockfile makes the
188
+ install reproducible. Testkit never downloads a missing package during a run.
189
+
190
+ Browser installation is explicit:
191
+
192
+ ```text
193
+ testkit setup playwright
194
+ testkit setup playwright --with-deps
195
+ testkit setup playwright --force
196
+ ```
197
+
198
+ The command runs Playwright's own installer for Chromium. A run never installs
199
+ a browser. When Chromium fails to launch, the task fails as an infrastructure
200
+ failure with Playwright's own cause. The product's Playwright global setup and
201
+ teardown still run.
202
+
203
+ To recover a broken install, reinstall from the lockfile with optional
204
+ dependencies included. To recover a broken browser, run
205
+ `testkit setup playwright --force`, adding `--with-deps` on a host that lacks
206
+ the browser's system libraries.
207
+
208
+ ### Supported platforms
209
+
210
+ - Linux: Node/Vitest supports glibc and musl. Playwright doesn't support
211
+ musl and fails before setup or a run starts.
212
+ - macOS: arm64 and x64.
213
+ - Windows: x64 on Windows 10 or Windows Server 2016 and newer.
@@ -1,14 +1,22 @@
1
1
  # Test Types
2
2
 
3
- Testkit exposes seven product-level test types:
3
+ A test file is either a plain Vitest test file or a typed file.
4
+
5
+ Plain Vitest test files have no test type. A file such as `src/sum.test.ts`
6
+ imports `test` and `expect` from `vitest` and needs no Testkit suffix,
7
+ `__testkit__` directory, `defineFile`, or wrapper. Unit tests belong here, and
8
+ so does any Node-side test that reads its environment from `process.env` or
9
+ `@gfdelarue/testkit/environment`. These files run under the general
10
+ `node-vitest` profile, and a bug filed from one records no `testType`. See
11
+ [Plain Vitest test files](../README.md#plain-vitest-test-files) for which files
12
+ Testkit runs.
13
+
14
+ Typed files carry one of three product-level test types in their filename
15
+ suffix:
4
16
 
5
17
  - `ui`: browser-level UI checks for user-visible pages and interactions.
6
- - `e2e`: service-spanning flows that exercise real runtime behavior without driving a browser.
7
- - `int`: integration checks around routes, services, queues, jobs, or other runtime boundaries.
8
18
  - `contract`: Node-backed service/runtime contract checks that need Node APIs but are not data-flow evidence suites.
9
19
  - `data`: data-flow and data-contract checks for throughput, payload shape, conversation/request traces, and cost/latency budgets.
10
- - `dal`: data access and persistence checks.
11
- - `load`: load, soak, or pressure checks.
12
20
 
13
21
  Consumers choose the type that describes the product behavior and declare the
14
22
  execution engine in each file's `defineFile(...)` metadata. Testkit validates
@@ -16,21 +24,20 @@ that pair against its engine catalog and resolves the exact runner profile.
16
24
 
17
25
  The current catalog is deliberately explicit:
18
26
 
19
- | Test type | Engine | Runner profile |
20
- | -------------------- | ------------- | ---------------------- |
21
- | `int`, `e2e`, `load` | `k6` | `k6-http` |
22
- | `dal` | `k6` | `k6-dal` |
23
- | `data` | `node-vitest` | `node-vitest-data` |
24
- | `contract` | `node-vitest` | `node-vitest-contract` |
25
- | `ui` | `playwright` | `playwright-ui` |
27
+ | Test type | Engine | Runner profile |
28
+ | ------------------ | ------------- | ---------------------- |
29
+ | none, a plain file | `node-vitest` | `node-vitest` |
30
+ | `data` | `node-vitest` | `node-vitest-data` |
31
+ | `contract` | `node-vitest` | `node-vitest-contract` |
32
+ | `ui` | `playwright` | `playwright-ui` |
26
33
 
27
- Every file must import `defineFile` from the root package and export one direct
28
- metadata declaration:
34
+ Every typed file must import `defineFile` from the root package and export one
35
+ direct metadata declaration:
29
36
 
30
37
  ```ts
31
38
  import { defineFile } from "@gfdelarue/testkit";
32
39
 
33
- export const testkit = defineFile({ engine: "k6" });
40
+ export const testkit = defineFile({ engine: "node-vitest" });
34
41
  ```
35
42
 
36
43
  The engine is not inferred from the suffix, imports, or repo configuration. A
@@ -38,24 +45,22 @@ missing declaration, dynamic engine value, or unsupported pair is a discovery
38
45
  error. The profile is derived from the validated pair and is carried unchanged
39
46
  through scheduling, results, and immutable run evidence.
40
47
 
41
- Run selection by `--file`, `--service`, `--type`, or `--suite` narrows the files
42
- whose engine metadata is read and validated. Testkit uses discovered paths,
43
- canonical type suffixes, and suite names to select candidates; each selected
44
- file must still declare a valid engine. Invalid metadata in an unselected file
48
+ Run selection by `--file`, `--group`, `--type`, or `--suite` narrows the files
49
+ whose engine metadata is read and validated. A `--type` that names test types
50
+ and typed suite selectors select typed files only; `--type all` includes plain
51
+ files. Testkit uses discovered paths, canonical type
52
+ suffixes, and suite names to select candidates; each selected typed file must
53
+ still declare a valid engine. Invalid metadata in an unselected file
45
54
  does not block that focused run. Root configuration, service dependencies, and
46
- configured skip, requirement, and isolation selectors remain validated against
55
+ group skip, requirement, and isolation selectors remain validated against
47
56
  the complete discovered project. `discover`, `doctor`, and `typecheck` validate
48
57
  metadata across the whole project.
49
58
 
50
59
  Canonical filename suffixes:
51
60
 
52
61
  - `*.ui.testkit.ts`
53
- - `*.e2e.testkit.ts`
54
62
  - `*.contract.testkit.ts`
55
63
  - `*.data.testkit.ts`
56
- - `*.int.testkit.ts`
57
- - `*.dal.testkit.ts`
58
- - `*.load.testkit.ts`
59
64
 
60
65
  UI tests may import Playwright's public browser primitives directly from the
61
66
  managed native package:
@@ -112,15 +117,12 @@ data-flow suite.
112
117
  Data suites run as Node processes managed by Testkit's `node-vitest` engine and
113
118
  should use configured service URLs for data-flow evidence. If a check requires
114
119
  service-local loopback, `serviceContextUrl`, DOM rendering, browser automation,
115
- or raw app-server process access, use `int`, `e2e`, or `ui` instead.
116
-
117
- Use `int` for ordinary service boundary checks that fit the k6 HTTP profile,
118
- `contract` for Node-backed service/runtime contracts that would otherwise look
119
- like Vitest, `e2e` for product journeys, `dal` for persistence
120
- contracts, and `ui` when the browser is part of the assertion. k6 suites retain
121
- native k6 options, scenarios, executors, VUs, thresholds, and lifecycle hooks;
122
- Testkit orchestrates them without translating those concepts into the other
123
- engines.
120
+ or raw app-server process access, use a plain Vitest test, `contract`, or `ui` instead.
121
+
122
+ Use a plain Vitest test file for unit tests and other Node-side checks that need
123
+ no Testkit context, `contract` for typed service or protocol contracts, and `ui`
124
+ when the browser is part of the assertion. Plain Vitest files can exercise HTTP,
125
+ persistence, and service-spanning flows without a type label.
124
126
 
125
127
  The retired `@gfdelarue/testkit/runtime`, `@gfdelarue/testkit/data`,
126
128
  `@gfdelarue/testkit/contract`, `@gfdelarue/testkit/ui`, and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gfdelarue/testkit",
3
- "version": "0.4.5",
3
+ "version": "0.5.0",
4
4
  "description": "Test orchestration platform for product acceptance and QA workflows",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",
@@ -12,59 +12,59 @@
12
12
  "access": "public",
13
13
  "registry": "https://registry.npmjs.org/"
14
14
  },
15
- "types": "./dist/index.d.ts",
15
+ "types": "./dist/types/index.d.ts",
16
16
  "exports": {
17
17
  ".": {
18
- "types": "./dist/index.d.ts",
18
+ "types": "./dist/types/index.d.ts",
19
19
  "default": "./dist/index.js"
20
20
  },
21
- "./k6": {
22
- "types": "./dist/engines/k6/runtime/index.d.ts",
23
- "default": "./dist/engines/k6/runtime/index.js"
24
- },
25
21
  "./config": {
26
- "types": "./dist/config/authoring/index.d.ts",
22
+ "types": "./dist/types/config.d.ts",
27
23
  "default": "./dist/config/authoring/index.js"
28
24
  },
29
25
  "./config/database-steps": {
30
- "types": "./dist/database/steps.d.ts",
26
+ "types": "./dist/types/config-database-steps.d.ts",
31
27
  "default": "./dist/database/steps.js"
32
28
  },
33
29
  "./drizzle": {
34
- "types": "./dist/database/drizzle/index.d.ts",
30
+ "types": "./dist/types/drizzle.d.ts",
35
31
  "default": "./dist/database/drizzle/index.js"
36
32
  },
37
33
  "./env": {
38
- "types": "./dist/config/runtime/env/index.d.ts",
34
+ "types": "./dist/types/env.d.ts",
39
35
  "default": "./dist/config/runtime/env/index.js"
40
36
  },
37
+ "./environment": {
38
+ "types": "./dist/types/environment.d.ts",
39
+ "default": "./dist/engines/environment/index.js"
40
+ },
41
41
  "./playwright": {
42
- "types": "./dist/engines/playwright/runtime/index.d.ts",
42
+ "types": "./dist/types/playwright.d.ts",
43
43
  "default": "./dist/engines/playwright/runtime/index.js"
44
44
  },
45
45
  "./tooling/vitest": {
46
- "types": "./dist/toolchains/vitest/index.d.ts",
46
+ "types": "./dist/types/tooling-vitest.d.ts",
47
47
  "default": "./dist/toolchains/vitest/index.js"
48
48
  },
49
49
  "./node-vitest/data": {
50
- "types": "./dist/engines/node-vitest/runtime/data/index.d.ts",
50
+ "types": "./dist/types/node-vitest-data.d.ts",
51
51
  "default": "./dist/engines/node-vitest/runtime/data/index.js"
52
52
  },
53
53
  "./node-vitest/contract": {
54
- "types": "./dist/engines/node-vitest/runtime/contract/index.d.ts",
54
+ "types": "./dist/types/node-vitest-contract.d.ts",
55
55
  "default": "./dist/engines/node-vitest/runtime/contract/index.js"
56
56
  },
57
57
  "./workspace": {
58
- "types": "./dist/app/inspect/index.d.ts",
58
+ "types": "./dist/types/workspace.d.ts",
59
59
  "default": "./dist/app/inspect/index.js"
60
60
  },
61
61
  "./package.json": "./package.json",
62
62
  "./config/build-assets": {
63
- "types": "./dist/config/runtime/build-assets.d.ts",
63
+ "types": "./dist/types/config-build-assets.d.ts",
64
64
  "default": "./dist/config/runtime/build-assets.js"
65
65
  },
66
66
  "./config/next-runtime-tsconfig": {
67
- "types": "./dist/config/runtime/next-runtime-tsconfig.d.ts",
67
+ "types": "./dist/types/config-next-runtime-tsconfig.d.ts",
68
68
  "default": "./dist/config/runtime/next-runtime-tsconfig.js"
69
69
  }
70
70
  },
@@ -87,7 +87,7 @@
87
87
  "bin/",
88
88
  "dist/",
89
89
  "docs/bug-records.md",
90
- "docs/engine-architecture.md",
90
+ "docs/engines.md",
91
91
  "docs/test-types.md",
92
92
  "testkit-config-schema.md"
93
93
  ],
@@ -102,18 +102,18 @@
102
102
  "@gfdelarue/code-budget": "0.1.2",
103
103
  "@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
104
104
  "@kitschpatrol/tokei": "2.0.2",
105
- "@types/k6": "1.6.0",
106
105
  "@types/picomatch": "4.0.3",
107
106
  "@types/yauzl": "3.4.0",
107
+ "dts-bundle-generator": "9.5.1",
108
108
  "globals": "^17.7.0",
109
+ "pg": "8.23.1",
109
110
  "prettier": "3.9.6",
110
111
  "strip-ansi": "^7.1.2",
111
112
  "tsx": "4.23.12",
112
113
  "typescript-eslint": "^8.65.0",
113
114
  "typescript6": "npm:typescript@6.0.2",
114
115
  "typescript7": "npm:typescript@7.0.2",
115
- "verdaccio": "6.10.3",
116
- "xk6-sql": "https://github.com/grafana/xk6-sql/archive/refs/tags/v1.0.6.tar.gz"
116
+ "verdaccio": "6.10.3"
117
117
  },
118
118
  "dependencies": {
119
119
  "@playwright/test": "1.59.1",
@@ -138,13 +138,6 @@
138
138
  "wrap-ansi": "^10.0.0",
139
139
  "yauzl": "3.4.0"
140
140
  },
141
- "optionalDependencies": {
142
- "@gfdelarue/testkit-engine-k6-darwin-arm64": "1.0.0",
143
- "@gfdelarue/testkit-engine-k6-darwin-x64": "1.0.0",
144
- "@gfdelarue/testkit-engine-k6-linux-arm64": "1.0.0",
145
- "@gfdelarue/testkit-engine-k6-linux-x64": "1.0.0",
146
- "@gfdelarue/testkit-engine-k6-win32-x64": "1.0.0"
147
- },
148
141
  "overrides": {
149
142
  "postcss": "8.5.24"
150
143
  },