@gfdelarue/testkit 0.4.5 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (787) hide show
  1. package/README.md +724 -495
  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 +1 -1
  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/campaigns/index.js +2 -2
  17. package/dist/app/cleanup/index.js +1 -1
  18. package/dist/app/db-schema/prepare.js +1 -1
  19. package/dist/app/destroy/index.js +1 -1
  20. package/dist/app/discover/index.js +2 -2
  21. package/dist/app/doctor/index.js +1 -1
  22. package/dist/app/environments/config-driven.js +1 -1
  23. package/dist/app/environments/environment-file.js +1 -0
  24. package/dist/app/environments/file-setup.js +1 -0
  25. package/dist/app/environments/routing.js +1 -1
  26. package/dist/app/environments/static-values.js +1 -0
  27. package/dist/app/environments/supplied-input.js +1 -0
  28. package/dist/app/environments/supplied.js +1 -1
  29. package/dist/app/environments/task-databases.js +2 -0
  30. package/dist/app/inspect/artifacts.js +1 -1
  31. package/dist/app/inspect/index.js +1 -1
  32. package/dist/app/lint/index.js +1 -1
  33. package/dist/app/lint/native.js +1 -1
  34. package/dist/app/lint/options.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/model.js +1 -1
  62. package/dist/app/status/runs.js +1 -1
  63. package/dist/app/typecheck/index.js +4 -4
  64. package/dist/cli/command-catalog.js +1 -1
  65. package/dist/cli/command-flags.js +1 -1
  66. package/dist/cli/commands/artifacts.js +2 -2
  67. package/dist/cli/commands/bug/file.js +2 -2
  68. package/dist/cli/commands/bug/record.js +2 -2
  69. package/dist/cli/commands/discover.js +1 -1
  70. package/dist/cli/commands/guard/unsafe-entrypoint.js +1 -1
  71. package/dist/cli/commands/run.js +2 -2
  72. package/dist/cli/commands/typecheck.js +1 -1
  73. package/dist/cli/commands/workspace.js +1 -1
  74. package/dist/cli/framework/errors.js +1 -1
  75. package/dist/cli/framework/execute.js +7 -6
  76. package/dist/cli/framework/parser.js +1 -1
  77. package/dist/cli/operations/run/operation.js +2 -2
  78. package/dist/cli/renderers/bug/text.js +1 -1
  79. package/dist/cli/renderers/discover/report.js +1 -1
  80. package/dist/cli/renderers/run/events.js +2 -2
  81. package/dist/cli/renderers/run/formatting.js +1 -1
  82. package/dist/cli/renderers/run/status.js +1 -1
  83. package/dist/cli/renderers/run/text-reporter.js +24 -22
  84. package/dist/cli/terminal/colors.js +1 -1
  85. package/dist/cli/terminal/layout.js +2 -2
  86. package/dist/config/authoring/database-fixture-discovery.js +1 -0
  87. package/dist/config/authoring/http-methods.js +1 -1
  88. package/dist/config/authoring/index.js +1 -1
  89. package/dist/config/loader/config-loader.js +1 -1
  90. package/dist/config/loader/decode-discovery.js +1 -1
  91. package/dist/config/loader/decode-execution.js +1 -1
  92. package/dist/config/loader/dependencies.js +1 -1
  93. package/dist/config/loader/discover-tests.js +1 -1
  94. package/dist/config/loader/discovery-summary.js +1 -1
  95. package/dist/config/loader/discovery.js +2 -2
  96. package/dist/config/loader/env.js +1 -1
  97. package/dist/config/loader/file-metadata.js +1 -1
  98. package/dist/config/loader/groups.js +2 -1
  99. package/dist/config/loader/index.js +1 -1
  100. package/dist/config/loader/load.js +1 -1
  101. package/dist/config/loader/managed-configs.js +1 -1
  102. package/dist/config/loader/owned-discovery.js +1 -0
  103. package/dist/config/loader/path-policy.js +1 -1
  104. package/dist/config/loader/runtime-isolation.js +1 -1
  105. package/dist/config/loader/runtime.js +1 -1
  106. package/dist/config/loader/skip-config.js +1 -1
  107. package/dist/config/loader/task-policy.js +1 -0
  108. package/dist/config/loader/test-selection.js +1 -1
  109. package/dist/config/loader/validation.js +1 -1
  110. package/dist/database/admin.js +2 -2
  111. package/dist/database/bindings.js +1 -0
  112. package/dist/database/cleanup.js +1 -1
  113. package/dist/database/configured-steps.js +1 -1
  114. package/dist/database/docker-metadata.js +3 -3
  115. package/dist/database/docker.js +3 -3
  116. package/dist/database/index.js +1 -1
  117. package/dist/database/local-postgres.js +1 -1
  118. package/dist/database/naming.js +1 -1
  119. package/dist/database/postgres/connection-check.js +1 -0
  120. package/dist/database/postgres/protocol.js +2 -0
  121. package/dist/database/schema-operations.js +1 -1
  122. package/dist/database/schema-source.js +3 -3
  123. package/dist/database/source-schema-env.js +1 -0
  124. package/dist/database/state-files.js +1 -1
  125. package/dist/database/state.js +1 -1
  126. package/dist/database/steps.js +3 -3
  127. package/dist/domain/file-timeout.js +1 -1
  128. package/dist/domain/identifiers.js +1 -1
  129. package/dist/domain/retired-test-types.js +1 -0
  130. package/dist/domain/runtime-isolation-contract.js +1 -1
  131. package/dist/domain/suite-selection.js +1 -1
  132. package/dist/domain/test-types.js +1 -1
  133. package/dist/engines/adapters/evidence-files.js +1 -1
  134. package/dist/engines/adapters/execution.js +1 -1
  135. package/dist/engines/adapters/json-bounds.js +2 -0
  136. package/dist/engines/adapters/native-report.js +1 -1
  137. package/dist/engines/api/execution.js +1 -1
  138. package/dist/engines/api/index.js +1 -1
  139. package/dist/engines/api/runtime-artifact.js +1 -1
  140. package/dist/engines/catalog.js +1 -1
  141. package/dist/engines/contracts/environment-values.js +1 -0
  142. package/dist/engines/definitions.js +1 -1
  143. package/dist/engines/environment/handles.js +1 -0
  144. package/dist/engines/environment/index.js +1 -0
  145. package/dist/engines/factory.js +1 -1
  146. package/dist/engines/installations/node-vitest.js +1 -1
  147. package/dist/engines/installations/package-resolution.js +1 -1
  148. package/dist/engines/installations/playwright.js +1 -1
  149. package/dist/engines/managed-module-resolution.js +8 -4
  150. package/dist/engines/manager.js +1 -1
  151. package/dist/engines/node-vitest/adapter/adapter.js +1 -1
  152. package/dist/engines/node-vitest/adapter/driver.js +2 -0
  153. package/dist/engines/node-vitest/adapter/evidence.js +2 -2
  154. package/dist/engines/node-vitest/adapter/failure-details.js +4 -2
  155. package/dist/engines/node-vitest/adapter/reporter.js +1 -1
  156. package/dist/engines/node-vitest/adapter/workspace.js +17 -195
  157. package/dist/engines/node-vitest/inventory/index.js +2 -0
  158. package/dist/engines/node-vitest/inventory/list-files.js +3 -0
  159. package/dist/engines/node-vitest/runtime/data/index.js +1 -1
  160. package/dist/engines/node-vitest/runtime/data/report.js +5 -6
  161. package/dist/engines/node-vitest/runtime/data/scenario.js +2 -2
  162. package/dist/engines/node-vitest/runtime/runtime-input.js +1 -1
  163. package/dist/engines/node-vitest/selection.js +1 -0
  164. package/dist/engines/playwright/adapter/adapter.js +1 -1
  165. package/dist/engines/playwright/adapter/config.js +3 -3
  166. package/dist/engines/playwright/adapter/evidence-validation.js +1 -1
  167. package/dist/engines/playwright/adapter/evidence.js +1 -1
  168. package/dist/engines/playwright/adapter/reporter.js +1 -1
  169. package/dist/engines/playwright/runtime/config-file.js +1 -1
  170. package/dist/engines/playwright/runtime/config.js +1 -1
  171. package/dist/engines/playwright/runtime/managed-test.js +1 -0
  172. package/dist/engines/playwright/runtime/runtime-input.js +29 -10
  173. package/dist/engines/runtime-input-file.js +1 -1
  174. package/dist/environment/lifecycle-controller.js +1 -1
  175. package/dist/environment/lifecycle.js +1 -1
  176. package/dist/environment/ready-environment.js +1 -1
  177. package/dist/environment/run-environment.js +1 -1
  178. package/dist/environment/run-stopping.js +1 -1
  179. package/dist/environment/runtime-contexts.js +1 -1
  180. package/dist/environment/runtime-manager.js +1 -1
  181. package/dist/environment/runtime-planning.js +1 -1
  182. package/dist/environment/runtime-preparation.js +1 -1
  183. package/dist/environment/services.js +3 -3
  184. package/dist/environment/template.js +1 -1
  185. package/dist/evidence/artifact-config.js +1 -1
  186. package/dist/evidence/artifacts.js +2 -2
  187. package/dist/evidence/bundles.js +1 -1
  188. package/dist/evidence/environment-record.js +1 -1
  189. package/dist/evidence/index.js +1 -1
  190. package/dist/evidence/maintenance.js +1 -0
  191. package/dist/evidence/read-run.js +1 -1
  192. package/dist/evidence/reading.js +1 -1
  193. package/dist/evidence/redaction.js +4 -0
  194. package/dist/evidence/reporting.js +1 -1
  195. package/dist/evidence/run-model.js +1 -0
  196. package/dist/evidence/storage.js +2 -2
  197. package/dist/evidence/timing.js +1 -1
  198. package/dist/kernel/error-serialization.js +1 -1
  199. package/dist/kernel/known-keys.js +1 -0
  200. package/dist/kernel/redaction-targets.js +1 -0
  201. package/dist/kernel/redaction.js +4 -1
  202. package/dist/kernel/unknown-values.js +1 -1
  203. package/dist/process/environment.js +1 -1
  204. package/dist/process/execa-bundle.json +3 -3
  205. package/dist/process/files/json-file.js +1 -1
  206. package/dist/process/host/platform.js +1 -1
  207. package/dist/process/host-process.js +1 -1
  208. package/dist/process/index.js +1 -1
  209. package/dist/process/locks.js +4 -4
  210. package/dist/process/port-listener.js +2 -0
  211. package/dist/process/process-group.js +1 -1
  212. package/dist/process/process.js +32 -32
  213. package/dist/process/readiness.js +1 -1
  214. package/dist/process/ready-deadline.js +1 -0
  215. package/dist/process/runs/ownership.js +1 -1
  216. package/dist/process/runs/stop.js +1 -1
  217. package/dist/process/service-processes.js +1 -1
  218. package/dist/process/windows-cli-owner.js +3 -3
  219. package/dist/process/windows-native.js +1 -1
  220. package/dist/repo/fingerprint-policy.js +1 -1
  221. package/dist/repo/managed-git.js +1 -1
  222. package/dist/repo/physical-tree.js +1 -1
  223. package/dist/repo/state.js +4 -4
  224. package/dist/steps/build-config.js +1 -1
  225. package/dist/steps/configured-step-testkit-modules.js +1 -1
  226. package/dist/steps/configured-steps.js +1 -1
  227. package/dist/steps/environment.js +1 -1
  228. package/dist/steps/index.js +1 -1
  229. package/dist/toolchains/index.js +3 -3
  230. package/dist/toolchains/semver.js +1 -1
  231. package/dist/toolchains/vitest/index.js +1 -1
  232. package/dist/tracker/redaction.js +1 -2
  233. package/dist/{config/runtime/build-assets.d.ts → types/config-build-assets.d.ts} +5 -3
  234. package/dist/{database/steps.d.ts → types/config-database-steps.d.ts} +7 -7
  235. package/dist/{config/runtime/next-runtime-tsconfig.d.ts → types/config-next-runtime-tsconfig.d.ts} +5 -3
  236. package/dist/types/config.d.ts +422 -0
  237. package/dist/types/drizzle.d.ts +13 -0
  238. package/dist/{config/runtime/env/index.d.ts → types/env.d.ts} +22 -20
  239. package/dist/types/environment.d.ts +46 -0
  240. package/dist/types/index.d.ts +21 -0
  241. package/dist/types/node-vitest-data.d.ts +191 -0
  242. package/dist/types/playwright.d.ts +130 -0
  243. package/dist/types/tooling-vitest.d.ts +13 -0
  244. package/dist/types/workspace.d.ts +633 -0
  245. package/docs/bug-records.md +35 -40
  246. package/docs/engines.md +259 -0
  247. package/docs/release-notes.md +2116 -0
  248. package/docs/test-types.md +37 -85
  249. package/package.json +22 -32
  250. package/testkit-config-schema.md +391 -260
  251. package/dist/app/bugs/areas.d.ts +0 -38
  252. package/dist/app/bugs/assessment.d.ts +0 -9
  253. package/dist/app/bugs/categories.d.ts +0 -41
  254. package/dist/app/bugs/ci-report.d.ts +0 -21
  255. package/dist/app/bugs/ci-summary.d.ts +0 -13
  256. package/dist/app/bugs/draft.d.ts +0 -70
  257. package/dist/app/bugs/facts.d.ts +0 -49
  258. package/dist/app/bugs/file.d.ts +0 -45
  259. package/dist/app/bugs/gate.d.ts +0 -22
  260. package/dist/app/bugs/guide.d.ts +0 -20
  261. package/dist/app/bugs/issue.d.ts +0 -18
  262. package/dist/app/bugs/known-failures.d.ts +0 -49
  263. package/dist/app/bugs/record.d.ts +0 -14
  264. package/dist/app/bugs/run-reading.d.ts +0 -51
  265. package/dist/app/bugs/store.d.ts +0 -34
  266. package/dist/app/campaigns/brief.d.ts +0 -7
  267. package/dist/app/campaigns/campaign.d.ts +0 -14
  268. package/dist/app/campaigns/index.d.ts +0 -38
  269. package/dist/app/campaigns/store.d.ts +0 -5
  270. package/dist/app/campaigns/summary.d.ts +0 -13
  271. package/dist/app/cleanup/index.d.ts +0 -52
  272. package/dist/app/db-schema/prepare.d.ts +0 -11
  273. package/dist/app/db-schema/refresh.d.ts +0 -17
  274. package/dist/app/db-schema/verify.d.ts +0 -11
  275. package/dist/app/destroy/index.d.ts +0 -16
  276. package/dist/app/discover/index.d.ts +0 -8
  277. package/dist/app/doctor/index.d.ts +0 -17
  278. package/dist/app/environments/config-driven.d.ts +0 -5
  279. package/dist/app/environments/routing.d.ts +0 -6
  280. package/dist/app/environments/supplied.d.ts +0 -3
  281. package/dist/app/file-selection.d.ts +0 -1
  282. package/dist/app/inspect/artifacts.d.ts +0 -30
  283. package/dist/app/inspect/index.d.ts +0 -112
  284. package/dist/app/lint/index.d.ts +0 -28
  285. package/dist/app/lint/native.d.ts +0 -10
  286. package/dist/app/lint/options.d.ts +0 -66
  287. package/dist/app/lint/policy.d.ts +0 -21
  288. package/dist/app/lint/rules/data.d.ts +0 -3
  289. package/dist/app/lint/rules/data.js +0 -1
  290. package/dist/app/lint/rules/engine-imports.d.ts +0 -3
  291. package/dist/app/lint/rules/syntax.d.ts +0 -4
  292. package/dist/app/lint/rules/unit.d.ts +0 -3
  293. package/dist/app/lint/shared.d.ts +0 -34
  294. package/dist/app/package-inspection.d.ts +0 -20
  295. package/dist/app/reports/files.d.ts +0 -13
  296. package/dist/app/reports/prepare.d.ts +0 -20
  297. package/dist/app/reports/publish.d.ts +0 -21
  298. package/dist/app/run/endpoint-readiness.d.ts +0 -43
  299. package/dist/app/run/endpoint-readiness.js +0 -1
  300. package/dist/app/run/engine-evidence-persistence.d.ts +0 -39
  301. package/dist/app/run/engine-execution-cleanup.d.ts +0 -8
  302. package/dist/app/run/engine-execution-cleanup.js +0 -1
  303. package/dist/app/run/engine-execution-failures.d.ts +0 -41
  304. package/dist/app/run/engine-execution-observer.d.ts +0 -21
  305. package/dist/app/run/engine-execution-reporting.d.ts +0 -17
  306. package/dist/app/run/engine-execution.d.ts +0 -65
  307. package/dist/app/run/engine-failure-stack.d.ts +0 -1
  308. package/dist/app/run/engine-orchestration.d.ts +0 -30
  309. package/dist/app/run/environment.d.ts +0 -33
  310. package/dist/app/run/failure-details.d.ts +0 -37
  311. package/dist/app/run/live-run.d.ts +0 -29
  312. package/dist/app/run/operation-progress.d.ts +0 -13
  313. package/dist/app/run/orchestrator.d.ts +0 -75
  314. package/dist/app/run/planning-types.d.ts +0 -68
  315. package/dist/app/run/planning.d.ts +0 -14
  316. package/dist/app/run/request.d.ts +0 -30
  317. package/dist/app/run/results.d.ts +0 -161
  318. package/dist/app/run/run-events.d.ts +0 -144
  319. package/dist/app/run/run-finalization.d.ts +0 -56
  320. package/dist/app/run/run-guards.d.ts +0 -3
  321. package/dist/app/run/runtime-failures.d.ts +0 -18
  322. package/dist/app/run/runtime-fixtures.d.ts +0 -2
  323. package/dist/app/run/runtime-task-types.d.ts +0 -20
  324. package/dist/app/run/scheduler/estimates.d.ts +0 -32
  325. package/dist/app/run/scheduler/identity.d.ts +0 -9
  326. package/dist/app/run/scheduler/index.d.ts +0 -124
  327. package/dist/app/run/scheduler/locks.d.ts +0 -6
  328. package/dist/app/run/scheduler/observations.d.ts +0 -20
  329. package/dist/app/run/selection.d.ts +0 -9
  330. package/dist/app/run/setup/runtime-node-setup-errors.d.ts +0 -13
  331. package/dist/app/run/setup/runtime-node-setup-protocol.d.ts +0 -85
  332. package/dist/app/run/setup/runtime-node-setup-worker.d.ts +0 -1
  333. package/dist/app/run/setup/runtime-node-setup.d.ts +0 -48
  334. package/dist/app/run/task-batches.d.ts +0 -23
  335. package/dist/app/run/task-leases.d.ts +0 -15
  336. package/dist/app/run/worker-loop.d.ts +0 -66
  337. package/dist/app/setup/playwright.d.ts +0 -22
  338. package/dist/app/status/index.d.ts +0 -9
  339. package/dist/app/status/model.d.ts +0 -29
  340. package/dist/app/status/runs.d.ts +0 -99
  341. package/dist/app/stop/index.d.ts +0 -14
  342. package/dist/app/tracker/index.d.ts +0 -13
  343. package/dist/app/tracker/remote.d.ts +0 -13
  344. package/dist/app/tracker/token.d.ts +0 -7
  345. package/dist/app/typecheck/index.d.ts +0 -63
  346. package/dist/cli/command-catalog.d.ts +0 -156
  347. package/dist/cli/command-flags.d.ts +0 -19
  348. package/dist/cli/command-registry.d.ts +0 -3
  349. package/dist/cli/commands/artifacts.d.ts +0 -48
  350. package/dist/cli/commands/bug/file.d.ts +0 -16
  351. package/dist/cli/commands/bug/guide.d.ts +0 -5
  352. package/dist/cli/commands/bug/record.d.ts +0 -9
  353. package/dist/cli/commands/campaign/finish.d.ts +0 -10
  354. package/dist/cli/commands/campaign/start.d.ts +0 -7
  355. package/dist/cli/commands/campaign/status.d.ts +0 -13
  356. package/dist/cli/commands/ci/report.d.ts +0 -15
  357. package/dist/cli/commands/cleanup.d.ts +0 -13
  358. package/dist/cli/commands/db/schema/refresh.d.ts +0 -2
  359. package/dist/cli/commands/db/schema/verify.d.ts +0 -2
  360. package/dist/cli/commands/destroy.d.ts +0 -9
  361. package/dist/cli/commands/discover.d.ts +0 -2
  362. package/dist/cli/commands/doctor.d.ts +0 -2
  363. package/dist/cli/commands/guard/unsafe-entrypoint.d.ts +0 -2
  364. package/dist/cli/commands/lint.d.ts +0 -2
  365. package/dist/cli/commands/report/prepare.d.ts +0 -12
  366. package/dist/cli/commands/report/publish.d.ts +0 -13
  367. package/dist/cli/commands/run/status.d.ts +0 -5
  368. package/dist/cli/commands/run/stop.d.ts +0 -7
  369. package/dist/cli/commands/run.d.ts +0 -9
  370. package/dist/cli/commands/setup/playwright.d.ts +0 -2
  371. package/dist/cli/commands/status.d.ts +0 -5
  372. package/dist/cli/commands/stop.d.ts +0 -12
  373. package/dist/cli/commands/typecheck.d.ts +0 -2
  374. package/dist/cli/commands/workspace.d.ts +0 -2
  375. package/dist/cli/entrypoint.d.ts +0 -1
  376. package/dist/cli/framework/command.d.ts +0 -21
  377. package/dist/cli/framework/definitions.d.ts +0 -100
  378. package/dist/cli/framework/errors.d.ts +0 -6
  379. package/dist/cli/framework/execute.d.ts +0 -14
  380. package/dist/cli/framework/help.d.ts +0 -11
  381. package/dist/cli/framework/index.d.ts +0 -3
  382. package/dist/cli/framework/parser.d.ts +0 -6
  383. package/dist/cli/index.d.ts +0 -4
  384. package/dist/cli/json-errors.d.ts +0 -3
  385. package/dist/cli/operations/db/schema/refresh/operation.d.ts +0 -7
  386. package/dist/cli/operations/db/schema/verify/operation.d.ts +0 -7
  387. package/dist/cli/operations/run/operation.d.ts +0 -26
  388. package/dist/cli/process-signal.d.ts +0 -1
  389. package/dist/cli/renderers/bug/text.d.ts +0 -8
  390. package/dist/cli/renderers/campaign/text.d.ts +0 -2
  391. package/dist/cli/renderers/ci/text.d.ts +0 -2
  392. package/dist/cli/renderers/cleanup/format.d.ts +0 -14
  393. package/dist/cli/renderers/db-schema/text.d.ts +0 -4
  394. package/dist/cli/renderers/destroy/text.d.ts +0 -4
  395. package/dist/cli/renderers/discover/report.d.ts +0 -7
  396. package/dist/cli/renderers/discover/text.d.ts +0 -3
  397. package/dist/cli/renderers/doctor/text.d.ts +0 -2
  398. package/dist/cli/renderers/lint/text.d.ts +0 -2
  399. package/dist/cli/renderers/run/events.d.ts +0 -8
  400. package/dist/cli/renderers/run/failure.d.ts +0 -8
  401. package/dist/cli/renderers/run/formatting.d.ts +0 -79
  402. package/dist/cli/renderers/run/status.d.ts +0 -6
  403. package/dist/cli/renderers/run/text-reporter.d.ts +0 -19
  404. package/dist/cli/renderers/status/text.d.ts +0 -2
  405. package/dist/cli/renderers/stop/text.d.ts +0 -7
  406. package/dist/cli/renderers/typecheck/text.d.ts +0 -2
  407. package/dist/cli/terminal/colors.d.ts +0 -10
  408. package/dist/cli/terminal/layout.d.ts +0 -11
  409. package/dist/cli/version-drift.d.ts +0 -25
  410. package/dist/config/authoring/build-config-contract.d.ts +0 -27
  411. package/dist/config/authoring/configured-step-contract.d.ts +0 -18
  412. package/dist/config/authoring/http-execution-contract.d.ts +0 -70
  413. package/dist/config/authoring/http-methods.d.ts +0 -18
  414. package/dist/config/authoring/index.d.ts +0 -372
  415. package/dist/config/authoring/preset-env.d.ts +0 -19
  416. package/dist/config/authoring/runtime.d.ts +0 -64
  417. package/dist/config/authoring/runtime.js +0 -1
  418. package/dist/config/loader/bugs.d.ts +0 -15
  419. package/dist/config/loader/config-loader.d.ts +0 -9
  420. package/dist/config/loader/database-materialization.d.ts +0 -19
  421. package/dist/config/loader/database-roles.d.ts +0 -2
  422. package/dist/config/loader/database.d.ts +0 -55
  423. package/dist/config/loader/decode-discovery.d.ts +0 -5
  424. package/dist/config/loader/decode-execution.d.ts +0 -7
  425. package/dist/config/loader/dependencies.d.ts +0 -7
  426. package/dist/config/loader/discover-tests.d.ts +0 -111
  427. package/dist/config/loader/discovery-summary.d.ts +0 -29
  428. package/dist/config/loader/discovery.d.ts +0 -53
  429. package/dist/config/loader/env.d.ts +0 -4
  430. package/dist/config/loader/execution-model.d.ts +0 -15
  431. package/dist/config/loader/file-metadata.d.ts +0 -19
  432. package/dist/config/loader/groups.d.ts +0 -33
  433. package/dist/config/loader/index.d.ts +0 -10
  434. package/dist/config/loader/load.d.ts +0 -89
  435. package/dist/config/loader/managed-configs.d.ts +0 -23
  436. package/dist/config/loader/path-policy.d.ts +0 -9
  437. package/dist/config/loader/paths.d.ts +0 -5
  438. package/dist/config/loader/runtime-isolation.d.ts +0 -44
  439. package/dist/config/loader/runtime.d.ts +0 -16
  440. package/dist/config/loader/skip-config.d.ts +0 -44
  441. package/dist/config/loader/test-selection.d.ts +0 -15
  442. package/dist/config/loader/validation.d.ts +0 -15
  443. package/dist/config/loader/values.d.ts +0 -3
  444. package/dist/config/loader/values.js +0 -1
  445. package/dist/database/activity-gate.d.ts +0 -22
  446. package/dist/database/admin.d.ts +0 -31
  447. package/dist/database/cleanup.d.ts +0 -36
  448. package/dist/database/configured-steps.d.ts +0 -27
  449. package/dist/database/constants.d.ts +0 -11
  450. package/dist/database/docker-metadata.d.ts +0 -3
  451. package/dist/database/docker.d.ts +0 -65
  452. package/dist/database/drizzle/index.d.ts +0 -13
  453. package/dist/database/fingerprint.d.ts +0 -12
  454. package/dist/database/index.d.ts +0 -39
  455. package/dist/database/lifecycle-cleanup.d.ts +0 -8
  456. package/dist/database/local-postgres.d.ts +0 -71
  457. package/dist/database/naming.d.ts +0 -17
  458. package/dist/database/postgres/index.d.ts +0 -71
  459. package/dist/database/progress.d.ts +0 -6
  460. package/dist/database/roles.d.ts +0 -19
  461. package/dist/database/runtime-config.d.ts +0 -16
  462. package/dist/database/runtime-reservations.d.ts +0 -19
  463. package/dist/database/schema-operations.d.ts +0 -18
  464. package/dist/database/schema-source.d.ts +0 -96
  465. package/dist/database/source-refresh-lock.d.ts +0 -8
  466. package/dist/database/source-url.d.ts +0 -21
  467. package/dist/database/state-files.d.ts +0 -13
  468. package/dist/database/state.d.ts +0 -26
  469. package/dist/database/template-steps.d.ts +0 -39
  470. package/dist/domain/file-timeout.d.ts +0 -25
  471. package/dist/domain/identifiers.d.ts +0 -9
  472. package/dist/domain/operation-display.d.ts +0 -10
  473. package/dist/domain/operation-reason.d.ts +0 -5
  474. package/dist/domain/postgres-route.d.ts +0 -4
  475. package/dist/domain/runtime-identity.d.ts +0 -1
  476. package/dist/domain/runtime-isolation-contract.d.ts +0 -5
  477. package/dist/domain/service-name.d.ts +0 -2
  478. package/dist/domain/suite-selection.d.ts +0 -20
  479. package/dist/domain/test-outcomes.d.ts +0 -2
  480. package/dist/domain/test-types.d.ts +0 -16
  481. package/dist/engines/adapters/evidence-files.d.ts +0 -32
  482. package/dist/engines/adapters/evidence-identity.d.ts +0 -12
  483. package/dist/engines/adapters/execution.d.ts +0 -41
  484. package/dist/engines/adapters/native-report.d.ts +0 -25
  485. package/dist/engines/adapters/node-startup-cache.d.ts +0 -8
  486. package/dist/engines/adapters/workspace.d.ts +0 -4
  487. package/dist/engines/api/capabilities.d.ts +0 -21
  488. package/dist/engines/api/capabilities.js +0 -1
  489. package/dist/engines/api/evidence.d.ts +0 -38
  490. package/dist/engines/api/execution-observer.d.ts +0 -8
  491. package/dist/engines/api/execution-scope.d.ts +0 -17
  492. package/dist/engines/api/execution.d.ts +0 -101
  493. package/dist/engines/api/index.d.ts +0 -5
  494. package/dist/engines/api/k6-runtime-input.d.ts +0 -26
  495. package/dist/engines/api/k6-runtime-input.js +0 -1
  496. package/dist/engines/api/runtime-artifact.d.ts +0 -19
  497. package/dist/engines/bundle-cache.d.ts +0 -32
  498. package/dist/engines/catalog.d.ts +0 -27
  499. package/dist/engines/contracts/fixture-manifest.d.ts +0 -34
  500. package/dist/engines/contracts/json-bounds.d.ts +0 -36
  501. package/dist/engines/contracts/json-bounds.js +0 -2
  502. package/dist/engines/contracts/k6-repository-configuration.d.ts +0 -12
  503. package/dist/engines/contracts/k6-repository-configuration.js +0 -1
  504. package/dist/engines/contracts/test-context.d.ts +0 -15
  505. package/dist/engines/contracts/test-context.js +0 -1
  506. package/dist/engines/definitions.d.ts +0 -23
  507. package/dist/engines/factory.d.ts +0 -6
  508. package/dist/engines/generated-performance.d.ts +0 -1
  509. package/dist/engines/installation-catalog.d.ts +0 -27
  510. package/dist/engines/installation-catalog.js +0 -1
  511. package/dist/engines/installations/k6.d.ts +0 -98
  512. package/dist/engines/installations/k6.js +0 -1
  513. package/dist/engines/installations/node-vitest.d.ts +0 -33
  514. package/dist/engines/installations/package-requirements.d.ts +0 -28
  515. package/dist/engines/installations/package-resolution.d.ts +0 -51
  516. package/dist/engines/installations/playwright-resolution-child.d.ts +0 -1
  517. package/dist/engines/installations/playwright.d.ts +0 -75
  518. package/dist/engines/installations/types.d.ts +0 -10
  519. package/dist/engines/k6/adapter/bundle.d.ts +0 -25
  520. package/dist/engines/k6/adapter/bundle.js +0 -112
  521. package/dist/engines/k6/adapter/evidence.d.ts +0 -15
  522. package/dist/engines/k6/adapter/evidence.js +0 -4
  523. package/dist/engines/k6/adapter/executor.d.ts +0 -13
  524. package/dist/engines/k6/adapter/executor.js +0 -1
  525. package/dist/engines/k6/adapter/index.d.ts +0 -1
  526. package/dist/engines/k6/adapter/index.js +0 -1
  527. package/dist/engines/k6/adapter/input.d.ts +0 -21
  528. package/dist/engines/k6/adapter/input.js +0 -1
  529. package/dist/engines/k6/adapter/native-summary.d.ts +0 -11
  530. package/dist/engines/k6/adapter/native-summary.js +0 -1
  531. package/dist/engines/k6/adapter/repository-configuration.d.ts +0 -2
  532. package/dist/engines/k6/adapter/repository-configuration.js +0 -1
  533. package/dist/engines/k6/authoring-type-paths.d.ts +0 -3
  534. package/dist/engines/k6/authoring-type-paths.js +0 -1
  535. package/dist/engines/k6/runtime/ambient-types/bundle-manifest.json +0 -146
  536. package/dist/engines/k6/runtime/ambient-types/k6/LICENSE +0 -21
  537. package/dist/engines/k6/runtime/ambient-types/k6/browser/index.d.ts +0 -6332
  538. package/dist/engines/k6/runtime/ambient-types/k6/crypto/index.d.ts +0 -218
  539. package/dist/engines/k6/runtime/ambient-types/k6/data/index.d.ts +0 -16
  540. package/dist/engines/k6/runtime/ambient-types/k6/encoding/index.d.ts +0 -46
  541. package/dist/engines/k6/runtime/ambient-types/k6/execution/index.d.ts +0 -127
  542. package/dist/engines/k6/runtime/ambient-types/k6/experimental/csv/index.d.ts +0 -96
  543. package/dist/engines/k6/runtime/ambient-types/k6/experimental/fs/index.d.ts +0 -104
  544. package/dist/engines/k6/runtime/ambient-types/k6/experimental/redis/index.d.ts +0 -821
  545. package/dist/engines/k6/runtime/ambient-types/k6/experimental/streams/index.d.ts +0 -198
  546. package/dist/engines/k6/runtime/ambient-types/k6/global.d.ts +0 -83
  547. package/dist/engines/k6/runtime/ambient-types/k6/html/index.d.ts +0 -1325
  548. package/dist/engines/k6/runtime/ambient-types/k6/http/index.d.ts +0 -806
  549. package/dist/engines/k6/runtime/ambient-types/k6/index.d.ts +0 -126
  550. package/dist/engines/k6/runtime/ambient-types/k6/metrics/index.d.ts +0 -66
  551. package/dist/engines/k6/runtime/ambient-types/k6/net/grpc/index.d.ts +0 -247
  552. package/dist/engines/k6/runtime/ambient-types/k6/options/index.d.ts +0 -459
  553. package/dist/engines/k6/runtime/ambient-types/k6/package.json +0 -79
  554. package/dist/engines/k6/runtime/ambient-types/k6/secrets/index.d.ts +0 -36
  555. package/dist/engines/k6/runtime/ambient-types/k6/timers/index.d.ts +0 -47
  556. package/dist/engines/k6/runtime/ambient-types/k6/websockets/index.d.ts +0 -324
  557. package/dist/engines/k6/runtime/ambient-types/k6/ws/index.d.ts +0 -283
  558. package/dist/engines/k6/runtime/ambient-types/xk6-sql/LICENSE +0 -201
  559. package/dist/engines/k6/runtime/ambient-types/xk6-sql/index.d.ts +0 -397
  560. package/dist/engines/k6/runtime/ambient-types/xk6-sql/package.json +0 -15
  561. package/dist/engines/k6/runtime/artifacts.d.ts +0 -2
  562. package/dist/engines/k6/runtime/artifacts.js +0 -1
  563. package/dist/engines/k6/runtime/checks.d.ts +0 -17
  564. package/dist/engines/k6/runtime/checks.js +0 -1
  565. package/dist/engines/k6/runtime/dal-fixtures.d.ts +0 -24
  566. package/dist/engines/k6/runtime/dal-fixtures.js +0 -1
  567. package/dist/engines/k6/runtime/dal-suite.d.ts +0 -24
  568. package/dist/engines/k6/runtime/dal-suite.js +0 -1
  569. package/dist/engines/k6/runtime/dal.d.ts +0 -10
  570. package/dist/engines/k6/runtime/dal.js +0 -1
  571. package/dist/engines/k6/runtime/fixtures.d.ts +0 -3
  572. package/dist/engines/k6/runtime/fixtures.js +0 -1
  573. package/dist/engines/k6/runtime/http-assertions.d.ts +0 -19
  574. package/dist/engines/k6/runtime/http-assertions.js +0 -1
  575. package/dist/engines/k6/runtime/http-checks.d.ts +0 -19
  576. package/dist/engines/k6/runtime/http-checks.js +0 -1
  577. package/dist/engines/k6/runtime/http-suite-runtime.d.ts +0 -103
  578. package/dist/engines/k6/runtime/http-suite-runtime.js +0 -1
  579. package/dist/engines/k6/runtime/http.d.ts +0 -15
  580. package/dist/engines/k6/runtime/http.js +0 -1
  581. package/dist/engines/k6/runtime/index.d.ts +0 -11
  582. package/dist/engines/k6/runtime/index.js +0 -1
  583. package/dist/engines/k6/runtime/input.d.ts +0 -3
  584. package/dist/engines/k6/runtime/input.js +0 -1
  585. package/dist/engines/k6/runtime/k6-repository-configuration.d.ts +0 -9
  586. package/dist/engines/k6/runtime/k6-repository-configuration.js +0 -1
  587. package/dist/engines/k6/runtime/node-setup.d.ts +0 -13
  588. package/dist/engines/k6/runtime/node-setup.js +0 -1
  589. package/dist/engines/k6/runtime/runtime-globals.d.ts +0 -10
  590. package/dist/engines/k6/runtime/runtime.d.ts +0 -54
  591. package/dist/engines/k6/runtime/runtime.js +0 -1
  592. package/dist/engines/k6/runtime/shared/assertion-details.d.ts +0 -19
  593. package/dist/engines/k6/runtime/shared/assertion-details.js +0 -2
  594. package/dist/engines/k6/runtime/shared/db-normalization.d.ts +0 -19
  595. package/dist/engines/k6/runtime/shared/db-normalization.js +0 -1
  596. package/dist/engines/k6/runtime/shared/error-body.d.ts +0 -3
  597. package/dist/engines/k6/runtime/shared/error-body.js +0 -1
  598. package/dist/engines/k6/runtime/shared/file-data.d.ts +0 -1
  599. package/dist/engines/k6/runtime/shared/file-data.js +0 -1
  600. package/dist/engines/k6/runtime/shared/fixture-engine.d.ts +0 -8
  601. package/dist/engines/k6/runtime/shared/fixture-engine.js +0 -2
  602. package/dist/engines/k6/runtime/shared/http-check-plan.d.ts +0 -29
  603. package/dist/engines/k6/runtime/shared/http-check-plan.js +0 -1
  604. package/dist/engines/k6/runtime/shared/http-parsing.d.ts +0 -10
  605. package/dist/engines/k6/runtime/shared/http-parsing.js +0 -3
  606. package/dist/engines/k6/runtime/shared/ordering.d.ts +0 -2
  607. package/dist/engines/k6/runtime/shared/ordering.js +0 -1
  608. package/dist/engines/k6/runtime/shared/properties.d.ts +0 -1
  609. package/dist/engines/k6/runtime/shared/properties.js +0 -1
  610. package/dist/engines/k6/runtime/suite.d.ts +0 -4
  611. package/dist/engines/k6/runtime/suite.js +0 -1
  612. package/dist/engines/k6/runtime/types.d.ts +0 -244
  613. package/dist/engines/k6/runtime/types.js +0 -1
  614. package/dist/engines/k6/runtime/xk6-sql-driver-postgres.d.ts +0 -7
  615. package/dist/engines/k6/runtime/xk6-sql-driver-postgres.js +0 -1
  616. package/dist/engines/managed-module-resolution-policy-input.d.ts +0 -8
  617. package/dist/engines/managed-module-resolution-policy.d.ts +0 -25
  618. package/dist/engines/managed-module-resolution.d.ts +0 -13
  619. package/dist/engines/manager.d.ts +0 -25
  620. package/dist/engines/node-vitest/adapter/adapter.d.ts +0 -16
  621. package/dist/engines/node-vitest/adapter/consumer-typescript-paths.d.ts +0 -17
  622. package/dist/engines/node-vitest/adapter/consumer-typescript-paths.js +0 -3
  623. package/dist/engines/node-vitest/adapter/evidence.d.ts +0 -33
  624. package/dist/engines/node-vitest/adapter/failure-details.d.ts +0 -3
  625. package/dist/engines/node-vitest/adapter/index.d.ts +0 -1
  626. package/dist/engines/node-vitest/adapter/reporter.d.ts +0 -7
  627. package/dist/engines/node-vitest/adapter/resolution.d.ts +0 -12
  628. package/dist/engines/node-vitest/adapter/resolution.js +0 -1
  629. package/dist/engines/node-vitest/adapter/workspace.d.ts +0 -19
  630. package/dist/engines/node-vitest/runtime/contract/index.d.ts +0 -64
  631. package/dist/engines/node-vitest/runtime/contract/index.js +0 -1
  632. package/dist/engines/node-vitest/runtime/data/http.d.ts +0 -4
  633. package/dist/engines/node-vitest/runtime/data/http.js +0 -1
  634. package/dist/engines/node-vitest/runtime/data/index.d.ts +0 -8
  635. package/dist/engines/node-vitest/runtime/data/primitives.d.ts +0 -1
  636. package/dist/engines/node-vitest/runtime/data/report.d.ts +0 -3
  637. package/dist/engines/node-vitest/runtime/data/runner.d.ts +0 -4
  638. package/dist/engines/node-vitest/runtime/data/runner.js +0 -1
  639. package/dist/engines/node-vitest/runtime/data/scenario.d.ts +0 -11
  640. package/dist/engines/node-vitest/runtime/data/types.d.ts +0 -384
  641. package/dist/engines/node-vitest/runtime/runtime-input.d.ts +0 -64
  642. package/dist/engines/playwright/adapter/adapter.d.ts +0 -18
  643. package/dist/engines/playwright/adapter/attachments.d.ts +0 -26
  644. package/dist/engines/playwright/adapter/config.d.ts +0 -45
  645. package/dist/engines/playwright/adapter/evidence-validation.d.ts +0 -9
  646. package/dist/engines/playwright/adapter/evidence.d.ts +0 -32
  647. package/dist/engines/playwright/adapter/failure-details.d.ts +0 -2
  648. package/dist/engines/playwright/adapter/index.d.ts +0 -3
  649. package/dist/engines/playwright/adapter/reporter.d.ts +0 -12
  650. package/dist/engines/playwright/runtime/config-file.d.ts +0 -2
  651. package/dist/engines/playwright/runtime/config.d.ts +0 -24
  652. package/dist/engines/playwright/runtime/index.d.ts +0 -4
  653. package/dist/engines/playwright/runtime/runtime-input.d.ts +0 -36
  654. package/dist/engines/playwright/runtime/sandbox.d.ts +0 -84
  655. package/dist/engines/runtime-input-file.d.ts +0 -27
  656. package/dist/environment/lifecycle-artifacts.d.ts +0 -7
  657. package/dist/environment/lifecycle-controller.d.ts +0 -60
  658. package/dist/environment/lifecycle.d.ts +0 -32
  659. package/dist/environment/maintenance.d.ts +0 -68
  660. package/dist/environment/planning-types.d.ts +0 -33
  661. package/dist/environment/ports.d.ts +0 -10
  662. package/dist/environment/ready-environment.d.ts +0 -16
  663. package/dist/environment/run-environment.d.ts +0 -39
  664. package/dist/environment/run-stopping.d.ts +0 -13
  665. package/dist/environment/runtime-contexts.d.ts +0 -37
  666. package/dist/environment/runtime-manager.d.ts +0 -87
  667. package/dist/environment/runtime-planning.d.ts +0 -16
  668. package/dist/environment/runtime-preparation.d.ts +0 -30
  669. package/dist/environment/runtime-service.d.ts +0 -12
  670. package/dist/environment/services.d.ts +0 -56
  671. package/dist/environment/state.d.ts +0 -15
  672. package/dist/environment/status-runtime.d.ts +0 -53
  673. package/dist/environment/template.d.ts +0 -164
  674. package/dist/evidence/artifact-config.d.ts +0 -14
  675. package/dist/evidence/artifact-validation.d.ts +0 -4
  676. package/dist/evidence/artifacts.d.ts +0 -75
  677. package/dist/evidence/bundles.d.ts +0 -27
  678. package/dist/evidence/ci-provenance.d.ts +0 -9
  679. package/dist/evidence/contracts.d.ts +0 -154
  680. package/dist/evidence/environment-record.d.ts +0 -22
  681. package/dist/evidence/file-evidence.d.ts +0 -23
  682. package/dist/evidence/finalization.d.ts +0 -9
  683. package/dist/evidence/index.d.ts +0 -8
  684. package/dist/evidence/logs.d.ts +0 -31
  685. package/dist/evidence/operation-timings.d.ts +0 -60
  686. package/dist/evidence/read-bundle.d.ts +0 -4
  687. package/dist/evidence/read-fields.d.ts +0 -21
  688. package/dist/evidence/read-provenance.d.ts +0 -2
  689. package/dist/evidence/read-redaction.d.ts +0 -2
  690. package/dist/evidence/read-retention.d.ts +0 -2
  691. package/dist/evidence/read-run.d.ts +0 -2
  692. package/dist/evidence/reading.d.ts +0 -28
  693. package/dist/evidence/reporting-types.d.ts +0 -349
  694. package/dist/evidence/reporting.d.ts +0 -3
  695. package/dist/evidence/secure-file-copy.d.ts +0 -24
  696. package/dist/evidence/setup-progress.d.ts +0 -63
  697. package/dist/evidence/step-output.d.ts +0 -16
  698. package/dist/evidence/storage-inventory.d.ts +0 -27
  699. package/dist/evidence/storage.d.ts +0 -25
  700. package/dist/evidence/timing.d.ts +0 -23
  701. package/dist/file.d.ts +0 -11
  702. package/dist/index.d.ts +0 -4
  703. package/dist/kernel/error-serialization.d.ts +0 -40
  704. package/dist/kernel/redaction.d.ts +0 -2
  705. package/dist/kernel/unknown-values.d.ts +0 -11
  706. package/dist/kernel/work-metrics.d.ts +0 -6
  707. package/dist/process/capture-output.d.ts +0 -7
  708. package/dist/process/command-shell.d.ts +0 -1
  709. package/dist/process/environment-overlay.d.ts +0 -17
  710. package/dist/process/environment.d.ts +0 -33
  711. package/dist/process/files/contained-path.d.ts +0 -8
  712. package/dist/process/files/directory-status.d.ts +0 -14
  713. package/dist/process/files/dotenv.d.ts +0 -2
  714. package/dist/process/files/file-snapshot.d.ts +0 -34
  715. package/dist/process/files/json-file.d.ts +0 -11
  716. package/dist/process/files/paths.d.ts +0 -3
  717. package/dist/process/files/product-dir.d.ts +0 -1
  718. package/dist/process/files/temp-dir.d.ts +0 -11
  719. package/dist/process/host/metadata.d.ts +0 -6
  720. package/dist/process/host/platform.d.ts +0 -57
  721. package/dist/process/host-command.d.ts +0 -4
  722. package/dist/process/host-inspection-command.d.ts +0 -13
  723. package/dist/process/host-process.d.ts +0 -19
  724. package/dist/process/index.d.ts +0 -9
  725. package/dist/process/lifecycle-fence.d.ts +0 -10
  726. package/dist/process/locks.d.ts +0 -28
  727. package/dist/process/process-contracts.d.ts +0 -78
  728. package/dist/process/process-group.d.ts +0 -12
  729. package/dist/process/process-identity.d.ts +0 -27
  730. package/dist/process/process-limits.d.ts +0 -6
  731. package/dist/process/process.d.ts +0 -12
  732. package/dist/process/readiness.d.ts +0 -43
  733. package/dist/process/recovery.d.ts +0 -3
  734. package/dist/process/runs/inspection.d.ts +0 -5
  735. package/dist/process/runs/manifest.d.ts +0 -86
  736. package/dist/process/runs/ownership.d.ts +0 -11
  737. package/dist/process/runs/product-state.d.ts +0 -2
  738. package/dist/process/runs/schema.d.ts +0 -3
  739. package/dist/process/runs/stop.d.ts +0 -19
  740. package/dist/process/runtime-socket.d.ts +0 -4
  741. package/dist/process/service-processes.d.ts +0 -13
  742. package/dist/process/shutdown.d.ts +0 -10
  743. package/dist/process/stoppable-settlement.d.ts +0 -26
  744. package/dist/process/url-redaction.d.ts +0 -1
  745. package/dist/process/windows-cli-owner.d.ts +0 -2
  746. package/dist/process/windows-native.d.ts +0 -12
  747. package/dist/process/windows-process-identity.d.ts +0 -4
  748. package/dist/repo/ci-environment.d.ts +0 -7
  749. package/dist/repo/fingerprint-policy.d.ts +0 -13
  750. package/dist/repo/git-path.d.ts +0 -2
  751. package/dist/repo/history.d.ts +0 -17
  752. package/dist/repo/managed-git.d.ts +0 -10
  753. package/dist/repo/metadata.d.ts +0 -3
  754. package/dist/repo/physical-tree.d.ts +0 -37
  755. package/dist/repo/publish-directory.d.ts +0 -20
  756. package/dist/repo/remote.d.ts +0 -6
  757. package/dist/repo/state.d.ts +0 -26
  758. package/dist/repo/tree-listing.d.ts +0 -10
  759. package/dist/steps/build-config.d.ts +0 -34
  760. package/dist/steps/configured-step-testkit-modules.d.ts +0 -19
  761. package/dist/steps/configured-steps.d.ts +0 -51
  762. package/dist/steps/environment.d.ts +0 -82
  763. package/dist/steps/index.d.ts +0 -2
  764. package/dist/steps/module-runner.d.ts +0 -1
  765. package/dist/steps/run.d.ts +0 -36
  766. package/dist/toolchains/archive.d.ts +0 -53
  767. package/dist/toolchains/esbuild.d.ts +0 -9
  768. package/dist/toolchains/host-node-support.d.ts +0 -3
  769. package/dist/toolchains/index.d.ts +0 -114
  770. package/dist/toolchains/managed-node-releases.d.ts +0 -28
  771. package/dist/toolchains/node-cache.d.ts +0 -20
  772. package/dist/toolchains/node-integrity.d.ts +0 -18
  773. package/dist/toolchains/node-provisioning.d.ts +0 -29
  774. package/dist/toolchains/semver.d.ts +0 -13
  775. package/dist/toolchains/shared-operation.d.ts +0 -11
  776. package/dist/toolchains/timeouts.d.ts +0 -1
  777. package/dist/toolchains/vitest/index.d.ts +0 -13
  778. package/dist/tracker/gitea.d.ts +0 -14
  779. package/dist/tracker/github.d.ts +0 -14
  780. package/dist/tracker/http.d.ts +0 -33
  781. package/dist/tracker/index.d.ts +0 -4
  782. package/dist/tracker/redaction.d.ts +0 -4
  783. package/dist/tracker/requests.d.ts +0 -17
  784. package/dist/tracker/responses.d.ts +0 -24
  785. package/dist/tracker/types.d.ts +0 -51
  786. package/docs/engine-architecture.md +0 -682
  787. /package/dist/engines/{k6/runtime/runtime-globals.js → api/profiles.js} +0 -0
@@ -1,682 +0,0 @@
1
- # Engine Architecture
2
-
3
- Testkit is one orchestrator and managed distribution with several explicitly
4
- named execution engines. It unifies discovery, application and database
5
- lifecycle, scheduling, cancellation, environment and fixture delivery, result
6
- collection, artifacts, reporting, and evidence publication. It does not flatten
7
- the engines into one test language.
8
-
9
- | Engine | Runner profile(s) | Test types | Native technology |
10
- | ------------- | ------------------------------------------ | --------------------------- | ------------------- |
11
- | `k6` | `k6-http`, `k6-dal` | `int`, `e2e`, `load`, `dal` | k6 and xk6-sql |
12
- | `node-vitest` | `node-vitest-data`, `node-vitest-contract` | `data`, `contract` | Node and Vitest |
13
- | `playwright` | `playwright-ui` | `ui` | Playwright/Chromium |
14
-
15
- Every file declares its engine explicitly:
16
-
17
- ```ts
18
- import { defineFile } from "@gfdelarue/testkit";
19
-
20
- export const testkit = defineFile({ engine: "k6" });
21
- ```
22
-
23
- The filename suffix supplies the public test type. Discovery validates the
24
- literal engine/type pair and resolves one catalog profile. There is no default
25
- engine, catch-all runner, or fallback to a different engine.
26
-
27
- ## Source ownership
28
-
29
- Each engine owns its Node adapter and consumer runtime under
30
- `src/engines/<engine>/{adapter,runtime}`. The k6 runtime has a separate TypeScript
31
- realm with k6 globals; its adapter runs in Node. Shared host execution and
32
- evidence helpers remain under `src/engines/adapters`, and neutral wire contracts
33
- remain under `src/engines/contracts`.
34
-
35
- Public package specifiers keep their names. Their emitted targets use the
36
- corresponding `dist/engines/<engine>/runtime` directory. k6 configuration
37
- hydration belongs to its runtime. The generated entrypoint registers the hydrated
38
- value in both the k6 and public config registries before the consumer evaluates.
39
- The config authoring module does not import engine implementation values.
40
-
41
- Run policy, scheduling, and per-file setup live in `src/app/run`. The
42
- `environment` capability exposes runtime planning, run provisioning, and
43
- maintenance to the run, status, stop, cleanup, destroy, and schema use cases.
44
- `process/runs` owns persisted run identity and stop mechanics. `evidence` owns
45
- setup logs, timings, and run-bundle storage. The run use case projects engine
46
- results into evidence-owned inputs before storage.
47
-
48
- Database stage sequencing, SQL execution, and PostgreSQL clients live in
49
- `database`. Command and module execution remain in `steps`, below database
50
- orchestration. Product-imported Node helpers live in `config/runtime`; they
51
- have no loader or engine dependency. Their public package specifiers remain
52
- stable, and `config/build-assets` and `config/next-runtime-tsconfig` are now
53
- ordinary package exports with declarations.
54
-
55
- Domain owns canonical engine, test-type, runner-profile and outcome vocabulary.
56
- Engine contracts and configuration loading import it directly. Persisted identity
57
- checks require exact strings; user-facing test-type formatting still trims input.
58
-
59
- Configuration has three owners. `config/authoring` is a host-neutral directory for
60
- the product DSL. `config/loader` discovers and normalizes product configuration.
61
- Its engine imports target the catalog, which owns profile and package import
62
- policy and selects engine configuration projection. The k6 adapter owns the
63
- Node-to-k6 repository configuration envelope. `config/runtime` holds the Node
64
- helpers imported by product code. Package export names remain unchanged.
65
-
66
- ## Engine-native authoring
67
-
68
- The root package owns file identity and orchestration. Engine-specific concepts
69
- remain visible through engine-specific subpaths.
70
-
71
- A k6 file may use scenarios, executors, VUs, iterations, thresholds, `setup`,
72
- `teardown`, and `handleSummary` directly:
73
-
74
- ```ts
75
- import { defineFile } from "@gfdelarue/testkit";
76
- import { check } from "k6";
77
- import http from "k6/http";
78
-
79
- export const testkit = defineFile({ engine: "k6" });
80
-
81
- export const options = {
82
- scenarios: {
83
- smoke: { executor: "shared-iterations", iterations: 1, vus: 1 },
84
- },
85
- thresholds: { checks: ["rate==1"] },
86
- };
87
-
88
- export default function run() {
89
- check(http.get(`${__ENV.BASE}/health`), {
90
- healthy: (response) => response.status === 200,
91
- });
92
- }
93
- ```
94
-
95
- Node/Vitest owns data and contract suites:
96
-
97
- ```ts
98
- import { defineFile } from "@gfdelarue/testkit";
99
- import { dataScenario } from "@gfdelarue/testkit/node-vitest/data";
100
- import { expect } from "vitest";
101
-
102
- export const testkit = defineFile({ engine: "node-vitest" });
103
-
104
- dataScenario("records checkout traffic", ({ count, record }) => {
105
- record("checkout", { count: 1 });
106
- count("orders", 1);
107
- expect(1).toBe(1);
108
- });
109
- ```
110
-
111
- Playwright owns UI suites and keeps ordinary Playwright configuration:
112
-
113
- ```ts
114
- import { defineFile } from "@gfdelarue/testkit";
115
- import { expect, test } from "@playwright/test";
116
-
117
- export const testkit = defineFile({ engine: "playwright" });
118
-
119
- test("shows the account", async ({ page }) => {
120
- await page.goto("/account");
121
- await expect(page.getByRole("heading", { name: "Account" })).toBeVisible();
122
- });
123
- ```
124
-
125
- `testkit typecheck` discovers suites, groups them by engine/profile and nearest
126
- consumer tsconfig, writes deterministic projects, and runs native `tsc --noEmit`.
127
- Config uses Node types and ES2022 libraries; k6 uses its bundled ambient types and
128
- ES2022; Node/Vitest uses Node types and ES2022; Playwright adds DOM and DOM.Iterable.
129
- Data and contract suites have separate programs, with restricted Vitest value
130
- exports in the data program. Each compiler invocation has cancellation, a deadline,
131
- and captured diagnostics. A failure reports the completed program prefix.
132
-
133
- Consumer TypeScript 5.9.3 and 6.0.2 are supported and tested. Each program uses
134
- the compiler installed beside its nearest tsconfig or in an ancestor directory,
135
- then falls back to Testkit's bundled compiler. Config checking starts at the
136
- product root. Runtime toolchain settings do not select the typecheck compiler.
137
- Other compiler versions are not covered by this compatibility guarantee.
138
-
139
- TypeScript owns transitive imports, workspace links, and type errors. Consumer
140
- compiler options and aliases are inherited, but ordinary tsconfig `files`,
141
- `include`, and project references do not add application roots. Generated paths
142
- select Testkit's authoring declarations and pinned native public exports over
143
- conflicting consumer packages. A helper shared by engines must typecheck in each
144
- program. Typechecking does not establish runtime package provenance: managed
145
- runtime resolution and collection enforce package identity and cross-engine/data
146
- registration restrictions. Direct import feedback belongs to lint; its migration
147
- to ESLint is tracked in #22. No second dependency graph runs before TypeScript.
148
-
149
- Generated configurations clear `baseUrl` and use explicit relative path targets.
150
- Aliases inherited from a config with `baseUrl` retain their target directory and
151
- fallback order. Typecheck does not insert a deprecation suppression or require
152
- consumers to edit generated files.
153
-
154
- ### Playwright support files
155
-
156
- Playwright programs always include discovered UI suites and the service's selected
157
- `playwright.config.*`. Typechecking never evaluates that config. For support files
158
- that are named dynamically or as strings, add a `tsconfig.playwright.json` in the
159
- service directory or an ancestor inside the product root:
160
-
161
- ```json
162
- {
163
- "extends": "./tsconfig.json",
164
- "files": ["global/setup.ts", "global/teardown.ts"],
165
- "include": ["fixtures/**/*.ts", "reporters/**/*.ts", "projects/**/*.ts"],
166
- "exclude": ["projects/generated/**"]
167
- }
168
- ```
169
-
170
- The nearest companion takes precedence over the ordinary consumer tsconfig for
171
- that Playwright scope. TypeScript parses its `extends`, `files`, `include`, and
172
- `exclude`; selected support roots join the same generated Playwright program.
173
- Use it for global setup/teardown, reporters, fixtures, dependency projects, and
174
- teardown projects, including every variant of a dynamic multi-project config.
175
- An empty companion can provide options alone. Without a companion, only the
176
- implicit roots, their TypeScript imports, and existing Next ambient/fixture defaults
177
- are checked. The generated projects do not execute project references.
178
-
179
- This changes earlier behavior: Testkit no longer uses Playwright private config
180
- loaders to discover string-named support modules. Consumers must include those
181
- modules explicitly. TypeScript follows imported helpers normally; it does not
182
- infer files from runtime configuration strings or functions.
183
-
184
- k6-only ambient declarations are normal package-owned build outputs, not
185
- independently maintained source `.d.ts` files or production `node_modules/@types`
186
- dependencies. The build copies the exact pinned `@types/k6` and xk6-sql
187
- declarations and their licenses into `dist/engines/k6/runtime/ambient-types`; generated k6
188
- projects select that private type root explicitly. They also load Testkit's
189
- generated console-global declaration and map the native xk6-sql PostgreSQL
190
- driver specifier to its generated declaration. The host-neutral, Node/Vitest,
191
- Playwright, and ordinary automatic-discovery consumer projects load none of
192
- these files, so installing Testkit cannot leak k6 globals into another authoring
193
- universe.
194
-
195
- ## Run composition
196
-
197
- `runAll` constructs the local environment and engine manager and calls the
198
- production evidence writers directly. The environment owns provisioning and
199
- lifecycle finalization. Its `finish` operation holds the
200
- product lifecycle fence while committing terminal state, cleaning owned
201
- resources, and sealing evidence. Recovery preserves the committed interruption
202
- and any cleanup residue while recording the original failure.
203
-
204
- Runtime management, engine input preparation, setup workers, and lifecycle
205
- cleanup call their production implementations directly. Reporter callbacks keep
206
- the five-second production timeout. Orchestration integration tests invoke
207
- `runAll` with real consumer configuration, tests, and setup modules.
208
-
209
- ## Adapter contract
210
-
211
- Each adapter implements the host-neutral engine API through a fixed literal
212
- catalog. The manager resolves a discriminated, engine-specific installation and
213
- passes it to the matching typed executor. Testkit supplies:
214
-
215
- - an invocation, profile, task, lease, and deadline identity;
216
- - endpoints plus bounded environment, fixture, and setup inputs;
217
- - one cancellation signal;
218
- - owned temporary and artifact directories;
219
- - a structured observer for task lifecycle and evidence.
220
-
221
- The adapter returns bounded structured outcomes, failures, logs, metrics, and
222
- artifact references. The contract standardizes lifecycle and evidence, not the
223
- engine's test language.
224
-
225
- The Node host composes built-in engines in `src/engines/definitions.ts`.
226
- Each definition owns its profiles, readiness ownership, installation resolver,
227
- and lazy executor loader. Catalog and runner orchestration views derive from
228
- that table. The host-neutral API contains only contracts and identities.
229
-
230
- Each execution receives a fresh `EngineInvocationScope`; mutable invocation
231
- state never lives in an imported module singleton. The adapter registers cleanup
232
- immediately after allocating each owned resource. After execution, the host
233
- closes the observer and drains the scope exactly once in reverse registration
234
- order. Every cleanup handler is attempted, cleanup has its own bounded deadline,
235
- and any cleanup failure fails the invocation. Adapters do not carry a second
236
- preparation or execution cleanup path.
237
-
238
- The workspace can also provide a caller-owned `cacheDirectory`. Node/Vitest and
239
- Playwright use a private child directory for Node's compilation cache so fresh
240
- CLI and worker processes can reuse compiled code across files. Evaluated modules,
241
- consumer globals, runtime inputs, and native runner state remain process-local.
242
- Test execution shares the cache across every task of one run and removes it
243
- when the run's tasks finish.
244
- Adapters leave invocation temporary directories empty after cleanup. Callers
245
- that omit `cacheDirectory` retain execution without a shared compilation cache.
246
- Explicit consumer Node cache controls or V8 coverage disable automatic caching,
247
- and an unavailable cache falls back to normal execution.
248
- On Windows, automatic cache allocation and Node startup use the extended path
249
- form so deeply nested product directories can retain compilation caching.
250
-
251
- Test execution places engine workspaces and the compilation cache below
252
- `.testkit/_execution/node_modules/testkit-engine`, and each task's lease
253
- directory below `.testkit/_execution/leases`. Playwright skips the
254
- `node_modules` tree before collecting files, so concurrent discovery cannot
255
- traverse another task's temporary outputs as they change. Consumer test
256
- directories, ignore rules, dependency projects, and snapshot paths keep their
257
- original configuration. Releasing a lease removes its directory and engine
258
- workspace; the end of the run removes the cache.
259
-
260
- Adapters prepare the task batch before executing it. Shared `executeEngineTasks`
261
- starts tasks in order and defers evidence and terminal notifications until all
262
- tasks settle. It gives an expired task deadline precedence over cancellation,
263
- and cancellation precedence over preparation failure. Only successful
264
- preparation reaches the engine's execution function; its prepared files and
265
- runtime input are required by the type. Each adapter keeps its native command,
266
- input verification, result classification, and installation evidence.
267
-
268
- The shared workspace reader resolves consumer files physically before checking
269
- lexical containment with `src/process/files/paths.ts`. A symlink to an outside file
270
- is rejected. A contained name such as `..fixtures/input.json` remains valid.
271
-
272
- Observer lifecycle events are checked and buffered by the host. Internal adapters
273
- use typed requests and results; native reports are validated at each adapter.
274
- An adapter cannot suppress an observer-contract failure by catching the callback
275
- error: the stream remains poisoned. `taskStarted` and `evidenceRecorded` are
276
- optional lifecycle and additive/advisory evidence notifications; they do not
277
- replace the returned result. The validated returned result is authoritative,
278
- and every emitted `taskFinished` outcome must exactly match that task's returned
279
- outcome. Buffered events are committed only after result validation,
280
- terminal-result coherence, and successful invocation cleanup, so a failed
281
- invocation cannot publish a terminal pass.
282
-
283
- ## Managed native reports
284
-
285
- Testkit's Vitest 4.1.11 and Playwright 1.59.1 reporters use their public
286
- reporter APIs. Vitest supplies final test and suite results through
287
- `onTestRunEnd`. Playwright supplies cases and their native attempts through
288
- `onBegin` and `onEnd`. Testkit no longer requests either engine's generic JSON
289
- report as its evidence protocol. The managed Playwright config appends the
290
- Testkit reporter to consumer reporters, including consumer JSON reporters.
291
- Node/Vitest uses Testkit's generated Vitest config.
292
-
293
- Each reporter exclusively creates a private report in its invocation workspace.
294
- The schema version is `1`; the envelope identifies `engineId`, `invocationId`,
295
- `taskId`, and `sourceFile`, and carries an engine-specific `result`. Vitest
296
- records summary counts, final failed test identities and locations, and runtime
297
- errors. Playwright records case outcomes, all-attempt durations, retry numbers,
298
- stdout and stderr, attachments, and the last failed attempt's error details.
299
- Testkit keeps product and infrastructure classification in the adapters.
300
-
301
- Playwright body attachments use private files beneath the task's artifact
302
- directory. The reporter records each file path with its attachment name,
303
- content type, spec identity, title, and retry number. Native path attachments
304
- use the same descriptor. Attachment bytes do not enter the report's JSON
305
- strings. The managed workspace creates the attachment directory exclusively.
306
- The reporter uses generated filenames and applies the 64 MiB individual and
307
- 256 MiB aggregate budgets to raw bytes across both attachment forms.
308
-
309
- An attachment budget or I/O failure becomes a bounded error descriptor with
310
- the attachment's identity. The collector retains valid outcomes, structured
311
- assertion details, and accepted attachments when another attachment fails.
312
- `PLAYWRIGHT_ATTACHMENT_LIMIT` takes precedence over normal spec classification
313
- and includes the rejected attachment's identity, budget, limit, and observed
314
- bytes. Attachment I/O errors produce a distinct infrastructure failure when
315
- there is no spec failure. All attachment errors remain in structured evidence
316
- when a spec failure determines the task result.
317
- Cancellation, timeout, and process termination failures keep their precedence.
318
- Every attachment rejection remains in structured evidence.
319
-
320
- The collector checks file containment, regular-file identity, and actual byte
321
- budgets before making immutable snapshots. The invocation scope removes the
322
- reporter's temporary attachment directory after collection, including failed
323
- and cancelled runs. Bundle sealing still redacts declared secrets in text
324
- before hashing and rejects binary files that contain a sensitive environment
325
- value.
326
-
327
- The report limit is 16 MiB for Vitest and 64 MiB for Playwright. Both use the
328
- existing JSON limits of depth 64, 100,000 nodes, 100,000 entries per collection,
329
- and 1 MiB of UTF-8 data per string. The adapter reads a stable regular file,
330
- checks the envelope against the invocation and validates the engine payload
331
- before promoting evidence. Attachment containment, file identity, aggregate
332
- limits, and invocation cleanup remain adapter responsibilities. Bundle
333
- redaction remains in `src/evidence/bundles.ts`.
334
- The promoted artifact kinds are `engine.testkit-vitest-report` and
335
- `engine.testkit-playwright-report`. All three engines use the shared
336
- `src/engines/adapters/evidence-files.ts` reader and writer for stable bounded
337
- reads and private atomic evidence publication. Engine-specific report decoding
338
- and k6's whole-directory native-summary publication stay local.
339
-
340
- The reporters are private emitted modules at
341
- `dist/engines/{node-vitest,playwright}/adapter/reporter.js`.
342
- `nativeReporterFile` in `src/engines/adapters/native-report.ts` resolves the
343
- executing Testkit package with three parent-directory hops from its own module.
344
- The locator uses each engine's adapter directory. These reporters add no package export.
345
-
346
- Fixture alias selection belongs to
347
- `src/engines/contracts/fixture-manifest.ts`. It matches declared aliases exactly
348
- and reports unknown or ambiguous names with candidate paths in manifest order.
349
- Engine entrypoints normalize the requested name and retain their own fixture
350
- loading and usage accounting. k6 retains its native binary values; Node data
351
- and contract fixtures retain their Node file readers.
352
-
353
- ## Managed environment
354
-
355
- All three host writers use `src/engines/runtime-input-file.ts` for bounded
356
- UTF-8 JSON serialization, exclusive private temporary files, atomic rename,
357
- and SHA-256 identity. Node/Vitest and k6 verify the prepared file through its
358
- shared reader. Playwright's generated preload awaits that reader before
359
- validating its schema and installing context. Reads check containment,
360
- owner-only permissions on POSIX, no-follow opening, byte bounds, and file
361
- identity before and after reading. Each engine keeps its schema, task identity,
362
- environment policy, and context installation at its own boundary.
363
-
364
- The Playwright preload imports the private emitted
365
- `dist/engines/runtime-input-file.js` module. `ownedRuntimeInputModuleUrl` resolves
366
- that target from its own module with two parent-directory hops. The managed
367
- resolver trusts the generated preload as an importer of this exact entrypoint.
368
- The #55 path inventory must retain this generated import and locator when
369
- moving engine code. The module adds no package export. The k6 guest keeps its
370
- host-neutral `open` and `k6/crypto` reader; no Node filesystem code enters its
371
- bundle. Host input limits measure UTF-8 bytes, while the k6 guest's string
372
- bounds measure JavaScript character units.
373
-
374
- Testkit treats the environment declared for a task as invocation input, not as
375
- ambient orchestrator state. The complete, enumerable consumer environment is
376
- available through the engine-native authoring surface:
377
-
378
- - k6 files read it from native `__ENV`;
379
- - Node/Vitest data and contract callbacks read it from immutable
380
- `context.env`;
381
- - Playwright files read immutable `context.env` from
382
- `readPlaywrightContext()` when the invocation is Testkit-managed.
383
-
384
- An unmanaged Node/Vitest authoring context has an immutable empty `env`.
385
- `readPlaywrightContext()` returns `null` outside a managed invocation because
386
- there is no Testkit endpoint, fixture, or task context to represent.
387
-
388
- The merged consumer environment is validated case-insensitively at the engine
389
- adapter boundary. Empty names, names containing `=` or NUL, values containing
390
- NUL, and case-variant duplicates are rejected. Every engine reserves the exact
391
- host-process keys `APPDATA`, `ComSpec`, `HOME`, `LANG`, `LC_ALL`,
392
- `LOCALAPPDATA`, `PATH`, `PATHEXT`, `SystemRoot`, `TEMP`, `TMP`, `TMPDIR`,
393
- `USERPROFILE`, `XDG_CACHE_HOME`, `XDG_CONFIG_HOME`, and `XDG_DATA_HOME`.
394
-
395
- Engine-specific reservations and consumer limits are:
396
-
397
- | Engine | Reserved prefixes | Additional exact reserved keys | Consumer environment limit |
398
- | ------------- | ------------------------------------------------ | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
399
- | `k6` | `K6_`, `TESTKIT_` | `BASE_URL`, `GODEBUG` | 128 entries and 16,384 environment-block character units; the complete physical spawn environment is capped at 24,576 units |
400
- | `node-vitest` | `TESTKIT_`, `VITEST_` | `BASE_URL`, `FORCE_COLOR`, `NODE_OPTIONS`, `NO_COLOR`, `UPDATE_SNAPSHOT` | 512 entries and 4 MiB of UTF-8 key/value data; the complete owned runtime-input document is capped at 8 MiB |
401
- | `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; the complete owned runtime-input document is capped at 4 MiB |
402
-
403
- The prefix and exact-key comparisons are case-insensitive. k6's size uses the
404
- same key-length plus value-length plus separator-unit calculation as the
405
- physical environment block. Node/Vitest's file-backed consumer values are not
406
- part of its separately bounded 24,576-unit physical spawn environment.
407
- Playwright likewise keeps file-backed consumer values outside its physical
408
- spawn environment, which is separately capped at 64 entries and 24 KiB. These
409
- reservations prevent consumer configuration from overriding endpoint,
410
- cancellation, deadline, reporter, module-resolution, or native-runner controls.
411
-
412
- Engine subprocesses run with a sanitized operating-system environment. Managed
413
- Node processes expose direct `process.env.KEY` reads through an immutable,
414
- non-enumerable overlay, so libraries that read `process.env` see consumer
415
- values, but `process.env` is not the enumerable consumer-input contract. A Node
416
- child which inherits Testkit's bootstrap can rehydrate that overlay; a non-Node
417
- native child does not receive consumer values in its physical environment
418
- unless consumer code explicitly passes the values it intends to disclose. This
419
- keeps enumeration, object spread, mutation behavior, and native-process
420
- disclosure deliberate and consistent across platforms.
421
-
422
- Process execution is owned once by the root package's private `src/process/`
423
- adapter. Engine adapters do not carry separate launch or cleanup code. Process
424
- code never imports an engine module.
425
-
426
- The adapter uses Execa for direct argv execution, working directory,
427
- environment, bounded capture, streaming, timeout, cancellation, and graceful
428
- then forced termination. `killDescendants: true` creates a separate process
429
- group on POSIX and uses `taskkill /T` on Windows. This is best-effort process-tree
430
- termination, not workload containment. A descendant which creates a new session
431
- or moves work into another service is outside the contract.
432
-
433
- Testkit checks a POSIX process group after every completion path and records a
434
- cleanup error when signalling fails or the group remains after forced
435
- termination. On Windows, a bounded command that Testkit cancels or times out is
436
- stopped by the packaged native helper instead of `taskkill`. The helper
437
- terminates the command and its descendants, parents first, and waits up to four
438
- seconds for every one of them to exit. A loaded Windows host can take seconds to
439
- finish a terminated process, and until then the process still holds its files.
440
- A member that outlives the deadline, or that the helper cannot open or
441
- terminate, becomes the `terminationError`, and the command then returns without
442
- waiting for output that a surviving process holds open. Windows offers no
443
- equivalent check after a command exits on its own or for service handles. A null
444
- `terminationError` therefore means Testkit observed no cleanup failure; it does
445
- not prove that every descendant exited. Workloads that require
446
- hard containment need a container, VM, cgroup, service manager, or Windows Job
447
- Object owned outside this adapter.
448
-
449
- The Windows executable CLI supplies a Job Object through a packaged native
450
- helper before running an action. Its descendants inherit that job, and closing
451
- the helper's job handle after the CLI exits terminates the remaining process
452
- tree. Help, parser errors, and guard commands do not start the helper. Library
453
- imports retain the adapter's best-effort cleanup contract and do not assign the
454
- consumer process or unrelated children to a job. Ordinary builds verify the
455
- committed helpers' source provenance, hashes, and native architectures. Updating
456
- them requires the pinned Go compiler described in
457
- [`scripts/build/windows-owner/README.md`](https://github.com/gfdelarue/testkit/blob/master/scripts/build/windows-owner/README.md).
458
-
459
- New Windows run manifests use the same helper to publish a completed file with
460
- a native rename that rejects an existing destination. Removing a temporary
461
- hard link can make later Windows replacements fail with access denied. The
462
- native publication avoids that sequence while preserving complete-file
463
- visibility and duplicate run-ID rejection. This file operation does not create
464
- a Job Object, so library consumers retain control of their process ownership.
465
-
466
- Each runtime instance reserves an OS-assigned port for every local service when
467
- it first prepares, by listening on `127.0.0.1:0` and on the same port at `::1`
468
- when IPv6 is available, and keeping both sockets open.
469
- Template resolution reads the reserved ports into `{port}`, `baseUrl`, and
470
- `readyUrl`, and the resolved config carries the port as `local.assignedPort`.
471
- Service startup resolves the toolchain and prepares the invocation, then closes
472
- the reservation immediately before it spawns the service and passes the port as
473
- `PORT`. A service that exits before it becomes ready gets a fresh reservation,
474
- and the instance's configs are resolved again. The context keeps holding every
475
- port a service already tried, so the OS cannot hand one back.
476
- Already started services whose start command, resolved env, readiness URL, or
477
- prepare steps changed are stopped and started again, and the fingerprinted
478
- `runtime.prepare` steps of every service not yet started run again before the
479
- next attempt. Each service gets three attempts in total. Runtime cleanup closes
480
- any reservation a service never claimed. Schema refresh and verify resolve
481
- their configs with ports reserved the same way and released at once, because
482
- they start no services.
483
-
484
- Long-running application services keep the live Execa handle for readiness,
485
- output drain, explicit stop, and normal teardown. Once the child reports spawn,
486
- Testkit records its creation identity and the POSIX process-group ID needed for
487
- recovery after an abnormal coordinator exit. Recovery checks the recorded
488
- identity before signalling. Provider-owned resources such as containers retain
489
- their own stronger cleanup identity.
490
-
491
- The internal call sites require the following behaviour:
492
-
493
- | Consumer | Output | Stop conditions | Recovery requirement |
494
- | ------------------------------------------------------ | ---------------------- | ----------------------------------------------- | ------------------------------------------------- |
495
- | k6, Node/Vitest, and Playwright engines | Bounded capture | completion, timeout, cancellation, output limit | None after a returned result |
496
- | Playwright setup and installation resolution | Bounded capture | completion, timeout, cancellation | None |
497
- | Local application services | Caller-drained streams | explicit stop, cancellation, unexpected exit | Child creation identity and POSIX process group |
498
- | Database, Docker, Git, build, and maintenance commands | Bounded capture | completion, timeout, cancellation | Provider identity where the provider supplies one |
499
-
500
- The adapter reports command failure separately from an observed cleanup failure.
501
- Consumers must treat either as an infrastructure failure when cleanup is part of
502
- their operation's contract.
503
-
504
- ## Managed appliance distribution
505
-
506
- Consumers declare one Testkit dependency:
507
-
508
- ```text
509
- @gfdelarue/testkit
510
- optional -> @gfdelarue/testkit-engine-k6-<target>
511
- required -> @gfdelarue/testkit-engine-k6-source
512
- ```
513
-
514
- The root package owns every JavaScript adapter and exact direct tool package.
515
- Its `optionalDependencies` pin the five k6 target packages
516
- (`@gfdelarue/testkit-engine-k6-darwin-arm64`, `-darwin-x64`, `-linux-arm64`,
517
- `-linux-x64`, and `-win32-x64`) at one exact version. npm selects the one
518
- package whose `os` and `cpu` match the host. Each target package depends on
519
- `@gfdelarue/testkit-engine-k6-source` at the same exact version. The source
520
- package carries the AGPL corresponding source archive and the licenses.
521
-
522
- The k6 packages are built and published from
523
- [gfdelarue/testkit-k6](https://github.com/gfdelarue/testkit-k6) through
524
- GitHub Actions with npm trusted publishing. They follow their own version line,
525
- independent of the Testkit version. The executable is k6 1.7.1 with xk6-sql and
526
- its PostgreSQL driver, built reproducibly with xk6. The k6 version is metadata
527
- in each package manifest (`testkit.k6Version`). The testkit-k6 README documents
528
- the build, the expected executable digests, and the license notes. The six k6
529
- packages are transitive implementation and compliance artifacts, not
530
- selectable Testkit engines.
531
-
532
- This is a managed-appliance contract, not a promise to prune unused engines.
533
- After an ordinary install the root-owned Node/Vitest and Playwright tools and
534
- the compatible k6 target/source pair are present regardless of the profiles a
535
- consumer currently uses. Installing with optional dependencies omitted is
536
- unsupported because k6 and upstream JavaScript packages use platform
537
- optionals. If a consumer installs with `--omit=optional`, k6 resolution fails
538
- with `K6OptionalPackageMissingError`.
539
-
540
- The consumer lockfile is the JavaScript and native-package reproducibility
541
- boundary. npm integrity in that lock is the trust boundary for the k6
542
- packages. Testkit does not download k6, parse a provenance file, or verify the
543
- executable against a digest at launch. Playwright's installer and selected
544
- browser registry own Chromium and FFmpeg. Testkit does not create a second
545
- package graph, extracted engine cache, or private browser descriptor inventory.
546
-
547
- ## Root-anchored resolution
548
-
549
- All managed package resolution starts from an anchor inside the installed
550
- `@gfdelarue/testkit` root. A consumer's own Vitest, Vite, esbuild, TypeScript,
551
- or Playwright packages cannot select or replace Testkit's execution tools or
552
- authoring bridge.
553
-
554
- For a root-owned direct package, resolution:
555
-
556
- - resolves a declared public entrypoint from the Testkit anchor;
557
- - finds and realpaths the owning manifest without crossing the selected package
558
- boundary;
559
- - validates containment, package name, and the exact version declared by the
560
- root manifest;
561
- - resolves only public entrypoints Testkit actually exercises; and
562
- - distinguishes an absent direct package from a present but broken package,
563
- preserving the original loader cause for the latter.
564
-
565
- Testkit does not inventory upstream private transitives or reinterpret their
566
- version ranges. npm and the selected direct package remain responsible for
567
- that graph. A clean reinstall with optionals is the recovery path for a broken
568
- installation.
569
-
570
- Node/Vitest resolves Vitest, Vite, TypeScript, and esbuild through this anchor.
571
- Generated configuration, authoring aliases, helpers, and subprocesses use the
572
- same managed paths. Evidence reports the direct tools actually exercised by
573
- the run and does not enumerate private native bindings. Healthy runs exercise
574
- these capabilities in the native engine process. The controller imports and
575
- checks them only to diagnose a failed engine launch with no native report;
576
- it does not run a duplicate empty compilation before each run.
577
-
578
- Playwright selects one physical family: `@playwright/test` from the Testkit
579
- anchor, `playwright` from that package, and `playwright-core` from the selected
580
- `playwright`. All three versions must match the root's exact declarations. One
581
- registry resolver is shared by setup and run for the default, configured
582
- absolute, configured relative, and hermetic `0` modes.
583
-
584
- Browser installation is explicit:
585
-
586
- ```text
587
- testkit setup playwright
588
- testkit setup playwright --with-deps
589
- testkit setup playwright --force
590
- ```
591
-
592
- The command invokes the authoritative public Playwright CLI with `install
593
- chromium --no-shell`. Normal execution never installs a browser. Installation
594
- resolution obtains `chromium.executablePath()` in a fresh process under the
595
- canonical registry environment and validates that public executable path.
596
- The runner waits for the HTTP endpoint before starting the task. Playwright
597
- launches Chromium when consumer tests request it; there is no additional
598
- browser launch or navigation for readiness. Native launch failures retain
599
- Playwright's cause and are classified as infrastructure failures. Consumer
600
- global setup and teardown remain intact. A real video flow proves FFmpeg
601
- capability without exposing a private FFmpeg path.
602
-
603
- k6 resolution maps the current platform and architecture to one fixed optional
604
- package and resolves its `./binary` export from the Testkit anchor. It validates
605
- the exact package name/version, declared target, containment, executable name,
606
- regular-file status, POSIX execute permission, and mandatory `k6 version`
607
- probe. The probe must report `EXPECTED_K6_VERSION` (`1.7.1`). There is no
608
- environment, consumer-package, or system-`PATH` fallback. Evidence records
609
- `installationKind: "direct-package"`, the package name, the package version,
610
- and the runtime-observed version; it does not claim that the installed binary
611
- was rehashed at launch.
612
-
613
- Linux k6 and Node/Vitest support glibc and musl. Playwright rejects musl before
614
- setup or execution. macOS supports arm64 and x64, and Windows supports x64 on
615
- Windows 10 or Windows Server 2016 and newer.
616
-
617
- ## Trust and recovery
618
-
619
- | Material | Installer and authority | Testkit check | Recovery |
620
- | -------------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------ |
621
- | Root and JavaScript dependencies | npm plus the consumer lockfile | Root-anchored direct identity, version, entrypoint, and exercised capability | Repeat the consumer's frozen install |
622
- | k6 target | npm optional package | Package/target/version, contained executable, mode, and version probe | Reinstall including optionals |
623
- | Chromium and FFmpeg | Pinned Playwright installer and registry | Public Chromium path, native launch errors, and video capability | `testkit setup playwright --force`; add `--with-deps` where needed |
624
- | k6 source and licenses | npm package built and published from gfdelarue/testkit-k6 | npm integrity in the consumer lock; provenance and SBOM are review material | Pin a new k6 package version in the root manifest and reinstall |
625
- | Managed Node | Existing managed-toolchain pipeline | Existing archive and tree integrity checks | Use the existing managed-Node repair path |
626
-
627
- npm authenticates registry tarballs represented in the consumer lock. It does
628
- not continuously authenticate every extracted file after installation. Each k6
629
- package ships `metadata/provenance.json` with its builder inputs and executable
630
- digest and an SPDX SBOM of the linked Go modules, and npm records provenance
631
- attestations at publish. Those are review material; the lock integrity is the
632
- boundary Testkit relies on.
633
- Likewise, Playwright owns browser revision mapping, download locking, and cache
634
- maintenance. This architecture intentionally does not promise byte-identical
635
- transitive JavaScript graphs or browser installations from the Testkit version
636
- alone.
637
-
638
- Process supervision remains independent of installation. Every invocation gets
639
- a fresh scope, bounded environment, cancellation/deadline handling, descendant
640
- ownership, result validation, evidence budgets, and cleanup. The adapter code
641
- is loaded through fixed typed internal imports after installation preflight;
642
- root Testkit version identifies that code.
643
-
644
- ## Upgrading k6
645
-
646
- Testkit does not build k6. To change the k6 version, an extension, or a build
647
- input, cut a release in
648
- [gfdelarue/testkit-k6](https://github.com/gfdelarue/testkit-k6) by tagging
649
- `vX.Y.Z`. Its workflow builds the five executables, checks them against the
650
- expected digests in its contract, and publishes the six packages. Then bump
651
- the five pins in Testkit's root `package.json` to the new version in one
652
- commit and run `npm install`. If the k6 version changed, update
653
- `EXPECTED_K6_VERSION` in `src/engines/installations/k6.ts` in the same commit.
654
- The release contract rejects a root manifest whose five pins differ.
655
-
656
- ## Installed consumer and release proof
657
-
658
- System acceptance installs the root Testkit tarball and fetches the pinned
659
- public engine packages directly from npm. CI transfers only the root tarball
660
- and its manifest to Ubuntu and Windows. Consumer lockfiles must match the
661
- engine versions and integrity values pinned in the checkout.
662
-
663
- The opt-in live compatibility tests mirror engine packages into a fixture
664
- registry to exercise controlled registry and lockfile scenarios. Their consumer
665
- manifest declares only `@gfdelarue/testkit`. They exercise the minimum and pinned-current
666
- npm 11 with self-consumed and reciprocal frozen hoisted locks, plus
667
- pinned-current nested and linked layouts. One checked-in portable hoisted lock
668
- is consumed without rewriting on all five supported targets.
669
-
670
- The orthogonal fixtures also prove hostile consumer tool conflicts, exact
671
- direct-version failures, broken-installation causes, omitted-optional
672
- diagnostics, no system-k6 fallback, Linux libc behavior, and physical presence
673
- of the selected k6 target and source packages. Real packed suites exercise k6,
674
- Node/Vitest, and Playwright after explicit browser setup, including the four
675
- Playwright registry modes.
676
-
677
- ## Adding engines
678
-
679
- Future engines must add an explicit engine ID, profiles, a typed internal
680
- installation and executor, honest evidence, supported-host behavior, and real
681
- packed/native acceptance. They must not add a consumer-selectable internal
682
- package boundary or weaken another engine's native semantics.