@gfdelarue/testkit 0.4.5 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +724 -495
- package/bin/testkit-windows-owner-arm64.exe +0 -0
- package/bin/testkit-windows-owner-x64.exe +0 -0
- package/dist/app/bugs/ci-report.js +2 -2
- package/dist/app/bugs/ci-summary.js +3 -3
- package/dist/app/bugs/draft.js +3 -3
- 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 +1 -1
- 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/campaigns/index.js +2 -2
- 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 -1
- 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 -1
- 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 -1
- package/dist/app/environments/task-databases.js +2 -0
- 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/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/reports/prepare.js +1 -1
- package/dist/app/run/caller-redaction.js +1 -0
- 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 -1
- 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/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/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/worker-loop.js +1 -1
- package/dist/app/status/model.js +1 -1
- package/dist/app/status/runs.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/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/guard/unsafe-entrypoint.js +1 -1
- 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/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/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/database-fixture-discovery.js +1 -0
- package/dist/config/authoring/http-methods.js +1 -1
- package/dist/config/authoring/index.js +1 -1
- package/dist/config/loader/config-loader.js +1 -1
- package/dist/config/loader/decode-discovery.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/file-metadata.js +1 -1
- package/dist/config/loader/groups.js +2 -1
- 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/admin.js +2 -2
- package/dist/database/bindings.js +1 -0
- package/dist/database/cleanup.js +1 -1
- package/dist/database/configured-steps.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/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/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/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-types.js +1 -1
- package/dist/engines/adapters/evidence-files.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.js +1 -1
- package/dist/engines/api/index.js +1 -1
- package/dist/engines/api/runtime-artifact.js +1 -1
- package/dist/engines/catalog.js +1 -1
- package/dist/engines/contracts/environment-values.js +1 -0
- 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.js +1 -1
- package/dist/engines/managed-module-resolution.js +8 -4
- 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 +17 -195
- 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/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 +3 -3
- 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/managed-test.js +1 -0
- package/dist/engines/playwright/runtime/runtime-input.js +29 -10
- package/dist/engines/runtime-input-file.js +1 -1
- package/dist/environment/lifecycle-controller.js +1 -1
- package/dist/environment/lifecycle.js +1 -1
- 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 -3
- package/dist/environment/template.js +1 -1
- package/dist/evidence/artifact-config.js +1 -1
- package/dist/evidence/artifacts.js +2 -2
- package/dist/evidence/bundles.js +1 -1
- package/dist/evidence/environment-record.js +1 -1
- package/dist/evidence/index.js +1 -1
- package/dist/evidence/maintenance.js +1 -0
- 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/known-keys.js +1 -0
- 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/host/platform.js +1 -1
- package/dist/process/host-process.js +1 -1
- package/dist/process/index.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.js +32 -32
- package/dist/process/readiness.js +1 -1
- package/dist/process/ready-deadline.js +1 -0
- package/dist/process/runs/ownership.js +1 -1
- package/dist/process/runs/stop.js +1 -1
- package/dist/process/service-processes.js +1 -1
- package/dist/process/windows-cli-owner.js +3 -3
- package/dist/process/windows-native.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/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/toolchains/index.js +3 -3
- 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 +422 -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 +46 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/node-vitest-data.d.ts +191 -0
- package/dist/types/playwright.d.ts +130 -0
- package/dist/types/tooling-vitest.d.ts +13 -0
- package/dist/types/workspace.d.ts +633 -0
- package/docs/bug-records.md +35 -40
- package/docs/engines.md +259 -0
- package/docs/release-notes.md +2116 -0
- package/docs/test-types.md +37 -85
- package/package.json +22 -32
- package/testkit-config-schema.md +391 -260
- 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 -49
- 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/environments/config-driven.d.ts +0 -5
- package/dist/app/environments/routing.d.ts +0 -6
- package/dist/app/environments/supplied.d.ts +0 -3
- 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 -66
- package/dist/app/lint/policy.d.ts +0 -21
- package/dist/app/lint/rules/data.d.ts +0 -3
- package/dist/app/lint/rules/data.js +0 -1
- 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 -34
- package/dist/app/package-inspection.d.ts +0 -20
- package/dist/app/reports/files.d.ts +0 -13
- package/dist/app/reports/prepare.d.ts +0 -20
- package/dist/app/reports/publish.d.ts +0 -21
- 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 -65
- package/dist/app/run/engine-failure-stack.d.ts +0 -1
- package/dist/app/run/engine-orchestration.d.ts +0 -30
- package/dist/app/run/environment.d.ts +0 -33
- package/dist/app/run/failure-details.d.ts +0 -37
- package/dist/app/run/live-run.d.ts +0 -29
- package/dist/app/run/operation-progress.d.ts +0 -13
- package/dist/app/run/orchestrator.d.ts +0 -75
- package/dist/app/run/planning-types.d.ts +0 -68
- package/dist/app/run/planning.d.ts +0 -14
- 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 -56
- 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/locks.d.ts +0 -6
- package/dist/app/run/scheduler/observations.d.ts +0 -20
- package/dist/app/run/selection.d.ts +0 -9
- 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/task-leases.d.ts +0 -15
- package/dist/app/run/worker-loop.d.ts +0 -66
- 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 -13
- 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 -156
- 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/report/prepare.d.ts +0 -12
- package/dist/cli/commands/report/publish.d.ts +0 -13
- 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 -26
- 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 -372
- package/dist/config/authoring/preset-env.d.ts +0 -19
- package/dist/config/authoring/runtime.d.ts +0 -64
- package/dist/config/authoring/runtime.js +0 -1
- 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 -7
- 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 -53
- package/dist/config/loader/env.d.ts +0 -4
- package/dist/config/loader/execution-model.d.ts +0 -15
- package/dist/config/loader/file-metadata.d.ts +0 -19
- package/dist/config/loader/groups.d.ts +0 -33
- package/dist/config/loader/index.d.ts +0 -10
- package/dist/config/loader/load.d.ts +0 -89
- 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 -16
- 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 -15
- package/dist/config/loader/values.d.ts +0 -3
- 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 -8
- 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 -21
- 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 -25
- 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 -2
- 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 -41
- 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 -21
- 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 -23
- 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 -8
- 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/contract/index.js +0 -1
- package/dist/engines/node-vitest/runtime/data/http.d.ts +0 -4
- package/dist/engines/node-vitest/runtime/data/http.js +0 -1
- 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/runner.js +0 -1
- package/dist/engines/node-vitest/runtime/data/scenario.d.ts +0 -11
- package/dist/engines/node-vitest/runtime/data/types.d.ts +0 -384
- 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 -9
- 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 -60
- package/dist/environment/lifecycle.d.ts +0 -32
- package/dist/environment/maintenance.d.ts +0 -68
- package/dist/environment/planning-types.d.ts +0 -33
- package/dist/environment/ports.d.ts +0 -10
- package/dist/environment/ready-environment.d.ts +0 -16
- package/dist/environment/run-environment.d.ts +0 -39
- package/dist/environment/run-stopping.d.ts +0 -13
- package/dist/environment/runtime-contexts.d.ts +0 -37
- package/dist/environment/runtime-manager.d.ts +0 -87
- 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 -12
- package/dist/environment/services.d.ts +0 -56
- package/dist/environment/state.d.ts +0 -15
- package/dist/environment/status-runtime.d.ts +0 -53
- package/dist/environment/template.d.ts +0 -164
- package/dist/evidence/artifact-config.d.ts +0 -14
- package/dist/evidence/artifact-validation.d.ts +0 -4
- 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/environment-record.d.ts +0 -22
- 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 -21
- 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 -349
- 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 -25
- 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 -40
- package/dist/kernel/redaction.d.ts +0 -2
- package/dist/kernel/unknown-values.d.ts +0 -11
- 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 -11
- package/dist/process/files/paths.d.ts +0 -3
- 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 -10
- 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 -43
- 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/stoppable-settlement.d.ts +0 -26
- package/dist/process/url-redaction.d.ts +0 -1
- package/dist/process/windows-cli-owner.d.ts +0 -2
- package/dist/process/windows-native.d.ts +0 -12
- 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 -13
- 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/publish-directory.d.ts +0 -20
- 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 -34
- 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 -82
- 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 -682
- /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",
|
|
@@ -63,42 +56,53 @@ export default defineConfig({
|
|
|
63
56
|
},
|
|
64
57
|
}),
|
|
65
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
|
+
},
|
|
66
67
|
});
|
|
67
68
|
```
|
|
68
69
|
|
|
69
|
-
Every test file must declare its execution engine.
|
|
70
|
-
|
|
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:
|
|
71
73
|
|
|
72
74
|
```ts
|
|
73
75
|
import { defineFile } from "@gfdelarue/testkit";
|
|
74
76
|
|
|
75
77
|
export const testkit = defineFile({
|
|
76
|
-
engine: "
|
|
78
|
+
engine: "node-vitest",
|
|
77
79
|
skip: "Billing is currently unavailable locally",
|
|
78
|
-
locks: ["
|
|
80
|
+
locks: ["payments-sandbox-webhook"],
|
|
79
81
|
});
|
|
80
82
|
```
|
|
81
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
|
+
|
|
82
89
|
The engine is intentionally not a `testkit.config.ts` field and is never
|
|
83
90
|
inferred from the filename. `defineFile` comes only from the root package, the
|
|
84
91
|
argument must be a direct object literal, and `engine` must be one of the
|
|
85
|
-
literal values `"
|
|
92
|
+
literal values `"node-vitest"` or `"playwright"`.
|
|
86
93
|
|
|
87
|
-
The filename suffix determines the test type, and
|
|
88
|
-
|
|
94
|
+
The filename suffix determines the test type, and each engine and test type
|
|
95
|
+
pair runs under exactly one runner profile:
|
|
89
96
|
|
|
90
|
-
| Test type
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
| `
|
|
94
|
-
| `data` | `node-vitest` | `node-vitest-data` |
|
|
95
|
-
| `contract` | `node-vitest` | `node-vitest-contract` |
|
|
96
|
-
| `ui` | `playwright` | `playwright-ui` |
|
|
97
|
+
| Test type | Engine | Profile |
|
|
98
|
+
| ------------------ | ------------- | --------------- |
|
|
99
|
+
| none, a plain file | `node-vitest` | `node-vitest` |
|
|
100
|
+
| `ui` | `playwright` | `playwright-ui` |
|
|
97
101
|
|
|
98
|
-
|
|
99
|
-
discovery errors. There is no default-engine or legacy-runner compatibility
|
|
100
|
-
path. See [
|
|
101
|
-
|
|
102
|
+
For a typed file, missing metadata, dynamic values, and unsupported
|
|
103
|
+
engine/test-type pairs are discovery errors. There is no default-engine or legacy-runner compatibility
|
|
104
|
+
path. See [Installation](docs/engines.md#installation) for what an install
|
|
105
|
+
contains and the supported platforms.
|
|
102
106
|
|
|
103
107
|
## Tooling Adapters
|
|
104
108
|
|
|
@@ -115,24 +119,32 @@ runtime-policy modules under `src/` just to cooperate with managed runs.
|
|
|
115
119
|
|
|
116
120
|
## Top-Level Fields
|
|
117
121
|
|
|
122
|
+
The top-level keys are `areas`, `artifacts`, `bugs`, `discovery`, `execution`,
|
|
123
|
+
`fingerprints`, `groups`, `lint`, `redact`, `services`, `toolchains`, and `ui`.
|
|
124
|
+
Testkit refuses a config with any other top-level key. The error names the key
|
|
125
|
+
and the closest known key when one is close.
|
|
126
|
+
|
|
118
127
|
### `execution`
|
|
119
128
|
|
|
120
129
|
Default execution settings for the repo.
|
|
121
130
|
|
|
122
|
-
- `taskConcurrency`: maximum concurrent test tasks across the run (default `1`)
|
|
131
|
+
- `taskConcurrency`: maximum concurrent test tasks across the run (default `1`).
|
|
132
|
+
A typed file, a batch of typed files, or one Vitest invocation of plain files
|
|
133
|
+
is one task. Plain files in one invocation run with Vitest's file
|
|
134
|
+
parallelism, which the Vitest config's `fileParallelism` and `maxWorkers`
|
|
135
|
+
control.
|
|
123
136
|
- `fileTimeoutSeconds`
|
|
124
137
|
|
|
125
|
-
`execution.workers` and `presets.nodeNext({ workers })`
|
|
126
|
-
|
|
127
|
-
If both names are present, their values must match.
|
|
128
|
-
contains only `taskConcurrency`.
|
|
138
|
+
`execution.workers` and `presets.nodeNext({ workers })` are deprecated aliases.
|
|
139
|
+
Use `taskConcurrency` in new config.
|
|
140
|
+
If both names are present, their values must match.
|
|
129
141
|
|
|
130
|
-
`--task-concurrency` overrides the configured value. The CLI alias
|
|
131
|
-
also
|
|
132
|
-
|
|
142
|
+
`--task-concurrency` overrides the configured value. The deprecated CLI alias
|
|
143
|
+
`--workers` also works; contradictory CLI aliases are rejected before applying
|
|
144
|
+
CLI precedence. Contradictory config aliases are rejected even
|
|
133
145
|
when the CLI supplies an override.
|
|
134
146
|
|
|
135
|
-
|
|
147
|
+
Run documents keep the configured `run.workers` field. Observed
|
|
136
148
|
`workerCount`, Playwright's own `workers`, `runtime.instances` and
|
|
137
149
|
`runtime.maxConcurrentTasks` keep their existing meanings.
|
|
138
150
|
|
|
@@ -144,15 +156,31 @@ helpers like `waitFor()` consume this budget automatically.
|
|
|
144
156
|
Optional `testkit lint` settings. Omit it to run the default rules.
|
|
145
157
|
|
|
146
158
|
- `rules`: map of rule name to `true`, `false`, or an options object.
|
|
147
|
-
`engineImports`, `configImports`, `
|
|
148
|
-
|
|
149
|
-
`
|
|
159
|
+
`engineImports`, `configImports`, and `uiSpecShape` default to enabled; `unitTestBoundaries` and
|
|
160
|
+
`testkitBoundary` default to disabled. `dataSuiteContract` was removed in
|
|
161
|
+
0.6.0, and `testkit lint` rejects a config that sets it.
|
|
150
162
|
- Rule options: `enabled` (default `true`), `include`, `exclude`. `testkitBoundary`
|
|
151
163
|
also accepts `allowed` and `trackedOnly`.
|
|
152
164
|
- `ui`: `maxLines` (default `220`) and `maxTests` (default `8`) for UI suites.
|
|
153
165
|
|
|
154
166
|
Enabled-rule findings and syntax errors fail the command. There are no severity
|
|
155
|
-
levels. The
|
|
167
|
+
levels. The rules report:
|
|
168
|
+
|
|
169
|
+
- `engineImports`: a value import the suite's engine can't load, such as Vitest
|
|
170
|
+
in a UI suite. Type-only imports
|
|
171
|
+
are allowed.
|
|
172
|
+
- `configImports`: `testkit.config.ts` importing a repo-local `__testkit__`
|
|
173
|
+
helper module.
|
|
174
|
+
- `uiSpecShape`: a UI suite longer than `ui.maxLines` lines or with more than
|
|
175
|
+
`ui.maxTests` tests.
|
|
176
|
+
- `unitTestBoundaries`: test doubles, module replacement, `process.env` reads,
|
|
177
|
+
and network, filesystem, or child-process access in plain `*.test.*` and
|
|
178
|
+
`*.spec.*` files outside `__testkit__`.
|
|
179
|
+
- `testkitBoundary`: a JavaScript, TypeScript, or JSON file with `testkit`, in
|
|
180
|
+
any letter case, in its path, other than the root `testkit.config.ts`,
|
|
181
|
+
`testkit.config.mts`, `testkit.config.mjs`, and `testkit.config.js`, and files
|
|
182
|
+
under `**/__testkit__/**`. `allowed` replaces that list of globs, and
|
|
183
|
+
`trackedOnly` limits the rule to files Git tracks.
|
|
156
184
|
|
|
157
185
|
### `areas`
|
|
158
186
|
|
|
@@ -204,6 +232,35 @@ Optional settings for bug filing and for runs that meet a filed bug.
|
|
|
204
232
|
|
|
205
233
|
[Bug records](docs/bug-records.md) describes the issues Testkit files.
|
|
206
234
|
|
|
235
|
+
### `redact`
|
|
236
|
+
|
|
237
|
+
Optional env key names whose values sealing redacts, beyond the keys that hold
|
|
238
|
+
`PASSWORD`, `TOKEN`, `SECRET`, `PRIVATE_KEY`, `AUTH`, `COOKIE`, `SESSION`, or
|
|
239
|
+
`API_KEY`.
|
|
240
|
+
|
|
241
|
+
```ts
|
|
242
|
+
export default defineConfig({
|
|
243
|
+
redact: ["STRIPE_SK", "PGPASS"],
|
|
244
|
+
});
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
- Testkit matches each name in any letter case and trims spaces around it.
|
|
248
|
+
- A value under a named key counts from every source a run's environment
|
|
249
|
+
resolves (config `env`, env files, `local.env`, dependency services, `--env`,
|
|
250
|
+
`--env-from`, and an `--environment-file`) and from the environment Testkit
|
|
251
|
+
runs in. It applies the same way to a configured run and a supplied run.
|
|
252
|
+
- A value counts when it is at least eight characters long. A resolved value
|
|
253
|
+
that is a URL counts only for its password. In the environment Testkit runs
|
|
254
|
+
in, such a value counts whole and for its password.
|
|
255
|
+
- `redact` doesn't add text forms. `STRIPE_SK=…` in a log is redacted when its
|
|
256
|
+
value is one Testkit resolved.
|
|
257
|
+
- An entry that isn't a string, or is empty, fails config loading with a
|
|
258
|
+
message that names the entry:
|
|
259
|
+
`testkit.config.ts redact[1] must be a string`.
|
|
260
|
+
|
|
261
|
+
The sealing section of the [README](README.md) describes what else sealing
|
|
262
|
+
redacts.
|
|
263
|
+
|
|
207
264
|
### `ui`
|
|
208
265
|
|
|
209
266
|
Targets for Playwright `ui` files. Read through `createUiSandbox`,
|
|
@@ -222,7 +279,69 @@ runs. The backend falls back to `TESTKIT_BACKEND_BASE_URL` and then
|
|
|
222
279
|
|
|
223
280
|
### `services`
|
|
224
281
|
|
|
225
|
-
Map of service name to service config.
|
|
282
|
+
Map of service name to service config. A service describes what Testkit can
|
|
283
|
+
start. It owns no test files; [`groups`](#groups) assigns them.
|
|
284
|
+
|
|
285
|
+
### `groups`
|
|
286
|
+
|
|
287
|
+
Map of group name to the test files the group owns and the services its tests
|
|
288
|
+
use.
|
|
289
|
+
|
|
290
|
+
```ts
|
|
291
|
+
groups: {
|
|
292
|
+
api: { roots: ["services/api"], uses: ["api"] },
|
|
293
|
+
web: { roots: ["apps/web"], uses: ["web", "api"] },
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
- `roots`
|
|
298
|
+
- required non-empty list of repo-relative directories
|
|
299
|
+
- a file belongs to the group with the deepest root that contains it
|
|
300
|
+
- two groups with roots at the same depth leave a file ambiguous, and
|
|
301
|
+
`testkit discover` reports `ambiguous_test`
|
|
302
|
+
- `uses`
|
|
303
|
+
- ordered list of service names; defaults to `[]`
|
|
304
|
+
- a run starts these services and their `dependsOn` for the group's files,
|
|
305
|
+
and starts no other service
|
|
306
|
+
- when two used services set the same name, such as `BASE_URL`,
|
|
307
|
+
`DATABASE_URL`, or an `env` entry, the first in `uses` wins
|
|
308
|
+
- tests read each used service's URL and database by its name with
|
|
309
|
+
`endpoint()` and `database()` from `@gfdelarue/testkit/environment`
|
|
310
|
+
- the group's default URL and database are also available by the group's
|
|
311
|
+
name; a group named after a used service whose value is not the default
|
|
312
|
+
gets no values, and its files end as an infrastructure failure
|
|
313
|
+
- a dependency starts but gives the group no values; a used service can pass
|
|
314
|
+
one on, for example with `{serviceContextUrl:api}` in its `env`
|
|
315
|
+
- `exclude`
|
|
316
|
+
- repo-relative paths the group does not own; a file that every group
|
|
317
|
+
containing it excludes is dropped, plain Vitest test files included
|
|
318
|
+
- `skip`, `requirements`
|
|
319
|
+
- test policy for the group's files, with the shapes described under
|
|
320
|
+
[Service Fields](#service-fields)
|
|
321
|
+
- `runtimeIsolation`
|
|
322
|
+
- `shared` or `resetBefore` for the group's files, or an object with a
|
|
323
|
+
`default` policy and `suites` and `files` rules; see
|
|
324
|
+
[`runtimeIsolation`](#runtimeisolation)
|
|
325
|
+
|
|
326
|
+
Files that no group's roots claim belong to the implicit group `root`, which
|
|
327
|
+
uses no service. `root` is reserved. With no `testkit.config.ts`, every file
|
|
328
|
+
belongs to `root`, and `groups: {}` gives every file to `root`.
|
|
329
|
+
|
|
330
|
+
Testkit assigns no files by a service's `discovery`. With `groups` set, it
|
|
331
|
+
rejects a service's `discovery`, `skip`, `requirements`, or `runtimeIsolation`
|
|
332
|
+
with a message naming the group field to use. The `discovery` that
|
|
333
|
+
`database.fixture()` adds by default is the exception.
|
|
334
|
+
|
|
335
|
+
#### Configs without `groups`
|
|
336
|
+
|
|
337
|
+
Before 0.6.0, a config with `services` and no `groups` key gave each service
|
|
338
|
+
the typed `*.testkit.ts` files under its `local.cwd` and `discovery.roots`. Such
|
|
339
|
+
a config now fails to load when a service's directories hold a typed file. The
|
|
340
|
+
error lists a `groups` entry for each of those services, with its `roots`,
|
|
341
|
+
`uses`, and any `exclude`, so the files keep their services. `status`,
|
|
342
|
+
`destroy`, `cleanup`, and `db schema` still run on such a config. A group also
|
|
343
|
+
owns the plain Vitest files under its roots, which a service never did. When no
|
|
344
|
+
service's directories hold a typed file, every file belongs to `root`.
|
|
226
345
|
|
|
227
346
|
### `toolchains`
|
|
228
347
|
|
|
@@ -245,12 +364,11 @@ Node toolchain fields:
|
|
|
245
364
|
- explicit npm version or range
|
|
246
365
|
|
|
247
366
|
`cwd` must be product-relative and may not contain a parent-directory segment.
|
|
248
|
-
For `install: "download"`,
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
host before fetching or creating cache state.
|
|
367
|
+
For `install: "download"`, Testkit downloads only the official Node releases
|
|
368
|
+
it lists for the platform, verifies each download, and caches it under the
|
|
369
|
+
repo-local `.testkit/_toolchains/node`. A cache entry that changed after
|
|
370
|
+
installation fails verification. The official Linux archives require glibc, so
|
|
371
|
+
download mode fails on a musl host before downloading anything.
|
|
254
372
|
|
|
255
373
|
`detect: "auto"` checks the toolchain cwd for:
|
|
256
374
|
|
|
@@ -263,68 +381,12 @@ host before fetching or creating cache state.
|
|
|
263
381
|
- `package.json#packageManager`
|
|
264
382
|
- `package.json#engines.npm`
|
|
265
383
|
|
|
266
|
-
### `profiles
|
|
384
|
+
### `profiles`
|
|
267
385
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
including profiles used only by Node/Vitest suites. The orchestrator serializes
|
|
273
|
-
the whole collection into a versioned engine input, so any profile containing
|
|
274
|
-
a function fails configuration validation. Put k6 setup and header functions in the suite
|
|
275
|
-
module through `defineHttpSuite({ auth, headers, rawHeaders })`, or in a
|
|
276
|
-
shared `__testkit__/helpers/` module the suites import.
|
|
277
|
-
|
|
278
|
-
```ts
|
|
279
|
-
profiles: {
|
|
280
|
-
http: {
|
|
281
|
-
raw: {
|
|
282
|
-
options: { vus: 1, iterations: 1 },
|
|
283
|
-
},
|
|
284
|
-
},
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
defineHttpSuite({ profile: "raw" }, ...)
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
For runs without k6, Node/Vitest data profiles load in-process and may carry `auth`,
|
|
291
|
-
`headers`, and `rawHeaders` functions. `auth.setup` or `auth.setupAsync`
|
|
292
|
-
returns a session bundle of named actors; `headers` maps the bundle and the
|
|
293
|
-
requested actor to request headers.
|
|
294
|
-
|
|
295
|
-
```ts
|
|
296
|
-
interface SessionBundle {
|
|
297
|
-
actors: Record<string, { session: { jwt: string } }>;
|
|
298
|
-
primaryActor: string;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
profiles: {
|
|
302
|
-
http: {
|
|
303
|
-
default: {
|
|
304
|
-
auth: {
|
|
305
|
-
async setupAsync({ env, http }): Promise<SessionBundle> {
|
|
306
|
-
const login = await http.post(`${env.BASE}/api/v1/auth/login`, body);
|
|
307
|
-
const jwt = login.cookies?.session?.[0]?.value;
|
|
308
|
-
if (!jwt) throw new Error("Login response did not set the session cookie");
|
|
309
|
-
return { actors: { primary: { session: { jwt } } }, primaryActor: "primary" };
|
|
310
|
-
},
|
|
311
|
-
headers(setupData): Record<string, string> {
|
|
312
|
-
const bundle = setupData as SessionBundle | null;
|
|
313
|
-
return bundle
|
|
314
|
-
? { Authorization: `Bearer ${bundle.actors[bundle.primaryActor].session.jwt}` }
|
|
315
|
-
: {};
|
|
316
|
-
},
|
|
317
|
-
},
|
|
318
|
-
},
|
|
319
|
-
},
|
|
320
|
-
}
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
Repository profile setup data is typed as `unknown`. The example gives its
|
|
324
|
-
test-owned setup result a name and uses that type in the corresponding header
|
|
325
|
-
builder. In a repository that also runs k6, keep the named repository profile
|
|
326
|
-
JSON-only and pass the Node functions from the data suite through
|
|
327
|
-
`flow.http({ profile: "default", auth: { setupAsync, headers } })` instead.
|
|
386
|
+
Testkit 0.6.0 removed HTTP profiles. A config that sets `profiles` fails to
|
|
387
|
+
load. A test logs in with `fetch` or its own client against the URL from
|
|
388
|
+
`@gfdelarue/testkit/environment`, as
|
|
389
|
+
[Record data-flow evidence](README.md#record-data-flow-evidence) shows.
|
|
328
390
|
|
|
329
391
|
## Service Fields
|
|
330
392
|
|
|
@@ -340,61 +402,74 @@ Local runtime configuration.
|
|
|
340
402
|
- `shutdownTimeoutMs`
|
|
341
403
|
- `env`
|
|
342
404
|
|
|
405
|
+
#### Readiness
|
|
406
|
+
|
|
407
|
+
A local service starts and must then be ready before `readyTimeoutMs` runs out.
|
|
408
|
+
The default is 120000 ms. Tests receive nothing from the service until then.
|
|
409
|
+
|
|
410
|
+
- With a `readyUrl`, the service is ready when that URL returns a 2xx status,
|
|
411
|
+
after up to 20 redirects. `app.node` defaults `readyUrl` to `{baseUrl}/health`,
|
|
412
|
+
and `app.next` defaults it to `baseUrl`.
|
|
413
|
+
- `baseUrl` must also answer HTTP, unless the `readyUrl` has the same origin.
|
|
414
|
+
Any response counts, including a 4xx or 5xx status. A port that accepts
|
|
415
|
+
connections but does not answer HTTP does not count.
|
|
416
|
+
- `readyUrl: false` removes the 2xx check. Testkit still waits for `baseUrl` to
|
|
417
|
+
answer HTTP.
|
|
418
|
+
- A process with no HTTP endpoint, such as a worker or a queue consumer, declares
|
|
419
|
+
no `baseUrl`. It is ready once it has started. Testkit hands its groups no URL
|
|
420
|
+
for it, and `{baseUrl:<service>}` fails to resolve.
|
|
421
|
+
|
|
422
|
+
```ts
|
|
423
|
+
services: {
|
|
424
|
+
worker: { local: { start: "node worker.mjs" } },
|
|
425
|
+
},
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
`app.node` and `app.next` always set a `baseUrl`, so declare a process without
|
|
429
|
+
an HTTP endpoint with `local` directly.
|
|
430
|
+
|
|
343
431
|
`services.<name>.local.shutdownTimeoutMs` is an optional positive finite integer
|
|
344
432
|
in milliseconds. It sets how long a launched local service may take to exit
|
|
345
433
|
after Testkit requests shutdown before Testkit force-kills it. Omitted or
|
|
346
434
|
`undefined` values use the 1000 ms process-launch default. Strings, zero,
|
|
347
435
|
negative numbers, fractions, `NaN`, and infinities are rejected.
|
|
348
436
|
|
|
349
|
-
On POSIX, Testkit
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
during startup. It does not change engine, build-command, or database timeouts.
|
|
437
|
+
On POSIX, Testkit asks the service and its descendants to stop, and
|
|
438
|
+
force-kills any that are still running when the allowance expires. Repeated
|
|
439
|
+
stop requests and cancellation keep the first deadline. The allowance also
|
|
440
|
+
applies to cleanup after a readiness failure or a cancellation during startup.
|
|
441
|
+
It doesn't change engine, build-command, or database timeouts.
|
|
355
442
|
|
|
356
443
|
`stop`, `run stop`, active `cleanup`, and `destroy` wait for the recorded service
|
|
357
|
-
allowances before
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
seconds to finalize before SIGKILL. Recovery uses the policy recorded when the
|
|
361
|
-
service launched, including any shutdown time already spent.
|
|
362
|
-
|
|
363
|
-
On Windows, the current process adapter uses forceful `taskkill /T /F` and
|
|
364
|
-
cannot deliver cooperative SIGTERM. Increasing this option does not give a
|
|
365
|
-
Windows service a graceful cleanup interval. Process ownership checks still
|
|
366
|
-
apply; this option does not guarantee cleanup of detached resources or Compose
|
|
367
|
-
containers.
|
|
444
|
+
allowances before they force an unresponsive run to stop. Recovery uses the
|
|
445
|
+
allowance recorded when the service launched, less any shutdown time already
|
|
446
|
+
spent.
|
|
368
447
|
|
|
369
448
|
Both `app.node({ shutdownTimeoutMs: 5000 })` and
|
|
370
449
|
`app.next({ shutdownTimeoutMs: 5000 })` place the option under `local`.
|
|
371
450
|
|
|
372
451
|
#### Ports
|
|
373
452
|
|
|
374
|
-
Testkit asks the OS for a free port for each service in each runtime instance
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
includes the service's own startup time. The service receives the port as `PORT` and
|
|
380
|
-
as `{port}`. `baseUrl` must use `{port}`, or `{port:<its own name>}`, as its
|
|
381
|
-
port, for example `http://127.0.0.1:{port}`. `app.node` and `app.next` default to that `baseUrl`.
|
|
453
|
+
Testkit asks the OS for a free port for each service in each runtime instance,
|
|
454
|
+
on `127.0.0.1` and, when the host has IPv6, on `::1`. The service receives the
|
|
455
|
+
port as `PORT` and as `{port}`. A `baseUrl` must use `{port}`, or
|
|
456
|
+
`{port:<its own name>}`, as its port, for example `http://127.0.0.1:{port}`.
|
|
457
|
+
`app.node` and `app.next` default to that `baseUrl`.
|
|
382
458
|
|
|
383
459
|
`local.port`, the `port` option of `app.node` and `app.next`, and a literal port
|
|
384
460
|
in `baseUrl` or `readyUrl` are config errors. The error names the service and
|
|
385
461
|
the key. Delete the setting and use `{port}`. Testkit has no setting that pins
|
|
386
462
|
a service to a fixed port.
|
|
387
463
|
|
|
388
|
-
If a service exits before it becomes ready, Testkit
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
timeout, also lists every port tried.
|
|
464
|
+
If a service exits before it becomes ready, Testkit starts it again on a fresh
|
|
465
|
+
port, never one the service already tried. A service that already started and
|
|
466
|
+
whose `start`, env, `readyUrl`, or `runtime.prepare` steps name the moved
|
|
467
|
+
service is stopped and started again with the new value, and the
|
|
468
|
+
`runtime.prepare` steps of every service that hasn't started yet run again
|
|
469
|
+
first. Each service gets three attempts in total. After the third, the run fails
|
|
470
|
+
as an infrastructure failure whose error lists each attempt's port and exit
|
|
471
|
+
status and the last attempt's output. A startup that fails another way after an
|
|
472
|
+
earlier attempt, such as a readiness timeout, also lists every port tried.
|
|
398
473
|
|
|
399
474
|
A `runtime.prepare` step whose environment or command includes a service URL or
|
|
400
475
|
port, such as a Next build that embeds `NEXT_PUBLIC_API_URL: "{baseUrl:api}"`,
|
|
@@ -403,7 +478,8 @@ such values at start time when the build should be cached.
|
|
|
403
478
|
|
|
404
479
|
`run.json` records each service's starts under `environment.services` as they
|
|
405
480
|
happen, with its `runtimeLabel`, `serviceName`, `baseUrl`, `readyUrl`, `port`,
|
|
406
|
-
and each attempt's port and outcome.
|
|
481
|
+
and each attempt's port and outcome. `baseUrl` and `readyUrl` are `null` when the
|
|
482
|
+
service declares none. A run whose startup fails keeps the
|
|
407
483
|
attempts it made, and a service restarted for a moved peer shows both starts.
|
|
408
484
|
The recorded URLs drop credentials, query values, and fragments, so
|
|
409
485
|
`http://127.0.0.1:41234/health?apiKey=x` is stored as
|
|
@@ -436,6 +512,11 @@ the service. Plain services take a string record. `app.node(...)` and
|
|
|
436
512
|
`app.next(...)` take `{ values, databases }` and place the result under
|
|
437
513
|
`local.env`; `local.env` overrides `env` when both set a name.
|
|
438
514
|
|
|
515
|
+
Tasks never receive a value under a name that a source schema in their runtime
|
|
516
|
+
reads: `TESTKIT_SCHEMA_SOURCE_DATABASE_URL`, any service's
|
|
517
|
+
`TESTKIT_<SERVICE>_SCHEMA_SOURCE_DATABASE_URL`, or a name passed to
|
|
518
|
+
`database.schema.fromEnv()`. Service processes still receive it.
|
|
519
|
+
|
|
439
520
|
Values support the template tokens listed under [`local`](#local), including
|
|
440
521
|
the database tokens:
|
|
441
522
|
|
|
@@ -458,9 +539,8 @@ that run. A repeated run never sees a previous run's connection details.
|
|
|
458
539
|
|
|
459
540
|
Database tokens resolve only in `env` and `local.env` values. Testkit rejects
|
|
460
541
|
them at config load in `local.start`, `local.cwd`, `runtime.prepare`, and
|
|
461
|
-
`database.template` strings,
|
|
462
|
-
|
|
463
|
-
declared env entry at run time instead.
|
|
542
|
+
`database.template` strings, which resolve before any database exists. Commands
|
|
543
|
+
read `DATABASE_URL` or a declared env entry at run time instead.
|
|
464
544
|
|
|
465
545
|
Source-schema discovery fails when the env entry it reads as the source URL
|
|
466
546
|
points at the service's own database. A source schema has to come from a
|
|
@@ -481,11 +561,30 @@ to the matching `{db*:api}` token. `env.values` entries override expanded names.
|
|
|
481
561
|
### `envFile` / `envFiles`
|
|
482
562
|
|
|
483
563
|
Optional extra env files loaded into the declared service/task environment for
|
|
484
|
-
migrations, seeds, services, and every execution engine.
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
564
|
+
migrations, seeds, services, and every execution engine. Node/Vitest tests read
|
|
565
|
+
task values from `process.env`, and managed Playwright contexts expose them
|
|
566
|
+
through `readPlaywrightContext().env`.
|
|
567
|
+
|
|
568
|
+
Testkit reads a service's env files only when a selected group uses the service
|
|
569
|
+
or a used service depends on it. Loading the config reads none of them, so a
|
|
570
|
+
missing or unreadable file of an unused service changes nothing. A missing file
|
|
571
|
+
is skipped.
|
|
572
|
+
|
|
573
|
+
Without `envFile` or `envFiles`, a service uses whichever of these exist, in
|
|
574
|
+
this order: `<local.cwd>/.env.testkit`, `<local.cwd>/.env`, `.env.testkit`, and
|
|
575
|
+
`.env`. With them, it uses `envFile` and then each `envFiles` entry. A later file
|
|
576
|
+
overrides an earlier one, `env` overrides every file, and `local.env` overrides
|
|
577
|
+
`env`. A group that uses several services takes each name from the first service
|
|
578
|
+
in its `uses` that sets it.
|
|
579
|
+
|
|
580
|
+
A service that declares only `env`, `envFile`, or `envFiles` starts nothing, and
|
|
581
|
+
neither does a `dependsOn` edge between such services. Their groups get the
|
|
582
|
+
values, and the config's `ui` settings, with no runtime slot, build, database,
|
|
583
|
+
server, or teardown. Without a
|
|
584
|
+
running service, their values can use only `{service}`, `{stateDir}`,
|
|
585
|
+
`{productDir}`, `{lease}`, `{leaseDir}`, `{bin}`, and `{pathList}`. Any other
|
|
586
|
+
token, such as `{runtime}`, `{prepareDir}`, `{port}`, or `{dbUrl}`, fails the
|
|
587
|
+
group's tasks with an infrastructure failure that names the token.
|
|
489
588
|
|
|
490
589
|
Environment names are validated case-insensitively. All engines reserve
|
|
491
590
|
`APPDATA`, `ComSpec`, `HOME`, `LANG`, `LC_ALL`, `LOCALAPPDATA`, `PATH`, `PATHEXT`,
|
|
@@ -493,18 +592,17 @@ Environment names are validated case-insensitively. All engines reserve
|
|
|
493
592
|
`XDG_CONFIG_HOME`, and `XDG_DATA_HOME`. Engine-specific reservations and limits
|
|
494
593
|
are:
|
|
495
594
|
|
|
496
|
-
| Engine | Additional reservations
|
|
497
|
-
| ------------- |
|
|
498
|
-
| `
|
|
499
|
-
| `
|
|
500
|
-
| `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 |
|
|
595
|
+
| Engine | Additional reservations | Consumer environment limit |
|
|
596
|
+
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
|
|
597
|
+
| `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 |
|
|
598
|
+
| `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 |
|
|
501
599
|
|
|
502
600
|
Empty names, names containing `=` or NUL, values containing NUL, and
|
|
503
601
|
case-variant duplicates are rejected. The limits apply after env files and
|
|
504
|
-
configured service/runtime values have been merged.
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
602
|
+
configured service/runtime values have been merged.
|
|
603
|
+
[Environment](docs/engines.md#environment) lists the `TESTKIT_` keys Node/Vitest
|
|
604
|
+
sets and the limits on all of a test's inputs together. Node/Vitest passes other
|
|
605
|
+
`TESTKIT_` and `VITEST_` keys through, such as `TESTKIT_REQUIRE_COMPLETE_SUITE`.
|
|
508
606
|
|
|
509
607
|
### `database`
|
|
510
608
|
|
|
@@ -524,6 +622,19 @@ materialize the database as host-local Docker Postgres.
|
|
|
524
622
|
- `template.verify`
|
|
525
623
|
|
|
526
624
|
`binding` may be `shared` or `per-runtime`.
|
|
625
|
+
|
|
626
|
+
`reset` defaults to `true`. Each time Testkit sets up a runtime instance, it
|
|
627
|
+
drops that instance's database and clones it again from the cached template,
|
|
628
|
+
so every run starts from the template's state. A run sets up an instance the
|
|
629
|
+
first time a test needs it. If a failure invalidates the instance, such as an
|
|
630
|
+
infrastructure failure or a setup cleanup that throws, Testkit sets it up again
|
|
631
|
+
before the next test uses it. Between setups, every test on the instance uses
|
|
632
|
+
the same database.
|
|
633
|
+
With `binding: "shared"`, every runtime instance uses one database. Testkit
|
|
634
|
+
resets it once per run, when the first instance sets it up.
|
|
635
|
+
`reset: false` keeps the runtime database from the previous run, with every row
|
|
636
|
+
that earlier runs wrote, until the template changes.
|
|
637
|
+
|
|
527
638
|
`runtimeConnections` is the service runtime slot's Postgres connection budget.
|
|
528
639
|
`maxConnections` and `reservedConnections` describe the backing host-local
|
|
529
640
|
Postgres capacity used for scheduler admission.
|
|
@@ -534,10 +645,9 @@ Template stages are ordered arrays of typed step objects:
|
|
|
534
645
|
- `{ kind: "sql-file", path: "db/schema.sql" }`
|
|
535
646
|
- `{ kind: "module", target: "src/testkit/verify-seed.ts#verifySeed" }`
|
|
536
647
|
|
|
537
|
-
Local files and ordinary external packages are valid module targets.
|
|
538
|
-
`@gfdelarue/testkit`
|
|
539
|
-
|
|
540
|
-
is executed.
|
|
648
|
+
Local files and ordinary external packages are valid module targets. An
|
|
649
|
+
unsupported or private `@gfdelarue/testkit` target fails when the config loads,
|
|
650
|
+
before any step runs.
|
|
541
651
|
|
|
542
652
|
`verify` runs after template migrate/seed and must succeed before the template DB
|
|
543
653
|
is cached for reuse.
|
|
@@ -581,19 +691,21 @@ existing role unchanged and rolls back any roles created in the same operation.
|
|
|
581
691
|
Existing object grants and ownership remain untouched. Setup evidence records
|
|
582
692
|
the prerequisite operation, including created or reused roles and conflicts.
|
|
583
693
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
PostgreSQL volume removes its roles, and the next provisioning creates the
|
|
592
|
-
declared roles again.
|
|
694
|
+
Changing role names or configured template inputs rebuilds the template. Role
|
|
695
|
+
order doesn't count as a change, but editing the config file, even to reorder
|
|
696
|
+
roles, can still rebuild it, because the file is part of the repository. Roles
|
|
697
|
+
persist when templates are rebuilt, replay fails, service caches are removed, or
|
|
698
|
+
declarations are removed. Removing a declaration stops ensuring that role.
|
|
699
|
+
Destroying the owned PostgreSQL volume removes its roles, and the next
|
|
700
|
+
provisioning creates the declared roles again.
|
|
593
701
|
|
|
594
702
|
### `databaseFrom`
|
|
595
703
|
|
|
596
|
-
|
|
704
|
+
Use another service's database. The service gets the database that the named
|
|
705
|
+
service provisioned in the same runtime instance, as `DATABASE_URL` and in
|
|
706
|
+
`{dbUrl}` and the other database placeholders. List the named service in
|
|
707
|
+
`dependsOn` so that it runs in the same runtime. A service cannot declare both
|
|
708
|
+
`database` and `databaseFrom`.
|
|
597
709
|
|
|
598
710
|
### `runtime`
|
|
599
711
|
|
|
@@ -615,24 +727,25 @@ When configured, `testkit` applies the resolved toolchain to:
|
|
|
615
727
|
- `runtime.prepare` command/module steps
|
|
616
728
|
- local service `start` commands
|
|
617
729
|
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
versions.
|
|
730
|
+
Changing the resolved Node or npm version invalidates prepared artifacts, so
|
|
731
|
+
`runtime.prepare` runs again.
|
|
621
732
|
|
|
622
733
|
### `skip`
|
|
623
734
|
|
|
624
|
-
|
|
625
|
-
|
|
735
|
+
Skip rules for a group's files, set as `groups.<name>.skip`. Skipped files remain
|
|
736
|
+
visible in run artifacts with `status: "skipped"` and the configured reason.
|
|
626
737
|
|
|
627
738
|
Prefer file-local `export const testkit = defineFile({ ... })` metadata
|
|
628
|
-
for per-file skips and locks. Repo-level `skip` is mainly for
|
|
629
|
-
policy.
|
|
739
|
+
for per-file skips and locks in a typed file. Repo-level `skip` is mainly for
|
|
740
|
+
broad suite-level policy. A plain Vitest file has no file-local metadata, so its
|
|
741
|
+
skips, locks, and isolation go in `skip.files`, `requirements.files`, and
|
|
742
|
+
`runtimeIsolation.files`.
|
|
630
743
|
|
|
631
744
|
```ts
|
|
632
745
|
skip: {
|
|
633
746
|
files: [
|
|
634
747
|
{
|
|
635
|
-
path: "
|
|
748
|
+
path: "src/billing/billing.test.ts",
|
|
636
749
|
reason: "Billing is currently unavailable",
|
|
637
750
|
},
|
|
638
751
|
],
|
|
@@ -650,12 +763,13 @@ skip: {
|
|
|
650
763
|
- `files[].reason`
|
|
651
764
|
- required non-empty explanation recorded in artifacts
|
|
652
765
|
- `suites[].selector`
|
|
653
|
-
- existing suite selector syntax, including typed selectors like `
|
|
654
|
-
and `ui:billing`
|
|
766
|
+
- existing suite selector syntax, including typed selectors like `ui:billing`
|
|
655
767
|
- `suites[].reason`
|
|
656
768
|
- required non-empty explanation recorded in artifacts
|
|
657
769
|
|
|
658
|
-
|
|
770
|
+
A run that skips a selected file fails, even when every other file passes, and
|
|
771
|
+
`--allow-empty` doesn't change that. Use `--ignore-skip-rules` on the CLI to run
|
|
772
|
+
skipped files anyway.
|
|
659
773
|
|
|
660
774
|
### `runtime`
|
|
661
775
|
|
|
@@ -692,24 +806,29 @@ runtime: {
|
|
|
692
806
|
|
|
693
807
|
### `requirements`
|
|
694
808
|
|
|
695
|
-
|
|
809
|
+
Task lock rules for a group's files, set as `groups.<name>.requirements`.
|
|
696
810
|
|
|
697
811
|
```ts
|
|
698
812
|
requirements: {
|
|
699
813
|
suites: [
|
|
700
|
-
{ selector: "ui:
|
|
814
|
+
{ selector: "ui:checkout", locks: ["payments-sandbox-webhook"] },
|
|
701
815
|
],
|
|
702
816
|
files: [
|
|
703
817
|
{
|
|
704
|
-
path: "src/api/routes/
|
|
705
|
-
locks: ["
|
|
818
|
+
path: "src/api/routes/payout-webhook.test.ts",
|
|
819
|
+
locks: ["payments-sandbox-webhook"],
|
|
706
820
|
},
|
|
707
821
|
],
|
|
708
822
|
}
|
|
709
823
|
```
|
|
710
824
|
|
|
825
|
+
Files that need the same lock never run at the same time within one run.
|
|
826
|
+
Testkit holds locks for one run only, so two runs, such as two CI jobs, don't
|
|
827
|
+
wait for each other. Use a lock for a resource that can't be duplicated, never
|
|
828
|
+
for tests that share rows.
|
|
829
|
+
|
|
711
830
|
- `suites[].selector`
|
|
712
|
-
- typed selector like `
|
|
831
|
+
- typed selector like `ui:billing`
|
|
713
832
|
- `suites[].locks`
|
|
714
833
|
- named locks required by matching files
|
|
715
834
|
- `files[].path`
|
|
@@ -717,6 +836,61 @@ requirements: {
|
|
|
717
836
|
- `files[].locks`
|
|
718
837
|
- named locks required by that file
|
|
719
838
|
|
|
839
|
+
### `runtimeIsolation`
|
|
840
|
+
|
|
841
|
+
What a group's files share with each other in a run, set as
|
|
842
|
+
`groups.<name>.runtimeIsolation`. A file can set its own with
|
|
843
|
+
`defineFile({ runtimeIsolation: "resetBefore" })`.
|
|
844
|
+
|
|
845
|
+
```ts
|
|
846
|
+
runtimeIsolation: {
|
|
847
|
+
default: "shared",
|
|
848
|
+
suites: [{ selector: "ui:admin", policy: "resetBefore" }],
|
|
849
|
+
files: [{ path: "src/orders/purge.test.ts", policy: "resetBefore" }],
|
|
850
|
+
}
|
|
851
|
+
```
|
|
852
|
+
|
|
853
|
+
A string sets the policy for every file, as in `runtimeIsolation: "resetBefore"`.
|
|
854
|
+
A file's `defineFile` policy wins over a `files` rule, which wins over a
|
|
855
|
+
`suites` rule, which wins over `default`. The default is `shared`.
|
|
856
|
+
|
|
857
|
+
- `shared`
|
|
858
|
+
- files on the same runtime instance share its services and its database for
|
|
859
|
+
the whole run
|
|
860
|
+
- each run starts from a database freshly cloned from the template, unless
|
|
861
|
+
`database.reset` is `false`, but within a run every file sees the rows that
|
|
862
|
+
other files wrote
|
|
863
|
+
- a test creates the rows it needs and filters by them, so rows from other
|
|
864
|
+
files don't change its result
|
|
865
|
+
- `resetBefore`
|
|
866
|
+
- before the file runs, Testkit clones each database it provisions that the
|
|
867
|
+
file's environment reaches, from the template that database came from; that
|
|
868
|
+
includes a database a used service names in its env, such as
|
|
869
|
+
`{dbUrl:audit}`
|
|
870
|
+
- the file's `.setup.*` module, `database()`, `DATABASE_URL`, and
|
|
871
|
+
`{dbUrl}`-style values in the group's service env all point at the clone
|
|
872
|
+
- Testkit drops the clone when the file finishes; if that fails, the end of
|
|
873
|
+
the run drops it, and the clone of a run that died is dropped when the next
|
|
874
|
+
run sets up that runtime
|
|
875
|
+
- use it for a test that changes a whole table or schema, such as an
|
|
876
|
+
unfiltered `DELETE` or a migration test
|
|
877
|
+
- a file whose environment reaches no database that Testkit provisions,
|
|
878
|
+
including every file run on supplied values, ends as an environment failure
|
|
879
|
+
|
|
880
|
+
`resetBefore` isolates only the test's own database access. The group's
|
|
881
|
+
services keep running against the runtime's database, so a request the test
|
|
882
|
+
sends to an API server reads and writes the shared database, not the clone.
|
|
883
|
+
When the server's writes must be isolated too, give the test its own group
|
|
884
|
+
whose `uses` names a second service entry for the same server, for example an
|
|
885
|
+
`api-isolated` service declared with the same options as `api`. Groups that use
|
|
886
|
+
the same services share their runtimes, so a separate group alone doesn't give
|
|
887
|
+
the test its own server. The second entry gets its own runtime, server, and
|
|
888
|
+
database, which the files in that group still share.
|
|
889
|
+
|
|
890
|
+
`resetAfter` and `exclusive` were removed. A config or `defineFile` that sets
|
|
891
|
+
either fails to load with a message that names the replacement: `resetBefore`
|
|
892
|
+
on the file that needs a clean database, or `shared` with test-owned rows.
|
|
893
|
+
|
|
720
894
|
## Config Surface
|
|
721
895
|
|
|
722
896
|
`@gfdelarue/testkit/config` exports:
|
|
@@ -728,89 +902,59 @@ requirements: {
|
|
|
728
902
|
- `database.fixture(...)`
|
|
729
903
|
- `toolchain.node(...)`
|
|
730
904
|
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
- `defineHttpSuite(...)`
|
|
734
|
-
- `defineDalSuite(...)`
|
|
735
|
-
- `defineDalFixtures(...)`
|
|
905
|
+
## Discovery Conventions
|
|
736
906
|
|
|
737
|
-
|
|
738
|
-
`
|
|
907
|
+
Plain Vitest test files are the files the repository's own Vitest config
|
|
908
|
+
selects, as `vitest run` lists them from the product directory:
|
|
739
909
|
|
|
740
|
-
- `
|
|
741
|
-
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
- `
|
|
745
|
-
-
|
|
746
|
-
- `records()`
|
|
910
|
+
- the root `vitest.config.*` or `vite.config.*`, or the file
|
|
911
|
+
`--vitest-config` names, and its projects; without a config, Vitest's
|
|
912
|
+
defaults, which match `**/*.{test,spec}.?(c|m)[jt]s?(x)` outside
|
|
913
|
+
`node_modules` and `.git`
|
|
914
|
+
- narrowed only by `discovery.exclude` and a declared group's `exclude`
|
|
915
|
+
- owned by the group whose roots contain them, or by `root`
|
|
747
916
|
|
|
748
|
-
|
|
917
|
+
`--vitest-runner managed` lists them with Testkit's own Vitest and its default
|
|
918
|
+
rules instead, without the repository's config.
|
|
749
919
|
|
|
750
|
-
|
|
920
|
+
Typed suites are discovered from the filesystem:
|
|
751
921
|
|
|
752
922
|
- only files inside `__testkit__/`
|
|
753
|
-
-
|
|
754
|
-
|
|
923
|
+
- a file belongs to the group with the deepest matching root in
|
|
924
|
+
`groups.<name>.roots`
|
|
925
|
+
- files that no group claims belong to the implicit group `root`
|
|
755
926
|
|
|
756
|
-
|
|
927
|
+
The supported suffix is `*.ui.testkit.ts`.
|
|
757
928
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
- `*.contract.testkit.ts`
|
|
761
|
-
- `*.data.testkit.ts`
|
|
762
|
-
- `*.dal.testkit.ts`
|
|
763
|
-
- `*.load.testkit.ts`
|
|
764
|
-
- `*.ui.testkit.ts`
|
|
765
|
-
|
|
766
|
-
Every discovered file must also export `defineFile({ engine: "..." })` from the
|
|
767
|
-
root package. The suffix supplies `testType`; the required engine declaration
|
|
929
|
+
Every discovered typed file must also export `defineFile({ engine: "..." })`
|
|
930
|
+
from the root package. The suffix supplies `testType`; the required engine declaration
|
|
768
931
|
supplies `engineId`; and Testkit derives `profileId` from the catalog. None of
|
|
769
932
|
those identities are silently rewritten later in the run.
|
|
770
933
|
|
|
771
|
-
|
|
772
|
-
declares `engine: "node-vitest"`, uses
|
|
773
|
-
`@gfdelarue/testkit/node-vitest/contract`, runs through
|
|
774
|
-
`node-vitest-contract`, and is the right place for checks that need Node APIs
|
|
775
|
-
but are not data-flow evidence suites. Contract files are native Vitest suites:
|
|
776
|
-
`contractScenario(...)` provides managed Testkit context when needed, while
|
|
777
|
-
direct public Vitest runner APIs remain valid.
|
|
778
|
-
|
|
779
|
-
`*.data.testkit.ts` is a Testkit-owned data-flow/data-contract suite type. It
|
|
780
|
-
declares `engine: "node-vitest"`, uses
|
|
781
|
-
`@gfdelarue/testkit/node-vitest/data`, records evidence through
|
|
782
|
-
`dataScenario(...)`, and runs through `node-vitest-data`. Data suites may use
|
|
783
|
-
non-registering public Vitest APIs such as `expect`, but `dataScenario(...)`
|
|
784
|
-
owns case registration. Ordinary Node/Vitest assertions, DOM/browser checks,
|
|
785
|
-
and service-local loopback checks belong in the appropriate non-data suite
|
|
786
|
-
type.
|
|
787
|
-
|
|
788
|
-
Examples:
|
|
789
|
-
|
|
790
|
-
- `src/api/routes/__testkit__/auth/me.int.testkit.ts`
|
|
791
|
-
- `src/api/routes/__testkit__/runtime.contract.testkit.ts`
|
|
792
|
-
- `src/api/routes/__testkit__/agent-flow.data.testkit.ts`
|
|
793
|
-
- `src/db/__testkit__/sessions/count-type.dal.testkit.ts`
|
|
794
|
-
- `frontend/__testkit__/navigation/navigation.ui.testkit.ts`
|
|
934
|
+
Example: `frontend/__testkit__/navigation/navigation.ui.testkit.ts`.
|
|
795
935
|
|
|
796
936
|
`testkit discover` exposes that inventory directly without running suites:
|
|
797
937
|
|
|
798
938
|
- `testkit discover`
|
|
799
|
-
- compact human output grouped by
|
|
939
|
+
- compact human output grouped by group, type, and suite
|
|
800
940
|
- `testkit discover --output-mode verbose`
|
|
801
|
-
- includes canonical paths, IDs, locks,
|
|
941
|
+
- includes group roots and uses, canonical paths, IDs, locks, and skip reasons
|
|
802
942
|
- `testkit discover --json`
|
|
803
943
|
- returns a machine-readable document with stable field names and enums
|
|
804
944
|
- `testkit discover --output .testkit/discovery.json`
|
|
805
945
|
- writes that same machine-readable document to disk
|
|
806
946
|
|
|
807
947
|
The discovery JSON/API surface is exported from `@gfdelarue/testkit/workspace`.
|
|
808
|
-
|
|
948
|
+
The document has `schemaVersion: 10`. Its `groups` list holds each group's
|
|
949
|
+
`name`, `roots`, `uses`, `source` (`groups`, `services`, or `implicit`), and
|
|
950
|
+
file and suite counts. Each file entry includes canonical machine fields such
|
|
951
|
+
as:
|
|
809
952
|
|
|
810
953
|
- `id`
|
|
811
954
|
- `path`
|
|
812
|
-
- `
|
|
955
|
+
- `group`
|
|
813
956
|
- `suiteName`
|
|
957
|
+
- `suiteLabel`
|
|
814
958
|
- `testType`
|
|
815
959
|
- `engineId`
|
|
816
960
|
- `profileId`
|
|
@@ -818,20 +962,7 @@ Each file entry includes canonical machine fields such as:
|
|
|
818
962
|
- `skipped`
|
|
819
963
|
- `skipReason`
|
|
820
964
|
- `locks`
|
|
821
|
-
- `
|
|
965
|
+
- `runtimeIsolation`
|
|
822
966
|
|
|
823
967
|
Human-friendly labels such as `displayName` are additive. They are intended for
|
|
824
968
|
compact CLI output and should not be treated as the only identifier.
|
|
825
|
-
|
|
826
|
-
`testkit` also persists a lightweight history index at
|
|
827
|
-
`.testkit/history/tests.json`. Discovery surfaces may expose:
|
|
828
|
-
|
|
829
|
-
- `firstSeenAt`
|
|
830
|
-
- `lastSeenAt`
|
|
831
|
-
- `lastRunAt`
|
|
832
|
-
- `runCount`
|
|
833
|
-
- `passCount`
|
|
834
|
-
- `failCount`
|
|
835
|
-
- `skipCount`
|
|
836
|
-
- `avgDurationMs`
|
|
837
|
-
- `lastStatus`
|