@gfdelarue/testkit 0.4.5 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +666 -463
- 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 +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 -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/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/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/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/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/http-methods.js +1 -1
- package/dist/config/loader/config-loader.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 +1 -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/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 +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 +26 -188
- 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 +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/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-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/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/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 +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 +37 -37
- package/docs/engines.md +213 -0
- package/docs/test-types.md +35 -33
- package/package.json +22 -29
- package/testkit-config-schema.md +378 -184
- 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/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/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/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 -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,55 @@ 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
|
-
| `
|
|
95
|
-
| `
|
|
96
|
-
| `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` |
|
|
97
103
|
|
|
98
|
-
|
|
99
|
-
discovery errors. There is no default-engine or legacy-runner compatibility
|
|
100
|
-
path. See [
|
|
101
|
-
|
|
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.
|
|
102
108
|
|
|
103
109
|
## Tooling Adapters
|
|
104
110
|
|
|
@@ -124,15 +130,14 @@ Default execution settings for the repo.
|
|
|
124
130
|
|
|
125
131
|
`execution.workers` and `presets.nodeNext({ workers })` remain deprecated aliases
|
|
126
132
|
through 0.2.x and will be removed in 0.3.0. Use `taskConcurrency` in new config.
|
|
127
|
-
If both names are present, their values must match.
|
|
128
|
-
contains only `taskConcurrency`.
|
|
133
|
+
If both names are present, their values must match.
|
|
129
134
|
|
|
130
135
|
`--task-concurrency` overrides the configured value. The CLI alias `--workers`
|
|
131
136
|
also remains available through 0.2.x; contradictory CLI aliases are rejected
|
|
132
137
|
before applying CLI precedence. Contradictory config aliases are rejected even
|
|
133
138
|
when the CLI supplies an override.
|
|
134
139
|
|
|
135
|
-
|
|
140
|
+
Run documents keep the configured `run.workers` field. Observed
|
|
136
141
|
`workerCount`, Playwright's own `workers`, `runtime.instances` and
|
|
137
142
|
`runtime.maxConcurrentTasks` keep their existing meanings.
|
|
138
143
|
|
|
@@ -144,15 +149,35 @@ helpers like `waitFor()` consume this budget automatically.
|
|
|
144
149
|
Optional `testkit lint` settings. Omit it to run the default rules.
|
|
145
150
|
|
|
146
151
|
- `rules`: map of rule name to `true`, `false`, or an options object.
|
|
147
|
-
`engineImports`, `configImports`, `dataSuiteContract`, `
|
|
148
|
-
and `uiSpecShape` default to enabled; `unitTestBoundaries` and
|
|
152
|
+
`engineImports`, `configImports`, `dataSuiteContract`, and `uiSpecShape` default to enabled; `unitTestBoundaries` and
|
|
149
153
|
`testkitBoundary` default to disabled.
|
|
150
154
|
- Rule options: `enabled` (default `true`), `include`, `exclude`. `testkitBoundary`
|
|
151
155
|
also accepts `allowed` and `trackedOnly`.
|
|
152
156
|
- `ui`: `maxLines` (default `220`) and `maxTests` (default `8`) for UI suites.
|
|
153
157
|
|
|
154
158
|
Enabled-rule findings and syntax errors fail the command. There are no severity
|
|
155
|
-
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.
|
|
156
181
|
|
|
157
182
|
### `areas`
|
|
158
183
|
|
|
@@ -204,6 +229,35 @@ Optional settings for bug filing and for runs that meet a filed bug.
|
|
|
204
229
|
|
|
205
230
|
[Bug records](docs/bug-records.md) describes the issues Testkit files.
|
|
206
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
|
+
|
|
207
261
|
### `ui`
|
|
208
262
|
|
|
209
263
|
Targets for Playwright `ui` files. Read through `createUiSandbox`,
|
|
@@ -222,7 +276,69 @@ runs. The backend falls back to `TESTKIT_BACKEND_BASE_URL` and then
|
|
|
222
276
|
|
|
223
277
|
### `services`
|
|
224
278
|
|
|
225
|
-
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.
|
|
226
342
|
|
|
227
343
|
### `toolchains`
|
|
228
344
|
|
|
@@ -245,12 +361,11 @@ Node toolchain fields:
|
|
|
245
361
|
- explicit npm version or range
|
|
246
362
|
|
|
247
363
|
`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.
|
|
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.
|
|
254
369
|
|
|
255
370
|
`detect: "auto"` checks the toolchain cwd for:
|
|
256
371
|
|
|
@@ -265,30 +380,11 @@ host before fetching or creating cache state.
|
|
|
265
380
|
|
|
266
381
|
### `profiles.http`
|
|
267
382
|
|
|
268
|
-
Named HTTP profiles
|
|
269
|
-
|
|
383
|
+
Named HTTP profiles for Node/Vitest data suites, selected through
|
|
384
|
+
`flow.http({ profile })`.
|
|
270
385
|
|
|
271
|
-
|
|
272
|
-
|
|
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`
|
|
386
|
+
Node/Vitest data profiles may carry `auth`, `headers`, and
|
|
387
|
+
`rawHeaders` functions. `auth.setup` or `auth.setupAsync`
|
|
292
388
|
returns a session bundle of named actors; `headers` maps the bundle and the
|
|
293
389
|
requested actor to request headers.
|
|
294
390
|
|
|
@@ -322,9 +418,8 @@ profiles: {
|
|
|
322
418
|
|
|
323
419
|
Repository profile setup data is typed as `unknown`. The example gives its
|
|
324
420
|
test-owned setup result a name and uses that type in the corresponding header
|
|
325
|
-
builder.
|
|
326
|
-
|
|
327
|
-
`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 } })`.
|
|
328
423
|
|
|
329
424
|
## Service Fields
|
|
330
425
|
|
|
@@ -340,61 +435,74 @@ Local runtime configuration.
|
|
|
340
435
|
- `shutdownTimeoutMs`
|
|
341
436
|
- `env`
|
|
342
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
|
+
|
|
343
464
|
`services.<name>.local.shutdownTimeoutMs` is an optional positive finite integer
|
|
344
465
|
in milliseconds. It sets how long a launched local service may take to exit
|
|
345
466
|
after Testkit requests shutdown before Testkit force-kills it. Omitted or
|
|
346
467
|
`undefined` values use the 1000 ms process-launch default. Strings, zero,
|
|
347
468
|
negative numbers, fractions, `NaN`, and infinities are rejected.
|
|
348
469
|
|
|
349
|
-
On POSIX, Testkit
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
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.
|
|
355
475
|
|
|
356
476
|
`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.
|
|
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.
|
|
368
480
|
|
|
369
481
|
Both `app.node({ shutdownTimeoutMs: 5000 })` and
|
|
370
482
|
`app.next({ shutdownTimeoutMs: 5000 })` place the option under `local`.
|
|
371
483
|
|
|
372
484
|
#### Ports
|
|
373
485
|
|
|
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`.
|
|
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`.
|
|
382
491
|
|
|
383
492
|
`local.port`, the `port` option of `app.node` and `app.next`, and a literal port
|
|
384
493
|
in `baseUrl` or `readyUrl` are config errors. The error names the service and
|
|
385
494
|
the key. Delete the setting and use `{port}`. Testkit has no setting that pins
|
|
386
495
|
a service to a fixed port.
|
|
387
496
|
|
|
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.
|
|
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.
|
|
398
506
|
|
|
399
507
|
A `runtime.prepare` step whose environment or command includes a service URL or
|
|
400
508
|
port, such as a Next build that embeds `NEXT_PUBLIC_API_URL: "{baseUrl:api}"`,
|
|
@@ -403,7 +511,8 @@ such values at start time when the build should be cached.
|
|
|
403
511
|
|
|
404
512
|
`run.json` records each service's starts under `environment.services` as they
|
|
405
513
|
happen, with its `runtimeLabel`, `serviceName`, `baseUrl`, `readyUrl`, `port`,
|
|
406
|
-
and each attempt's port and outcome.
|
|
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
|
|
407
516
|
attempts it made, and a service restarted for a moved peer shows both starts.
|
|
408
517
|
The recorded URLs drop credentials, query values, and fragments, so
|
|
409
518
|
`http://127.0.0.1:41234/health?apiKey=x` is stored as
|
|
@@ -436,6 +545,11 @@ the service. Plain services take a string record. `app.node(...)` and
|
|
|
436
545
|
`app.next(...)` take `{ values, databases }` and place the result under
|
|
437
546
|
`local.env`; `local.env` overrides `env` when both set a name.
|
|
438
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
|
+
|
|
439
553
|
Values support the template tokens listed under [`local`](#local), including
|
|
440
554
|
the database tokens:
|
|
441
555
|
|
|
@@ -458,9 +572,8 @@ that run. A repeated run never sees a previous run's connection details.
|
|
|
458
572
|
|
|
459
573
|
Database tokens resolve only in `env` and `local.env` values. Testkit rejects
|
|
460
574
|
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.
|
|
575
|
+
`database.template` strings, which resolve before any database exists. Commands
|
|
576
|
+
read `DATABASE_URL` or a declared env entry at run time instead.
|
|
464
577
|
|
|
465
578
|
Source-schema discovery fails when the env entry it reads as the source URL
|
|
466
579
|
points at the service's own database. A source schema has to come from a
|
|
@@ -481,30 +594,49 @@ to the matching `{db*:api}` token. `env.values` entries override expanded names.
|
|
|
481
594
|
### `envFile` / `envFiles`
|
|
482
595
|
|
|
483
596
|
Optional extra env files loaded into the declared service/task environment for
|
|
484
|
-
migrations, seeds, services, and every execution engine.
|
|
485
|
-
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
|
|
486
598
|
immutable `context.env`; and managed Playwright contexts expose them through
|
|
487
599
|
`readPlaywrightContext().env`. Direct managed-Node `process.env.KEY` reads are a
|
|
488
600
|
non-enumerable compatibility overlay, not the consumer-input contract.
|
|
489
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
|
+
|
|
490
623
|
Environment names are validated case-insensitively. All engines reserve
|
|
491
624
|
`APPDATA`, `ComSpec`, `HOME`, `LANG`, `LC_ALL`, `LOCALAPPDATA`, `PATH`, `PATHEXT`,
|
|
492
625
|
`SystemRoot`, `TEMP`, `TMP`, `TMPDIR`, `USERPROFILE`, `XDG_CACHE_HOME`,
|
|
493
626
|
`XDG_CONFIG_HOME`, and `XDG_DATA_HOME`. Engine-specific reservations and limits
|
|
494
627
|
are:
|
|
495
628
|
|
|
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 |
|
|
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 |
|
|
501
633
|
|
|
502
634
|
Empty names, names containing `=` or NUL, values containing NUL, and
|
|
503
635
|
case-variant duplicates are rejected. The limits apply after env files and
|
|
504
|
-
configured service/runtime values have been merged.
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
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`.
|
|
508
640
|
|
|
509
641
|
### `database`
|
|
510
642
|
|
|
@@ -524,6 +656,19 @@ materialize the database as host-local Docker Postgres.
|
|
|
524
656
|
- `template.verify`
|
|
525
657
|
|
|
526
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
|
+
|
|
527
672
|
`runtimeConnections` is the service runtime slot's Postgres connection budget.
|
|
528
673
|
`maxConnections` and `reservedConnections` describe the backing host-local
|
|
529
674
|
Postgres capacity used for scheduler admission.
|
|
@@ -534,10 +679,9 @@ Template stages are ordered arrays of typed step objects:
|
|
|
534
679
|
- `{ kind: "sql-file", path: "db/schema.sql" }`
|
|
535
680
|
- `{ kind: "module", target: "src/testkit/verify-seed.ts#verifySeed" }`
|
|
536
681
|
|
|
537
|
-
Local files and ordinary external packages are valid module targets.
|
|
538
|
-
`@gfdelarue/testkit`
|
|
539
|
-
|
|
540
|
-
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.
|
|
541
685
|
|
|
542
686
|
`verify` runs after template migrate/seed and must succeed before the template DB
|
|
543
687
|
is cached for reuse.
|
|
@@ -581,19 +725,21 @@ existing role unchanged and rolls back any roles created in the same operation.
|
|
|
581
725
|
Existing object grants and ownership remain untouched. Setup evidence records
|
|
582
726
|
the prerequisite operation, including created or reused roles and conflicts.
|
|
583
727
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
PostgreSQL volume removes its roles, and the next provisioning creates the
|
|
592
|
-
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.
|
|
593
735
|
|
|
594
736
|
### `databaseFrom`
|
|
595
737
|
|
|
596
|
-
|
|
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`.
|
|
597
743
|
|
|
598
744
|
### `runtime`
|
|
599
745
|
|
|
@@ -615,14 +761,14 @@ When configured, `testkit` applies the resolved toolchain to:
|
|
|
615
761
|
- `runtime.prepare` command/module steps
|
|
616
762
|
- local service `start` commands
|
|
617
763
|
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
versions.
|
|
764
|
+
Changing the resolved Node or npm version invalidates prepared artifacts, so
|
|
765
|
+
`runtime.prepare` runs again.
|
|
621
766
|
|
|
622
767
|
### `skip`
|
|
623
768
|
|
|
624
|
-
|
|
625
|
-
|
|
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.
|
|
626
772
|
|
|
627
773
|
Prefer file-local `export const testkit = defineFile({ ... })` metadata
|
|
628
774
|
for per-file skips and locks. Repo-level `skip` is mainly for broad suite-level
|
|
@@ -632,7 +778,7 @@ policy.
|
|
|
632
778
|
skip: {
|
|
633
779
|
files: [
|
|
634
780
|
{
|
|
635
|
-
path: "__testkit__/billing/billing.
|
|
781
|
+
path: "__testkit__/billing/billing.contract.testkit.ts",
|
|
636
782
|
reason: "Billing is currently unavailable",
|
|
637
783
|
},
|
|
638
784
|
],
|
|
@@ -650,7 +796,7 @@ skip: {
|
|
|
650
796
|
- `files[].reason`
|
|
651
797
|
- required non-empty explanation recorded in artifacts
|
|
652
798
|
- `suites[].selector`
|
|
653
|
-
- existing suite selector syntax, including typed selectors like `
|
|
799
|
+
- existing suite selector syntax, including typed selectors like `contract:health`
|
|
654
800
|
and `ui:billing`
|
|
655
801
|
- `suites[].reason`
|
|
656
802
|
- required non-empty explanation recorded in artifacts
|
|
@@ -692,24 +838,30 @@ runtime: {
|
|
|
692
838
|
|
|
693
839
|
### `requirements`
|
|
694
840
|
|
|
695
|
-
|
|
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.
|
|
696
843
|
|
|
697
844
|
```ts
|
|
698
845
|
requirements: {
|
|
699
846
|
suites: [
|
|
700
|
-
{ selector: "
|
|
847
|
+
{ selector: "contract:payments", locks: ["payments-sandbox-webhook"] },
|
|
701
848
|
],
|
|
702
849
|
files: [
|
|
703
850
|
{
|
|
704
|
-
path: "src/api/routes/__testkit__/
|
|
705
|
-
locks: ["
|
|
851
|
+
path: "src/api/routes/__testkit__/payout-webhook.contract.testkit.ts",
|
|
852
|
+
locks: ["payments-sandbox-webhook"],
|
|
706
853
|
},
|
|
707
854
|
],
|
|
708
855
|
}
|
|
709
856
|
```
|
|
710
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
|
+
|
|
711
863
|
- `suites[].selector`
|
|
712
|
-
- typed selector like `
|
|
864
|
+
- typed selector like `contract:health` or `ui:billing`
|
|
713
865
|
- `suites[].locks`
|
|
714
866
|
- named locks required by matching files
|
|
715
867
|
- `files[].path`
|
|
@@ -717,6 +869,62 @@ requirements: {
|
|
|
717
869
|
- `files[].locks`
|
|
718
870
|
- named locks required by that file
|
|
719
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
|
+
|
|
720
928
|
## Config Surface
|
|
721
929
|
|
|
722
930
|
`@gfdelarue/testkit/config` exports:
|
|
@@ -728,43 +936,38 @@ requirements: {
|
|
|
728
936
|
- `database.fixture(...)`
|
|
729
937
|
- `toolchain.node(...)`
|
|
730
938
|
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
- `defineHttpSuite(...)`
|
|
734
|
-
- `defineDalSuite(...)`
|
|
735
|
-
- `defineDalFixtures(...)`
|
|
939
|
+
## Discovery Conventions
|
|
736
940
|
|
|
737
|
-
|
|
738
|
-
`
|
|
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:
|
|
739
943
|
|
|
740
|
-
- `
|
|
741
|
-
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
- `
|
|
745
|
-
-
|
|
746
|
-
- `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`
|
|
747
950
|
|
|
748
|
-
|
|
951
|
+
`--vitest-runner managed` lists them with Testkit's own Vitest and its default
|
|
952
|
+
rules instead, without the repository's config.
|
|
749
953
|
|
|
750
|
-
|
|
954
|
+
Typed suites are discovered from the filesystem:
|
|
751
955
|
|
|
752
956
|
- only files inside `__testkit__/`
|
|
753
|
-
-
|
|
754
|
-
|
|
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`
|
|
755
962
|
|
|
756
963
|
Supported suffixes:
|
|
757
964
|
|
|
758
|
-
- `*.int.testkit.ts`
|
|
759
|
-
- `*.e2e.testkit.ts`
|
|
760
965
|
- `*.contract.testkit.ts`
|
|
761
966
|
- `*.data.testkit.ts`
|
|
762
|
-
- `*.dal.testkit.ts`
|
|
763
|
-
- `*.load.testkit.ts`
|
|
764
967
|
- `*.ui.testkit.ts`
|
|
765
968
|
|
|
766
|
-
Every discovered file must also export `defineFile({ engine: "..." })`
|
|
767
|
-
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
|
|
768
971
|
supplies `engineId`; and Testkit derives `profileId` from the catalog. None of
|
|
769
972
|
those identities are silently rewritten later in the run.
|
|
770
973
|
|
|
@@ -787,30 +990,34 @@ type.
|
|
|
787
990
|
|
|
788
991
|
Examples:
|
|
789
992
|
|
|
790
|
-
- `src/api/routes/__testkit__/auth/me.
|
|
993
|
+
- `src/api/routes/__testkit__/auth/me.contract.testkit.ts`
|
|
791
994
|
- `src/api/routes/__testkit__/runtime.contract.testkit.ts`
|
|
792
995
|
- `src/api/routes/__testkit__/agent-flow.data.testkit.ts`
|
|
793
|
-
- `src/db/__testkit__/sessions/count-type.
|
|
996
|
+
- `src/db/__testkit__/sessions/count-type.contract.testkit.ts`
|
|
794
997
|
- `frontend/__testkit__/navigation/navigation.ui.testkit.ts`
|
|
795
998
|
|
|
796
999
|
`testkit discover` exposes that inventory directly without running suites:
|
|
797
1000
|
|
|
798
1001
|
- `testkit discover`
|
|
799
|
-
- compact human output grouped by
|
|
1002
|
+
- compact human output grouped by group, type, and suite
|
|
800
1003
|
- `testkit discover --output-mode verbose`
|
|
801
|
-
- includes canonical paths, IDs, locks,
|
|
1004
|
+
- includes group roots and uses, canonical paths, IDs, locks, and skip reasons
|
|
802
1005
|
- `testkit discover --json`
|
|
803
1006
|
- returns a machine-readable document with stable field names and enums
|
|
804
1007
|
- `testkit discover --output .testkit/discovery.json`
|
|
805
1008
|
- writes that same machine-readable document to disk
|
|
806
1009
|
|
|
807
1010
|
The discovery JSON/API surface is exported from `@gfdelarue/testkit/workspace`.
|
|
808
|
-
|
|
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:
|
|
809
1015
|
|
|
810
1016
|
- `id`
|
|
811
1017
|
- `path`
|
|
812
|
-
- `
|
|
1018
|
+
- `group`
|
|
813
1019
|
- `suiteName`
|
|
1020
|
+
- `suiteLabel`
|
|
814
1021
|
- `testType`
|
|
815
1022
|
- `engineId`
|
|
816
1023
|
- `profileId`
|
|
@@ -818,20 +1025,7 @@ Each file entry includes canonical machine fields such as:
|
|
|
818
1025
|
- `skipped`
|
|
819
1026
|
- `skipReason`
|
|
820
1027
|
- `locks`
|
|
821
|
-
- `
|
|
1028
|
+
- `runtimeIsolation`
|
|
822
1029
|
|
|
823
1030
|
Human-friendly labels such as `displayName` are additive. They are intended for
|
|
824
1031
|
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`
|