@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.
- package/README.md +752 -462
- package/bin/testkit-windows-owner-arm64.exe +0 -0
- package/bin/testkit-windows-owner-x64.exe +0 -0
- package/dist/app/bugs/categories.js +1 -1
- package/dist/app/bugs/ci-report.js +2 -2
- package/dist/app/bugs/ci-summary.js +3 -3
- package/dist/app/bugs/draft.js +4 -4
- package/dist/app/bugs/facts.js +2 -2
- package/dist/app/bugs/file.js +1 -1
- package/dist/app/bugs/gate.js +1 -1
- package/dist/app/bugs/guide.js +3 -3
- package/dist/app/bugs/issue.js +4 -4
- package/dist/app/bugs/known-failures.js +1 -1
- package/dist/app/bugs/record.js +2 -2
- package/dist/app/bugs/run-reading.js +1 -1
- package/dist/app/bugs/supplied-reproduce.js +1 -0
- package/dist/app/campaigns/campaign.js +1 -1
- package/dist/app/cleanup/index.js +1 -1
- package/dist/app/db-schema/prepare.js +1 -1
- package/dist/app/destroy/index.js +1 -1
- package/dist/app/discover/index.js +2 -2
- package/dist/app/doctor/index.js +1 -1
- package/dist/app/environments/config-driven.js +1 -0
- package/dist/app/environments/environment-file.js +1 -0
- package/dist/app/environments/file-setup.js +1 -0
- package/dist/app/environments/routing.js +1 -0
- package/dist/app/environments/static-values.js +1 -0
- package/dist/app/environments/supplied-input.js +1 -0
- package/dist/app/environments/supplied.js +1 -0
- package/dist/app/environments/task-databases.js +2 -0
- package/dist/app/file-selection.js +1 -1
- package/dist/app/inspect/artifacts.js +1 -1
- package/dist/app/inspect/index.js +1 -1
- package/dist/app/lint/index.js +1 -1
- package/dist/app/lint/native.js +1 -1
- package/dist/app/lint/options.js +1 -1
- package/dist/app/lint/rules/data.js +1 -1
- package/dist/app/lint/rules/engine-imports.js +1 -1
- package/dist/app/lint/rules/syntax.js +1 -1
- package/dist/app/lint/rules/unit.js +1 -1
- package/dist/app/lint/shared.js +1 -1
- package/dist/app/package-inspection.js +1 -1
- package/dist/app/reports/files.js +1 -0
- package/dist/app/reports/prepare.js +2 -0
- package/dist/app/reports/publish.js +1 -0
- package/dist/app/run/caller-redaction.js +1 -0
- package/dist/app/run/engine-evidence-persistence.js +1 -1
- package/dist/app/run/engine-execution-failures.js +1 -1
- package/dist/app/run/engine-execution-reporting.js +1 -1
- package/dist/app/run/engine-execution.js +1 -1
- package/dist/app/run/engine-orchestration.js +1 -1
- package/dist/app/run/environment.js +1 -0
- package/dist/app/run/failure-details.js +1 -1
- package/dist/app/run/live-run.js +1 -1
- package/dist/app/run/orchestrator.js +1 -1
- package/dist/app/run/planning.js +1 -1
- package/dist/app/run/request.js +1 -1
- package/dist/app/run/results.js +1 -1
- package/dist/app/run/run-events.js +1 -1
- package/dist/app/run/run-finalization.js +1 -1
- package/dist/app/run/runtime-fixtures.js +1 -1
- package/dist/app/run/scheduler/estimates.js +1 -1
- package/dist/app/run/scheduler/identity.js +1 -1
- package/dist/app/run/scheduler/index.js +1 -1
- package/dist/app/run/scheduler/locks.js +1 -0
- package/dist/app/run/selection.js +1 -1
- package/dist/app/run/setup/runtime-node-setup-protocol.js +1 -1
- package/dist/app/run/setup/runtime-node-setup-worker.js +1 -1
- package/dist/app/run/setup/runtime-node-setup.js +2 -2
- package/dist/app/run/task-batches.js +1 -1
- package/dist/app/run/task-leases.js +1 -0
- package/dist/app/run/worker-loop.js +1 -1
- package/dist/app/status/runs.js +1 -1
- package/dist/app/tracker/index.js +1 -1
- package/dist/app/typecheck/index.js +4 -4
- package/dist/cli/command-catalog.js +1 -1
- package/dist/cli/command-flags.js +1 -1
- package/dist/cli/command-registry.js +1 -1
- package/dist/cli/commands/artifacts.js +2 -2
- package/dist/cli/commands/bug/file.js +2 -2
- package/dist/cli/commands/bug/record.js +2 -2
- package/dist/cli/commands/discover.js +1 -1
- package/dist/cli/commands/report/prepare.js +5 -0
- package/dist/cli/commands/report/publish.js +2 -0
- package/dist/cli/commands/run.js +2 -2
- package/dist/cli/commands/typecheck.js +1 -1
- package/dist/cli/commands/workspace.js +1 -1
- package/dist/cli/framework/errors.js +1 -1
- package/dist/cli/framework/execute.js +7 -6
- package/dist/cli/framework/parser.js +1 -1
- package/dist/cli/json-errors.js +1 -1
- package/dist/cli/operations/run/operation.js +2 -2
- package/dist/cli/renderers/bug/text.js +1 -1
- package/dist/cli/renderers/discover/report.js +1 -1
- package/dist/cli/renderers/doctor/text.js +1 -1
- package/dist/cli/renderers/run/events.js +2 -2
- package/dist/cli/renderers/run/formatting.js +1 -1
- package/dist/cli/renderers/run/status.js +1 -1
- package/dist/cli/renderers/run/text-reporter.js +24 -22
- package/dist/cli/terminal/colors.js +1 -1
- package/dist/cli/terminal/layout.js +2 -2
- package/dist/config/authoring/http-methods.js +1 -1
- package/dist/config/authoring/index.js +1 -1
- package/dist/config/authoring/preset-env.js +1 -1
- package/dist/config/loader/config-loader.js +1 -1
- package/dist/config/loader/database.js +1 -1
- package/dist/config/loader/decode-execution.js +1 -1
- package/dist/config/loader/dependencies.js +1 -1
- package/dist/config/loader/discover-tests.js +1 -1
- package/dist/config/loader/discovery-summary.js +1 -1
- package/dist/config/loader/discovery.js +2 -2
- package/dist/config/loader/env.js +1 -1
- package/dist/config/loader/execution-model.js +1 -1
- package/dist/config/loader/file-metadata.js +1 -1
- package/dist/config/loader/groups.js +1 -0
- package/dist/config/loader/index.js +1 -1
- package/dist/config/loader/load.js +1 -1
- package/dist/config/loader/managed-configs.js +1 -1
- package/dist/config/loader/owned-discovery.js +1 -0
- package/dist/config/loader/path-policy.js +1 -1
- package/dist/config/loader/runtime-isolation.js +1 -1
- package/dist/config/loader/runtime.js +1 -1
- package/dist/config/loader/skip-config.js +1 -1
- package/dist/config/loader/task-policy.js +1 -0
- package/dist/config/loader/test-selection.js +1 -1
- package/dist/config/loader/validation.js +1 -1
- package/dist/database/activity-gate.js +1 -1
- package/dist/database/admin.js +2 -2
- package/dist/database/bindings.js +1 -0
- package/dist/database/cleanup.js +1 -1
- package/dist/database/docker-metadata.js +3 -3
- package/dist/database/docker.js +3 -3
- package/dist/database/index.js +1 -1
- package/dist/database/lifecycle-cleanup.js +1 -1
- package/dist/database/local-postgres.js +1 -1
- package/dist/database/naming.js +1 -1
- package/dist/database/postgres/connection-check.js +1 -0
- package/dist/database/postgres/protocol.js +2 -0
- package/dist/database/schema-operations.js +1 -1
- package/dist/database/schema-source.js +3 -3
- package/dist/database/source-schema-env.js +1 -0
- package/dist/database/source-url.js +2 -2
- package/dist/database/state-files.js +1 -1
- package/dist/database/state.js +1 -1
- package/dist/database/steps.js +3 -3
- package/dist/domain/file-timeout.js +1 -1
- package/dist/domain/identifiers.js +1 -1
- package/dist/domain/operation-display.js +1 -1
- package/dist/domain/retired-test-types.js +1 -0
- package/dist/domain/runtime-isolation-contract.js +1 -1
- package/dist/domain/suite-selection.js +1 -1
- package/dist/domain/test-outcomes.js +1 -1
- package/dist/domain/test-types.js +1 -1
- package/dist/engines/adapters/evidence-files.js +1 -1
- package/dist/engines/adapters/evidence-identity.js +1 -1
- package/dist/engines/adapters/execution.js +1 -1
- package/dist/engines/adapters/json-bounds.js +2 -0
- package/dist/engines/adapters/native-report.js +1 -1
- package/dist/engines/api/execution-scope.js +1 -1
- package/dist/engines/api/execution.js +1 -1
- package/dist/engines/api/index.js +1 -1
- package/dist/engines/api/runtime-artifact.js +1 -1
- package/dist/engines/bundle-cache.js +1 -1
- package/dist/engines/catalog.js +1 -1
- package/dist/engines/contracts/environment-values.js +1 -0
- package/dist/engines/contracts/fixture-manifest.js +1 -1
- package/dist/engines/definitions.js +1 -1
- package/dist/engines/environment/handles.js +1 -0
- package/dist/engines/environment/index.js +1 -0
- package/dist/engines/factory.js +1 -1
- package/dist/engines/installations/node-vitest.js +1 -1
- package/dist/engines/installations/package-resolution.js +1 -1
- package/dist/engines/installations/playwright-resolution-child.js +1 -1
- package/dist/engines/installations/playwright.js +1 -1
- package/dist/engines/managed-module-resolution-policy-input.js +1 -1
- package/dist/engines/managed-module-resolution-policy.js +1 -1
- package/dist/engines/managed-module-resolution.js +2 -2
- package/dist/engines/manager.js +1 -1
- package/dist/engines/node-vitest/adapter/adapter.js +1 -1
- package/dist/engines/node-vitest/adapter/driver.js +2 -0
- package/dist/engines/node-vitest/adapter/evidence.js +2 -2
- package/dist/engines/node-vitest/adapter/failure-details.js +4 -2
- package/dist/engines/node-vitest/adapter/reporter.js +1 -1
- package/dist/engines/node-vitest/adapter/workspace.js +31 -192
- package/dist/engines/node-vitest/inventory/index.js +2 -0
- package/dist/engines/node-vitest/inventory/list-files.js +3 -0
- package/dist/engines/node-vitest/runtime/contract/index.js +1 -1
- package/dist/engines/node-vitest/runtime/data/http.js +1 -1
- package/dist/engines/node-vitest/runtime/data/index.js +1 -1
- package/dist/engines/node-vitest/runtime/data/report.js +5 -6
- package/dist/engines/node-vitest/runtime/data/scenario.js +2 -2
- package/dist/engines/node-vitest/runtime/runtime-input.js +1 -1
- package/dist/engines/node-vitest/selection.js +1 -0
- package/dist/engines/playwright/adapter/adapter.js +1 -1
- package/dist/engines/playwright/adapter/config.js +4 -4
- package/dist/engines/playwright/adapter/evidence-validation.js +1 -1
- package/dist/engines/playwright/adapter/evidence.js +1 -1
- package/dist/engines/playwright/adapter/reporter.js +1 -1
- package/dist/engines/playwright/runtime/config-file.js +1 -1
- package/dist/engines/playwright/runtime/config.js +1 -1
- package/dist/engines/playwright/runtime/runtime-input.js +43 -20
- package/dist/engines/runtime-input-file.js +1 -1
- package/dist/environment/lifecycle-artifacts.js +1 -1
- package/dist/environment/lifecycle-controller.js +1 -1
- package/dist/environment/lifecycle.js +1 -1
- package/dist/environment/ports.js +1 -0
- package/dist/environment/ready-environment.js +1 -1
- package/dist/environment/run-environment.js +1 -1
- package/dist/environment/run-stopping.js +1 -1
- package/dist/environment/runtime-contexts.js +1 -1
- package/dist/environment/runtime-manager.js +1 -1
- package/dist/environment/runtime-planning.js +1 -1
- package/dist/environment/runtime-preparation.js +1 -1
- package/dist/environment/services.js +3 -1
- package/dist/environment/state.js +1 -1
- package/dist/environment/template.js +1 -1
- package/dist/evidence/artifact-config.js +1 -1
- package/dist/evidence/artifact-validation.js +1 -1
- package/dist/evidence/artifacts.js +2 -2
- package/dist/evidence/bundles.js +1 -1
- package/dist/evidence/environment-record.js +1 -0
- package/dist/evidence/index.js +1 -1
- package/dist/evidence/logs.js +2 -2
- package/dist/evidence/operation-timings.js +1 -1
- package/dist/evidence/read-fields.js +1 -1
- package/dist/evidence/read-run.js +1 -1
- package/dist/evidence/reading.js +1 -1
- package/dist/evidence/redaction.js +4 -0
- package/dist/evidence/reporting.js +1 -1
- package/dist/evidence/run-model.js +1 -0
- package/dist/evidence/storage.js +2 -2
- package/dist/evidence/timing.js +1 -1
- package/dist/kernel/error-serialization.js +1 -1
- package/dist/kernel/redaction-targets.js +1 -0
- package/dist/kernel/redaction.js +4 -1
- package/dist/kernel/unknown-values.js +1 -1
- package/dist/process/environment.js +1 -1
- package/dist/process/execa-bundle.json +3 -3
- package/dist/process/files/json-file.js +1 -1
- package/dist/process/files/paths.js +1 -1
- package/dist/process/host/metadata.js +1 -1
- package/dist/process/host/platform.js +1 -1
- package/dist/process/host-process.js +1 -1
- package/dist/process/index.js +1 -1
- package/dist/process/lifecycle-fence.js +1 -1
- package/dist/process/locks.js +4 -4
- package/dist/process/port-listener.js +2 -0
- package/dist/process/process-group.js +1 -1
- package/dist/process/process-identity.js +1 -1
- package/dist/process/process.js +33 -33
- package/dist/process/readiness.js +1 -1
- package/dist/process/ready-deadline.js +1 -0
- package/dist/process/recovery.js +1 -1
- package/dist/process/runs/manifest.js +1 -1
- package/dist/process/runs/ownership.js +1 -1
- package/dist/process/runs/product-state.js +1 -1
- package/dist/process/runs/stop.js +1 -1
- package/dist/process/service-processes.js +1 -1
- package/dist/process/stoppable-settlement.js +1 -0
- package/dist/process/url-redaction.js +1 -0
- package/dist/process/windows-cli-owner.js +3 -3
- package/dist/process/windows-native.js +1 -1
- package/dist/repo/ci-environment.js +1 -1
- package/dist/repo/fingerprint-policy.js +1 -1
- package/dist/repo/managed-git.js +1 -1
- package/dist/repo/physical-tree.js +1 -1
- package/dist/repo/publish-directory.js +3 -0
- package/dist/repo/state.js +4 -4
- package/dist/steps/build-config.js +1 -1
- package/dist/steps/configured-step-testkit-modules.js +1 -1
- package/dist/steps/configured-steps.js +1 -1
- package/dist/steps/environment.js +1 -1
- package/dist/steps/index.js +1 -1
- package/dist/steps/run.js +2 -2
- package/dist/toolchains/archive.js +1 -1
- package/dist/toolchains/index.js +3 -3
- package/dist/toolchains/node-provisioning.js +2 -2
- package/dist/toolchains/semver.js +1 -1
- package/dist/toolchains/vitest/index.js +1 -1
- package/dist/tracker/redaction.js +1 -2
- package/dist/{config/runtime/build-assets.d.ts → types/config-build-assets.d.ts} +5 -3
- package/dist/{database/steps.d.ts → types/config-database-steps.d.ts} +7 -7
- package/dist/{config/runtime/next-runtime-tsconfig.d.ts → types/config-next-runtime-tsconfig.d.ts} +5 -3
- package/dist/types/config.d.ts +501 -0
- package/dist/types/drizzle.d.ts +13 -0
- package/dist/{config/runtime/env/index.d.ts → types/env.d.ts} +22 -20
- package/dist/types/environment.d.ts +40 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/node-vitest-contract.d.ts +75 -0
- package/dist/types/node-vitest-data.d.ts +407 -0
- package/dist/types/playwright.d.ts +130 -0
- package/dist/types/tooling-vitest.d.ts +13 -0
- package/dist/types/workspace.d.ts +617 -0
- package/docs/bug-records.md +83 -81
- package/docs/engines.md +213 -0
- package/docs/test-types.md +35 -33
- package/package.json +22 -29
- package/testkit-config-schema.md +403 -171
- package/dist/app/bugs/areas.d.ts +0 -38
- package/dist/app/bugs/assessment.d.ts +0 -9
- package/dist/app/bugs/categories.d.ts +0 -41
- package/dist/app/bugs/ci-report.d.ts +0 -21
- package/dist/app/bugs/ci-summary.d.ts +0 -13
- package/dist/app/bugs/draft.d.ts +0 -70
- package/dist/app/bugs/facts.d.ts +0 -48
- package/dist/app/bugs/file.d.ts +0 -45
- package/dist/app/bugs/gate.d.ts +0 -22
- package/dist/app/bugs/guide.d.ts +0 -20
- package/dist/app/bugs/issue.d.ts +0 -18
- package/dist/app/bugs/known-failures.d.ts +0 -49
- package/dist/app/bugs/record.d.ts +0 -14
- package/dist/app/bugs/run-reading.d.ts +0 -51
- package/dist/app/bugs/store.d.ts +0 -34
- package/dist/app/campaigns/brief.d.ts +0 -7
- package/dist/app/campaigns/campaign.d.ts +0 -14
- package/dist/app/campaigns/index.d.ts +0 -38
- package/dist/app/campaigns/store.d.ts +0 -5
- package/dist/app/campaigns/summary.d.ts +0 -13
- package/dist/app/cleanup/index.d.ts +0 -52
- package/dist/app/db-schema/prepare.d.ts +0 -11
- package/dist/app/db-schema/refresh.d.ts +0 -17
- package/dist/app/db-schema/verify.d.ts +0 -11
- package/dist/app/destroy/index.d.ts +0 -16
- package/dist/app/discover/index.d.ts +0 -8
- package/dist/app/doctor/index.d.ts +0 -17
- package/dist/app/file-selection.d.ts +0 -1
- package/dist/app/inspect/artifacts.d.ts +0 -30
- package/dist/app/inspect/index.d.ts +0 -112
- package/dist/app/lint/index.d.ts +0 -28
- package/dist/app/lint/native.d.ts +0 -10
- package/dist/app/lint/options.d.ts +0 -67
- package/dist/app/lint/policy.d.ts +0 -21
- package/dist/app/lint/rules/data.d.ts +0 -3
- package/dist/app/lint/rules/engine-imports.d.ts +0 -3
- package/dist/app/lint/rules/syntax.d.ts +0 -4
- package/dist/app/lint/rules/unit.d.ts +0 -3
- package/dist/app/lint/shared.d.ts +0 -36
- package/dist/app/package-inspection.d.ts +0 -20
- package/dist/app/run/endpoint-readiness.d.ts +0 -43
- package/dist/app/run/endpoint-readiness.js +0 -1
- package/dist/app/run/engine-evidence-persistence.d.ts +0 -39
- package/dist/app/run/engine-execution-cleanup.d.ts +0 -8
- package/dist/app/run/engine-execution-cleanup.js +0 -1
- package/dist/app/run/engine-execution-failures.d.ts +0 -41
- package/dist/app/run/engine-execution-observer.d.ts +0 -21
- package/dist/app/run/engine-execution-reporting.d.ts +0 -17
- package/dist/app/run/engine-execution.d.ts +0 -63
- package/dist/app/run/engine-failure-stack.d.ts +0 -1
- package/dist/app/run/engine-orchestration.d.ts +0 -49
- package/dist/app/run/failure-details.d.ts +0 -37
- package/dist/app/run/live-run.d.ts +0 -27
- package/dist/app/run/operation-progress.d.ts +0 -13
- package/dist/app/run/orchestrator.d.ts +0 -68
- package/dist/app/run/planning-types.d.ts +0 -68
- package/dist/app/run/planning.d.ts +0 -15
- package/dist/app/run/playwright-configuration.d.ts +0 -2
- package/dist/app/run/playwright-configuration.js +0 -1
- package/dist/app/run/request.d.ts +0 -30
- package/dist/app/run/results.d.ts +0 -161
- package/dist/app/run/run-events.d.ts +0 -144
- package/dist/app/run/run-finalization.d.ts +0 -52
- package/dist/app/run/run-guards.d.ts +0 -3
- package/dist/app/run/runtime-failures.d.ts +0 -18
- package/dist/app/run/runtime-fixtures.d.ts +0 -2
- package/dist/app/run/runtime-task-types.d.ts +0 -20
- package/dist/app/run/scheduler/estimates.d.ts +0 -32
- package/dist/app/run/scheduler/identity.d.ts +0 -9
- package/dist/app/run/scheduler/index.d.ts +0 -124
- package/dist/app/run/scheduler/observations.d.ts +0 -20
- package/dist/app/run/selection.d.ts +0 -10
- package/dist/app/run/setup/runtime-node-setup-errors.d.ts +0 -13
- package/dist/app/run/setup/runtime-node-setup-protocol.d.ts +0 -85
- package/dist/app/run/setup/runtime-node-setup-worker.d.ts +0 -1
- package/dist/app/run/setup/runtime-node-setup.d.ts +0 -48
- package/dist/app/run/task-batches.d.ts +0 -23
- package/dist/app/run/worker-loop.d.ts +0 -57
- package/dist/app/setup/playwright.d.ts +0 -22
- package/dist/app/status/index.d.ts +0 -9
- package/dist/app/status/model.d.ts +0 -29
- package/dist/app/status/runs.d.ts +0 -99
- package/dist/app/stop/index.d.ts +0 -14
- package/dist/app/tracker/index.d.ts +0 -8
- package/dist/app/tracker/remote.d.ts +0 -13
- package/dist/app/tracker/token.d.ts +0 -7
- package/dist/app/typecheck/index.d.ts +0 -63
- package/dist/cli/command-catalog.d.ts +0 -137
- package/dist/cli/command-flags.d.ts +0 -19
- package/dist/cli/command-registry.d.ts +0 -3
- package/dist/cli/commands/artifacts.d.ts +0 -48
- package/dist/cli/commands/bug/file.d.ts +0 -16
- package/dist/cli/commands/bug/guide.d.ts +0 -5
- package/dist/cli/commands/bug/record.d.ts +0 -9
- package/dist/cli/commands/campaign/finish.d.ts +0 -10
- package/dist/cli/commands/campaign/start.d.ts +0 -7
- package/dist/cli/commands/campaign/status.d.ts +0 -13
- package/dist/cli/commands/ci/report.d.ts +0 -15
- package/dist/cli/commands/cleanup.d.ts +0 -13
- package/dist/cli/commands/db/schema/refresh.d.ts +0 -2
- package/dist/cli/commands/db/schema/verify.d.ts +0 -2
- package/dist/cli/commands/destroy.d.ts +0 -9
- package/dist/cli/commands/discover.d.ts +0 -2
- package/dist/cli/commands/doctor.d.ts +0 -2
- package/dist/cli/commands/guard/unsafe-entrypoint.d.ts +0 -2
- package/dist/cli/commands/lint.d.ts +0 -2
- package/dist/cli/commands/run/status.d.ts +0 -5
- package/dist/cli/commands/run/stop.d.ts +0 -7
- package/dist/cli/commands/run.d.ts +0 -9
- package/dist/cli/commands/setup/playwright.d.ts +0 -2
- package/dist/cli/commands/status.d.ts +0 -5
- package/dist/cli/commands/stop.d.ts +0 -12
- package/dist/cli/commands/typecheck.d.ts +0 -2
- package/dist/cli/commands/workspace.d.ts +0 -2
- package/dist/cli/entrypoint.d.ts +0 -1
- package/dist/cli/framework/command.d.ts +0 -21
- package/dist/cli/framework/definitions.d.ts +0 -100
- package/dist/cli/framework/errors.d.ts +0 -6
- package/dist/cli/framework/execute.d.ts +0 -14
- package/dist/cli/framework/help.d.ts +0 -11
- package/dist/cli/framework/index.d.ts +0 -3
- package/dist/cli/framework/parser.d.ts +0 -6
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/json-errors.d.ts +0 -3
- package/dist/cli/operations/db/schema/refresh/operation.d.ts +0 -7
- package/dist/cli/operations/db/schema/verify/operation.d.ts +0 -7
- package/dist/cli/operations/run/operation.d.ts +0 -24
- package/dist/cli/process-signal.d.ts +0 -1
- package/dist/cli/renderers/bug/text.d.ts +0 -8
- package/dist/cli/renderers/campaign/text.d.ts +0 -2
- package/dist/cli/renderers/ci/text.d.ts +0 -2
- package/dist/cli/renderers/cleanup/format.d.ts +0 -14
- package/dist/cli/renderers/db-schema/text.d.ts +0 -4
- package/dist/cli/renderers/destroy/text.d.ts +0 -4
- package/dist/cli/renderers/discover/report.d.ts +0 -7
- package/dist/cli/renderers/discover/text.d.ts +0 -3
- package/dist/cli/renderers/doctor/text.d.ts +0 -2
- package/dist/cli/renderers/lint/text.d.ts +0 -2
- package/dist/cli/renderers/run/events.d.ts +0 -8
- package/dist/cli/renderers/run/failure.d.ts +0 -8
- package/dist/cli/renderers/run/formatting.d.ts +0 -79
- package/dist/cli/renderers/run/status.d.ts +0 -6
- package/dist/cli/renderers/run/text-reporter.d.ts +0 -19
- package/dist/cli/renderers/status/text.d.ts +0 -2
- package/dist/cli/renderers/stop/text.d.ts +0 -7
- package/dist/cli/renderers/typecheck/text.d.ts +0 -2
- package/dist/cli/terminal/colors.d.ts +0 -10
- package/dist/cli/terminal/layout.d.ts +0 -11
- package/dist/cli/version-drift.d.ts +0 -25
- package/dist/config/authoring/build-config-contract.d.ts +0 -27
- package/dist/config/authoring/configured-step-contract.d.ts +0 -18
- package/dist/config/authoring/http-execution-contract.d.ts +0 -70
- package/dist/config/authoring/http-methods.d.ts +0 -18
- package/dist/config/authoring/index.d.ts +0 -381
- package/dist/config/authoring/preset-env.d.ts +0 -19
- package/dist/config/authoring/runtime.d.ts +0 -64
- package/dist/config/loader/bugs.d.ts +0 -15
- package/dist/config/loader/config-loader.d.ts +0 -9
- package/dist/config/loader/database-materialization.d.ts +0 -19
- package/dist/config/loader/database-roles.d.ts +0 -2
- package/dist/config/loader/database.d.ts +0 -55
- package/dist/config/loader/decode-discovery.d.ts +0 -5
- package/dist/config/loader/decode-execution.d.ts +0 -9
- package/dist/config/loader/dependencies.d.ts +0 -7
- package/dist/config/loader/discover-tests.d.ts +0 -111
- package/dist/config/loader/discovery-summary.d.ts +0 -29
- package/dist/config/loader/discovery.d.ts +0 -54
- package/dist/config/loader/env.d.ts +0 -4
- package/dist/config/loader/execution-model.d.ts +0 -16
- package/dist/config/loader/file-metadata.d.ts +0 -19
- package/dist/config/loader/index.d.ts +0 -10
- package/dist/config/loader/load.d.ts +0 -91
- package/dist/config/loader/managed-configs.d.ts +0 -23
- package/dist/config/loader/path-policy.d.ts +0 -9
- package/dist/config/loader/paths.d.ts +0 -5
- package/dist/config/loader/runtime-isolation.d.ts +0 -44
- package/dist/config/loader/runtime.d.ts +0 -25
- package/dist/config/loader/skip-config.d.ts +0 -44
- package/dist/config/loader/test-selection.d.ts +0 -15
- package/dist/config/loader/validation.d.ts +0 -16
- package/dist/config/loader/values.d.ts +0 -4
- package/dist/config/loader/values.js +0 -1
- package/dist/database/activity-gate.d.ts +0 -22
- package/dist/database/admin.d.ts +0 -31
- package/dist/database/cleanup.d.ts +0 -36
- package/dist/database/configured-steps.d.ts +0 -27
- package/dist/database/constants.d.ts +0 -11
- package/dist/database/docker-metadata.d.ts +0 -3
- package/dist/database/docker.d.ts +0 -65
- package/dist/database/drizzle/index.d.ts +0 -13
- package/dist/database/fingerprint.d.ts +0 -12
- package/dist/database/index.d.ts +0 -39
- package/dist/database/lifecycle-cleanup.d.ts +0 -7
- package/dist/database/local-postgres.d.ts +0 -71
- package/dist/database/naming.d.ts +0 -17
- package/dist/database/postgres/index.d.ts +0 -71
- package/dist/database/progress.d.ts +0 -6
- package/dist/database/roles.d.ts +0 -19
- package/dist/database/runtime-config.d.ts +0 -16
- package/dist/database/runtime-reservations.d.ts +0 -19
- package/dist/database/schema-operations.d.ts +0 -18
- package/dist/database/schema-source.d.ts +0 -96
- package/dist/database/source-refresh-lock.d.ts +0 -8
- package/dist/database/source-url.d.ts +0 -22
- package/dist/database/state-files.d.ts +0 -13
- package/dist/database/state.d.ts +0 -26
- package/dist/database/template-steps.d.ts +0 -39
- package/dist/domain/file-timeout.d.ts +0 -28
- package/dist/domain/identifiers.d.ts +0 -9
- package/dist/domain/operation-display.d.ts +0 -10
- package/dist/domain/operation-reason.d.ts +0 -5
- package/dist/domain/postgres-route.d.ts +0 -4
- package/dist/domain/runtime-identity.d.ts +0 -1
- package/dist/domain/runtime-isolation-contract.d.ts +0 -5
- package/dist/domain/service-name.d.ts +0 -2
- package/dist/domain/suite-selection.d.ts +0 -20
- package/dist/domain/test-outcomes.d.ts +0 -3
- package/dist/domain/test-types.d.ts +0 -16
- package/dist/engines/adapters/evidence-files.d.ts +0 -32
- package/dist/engines/adapters/evidence-identity.d.ts +0 -12
- package/dist/engines/adapters/execution.d.ts +0 -42
- package/dist/engines/adapters/native-report.d.ts +0 -25
- package/dist/engines/adapters/node-startup-cache.d.ts +0 -8
- package/dist/engines/adapters/workspace.d.ts +0 -4
- package/dist/engines/api/capabilities.d.ts +0 -31
- package/dist/engines/api/capabilities.js +0 -1
- package/dist/engines/api/evidence.d.ts +0 -38
- package/dist/engines/api/execution-observer.d.ts +0 -8
- package/dist/engines/api/execution-scope.d.ts +0 -17
- package/dist/engines/api/execution.d.ts +0 -101
- package/dist/engines/api/index.d.ts +0 -5
- package/dist/engines/api/k6-runtime-input.d.ts +0 -26
- package/dist/engines/api/k6-runtime-input.js +0 -1
- package/dist/engines/api/runtime-artifact.d.ts +0 -19
- package/dist/engines/bundle-cache.d.ts +0 -32
- package/dist/engines/catalog.d.ts +0 -27
- package/dist/engines/contracts/fixture-manifest.d.ts +0 -34
- package/dist/engines/contracts/json-bounds.d.ts +0 -36
- package/dist/engines/contracts/json-bounds.js +0 -2
- package/dist/engines/contracts/k6-repository-configuration.d.ts +0 -12
- package/dist/engines/contracts/k6-repository-configuration.js +0 -1
- package/dist/engines/contracts/test-context.d.ts +0 -15
- package/dist/engines/contracts/test-context.js +0 -1
- package/dist/engines/definitions.d.ts +0 -22
- package/dist/engines/factory.d.ts +0 -6
- package/dist/engines/generated-performance.d.ts +0 -1
- package/dist/engines/installation-catalog.d.ts +0 -27
- package/dist/engines/installation-catalog.js +0 -1
- package/dist/engines/installations/k6.d.ts +0 -98
- package/dist/engines/installations/k6.js +0 -1
- package/dist/engines/installations/node-vitest.d.ts +0 -33
- package/dist/engines/installations/package-requirements.d.ts +0 -28
- package/dist/engines/installations/package-resolution.d.ts +0 -51
- package/dist/engines/installations/playwright-resolution-child.d.ts +0 -1
- package/dist/engines/installations/playwright.d.ts +0 -75
- package/dist/engines/installations/types.d.ts +0 -10
- package/dist/engines/k6/adapter/bundle.d.ts +0 -25
- package/dist/engines/k6/adapter/bundle.js +0 -112
- package/dist/engines/k6/adapter/evidence.d.ts +0 -15
- package/dist/engines/k6/adapter/evidence.js +0 -4
- package/dist/engines/k6/adapter/executor.d.ts +0 -13
- package/dist/engines/k6/adapter/executor.js +0 -1
- package/dist/engines/k6/adapter/index.d.ts +0 -1
- package/dist/engines/k6/adapter/index.js +0 -1
- package/dist/engines/k6/adapter/input.d.ts +0 -21
- package/dist/engines/k6/adapter/input.js +0 -1
- package/dist/engines/k6/adapter/native-summary.d.ts +0 -11
- package/dist/engines/k6/adapter/native-summary.js +0 -1
- package/dist/engines/k6/adapter/repository-configuration.d.ts +0 -2
- package/dist/engines/k6/adapter/repository-configuration.js +0 -1
- package/dist/engines/k6/authoring-type-paths.d.ts +0 -3
- package/dist/engines/k6/authoring-type-paths.js +0 -1
- package/dist/engines/k6/runtime/ambient-types/bundle-manifest.json +0 -146
- package/dist/engines/k6/runtime/ambient-types/k6/LICENSE +0 -21
- package/dist/engines/k6/runtime/ambient-types/k6/browser/index.d.ts +0 -6332
- package/dist/engines/k6/runtime/ambient-types/k6/crypto/index.d.ts +0 -218
- package/dist/engines/k6/runtime/ambient-types/k6/data/index.d.ts +0 -16
- package/dist/engines/k6/runtime/ambient-types/k6/encoding/index.d.ts +0 -46
- package/dist/engines/k6/runtime/ambient-types/k6/execution/index.d.ts +0 -127
- package/dist/engines/k6/runtime/ambient-types/k6/experimental/csv/index.d.ts +0 -96
- package/dist/engines/k6/runtime/ambient-types/k6/experimental/fs/index.d.ts +0 -104
- package/dist/engines/k6/runtime/ambient-types/k6/experimental/redis/index.d.ts +0 -821
- package/dist/engines/k6/runtime/ambient-types/k6/experimental/streams/index.d.ts +0 -198
- package/dist/engines/k6/runtime/ambient-types/k6/global.d.ts +0 -83
- package/dist/engines/k6/runtime/ambient-types/k6/html/index.d.ts +0 -1325
- package/dist/engines/k6/runtime/ambient-types/k6/http/index.d.ts +0 -806
- package/dist/engines/k6/runtime/ambient-types/k6/index.d.ts +0 -126
- package/dist/engines/k6/runtime/ambient-types/k6/metrics/index.d.ts +0 -66
- package/dist/engines/k6/runtime/ambient-types/k6/net/grpc/index.d.ts +0 -247
- package/dist/engines/k6/runtime/ambient-types/k6/options/index.d.ts +0 -459
- package/dist/engines/k6/runtime/ambient-types/k6/package.json +0 -79
- package/dist/engines/k6/runtime/ambient-types/k6/secrets/index.d.ts +0 -36
- package/dist/engines/k6/runtime/ambient-types/k6/timers/index.d.ts +0 -47
- package/dist/engines/k6/runtime/ambient-types/k6/websockets/index.d.ts +0 -324
- package/dist/engines/k6/runtime/ambient-types/k6/ws/index.d.ts +0 -283
- package/dist/engines/k6/runtime/ambient-types/xk6-sql/LICENSE +0 -201
- package/dist/engines/k6/runtime/ambient-types/xk6-sql/index.d.ts +0 -397
- package/dist/engines/k6/runtime/ambient-types/xk6-sql/package.json +0 -15
- package/dist/engines/k6/runtime/artifacts.d.ts +0 -2
- package/dist/engines/k6/runtime/artifacts.js +0 -1
- package/dist/engines/k6/runtime/checks.d.ts +0 -17
- package/dist/engines/k6/runtime/checks.js +0 -1
- package/dist/engines/k6/runtime/dal-fixtures.d.ts +0 -24
- package/dist/engines/k6/runtime/dal-fixtures.js +0 -1
- package/dist/engines/k6/runtime/dal-suite.d.ts +0 -24
- package/dist/engines/k6/runtime/dal-suite.js +0 -1
- package/dist/engines/k6/runtime/dal.d.ts +0 -10
- package/dist/engines/k6/runtime/dal.js +0 -1
- package/dist/engines/k6/runtime/fixtures.d.ts +0 -3
- package/dist/engines/k6/runtime/fixtures.js +0 -1
- package/dist/engines/k6/runtime/http-assertions.d.ts +0 -19
- package/dist/engines/k6/runtime/http-assertions.js +0 -1
- package/dist/engines/k6/runtime/http-checks.d.ts +0 -19
- package/dist/engines/k6/runtime/http-checks.js +0 -1
- package/dist/engines/k6/runtime/http-suite-runtime.d.ts +0 -103
- package/dist/engines/k6/runtime/http-suite-runtime.js +0 -1
- package/dist/engines/k6/runtime/http.d.ts +0 -15
- package/dist/engines/k6/runtime/http.js +0 -1
- package/dist/engines/k6/runtime/index.d.ts +0 -11
- package/dist/engines/k6/runtime/index.js +0 -1
- package/dist/engines/k6/runtime/input.d.ts +0 -3
- package/dist/engines/k6/runtime/input.js +0 -1
- package/dist/engines/k6/runtime/k6-repository-configuration.d.ts +0 -9
- package/dist/engines/k6/runtime/k6-repository-configuration.js +0 -1
- package/dist/engines/k6/runtime/node-setup.d.ts +0 -13
- package/dist/engines/k6/runtime/node-setup.js +0 -1
- package/dist/engines/k6/runtime/runtime-globals.d.ts +0 -10
- package/dist/engines/k6/runtime/runtime.d.ts +0 -54
- package/dist/engines/k6/runtime/runtime.js +0 -1
- package/dist/engines/k6/runtime/shared/assertion-details.d.ts +0 -19
- package/dist/engines/k6/runtime/shared/assertion-details.js +0 -2
- package/dist/engines/k6/runtime/shared/db-normalization.d.ts +0 -19
- package/dist/engines/k6/runtime/shared/db-normalization.js +0 -1
- package/dist/engines/k6/runtime/shared/error-body.d.ts +0 -3
- package/dist/engines/k6/runtime/shared/error-body.js +0 -1
- package/dist/engines/k6/runtime/shared/file-data.d.ts +0 -1
- package/dist/engines/k6/runtime/shared/file-data.js +0 -1
- package/dist/engines/k6/runtime/shared/fixture-engine.d.ts +0 -8
- package/dist/engines/k6/runtime/shared/fixture-engine.js +0 -2
- package/dist/engines/k6/runtime/shared/http-check-plan.d.ts +0 -29
- package/dist/engines/k6/runtime/shared/http-check-plan.js +0 -1
- package/dist/engines/k6/runtime/shared/http-parsing.d.ts +0 -10
- package/dist/engines/k6/runtime/shared/http-parsing.js +0 -3
- package/dist/engines/k6/runtime/shared/ordering.d.ts +0 -2
- package/dist/engines/k6/runtime/shared/ordering.js +0 -1
- package/dist/engines/k6/runtime/shared/properties.d.ts +0 -1
- package/dist/engines/k6/runtime/shared/properties.js +0 -1
- package/dist/engines/k6/runtime/suite.d.ts +0 -4
- package/dist/engines/k6/runtime/suite.js +0 -1
- package/dist/engines/k6/runtime/types.d.ts +0 -244
- package/dist/engines/k6/runtime/types.js +0 -1
- package/dist/engines/k6/runtime/xk6-sql-driver-postgres.d.ts +0 -7
- package/dist/engines/k6/runtime/xk6-sql-driver-postgres.js +0 -1
- package/dist/engines/managed-module-resolution-policy-input.d.ts +0 -9
- package/dist/engines/managed-module-resolution-policy.d.ts +0 -25
- package/dist/engines/managed-module-resolution.d.ts +0 -13
- package/dist/engines/manager.d.ts +0 -25
- package/dist/engines/node-vitest/adapter/adapter.d.ts +0 -16
- package/dist/engines/node-vitest/adapter/consumer-typescript-paths.d.ts +0 -17
- package/dist/engines/node-vitest/adapter/consumer-typescript-paths.js +0 -3
- package/dist/engines/node-vitest/adapter/evidence.d.ts +0 -33
- package/dist/engines/node-vitest/adapter/failure-details.d.ts +0 -3
- package/dist/engines/node-vitest/adapter/index.d.ts +0 -1
- package/dist/engines/node-vitest/adapter/reporter.d.ts +0 -7
- package/dist/engines/node-vitest/adapter/resolution.d.ts +0 -12
- package/dist/engines/node-vitest/adapter/resolution.js +0 -1
- package/dist/engines/node-vitest/adapter/workspace.d.ts +0 -19
- package/dist/engines/node-vitest/runtime/contract/index.d.ts +0 -64
- package/dist/engines/node-vitest/runtime/data/http.d.ts +0 -4
- package/dist/engines/node-vitest/runtime/data/index.d.ts +0 -8
- package/dist/engines/node-vitest/runtime/data/primitives.d.ts +0 -1
- package/dist/engines/node-vitest/runtime/data/report.d.ts +0 -3
- package/dist/engines/node-vitest/runtime/data/runner.d.ts +0 -4
- package/dist/engines/node-vitest/runtime/data/scenario.d.ts +0 -12
- package/dist/engines/node-vitest/runtime/data/types.d.ts +0 -412
- package/dist/engines/node-vitest/runtime/runtime-input.d.ts +0 -64
- package/dist/engines/playwright/adapter/adapter.d.ts +0 -18
- package/dist/engines/playwright/adapter/attachments.d.ts +0 -26
- package/dist/engines/playwright/adapter/config.d.ts +0 -45
- package/dist/engines/playwright/adapter/evidence-validation.d.ts +0 -12
- package/dist/engines/playwright/adapter/evidence.d.ts +0 -32
- package/dist/engines/playwright/adapter/failure-details.d.ts +0 -2
- package/dist/engines/playwright/adapter/index.d.ts +0 -3
- package/dist/engines/playwright/adapter/reporter.d.ts +0 -12
- package/dist/engines/playwright/runtime/config-file.d.ts +0 -2
- package/dist/engines/playwright/runtime/config.d.ts +0 -24
- package/dist/engines/playwright/runtime/index.d.ts +0 -4
- package/dist/engines/playwright/runtime/runtime-input.d.ts +0 -36
- package/dist/engines/playwright/runtime/sandbox.d.ts +0 -84
- package/dist/engines/runtime-input-file.d.ts +0 -27
- package/dist/environment/lifecycle-artifacts.d.ts +0 -7
- package/dist/environment/lifecycle-controller.d.ts +0 -70
- package/dist/environment/lifecycle.d.ts +0 -29
- package/dist/environment/maintenance.d.ts +0 -68
- package/dist/environment/planning-types.d.ts +0 -35
- package/dist/environment/readiness.d.ts +0 -12
- package/dist/environment/readiness.js +0 -1
- package/dist/environment/ready-environment.d.ts +0 -19
- package/dist/environment/run-environment.d.ts +0 -38
- package/dist/environment/run-stopping.d.ts +0 -13
- package/dist/environment/runtime-contexts.d.ts +0 -33
- package/dist/environment/runtime-manager.d.ts +0 -95
- package/dist/environment/runtime-planning.d.ts +0 -16
- package/dist/environment/runtime-preparation.d.ts +0 -30
- package/dist/environment/runtime-service.d.ts +0 -18
- package/dist/environment/services.d.ts +0 -48
- package/dist/environment/state.d.ts +0 -18
- package/dist/environment/status-runtime.d.ts +0 -53
- package/dist/environment/template.d.ts +0 -180
- package/dist/evidence/artifact-config.d.ts +0 -14
- package/dist/evidence/artifact-validation.d.ts +0 -5
- package/dist/evidence/artifacts.d.ts +0 -75
- package/dist/evidence/bundles.d.ts +0 -27
- package/dist/evidence/ci-provenance.d.ts +0 -9
- package/dist/evidence/contracts.d.ts +0 -154
- package/dist/evidence/file-evidence.d.ts +0 -23
- package/dist/evidence/finalization.d.ts +0 -9
- package/dist/evidence/index.d.ts +0 -8
- package/dist/evidence/logs.d.ts +0 -31
- package/dist/evidence/operation-timings.d.ts +0 -60
- package/dist/evidence/read-bundle.d.ts +0 -4
- package/dist/evidence/read-fields.d.ts +0 -22
- package/dist/evidence/read-provenance.d.ts +0 -2
- package/dist/evidence/read-redaction.d.ts +0 -2
- package/dist/evidence/read-retention.d.ts +0 -2
- package/dist/evidence/read-run.d.ts +0 -2
- package/dist/evidence/reading.d.ts +0 -28
- package/dist/evidence/reporting-types.d.ts +0 -330
- package/dist/evidence/reporting.d.ts +0 -3
- package/dist/evidence/secure-file-copy.d.ts +0 -24
- package/dist/evidence/setup-progress.d.ts +0 -63
- package/dist/evidence/step-output.d.ts +0 -16
- package/dist/evidence/storage-inventory.d.ts +0 -27
- package/dist/evidence/storage.d.ts +0 -27
- package/dist/evidence/timing.d.ts +0 -23
- package/dist/file.d.ts +0 -11
- package/dist/index.d.ts +0 -4
- package/dist/kernel/error-serialization.d.ts +0 -38
- package/dist/kernel/redaction.d.ts +0 -2
- package/dist/kernel/unknown-values.d.ts +0 -6
- package/dist/kernel/work-metrics.d.ts +0 -6
- package/dist/process/capture-output.d.ts +0 -7
- package/dist/process/command-shell.d.ts +0 -1
- package/dist/process/environment-overlay.d.ts +0 -17
- package/dist/process/environment.d.ts +0 -33
- package/dist/process/files/contained-path.d.ts +0 -8
- package/dist/process/files/directory-status.d.ts +0 -14
- package/dist/process/files/dotenv.d.ts +0 -2
- package/dist/process/files/file-snapshot.d.ts +0 -34
- package/dist/process/files/json-file.d.ts +0 -12
- package/dist/process/files/paths.d.ts +0 -1
- package/dist/process/files/product-dir.d.ts +0 -1
- package/dist/process/files/temp-dir.d.ts +0 -11
- package/dist/process/host/metadata.d.ts +0 -6
- package/dist/process/host/platform.d.ts +0 -57
- package/dist/process/host-command.d.ts +0 -4
- package/dist/process/host-inspection-command.d.ts +0 -13
- package/dist/process/host-process.d.ts +0 -19
- package/dist/process/index.d.ts +0 -9
- package/dist/process/lifecycle-fence.d.ts +0 -11
- package/dist/process/locks.d.ts +0 -28
- package/dist/process/process-contracts.d.ts +0 -78
- package/dist/process/process-group.d.ts +0 -12
- package/dist/process/process-identity.d.ts +0 -27
- package/dist/process/process-limits.d.ts +0 -6
- package/dist/process/process.d.ts +0 -12
- package/dist/process/readiness.d.ts +0 -37
- package/dist/process/recovery.d.ts +0 -3
- package/dist/process/runs/inspection.d.ts +0 -5
- package/dist/process/runs/manifest.d.ts +0 -86
- package/dist/process/runs/ownership.d.ts +0 -11
- package/dist/process/runs/product-state.d.ts +0 -2
- package/dist/process/runs/schema.d.ts +0 -3
- package/dist/process/runs/stop.d.ts +0 -19
- package/dist/process/runtime-socket.d.ts +0 -4
- package/dist/process/service-processes.d.ts +0 -13
- package/dist/process/shutdown.d.ts +0 -10
- package/dist/process/windows-cli-owner.d.ts +0 -2
- package/dist/process/windows-native.d.ts +0 -6
- package/dist/process/windows-process-identity.d.ts +0 -4
- package/dist/repo/ci-environment.d.ts +0 -7
- package/dist/repo/fingerprint-policy.d.ts +0 -15
- package/dist/repo/git-path.d.ts +0 -2
- package/dist/repo/history.d.ts +0 -17
- package/dist/repo/managed-git.d.ts +0 -10
- package/dist/repo/metadata.d.ts +0 -3
- package/dist/repo/physical-tree.d.ts +0 -37
- package/dist/repo/remote.d.ts +0 -6
- package/dist/repo/state.d.ts +0 -26
- package/dist/repo/tree-listing.d.ts +0 -10
- package/dist/steps/build-config.d.ts +0 -35
- package/dist/steps/configured-step-testkit-modules.d.ts +0 -19
- package/dist/steps/configured-steps.d.ts +0 -51
- package/dist/steps/environment.d.ts +0 -84
- package/dist/steps/index.d.ts +0 -2
- package/dist/steps/module-runner.d.ts +0 -1
- package/dist/steps/run.d.ts +0 -36
- package/dist/toolchains/archive.d.ts +0 -53
- package/dist/toolchains/esbuild.d.ts +0 -9
- package/dist/toolchains/host-node-support.d.ts +0 -3
- package/dist/toolchains/index.d.ts +0 -114
- package/dist/toolchains/managed-node-releases.d.ts +0 -28
- package/dist/toolchains/node-cache.d.ts +0 -20
- package/dist/toolchains/node-integrity.d.ts +0 -18
- package/dist/toolchains/node-provisioning.d.ts +0 -29
- package/dist/toolchains/semver.d.ts +0 -13
- package/dist/toolchains/shared-operation.d.ts +0 -11
- package/dist/toolchains/timeouts.d.ts +0 -1
- package/dist/toolchains/vitest/index.d.ts +0 -13
- package/dist/tracker/gitea.d.ts +0 -14
- package/dist/tracker/github.d.ts +0 -14
- package/dist/tracker/http.d.ts +0 -33
- package/dist/tracker/index.d.ts +0 -4
- package/dist/tracker/redaction.d.ts +0 -4
- package/dist/tracker/requests.d.ts +0 -17
- package/dist/tracker/responses.d.ts +0 -24
- package/dist/tracker/types.d.ts +0 -51
- package/docs/engine-architecture.md +0 -654
- /package/dist/engines/{k6/runtime/runtime-globals.js → api/profiles.js} +0 -0
package/testkit-config-schema.md
CHANGED
|
@@ -12,13 +12,6 @@ export default defineConfig({
|
|
|
12
12
|
taskConcurrency: 8,
|
|
13
13
|
fileTimeoutSeconds: 60,
|
|
14
14
|
},
|
|
15
|
-
profiles: {
|
|
16
|
-
http: {
|
|
17
|
-
raw: {
|
|
18
|
-
options: { vus: 1, iterations: 1 },
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
15
|
toolchains: {
|
|
23
16
|
frontendNode: toolchain.node({
|
|
24
17
|
cwd: "frontend",
|
|
@@ -30,7 +23,6 @@ export default defineConfig({
|
|
|
30
23
|
api: app.node({
|
|
31
24
|
cwd: ".",
|
|
32
25
|
entry: "src/index.ts",
|
|
33
|
-
port: 3004,
|
|
34
26
|
envFiles: [".env.testkit"],
|
|
35
27
|
database: database.postgres({
|
|
36
28
|
runtimeConnections: 20,
|
|
@@ -50,7 +42,6 @@ export default defineConfig({
|
|
|
50
42
|
frontend: app.next({
|
|
51
43
|
cwd: "frontend",
|
|
52
44
|
mode: "start",
|
|
53
|
-
port: 3000,
|
|
54
45
|
dependsOn: ["api"],
|
|
55
46
|
envFiles: ["frontend/.env.testkit"],
|
|
56
47
|
env: {
|
|
@@ -65,42 +56,55 @@ export default defineConfig({
|
|
|
65
56
|
},
|
|
66
57
|
}),
|
|
67
58
|
},
|
|
59
|
+
groups: {
|
|
60
|
+
api: { roots: ["src"], uses: ["api"] },
|
|
61
|
+
frontend: {
|
|
62
|
+
roots: ["frontend"],
|
|
63
|
+
uses: ["frontend", "api"],
|
|
64
|
+
skip: { suites: [{ selector: "ui:billing", reason: "Billing UI is placeholder-only" }] },
|
|
65
|
+
},
|
|
66
|
+
},
|
|
68
67
|
});
|
|
69
68
|
```
|
|
70
69
|
|
|
71
|
-
Every test file must declare its execution engine.
|
|
72
|
-
|
|
70
|
+
Every typed test file must declare its execution engine. A plain Vitest test
|
|
71
|
+
file declares nothing and runs under the general `node-vitest` profile. The
|
|
72
|
+
file-local metadata of a typed file may also declare skip and lock intent:
|
|
73
73
|
|
|
74
74
|
```ts
|
|
75
75
|
import { defineFile } from "@gfdelarue/testkit";
|
|
76
76
|
|
|
77
77
|
export const testkit = defineFile({
|
|
78
|
-
engine: "
|
|
78
|
+
engine: "node-vitest",
|
|
79
79
|
skip: "Billing is currently unavailable locally",
|
|
80
|
-
locks: ["
|
|
80
|
+
locks: ["payments-sandbox-webhook"],
|
|
81
81
|
});
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
Files that name the same lock never run at the same time within one run. Use a
|
|
85
|
+
lock only for a resource that can't be duplicated, such as the one webhook URL
|
|
86
|
+
of a sandbox account. Tests that share rows need their own rows, not a lock.
|
|
87
|
+
See [Give each test its own data](README.md#give-each-test-its-own-data).
|
|
88
|
+
|
|
84
89
|
The engine is intentionally not a `testkit.config.ts` field and is never
|
|
85
90
|
inferred from the filename. `defineFile` comes only from the root package, the
|
|
86
91
|
argument must be a direct object literal, and `engine` must be one of the
|
|
87
|
-
literal values `"
|
|
92
|
+
literal values `"node-vitest"` or `"playwright"`.
|
|
88
93
|
|
|
89
|
-
The filename suffix determines the test type, and
|
|
90
|
-
|
|
94
|
+
The filename suffix determines the test type, and each engine and test type
|
|
95
|
+
pair runs under exactly one runner profile:
|
|
91
96
|
|
|
92
|
-
| Test type
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
| `
|
|
96
|
-
| `
|
|
97
|
-
| `
|
|
98
|
-
| `ui` | `playwright` | `playwright-ui` |
|
|
97
|
+
| Test type | Engine | Profile |
|
|
98
|
+
| ------------------ | ------------- | ---------------------- |
|
|
99
|
+
| none, a plain file | `node-vitest` | `node-vitest` |
|
|
100
|
+
| `data` | `node-vitest` | `node-vitest-data` |
|
|
101
|
+
| `contract` | `node-vitest` | `node-vitest-contract` |
|
|
102
|
+
| `ui` | `playwright` | `playwright-ui` |
|
|
99
103
|
|
|
100
|
-
|
|
101
|
-
discovery errors. There is no default-engine or legacy-runner compatibility
|
|
102
|
-
path. See [
|
|
103
|
-
|
|
104
|
+
For a typed file, missing metadata, dynamic values, and unsupported
|
|
105
|
+
engine/test-type pairs are discovery errors. There is no default-engine or legacy-runner compatibility
|
|
106
|
+
path. See [Installation](docs/engines.md#installation) for what an install
|
|
107
|
+
contains and the supported platforms.
|
|
104
108
|
|
|
105
109
|
## Tooling Adapters
|
|
106
110
|
|
|
@@ -126,15 +130,14 @@ Default execution settings for the repo.
|
|
|
126
130
|
|
|
127
131
|
`execution.workers` and `presets.nodeNext({ workers })` remain deprecated aliases
|
|
128
132
|
through 0.2.x and will be removed in 0.3.0. Use `taskConcurrency` in new config.
|
|
129
|
-
If both names are present, their values must match.
|
|
130
|
-
contains only `taskConcurrency`.
|
|
133
|
+
If both names are present, their values must match.
|
|
131
134
|
|
|
132
135
|
`--task-concurrency` overrides the configured value. The CLI alias `--workers`
|
|
133
136
|
also remains available through 0.2.x; contradictory CLI aliases are rejected
|
|
134
137
|
before applying CLI precedence. Contradictory config aliases are rejected even
|
|
135
138
|
when the CLI supplies an override.
|
|
136
139
|
|
|
137
|
-
|
|
140
|
+
Run documents keep the configured `run.workers` field. Observed
|
|
138
141
|
`workerCount`, Playwright's own `workers`, `runtime.instances` and
|
|
139
142
|
`runtime.maxConcurrentTasks` keep their existing meanings.
|
|
140
143
|
|
|
@@ -146,15 +149,35 @@ helpers like `waitFor()` consume this budget automatically.
|
|
|
146
149
|
Optional `testkit lint` settings. Omit it to run the default rules.
|
|
147
150
|
|
|
148
151
|
- `rules`: map of rule name to `true`, `false`, or an options object.
|
|
149
|
-
`engineImports`, `configImports`, `dataSuiteContract`, `
|
|
150
|
-
and `uiSpecShape` default to enabled; `unitTestBoundaries` and
|
|
152
|
+
`engineImports`, `configImports`, `dataSuiteContract`, and `uiSpecShape` default to enabled; `unitTestBoundaries` and
|
|
151
153
|
`testkitBoundary` default to disabled.
|
|
152
154
|
- Rule options: `enabled` (default `true`), `include`, `exclude`. `testkitBoundary`
|
|
153
155
|
also accepts `allowed` and `trackedOnly`.
|
|
154
156
|
- `ui`: `maxLines` (default `220`) and `maxTests` (default `8`) for UI suites.
|
|
155
157
|
|
|
156
158
|
Enabled-rule findings and syntax errors fail the command. There are no severity
|
|
157
|
-
levels. The
|
|
159
|
+
levels. The rules report:
|
|
160
|
+
|
|
161
|
+
- `engineImports`: a value import the suite's engine can't load, such as Playwright
|
|
162
|
+
in a contract suite. Type-only imports
|
|
163
|
+
are allowed.
|
|
164
|
+
- `configImports`: `testkit.config.ts` importing a repo-local `__testkit__`
|
|
165
|
+
helper module.
|
|
166
|
+
- `dataSuiteContract`: a data suite that doesn't register its cases through
|
|
167
|
+
`dataScenario` from `@gfdelarue/testkit/node-vitest/data`, registers them
|
|
168
|
+
through Vitest's `test`, `it`, `describe`, `suite`, or `bench`, or records
|
|
169
|
+
only bookkeeping such as `count(...)`, `event(...)`, and `finding(...)`
|
|
170
|
+
without product data-flow evidence such as `http(...)` or `record(...)`.
|
|
171
|
+
- `uiSpecShape`: a UI suite longer than `ui.maxLines` lines or with more than
|
|
172
|
+
`ui.maxTests` tests.
|
|
173
|
+
- `unitTestBoundaries`: test doubles, module replacement, `process.env` reads,
|
|
174
|
+
and network, filesystem, or child-process access in plain `*.test.*` and
|
|
175
|
+
`*.spec.*` files outside `__testkit__`.
|
|
176
|
+
- `testkitBoundary`: a JavaScript, TypeScript, or JSON file with `testkit`, in
|
|
177
|
+
any letter case, in its path, other than the root `testkit.config.ts`,
|
|
178
|
+
`testkit.config.mts`, `testkit.config.mjs`, and `testkit.config.js`, and files
|
|
179
|
+
under `**/__testkit__/**`. `allowed` replaces that list of globs, and
|
|
180
|
+
`trackedOnly` limits the rule to files Git tracks.
|
|
158
181
|
|
|
159
182
|
### `areas`
|
|
160
183
|
|
|
@@ -206,6 +229,35 @@ Optional settings for bug filing and for runs that meet a filed bug.
|
|
|
206
229
|
|
|
207
230
|
[Bug records](docs/bug-records.md) describes the issues Testkit files.
|
|
208
231
|
|
|
232
|
+
### `redact`
|
|
233
|
+
|
|
234
|
+
Optional env key names whose values sealing redacts, beyond the keys that hold
|
|
235
|
+
`PASSWORD`, `TOKEN`, `SECRET`, `PRIVATE_KEY`, `AUTH`, `COOKIE`, `SESSION`, or
|
|
236
|
+
`API_KEY`.
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
export default defineConfig({
|
|
240
|
+
redact: ["STRIPE_SK", "PGPASS"],
|
|
241
|
+
});
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
- Testkit matches each name in any letter case and trims spaces around it.
|
|
245
|
+
- A value under a named key counts from every source a run's environment
|
|
246
|
+
resolves (config `env`, env files, `local.env`, dependency services, `--env`,
|
|
247
|
+
`--env-from`, and an `--environment-file`) and from the environment Testkit
|
|
248
|
+
runs in. It applies the same way to a configured run and a supplied run.
|
|
249
|
+
- A value counts when it is at least eight characters long. A resolved value
|
|
250
|
+
that is a URL counts only for its password. In the environment Testkit runs
|
|
251
|
+
in, such a value counts whole and for its password.
|
|
252
|
+
- `redact` doesn't add text forms. `STRIPE_SK=…` in a log is redacted when its
|
|
253
|
+
value is one Testkit resolved.
|
|
254
|
+
- An entry that isn't a string, or is empty, fails config loading with a
|
|
255
|
+
message that names the entry:
|
|
256
|
+
`testkit.config.ts redact[1] must be a string`.
|
|
257
|
+
|
|
258
|
+
The sealing section of the [README](README.md) describes what else sealing
|
|
259
|
+
redacts.
|
|
260
|
+
|
|
209
261
|
### `ui`
|
|
210
262
|
|
|
211
263
|
Targets for Playwright `ui` files. Read through `createUiSandbox`,
|
|
@@ -224,7 +276,69 @@ runs. The backend falls back to `TESTKIT_BACKEND_BASE_URL` and then
|
|
|
224
276
|
|
|
225
277
|
### `services`
|
|
226
278
|
|
|
227
|
-
Map of service name to service config.
|
|
279
|
+
Map of service name to service config. A service describes what Testkit can
|
|
280
|
+
start. With `groups` set, a service owns no test files.
|
|
281
|
+
|
|
282
|
+
### `groups`
|
|
283
|
+
|
|
284
|
+
Map of group name to the test files the group owns and the services its tests
|
|
285
|
+
use.
|
|
286
|
+
|
|
287
|
+
```ts
|
|
288
|
+
groups: {
|
|
289
|
+
api: { roots: ["services/api"], uses: ["api"] },
|
|
290
|
+
web: { roots: ["apps/web"], uses: ["web", "api"] },
|
|
291
|
+
}
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
- `roots`
|
|
295
|
+
- required non-empty list of repo-relative directories
|
|
296
|
+
- a file belongs to the group with the deepest root that contains it
|
|
297
|
+
- two groups with roots at the same depth leave a file ambiguous, and
|
|
298
|
+
`testkit discover` reports `ambiguous_test`
|
|
299
|
+
- `uses`
|
|
300
|
+
- ordered list of service names; defaults to `[]`
|
|
301
|
+
- a run starts these services and their `dependsOn` for the group's files,
|
|
302
|
+
and starts no other service
|
|
303
|
+
- when two used services set the same name, such as `BASE_URL`,
|
|
304
|
+
`DATABASE_URL`, or an `env` entry, the first in `uses` wins
|
|
305
|
+
- tests read each used service's URL and database by its name with
|
|
306
|
+
`endpoint()` and `database()` from `@gfdelarue/testkit/environment`
|
|
307
|
+
- the group's default URL and database are also available by the group's
|
|
308
|
+
name; a group named after a used service whose value is not the default
|
|
309
|
+
gets no values, and its files end as an infrastructure failure
|
|
310
|
+
- a dependency starts but gives the group no values; a used service can pass
|
|
311
|
+
one on, for example with `{serviceContextUrl:api}` in its `env`
|
|
312
|
+
- `exclude`
|
|
313
|
+
- repo-relative paths the group does not own; a file that every group
|
|
314
|
+
containing it excludes is dropped, plain Vitest test files included
|
|
315
|
+
- `skip`, `requirements`
|
|
316
|
+
- test policy for the group's files, with the shapes described under
|
|
317
|
+
[Service Fields](#service-fields)
|
|
318
|
+
- `runtimeIsolation`
|
|
319
|
+
- `shared` or `resetBefore` for the group's files, or an object with a
|
|
320
|
+
`default` policy and `suites` and `files` rules; see
|
|
321
|
+
[`runtimeIsolation`](#runtimeisolation)
|
|
322
|
+
|
|
323
|
+
Files that no group's roots claim belong to the implicit group `root`, which
|
|
324
|
+
uses no service. `root` is reserved. With no `testkit.config.ts`, every file
|
|
325
|
+
belongs to `root`, and `groups: {}` gives every file to `root`.
|
|
326
|
+
|
|
327
|
+
With `groups` set, Testkit ignores a service's `discovery` and rejects a
|
|
328
|
+
service's `skip`, `requirements`, or `runtimeIsolation` with a message naming
|
|
329
|
+
the group field to use.
|
|
330
|
+
|
|
331
|
+
#### Legacy ownership
|
|
332
|
+
|
|
333
|
+
A config with `services` and no `groups` key uses legacy ownership. Each
|
|
334
|
+
service is a group of the same name that uses that service. It owns the typed
|
|
335
|
+
`*.testkit.ts` files under its `local.cwd` and `discovery.roots`, and its
|
|
336
|
+
`skip`, `requirements`, and `runtimeIsolation` apply to them. A typed file
|
|
337
|
+
outside every service root belongs to `root`. Legacy ownership never claims a
|
|
338
|
+
plain Vitest test file; those belong to `root` unless declared groups claim
|
|
339
|
+
them. When legacy ownership gives a
|
|
340
|
+
file to a service, Testkit prints a notice on stderr. Legacy ownership will be
|
|
341
|
+
removed; declare `groups` instead.
|
|
228
342
|
|
|
229
343
|
### `toolchains`
|
|
230
344
|
|
|
@@ -247,12 +361,11 @@ Node toolchain fields:
|
|
|
247
361
|
- explicit npm version or range
|
|
248
362
|
|
|
249
363
|
`cwd` must be product-relative and may not contain a parent-directory segment.
|
|
250
|
-
For `install: "download"`,
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
host before fetching or creating cache state.
|
|
364
|
+
For `install: "download"`, Testkit downloads only the official Node releases
|
|
365
|
+
it lists for the platform, verifies each download, and caches it under the
|
|
366
|
+
repo-local `.testkit/_toolchains/node`. A cache entry that changed after
|
|
367
|
+
installation fails verification. The official Linux archives require glibc, so
|
|
368
|
+
download mode fails on a musl host before downloading anything.
|
|
256
369
|
|
|
257
370
|
`detect: "auto"` checks the toolchain cwd for:
|
|
258
371
|
|
|
@@ -267,30 +380,11 @@ host before fetching or creating cache state.
|
|
|
267
380
|
|
|
268
381
|
### `profiles.http`
|
|
269
382
|
|
|
270
|
-
Named HTTP profiles
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
When a run selects k6, every repository HTTP profile must be JSON-only,
|
|
274
|
-
including profiles used only by Node/Vitest suites. The orchestrator serializes
|
|
275
|
-
the whole collection into a versioned engine input, so any profile containing
|
|
276
|
-
a function fails configuration validation. Put k6 setup and header functions in the suite
|
|
277
|
-
module through `defineHttpSuite({ auth, headers, rawHeaders })`, or in a
|
|
278
|
-
shared `__testkit__/helpers/` module the suites import.
|
|
279
|
-
|
|
280
|
-
```ts
|
|
281
|
-
profiles: {
|
|
282
|
-
http: {
|
|
283
|
-
raw: {
|
|
284
|
-
options: { vus: 1, iterations: 1 },
|
|
285
|
-
},
|
|
286
|
-
},
|
|
287
|
-
}
|
|
383
|
+
Named HTTP profiles for Node/Vitest data suites, selected through
|
|
384
|
+
`flow.http({ profile })`.
|
|
288
385
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
For runs without k6, Node/Vitest data profiles load in-process and may carry `auth`,
|
|
293
|
-
`headers`, and `rawHeaders` functions. `auth.setup` or `auth.setupAsync`
|
|
386
|
+
Node/Vitest data profiles may carry `auth`, `headers`, and
|
|
387
|
+
`rawHeaders` functions. `auth.setup` or `auth.setupAsync`
|
|
294
388
|
returns a session bundle of named actors; `headers` maps the bundle and the
|
|
295
389
|
requested actor to request headers.
|
|
296
390
|
|
|
@@ -324,9 +418,8 @@ profiles: {
|
|
|
324
418
|
|
|
325
419
|
Repository profile setup data is typed as `unknown`. The example gives its
|
|
326
420
|
test-owned setup result a name and uses that type in the corresponding header
|
|
327
|
-
builder.
|
|
328
|
-
|
|
329
|
-
`flow.http({ profile: "default", auth: { setupAsync, headers } })` instead.
|
|
421
|
+
builder. Suite-specific functions can also be passed through
|
|
422
|
+
`flow.http({ profile: "default", auth: { setupAsync, headers } })`.
|
|
330
423
|
|
|
331
424
|
## Service Fields
|
|
332
425
|
|
|
@@ -336,41 +429,95 @@ Local runtime configuration.
|
|
|
336
429
|
|
|
337
430
|
- `start`
|
|
338
431
|
- `cwd`
|
|
339
|
-
- `port`
|
|
340
432
|
- `baseUrl`
|
|
341
433
|
- `readyUrl`
|
|
342
434
|
- `readyTimeoutMs`
|
|
343
435
|
- `shutdownTimeoutMs`
|
|
344
436
|
- `env`
|
|
345
437
|
|
|
438
|
+
#### Readiness
|
|
439
|
+
|
|
440
|
+
A local service starts and must then be ready before `readyTimeoutMs` runs out.
|
|
441
|
+
The default is 120000 ms. Tests receive nothing from the service until then.
|
|
442
|
+
|
|
443
|
+
- With a `readyUrl`, the service is ready when that URL returns a 2xx status,
|
|
444
|
+
after up to 20 redirects. `app.node` defaults `readyUrl` to `{baseUrl}/health`,
|
|
445
|
+
and `app.next` defaults it to `baseUrl`.
|
|
446
|
+
- `baseUrl` must also answer HTTP, unless the `readyUrl` has the same origin.
|
|
447
|
+
Any response counts, including a 4xx or 5xx status. A port that accepts
|
|
448
|
+
connections but does not answer HTTP does not count.
|
|
449
|
+
- `readyUrl: false` removes the 2xx check. Testkit still waits for `baseUrl` to
|
|
450
|
+
answer HTTP.
|
|
451
|
+
- A process with no HTTP endpoint, such as a worker or a queue consumer, declares
|
|
452
|
+
no `baseUrl`. It is ready once it has started. Testkit hands its groups no URL
|
|
453
|
+
for it, and `{baseUrl:<service>}` fails to resolve.
|
|
454
|
+
|
|
455
|
+
```ts
|
|
456
|
+
services: {
|
|
457
|
+
worker: { local: { start: "node worker.mjs" } },
|
|
458
|
+
},
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
`app.node` and `app.next` always set a `baseUrl`, so declare a process without
|
|
462
|
+
an HTTP endpoint with `local` directly.
|
|
463
|
+
|
|
346
464
|
`services.<name>.local.shutdownTimeoutMs` is an optional positive finite integer
|
|
347
465
|
in milliseconds. It sets how long a launched local service may take to exit
|
|
348
466
|
after Testkit requests shutdown before Testkit force-kills it. Omitted or
|
|
349
467
|
`undefined` values use the 1000 ms process-launch default. Strings, zero,
|
|
350
468
|
negative numbers, fractions, `NaN`, and infinities are rejected.
|
|
351
469
|
|
|
352
|
-
On POSIX, Testkit
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
during startup. It does not change engine, build-command, or database timeouts.
|
|
470
|
+
On POSIX, Testkit asks the service and its descendants to stop, and
|
|
471
|
+
force-kills any that are still running when the allowance expires. Repeated
|
|
472
|
+
stop requests and cancellation keep the first deadline. The allowance also
|
|
473
|
+
applies to cleanup after a readiness failure or a cancellation during startup.
|
|
474
|
+
It doesn't change engine, build-command, or database timeouts.
|
|
358
475
|
|
|
359
476
|
`stop`, `run stop`, active `cleanup`, and `destroy` wait for the recorded service
|
|
360
|
-
allowances before
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
`app.
|
|
477
|
+
allowances before they force an unresponsive run to stop. Recovery uses the
|
|
478
|
+
allowance recorded when the service launched, less any shutdown time already
|
|
479
|
+
spent.
|
|
480
|
+
|
|
481
|
+
Both `app.node({ shutdownTimeoutMs: 5000 })` and
|
|
482
|
+
`app.next({ shutdownTimeoutMs: 5000 })` place the option under `local`.
|
|
483
|
+
|
|
484
|
+
#### Ports
|
|
485
|
+
|
|
486
|
+
Testkit asks the OS for a free port for each service in each runtime instance,
|
|
487
|
+
on `127.0.0.1` and, when the host has IPv6, on `::1`. The service receives the
|
|
488
|
+
port as `PORT` and as `{port}`. A `baseUrl` must use `{port}`, or
|
|
489
|
+
`{port:<its own name>}`, as its port, for example `http://127.0.0.1:{port}`.
|
|
490
|
+
`app.node` and `app.next` default to that `baseUrl`.
|
|
491
|
+
|
|
492
|
+
`local.port`, the `port` option of `app.node` and `app.next`, and a literal port
|
|
493
|
+
in `baseUrl` or `readyUrl` are config errors. The error names the service and
|
|
494
|
+
the key. Delete the setting and use `{port}`. Testkit has no setting that pins
|
|
495
|
+
a service to a fixed port.
|
|
496
|
+
|
|
497
|
+
If a service exits before it becomes ready, Testkit starts it again on a fresh
|
|
498
|
+
port, never one the service already tried. A service that already started and
|
|
499
|
+
whose `start`, env, `readyUrl`, or `runtime.prepare` steps name the moved
|
|
500
|
+
service is stopped and started again with the new value, and the
|
|
501
|
+
`runtime.prepare` steps of every service that hasn't started yet run again
|
|
502
|
+
first. Each service gets three attempts in total. After the third, the run fails
|
|
503
|
+
as an infrastructure failure whose error lists each attempt's port and exit
|
|
504
|
+
status and the last attempt's output. A startup that fails another way after an
|
|
505
|
+
earlier attempt, such as a readiness timeout, also lists every port tried.
|
|
506
|
+
|
|
507
|
+
A `runtime.prepare` step whose environment or command includes a service URL or
|
|
508
|
+
port, such as a Next build that embeds `NEXT_PUBLIC_API_URL: "{baseUrl:api}"`,
|
|
509
|
+
sees a new port on every run, so its fingerprint changes and it rebuilds. Pass
|
|
510
|
+
such values at start time when the build should be cached.
|
|
511
|
+
|
|
512
|
+
`run.json` records each service's starts under `environment.services` as they
|
|
513
|
+
happen, with its `runtimeLabel`, `serviceName`, `baseUrl`, `readyUrl`, `port`,
|
|
514
|
+
and each attempt's port and outcome. `baseUrl` and `readyUrl` are `null` when the
|
|
515
|
+
service declares none. A run whose startup fails keeps the
|
|
516
|
+
attempts it made, and a service restarted for a moved peer shows both starts.
|
|
517
|
+
The recorded URLs drop credentials, query values, and fragments, so
|
|
518
|
+
`http://127.0.0.1:41234/health?apiKey=x` is stored as
|
|
519
|
+
`http://127.0.0.1:41234/health?apiKey=<redacted>`. `testkit status` lists the
|
|
520
|
+
ports of active runs.
|
|
374
521
|
|
|
375
522
|
Template tokens are supported in strings:
|
|
376
523
|
|
|
@@ -398,6 +545,11 @@ the service. Plain services take a string record. `app.node(...)` and
|
|
|
398
545
|
`app.next(...)` take `{ values, databases }` and place the result under
|
|
399
546
|
`local.env`; `local.env` overrides `env` when both set a name.
|
|
400
547
|
|
|
548
|
+
Tasks never receive a value under a name that a source schema in their runtime
|
|
549
|
+
reads: `TESTKIT_SCHEMA_SOURCE_DATABASE_URL`, any service's
|
|
550
|
+
`TESTKIT_<SERVICE>_SCHEMA_SOURCE_DATABASE_URL`, or a name passed to
|
|
551
|
+
`database.schema.fromEnv()`. Service processes still receive it.
|
|
552
|
+
|
|
401
553
|
Values support the template tokens listed under [`local`](#local), including
|
|
402
554
|
the database tokens:
|
|
403
555
|
|
|
@@ -420,9 +572,8 @@ that run. A repeated run never sees a previous run's connection details.
|
|
|
420
572
|
|
|
421
573
|
Database tokens resolve only in `env` and `local.env` values. Testkit rejects
|
|
422
574
|
them at config load in `local.start`, `local.cwd`, `runtime.prepare`, and
|
|
423
|
-
`database.template` strings,
|
|
424
|
-
|
|
425
|
-
declared env entry at run time instead.
|
|
575
|
+
`database.template` strings, which resolve before any database exists. Commands
|
|
576
|
+
read `DATABASE_URL` or a declared env entry at run time instead.
|
|
426
577
|
|
|
427
578
|
Source-schema discovery fails when the env entry it reads as the source URL
|
|
428
579
|
points at the service's own database. A source schema has to come from a
|
|
@@ -443,30 +594,49 @@ to the matching `{db*:api}` token. `env.values` entries override expanded names.
|
|
|
443
594
|
### `envFile` / `envFiles`
|
|
444
595
|
|
|
445
596
|
Optional extra env files loaded into the declared service/task environment for
|
|
446
|
-
migrations, seeds, services, and every execution engine.
|
|
447
|
-
through `__ENV`; Node/Vitest data and contract contexts expose them through
|
|
597
|
+
migrations, seeds, services, and every execution engine. Node/Vitest data and contract contexts expose task values through
|
|
448
598
|
immutable `context.env`; and managed Playwright contexts expose them through
|
|
449
599
|
`readPlaywrightContext().env`. Direct managed-Node `process.env.KEY` reads are a
|
|
450
600
|
non-enumerable compatibility overlay, not the consumer-input contract.
|
|
451
601
|
|
|
602
|
+
Testkit reads a service's env files only when a selected group uses the service
|
|
603
|
+
or a used service depends on it. Loading the config reads none of them, so a
|
|
604
|
+
missing or unreadable file of an unused service changes nothing. A missing file
|
|
605
|
+
is skipped.
|
|
606
|
+
|
|
607
|
+
Without `envFile` or `envFiles`, a service uses whichever of these exist, in
|
|
608
|
+
this order: `<local.cwd>/.env.testkit`, `<local.cwd>/.env`, `.env.testkit`, and
|
|
609
|
+
`.env`. With them, it uses `envFile` and then each `envFiles` entry. A later file
|
|
610
|
+
overrides an earlier one, `env` overrides every file, and `local.env` overrides
|
|
611
|
+
`env`. A group that uses several services takes each name from the first service
|
|
612
|
+
in its `uses` that sets it.
|
|
613
|
+
|
|
614
|
+
A service that declares only `env`, `envFile`, or `envFiles` starts nothing, and
|
|
615
|
+
neither does a `dependsOn` edge between such services. Their groups get the
|
|
616
|
+
values, and the config's `ui` settings, with no runtime slot, build, database,
|
|
617
|
+
server, or teardown. Without a
|
|
618
|
+
running service, their values can use only `{service}`, `{stateDir}`,
|
|
619
|
+
`{productDir}`, `{lease}`, `{leaseDir}`, `{bin}`, and `{pathList}`. Any other
|
|
620
|
+
token, such as `{runtime}`, `{prepareDir}`, `{port}`, or `{dbUrl}`, fails the
|
|
621
|
+
group's tasks with an infrastructure failure that names the token.
|
|
622
|
+
|
|
452
623
|
Environment names are validated case-insensitively. All engines reserve
|
|
453
624
|
`APPDATA`, `ComSpec`, `HOME`, `LANG`, `LC_ALL`, `LOCALAPPDATA`, `PATH`, `PATHEXT`,
|
|
454
625
|
`SystemRoot`, `TEMP`, `TMP`, `TMPDIR`, `USERPROFILE`, `XDG_CACHE_HOME`,
|
|
455
626
|
`XDG_CONFIG_HOME`, and `XDG_DATA_HOME`. Engine-specific reservations and limits
|
|
456
627
|
are:
|
|
457
628
|
|
|
458
|
-
| Engine | Additional reservations
|
|
459
|
-
| ------------- |
|
|
460
|
-
| `
|
|
461
|
-
| `
|
|
462
|
-
| `playwright` | prefixes `TESTKIT_`, `PLAYWRIGHT_`, `PWTEST_`, `PW_TEST_`; exact keys `BASE_URL`, `FORCE_COLOR`, `NODE_OPTIONS`, `NO_COLOR` | 512 entries; 2 MiB of UTF-8 key/value data |
|
|
629
|
+
| Engine | Additional reservations | Consumer environment limit |
|
|
630
|
+
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
|
|
631
|
+
| `node-vitest` | exact keys `BASE_URL`, `FORCE_COLOR`, `NODE_OPTIONS`, `NO_COLOR`, `UPDATE_SNAPSHOT`, `VITEST_POOL_ID`, `VITEST_WORKER_ID`, and the `TESTKIT_` keys it sets | 512 entries; 4 MiB of UTF-8 key/value data |
|
|
632
|
+
| `playwright` | prefixes `TESTKIT_`, `PLAYWRIGHT_`, `PWTEST_`, `PW_TEST_`; exact keys `BASE_URL`, `FORCE_COLOR`, `NODE_OPTIONS`, `NO_COLOR` | 512 entries; 2 MiB of UTF-8 key/value data |
|
|
463
633
|
|
|
464
634
|
Empty names, names containing `=` or NUL, values containing NUL, and
|
|
465
635
|
case-variant duplicates are rejected. The limits apply after env files and
|
|
466
|
-
configured service/runtime values have been merged.
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
636
|
+
configured service/runtime values have been merged.
|
|
637
|
+
[Environment](docs/engines.md#environment) lists the `TESTKIT_` keys Node/Vitest
|
|
638
|
+
sets and the limits on all of a test's inputs together. Node/Vitest passes other
|
|
639
|
+
`TESTKIT_` and `VITEST_` keys through, such as `TESTKIT_REQUIRE_COMPLETE_SUITE`.
|
|
470
640
|
|
|
471
641
|
### `database`
|
|
472
642
|
|
|
@@ -486,6 +656,19 @@ materialize the database as host-local Docker Postgres.
|
|
|
486
656
|
- `template.verify`
|
|
487
657
|
|
|
488
658
|
`binding` may be `shared` or `per-runtime`.
|
|
659
|
+
|
|
660
|
+
`reset` defaults to `true`. Each time Testkit sets up a runtime instance, it
|
|
661
|
+
drops that instance's database and clones it again from the cached template,
|
|
662
|
+
so every run starts from the template's state. A run sets up an instance the
|
|
663
|
+
first time a test needs it. If a failure invalidates the instance, such as an
|
|
664
|
+
infrastructure failure or a setup cleanup that throws, Testkit sets it up again
|
|
665
|
+
before the next test uses it. Between setups, every test on the instance uses
|
|
666
|
+
the same database.
|
|
667
|
+
With `binding: "shared"`, every runtime instance uses one database. Testkit
|
|
668
|
+
resets it once per run, when the first instance sets it up.
|
|
669
|
+
`reset: false` keeps the runtime database from the previous run, with every row
|
|
670
|
+
that earlier runs wrote, until the template changes.
|
|
671
|
+
|
|
489
672
|
`runtimeConnections` is the service runtime slot's Postgres connection budget.
|
|
490
673
|
`maxConnections` and `reservedConnections` describe the backing host-local
|
|
491
674
|
Postgres capacity used for scheduler admission.
|
|
@@ -496,10 +679,9 @@ Template stages are ordered arrays of typed step objects:
|
|
|
496
679
|
- `{ kind: "sql-file", path: "db/schema.sql" }`
|
|
497
680
|
- `{ kind: "module", target: "src/testkit/verify-seed.ts#verifySeed" }`
|
|
498
681
|
|
|
499
|
-
Local files and ordinary external packages are valid module targets.
|
|
500
|
-
`@gfdelarue/testkit`
|
|
501
|
-
|
|
502
|
-
is executed.
|
|
682
|
+
Local files and ordinary external packages are valid module targets. An
|
|
683
|
+
unsupported or private `@gfdelarue/testkit` target fails when the config loads,
|
|
684
|
+
before any step runs.
|
|
503
685
|
|
|
504
686
|
`verify` runs after template migrate/seed and must succeed before the template DB
|
|
505
687
|
is cached for reuse.
|
|
@@ -543,19 +725,21 @@ existing role unchanged and rolls back any roles created in the same operation.
|
|
|
543
725
|
Existing object grants and ownership remain untouched. Setup evidence records
|
|
544
726
|
the prerequisite operation, including created or reused roles and conflicts.
|
|
545
727
|
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
PostgreSQL volume removes its roles, and the next provisioning creates the
|
|
554
|
-
declared roles again.
|
|
728
|
+
Changing role names or configured template inputs rebuilds the template. Role
|
|
729
|
+
order doesn't count as a change, but editing the config file, even to reorder
|
|
730
|
+
roles, can still rebuild it, because the file is part of the repository. Roles
|
|
731
|
+
persist when templates are rebuilt, replay fails, service caches are removed, or
|
|
732
|
+
declarations are removed. Removing a declaration stops ensuring that role.
|
|
733
|
+
Destroying the owned PostgreSQL volume removes its roles, and the next
|
|
734
|
+
provisioning creates the declared roles again.
|
|
555
735
|
|
|
556
736
|
### `databaseFrom`
|
|
557
737
|
|
|
558
|
-
|
|
738
|
+
Use another service's database. The service gets the database that the named
|
|
739
|
+
service provisioned in the same runtime instance, as `DATABASE_URL` and in
|
|
740
|
+
`{dbUrl}` and the other database placeholders. List the named service in
|
|
741
|
+
`dependsOn` so that it runs in the same runtime. A service cannot declare both
|
|
742
|
+
`database` and `databaseFrom`.
|
|
559
743
|
|
|
560
744
|
### `runtime`
|
|
561
745
|
|
|
@@ -577,14 +761,14 @@ When configured, `testkit` applies the resolved toolchain to:
|
|
|
577
761
|
- `runtime.prepare` command/module steps
|
|
578
762
|
- local service `start` commands
|
|
579
763
|
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
versions.
|
|
764
|
+
Changing the resolved Node or npm version invalidates prepared artifacts, so
|
|
765
|
+
`runtime.prepare` runs again.
|
|
583
766
|
|
|
584
767
|
### `skip`
|
|
585
768
|
|
|
586
|
-
|
|
587
|
-
|
|
769
|
+
Skip rules for a group's files, set as `groups.<name>.skip`. Under legacy
|
|
770
|
+
ownership a service's `skip` applies to the files it owns. Skipped files remain
|
|
771
|
+
visible in run artifacts with `status: "skipped"` and the configured reason.
|
|
588
772
|
|
|
589
773
|
Prefer file-local `export const testkit = defineFile({ ... })` metadata
|
|
590
774
|
for per-file skips and locks. Repo-level `skip` is mainly for broad suite-level
|
|
@@ -594,7 +778,7 @@ policy.
|
|
|
594
778
|
skip: {
|
|
595
779
|
files: [
|
|
596
780
|
{
|
|
597
|
-
path: "__testkit__/billing/billing.
|
|
781
|
+
path: "__testkit__/billing/billing.contract.testkit.ts",
|
|
598
782
|
reason: "Billing is currently unavailable",
|
|
599
783
|
},
|
|
600
784
|
],
|
|
@@ -612,7 +796,7 @@ skip: {
|
|
|
612
796
|
- `files[].reason`
|
|
613
797
|
- required non-empty explanation recorded in artifacts
|
|
614
798
|
- `suites[].selector`
|
|
615
|
-
- existing suite selector syntax, including typed selectors like `
|
|
799
|
+
- existing suite selector syntax, including typed selectors like `contract:health`
|
|
616
800
|
and `ui:billing`
|
|
617
801
|
- `suites[].reason`
|
|
618
802
|
- required non-empty explanation recorded in artifacts
|
|
@@ -654,24 +838,30 @@ runtime: {
|
|
|
654
838
|
|
|
655
839
|
### `requirements`
|
|
656
840
|
|
|
657
|
-
|
|
841
|
+
Task lock rules for a group's files, set as `groups.<name>.requirements`. Under
|
|
842
|
+
legacy ownership a service's `requirements` apply to the files it owns.
|
|
658
843
|
|
|
659
844
|
```ts
|
|
660
845
|
requirements: {
|
|
661
846
|
suites: [
|
|
662
|
-
{ selector: "
|
|
847
|
+
{ selector: "contract:payments", locks: ["payments-sandbox-webhook"] },
|
|
663
848
|
],
|
|
664
849
|
files: [
|
|
665
850
|
{
|
|
666
|
-
path: "src/api/routes/__testkit__/
|
|
667
|
-
locks: ["
|
|
851
|
+
path: "src/api/routes/__testkit__/payout-webhook.contract.testkit.ts",
|
|
852
|
+
locks: ["payments-sandbox-webhook"],
|
|
668
853
|
},
|
|
669
854
|
],
|
|
670
855
|
}
|
|
671
856
|
```
|
|
672
857
|
|
|
858
|
+
Files that need the same lock never run at the same time within one run.
|
|
859
|
+
Testkit holds locks for one run only, so two runs, such as two CI jobs, don't
|
|
860
|
+
wait for each other. Use a lock for a resource that can't be duplicated, never
|
|
861
|
+
for tests that share rows.
|
|
862
|
+
|
|
673
863
|
- `suites[].selector`
|
|
674
|
-
- typed selector like `
|
|
864
|
+
- typed selector like `contract:health` or `ui:billing`
|
|
675
865
|
- `suites[].locks`
|
|
676
866
|
- named locks required by matching files
|
|
677
867
|
- `files[].path`
|
|
@@ -679,6 +869,62 @@ requirements: {
|
|
|
679
869
|
- `files[].locks`
|
|
680
870
|
- named locks required by that file
|
|
681
871
|
|
|
872
|
+
### `runtimeIsolation`
|
|
873
|
+
|
|
874
|
+
What a group's files share with each other in a run, set as
|
|
875
|
+
`groups.<name>.runtimeIsolation`. Under legacy ownership a service's
|
|
876
|
+
`runtimeIsolation` applies to the files it owns. A file can set its own with
|
|
877
|
+
`defineFile({ runtimeIsolation: "resetBefore" })`.
|
|
878
|
+
|
|
879
|
+
```ts
|
|
880
|
+
runtimeIsolation: {
|
|
881
|
+
default: "shared",
|
|
882
|
+
suites: [{ selector: "contract:migrations", policy: "resetBefore" }],
|
|
883
|
+
files: [{ path: "__testkit__/orders/purge.contract.testkit.ts", policy: "resetBefore" }],
|
|
884
|
+
}
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
A string sets the policy for every file, as in `runtimeIsolation: "resetBefore"`.
|
|
888
|
+
A file's `defineFile` policy wins over a `files` rule, which wins over a
|
|
889
|
+
`suites` rule, which wins over `default`. The default is `shared`.
|
|
890
|
+
|
|
891
|
+
- `shared`
|
|
892
|
+
- files on the same runtime instance share its services and its database for
|
|
893
|
+
the whole run
|
|
894
|
+
- each run starts from a database freshly cloned from the template, unless
|
|
895
|
+
`database.reset` is `false`, but within a run every file sees the rows that
|
|
896
|
+
other files wrote
|
|
897
|
+
- a test creates the rows it needs and filters by them, so rows from other
|
|
898
|
+
files don't change its result
|
|
899
|
+
- `resetBefore`
|
|
900
|
+
- before the file runs, Testkit clones each database it provisions that the
|
|
901
|
+
file's environment reaches, from the template that database came from; that
|
|
902
|
+
includes a database a used service names in its env, such as
|
|
903
|
+
`{dbUrl:audit}`
|
|
904
|
+
- the file's `.setup.*` module, `database()`, `DATABASE_URL`, and
|
|
905
|
+
`{dbUrl}`-style values in the group's service env all point at the clone
|
|
906
|
+
- Testkit drops the clone when the file finishes; if that fails, the end of
|
|
907
|
+
the run drops it, and the clone of a run that died is dropped when the next
|
|
908
|
+
run sets up that runtime
|
|
909
|
+
- use it for a test that changes a whole table or schema, such as an
|
|
910
|
+
unfiltered `DELETE` or a migration test
|
|
911
|
+
- a file whose environment reaches no database that Testkit provisions,
|
|
912
|
+
including every file run on supplied values, ends as an environment failure
|
|
913
|
+
|
|
914
|
+
`resetBefore` isolates only the test's own database access. The group's
|
|
915
|
+
services keep running against the runtime's database, so a request the test
|
|
916
|
+
sends to an API server reads and writes the shared database, not the clone.
|
|
917
|
+
When the server's writes must be isolated too, give the test its own group
|
|
918
|
+
whose `uses` names a second service entry for the same server, for example an
|
|
919
|
+
`api-isolated` service declared with the same options as `api`. Groups that use
|
|
920
|
+
the same services share their runtimes, so a separate group alone doesn't give
|
|
921
|
+
the test its own server. The second entry gets its own runtime, server, and
|
|
922
|
+
database, which the files in that group still share.
|
|
923
|
+
|
|
924
|
+
`resetAfter` and `exclusive` were removed. A config or `defineFile` that sets
|
|
925
|
+
either fails to load with a message that names the replacement: `resetBefore`
|
|
926
|
+
on the file that needs a clean database, or `shared` with test-owned rows.
|
|
927
|
+
|
|
682
928
|
## Config Surface
|
|
683
929
|
|
|
684
930
|
`@gfdelarue/testkit/config` exports:
|
|
@@ -690,43 +936,38 @@ requirements: {
|
|
|
690
936
|
- `database.fixture(...)`
|
|
691
937
|
- `toolchain.node(...)`
|
|
692
938
|
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
- `defineHttpSuite(...)`
|
|
696
|
-
- `defineDalSuite(...)`
|
|
697
|
-
- `defineDalFixtures(...)`
|
|
939
|
+
## Discovery Conventions
|
|
698
940
|
|
|
699
|
-
|
|
700
|
-
`
|
|
941
|
+
Plain Vitest test files are the files the repository's own Vitest config
|
|
942
|
+
selects, as `vitest run` lists them from the product directory:
|
|
701
943
|
|
|
702
|
-
- `
|
|
703
|
-
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
- `
|
|
707
|
-
-
|
|
708
|
-
- `records()`
|
|
944
|
+
- the root `vitest.config.*` or `vite.config.*`, or the file
|
|
945
|
+
`--vitest-config` names, and its projects; without a config, Vitest's
|
|
946
|
+
defaults, which match `**/*.{test,spec}.?(c|m)[jt]s?(x)` outside
|
|
947
|
+
`node_modules` and `.git`
|
|
948
|
+
- narrowed only by `discovery.exclude` and a declared group's `exclude`
|
|
949
|
+
- owned by the group whose roots contain them, or by `root`
|
|
709
950
|
|
|
710
|
-
|
|
951
|
+
`--vitest-runner managed` lists them with Testkit's own Vitest and its default
|
|
952
|
+
rules instead, without the repository's config.
|
|
711
953
|
|
|
712
|
-
|
|
954
|
+
Typed suites are discovered from the filesystem:
|
|
713
955
|
|
|
714
956
|
- only files inside `__testkit__/`
|
|
715
|
-
-
|
|
716
|
-
|
|
957
|
+
- a file belongs to the group with the deepest matching root in
|
|
958
|
+
`groups.<name>.roots`
|
|
959
|
+
- files that no group claims belong to the implicit group `root`
|
|
960
|
+
- under legacy ownership, service groups take their roots from `local.cwd` and
|
|
961
|
+
`discovery.roots`
|
|
717
962
|
|
|
718
963
|
Supported suffixes:
|
|
719
964
|
|
|
720
|
-
- `*.int.testkit.ts`
|
|
721
|
-
- `*.e2e.testkit.ts`
|
|
722
965
|
- `*.contract.testkit.ts`
|
|
723
966
|
- `*.data.testkit.ts`
|
|
724
|
-
- `*.dal.testkit.ts`
|
|
725
|
-
- `*.load.testkit.ts`
|
|
726
967
|
- `*.ui.testkit.ts`
|
|
727
968
|
|
|
728
|
-
Every discovered file must also export `defineFile({ engine: "..." })`
|
|
729
|
-
root package. The suffix supplies `testType`; the required engine declaration
|
|
969
|
+
Every discovered typed file must also export `defineFile({ engine: "..." })`
|
|
970
|
+
from the root package. The suffix supplies `testType`; the required engine declaration
|
|
730
971
|
supplies `engineId`; and Testkit derives `profileId` from the catalog. None of
|
|
731
972
|
those identities are silently rewritten later in the run.
|
|
732
973
|
|
|
@@ -749,30 +990,34 @@ type.
|
|
|
749
990
|
|
|
750
991
|
Examples:
|
|
751
992
|
|
|
752
|
-
- `src/api/routes/__testkit__/auth/me.
|
|
993
|
+
- `src/api/routes/__testkit__/auth/me.contract.testkit.ts`
|
|
753
994
|
- `src/api/routes/__testkit__/runtime.contract.testkit.ts`
|
|
754
995
|
- `src/api/routes/__testkit__/agent-flow.data.testkit.ts`
|
|
755
|
-
- `src/db/__testkit__/sessions/count-type.
|
|
996
|
+
- `src/db/__testkit__/sessions/count-type.contract.testkit.ts`
|
|
756
997
|
- `frontend/__testkit__/navigation/navigation.ui.testkit.ts`
|
|
757
998
|
|
|
758
999
|
`testkit discover` exposes that inventory directly without running suites:
|
|
759
1000
|
|
|
760
1001
|
- `testkit discover`
|
|
761
|
-
- compact human output grouped by
|
|
1002
|
+
- compact human output grouped by group, type, and suite
|
|
762
1003
|
- `testkit discover --output-mode verbose`
|
|
763
|
-
- includes canonical paths, IDs, locks,
|
|
1004
|
+
- includes group roots and uses, canonical paths, IDs, locks, and skip reasons
|
|
764
1005
|
- `testkit discover --json`
|
|
765
1006
|
- returns a machine-readable document with stable field names and enums
|
|
766
1007
|
- `testkit discover --output .testkit/discovery.json`
|
|
767
1008
|
- writes that same machine-readable document to disk
|
|
768
1009
|
|
|
769
1010
|
The discovery JSON/API surface is exported from `@gfdelarue/testkit/workspace`.
|
|
770
|
-
|
|
1011
|
+
The document has `schemaVersion: 10`. Its `groups` list holds each group's
|
|
1012
|
+
`name`, `roots`, `uses`, `source` (`groups`, `services`, or `implicit`), and
|
|
1013
|
+
file and suite counts. Each file entry includes canonical machine fields such
|
|
1014
|
+
as:
|
|
771
1015
|
|
|
772
1016
|
- `id`
|
|
773
1017
|
- `path`
|
|
774
|
-
- `
|
|
1018
|
+
- `group`
|
|
775
1019
|
- `suiteName`
|
|
1020
|
+
- `suiteLabel`
|
|
776
1021
|
- `testType`
|
|
777
1022
|
- `engineId`
|
|
778
1023
|
- `profileId`
|
|
@@ -780,20 +1025,7 @@ Each file entry includes canonical machine fields such as:
|
|
|
780
1025
|
- `skipped`
|
|
781
1026
|
- `skipReason`
|
|
782
1027
|
- `locks`
|
|
783
|
-
- `
|
|
1028
|
+
- `runtimeIsolation`
|
|
784
1029
|
|
|
785
1030
|
Human-friendly labels such as `displayName` are additive. They are intended for
|
|
786
1031
|
compact CLI output and should not be treated as the only identifier.
|
|
787
|
-
|
|
788
|
-
`testkit` also persists a lightweight history index at
|
|
789
|
-
`.testkit/history/tests.json`. Discovery surfaces may expose:
|
|
790
|
-
|
|
791
|
-
- `firstSeenAt`
|
|
792
|
-
- `lastSeenAt`
|
|
793
|
-
- `lastRunAt`
|
|
794
|
-
- `runCount`
|
|
795
|
-
- `passCount`
|
|
796
|
-
- `failCount`
|
|
797
|
-
- `skipCount`
|
|
798
|
-
- `avgDurationMs`
|
|
799
|
-
- `lastStatus`
|