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