@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/docs/bug-records.md
CHANGED
|
@@ -45,10 +45,10 @@ Two overlapping refund requests for one order both pay out.
|
|
|
45
45
|
## Reproduce
|
|
46
46
|
|
|
47
47
|
```sh
|
|
48
|
-
npx testkit run --file src/checkout/__testkit__/refund.
|
|
48
|
+
npx testkit run --file src/checkout/__testkit__/refund.contract.testkit.ts
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
Test: `src/checkout/__testkit__/refund.
|
|
51
|
+
Test: `src/checkout/__testkit__/refund.contract.testkit.ts`, "a refund pays out once".
|
|
52
52
|
Found at `4f0c2d1e9b7a4c3d8e6f5a4b3c2d1e0f9a8b7c6d`.
|
|
53
53
|
Fault: `src/checkout/refunds.ts`, lines 41 to 58.
|
|
54
54
|
|
|
@@ -66,9 +66,9 @@ Fault: `src/checkout/refunds.ts`, lines 41 to 58.
|
|
|
66
66
|
"escape": "no-test",
|
|
67
67
|
"caughtBy": "campaign",
|
|
68
68
|
"campaign": "refunds-2026-10",
|
|
69
|
-
"testType": "
|
|
69
|
+
"testType": "contract",
|
|
70
70
|
"test": {
|
|
71
|
-
"file": "src/checkout/__testkit__/refund.
|
|
71
|
+
"file": "src/checkout/__testkit__/refund.contract.testkit.ts",
|
|
72
72
|
"title": "a refund pays out once"
|
|
73
73
|
},
|
|
74
74
|
"foundAt": "4f0c2d1e9b7a4c3d8e6f5a4b3c2d1e0f9a8b7c6d",
|
|
@@ -86,29 +86,40 @@ Fault: `src/checkout/refunds.ts`, lines 41 to 58.
|
|
|
86
86
|
|
|
87
87
|
The reproduce command runs from the repository root. When `testkit.config.ts` is in a subdirectory, the command carries `--dir <directory>` and the `--file` path is relative to that directory. The `Test:` and `Fault:` lines always give paths from the repository root.
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
When `testkit bug file` ran the test against [supplied values](../README.md#run-against-a-supplied-environment), the command ends with the `--base-url`, `--endpoint`, `--env-from`, and `--environment-file` flags it was given, as given. They hold no raw secret: `--env-from` names host variables, the environment file stays outside the issue, and `testkit bug file` accepts a URL only without credentials, a query, or a fragment, and an endpoint name only of letters, digits, dot, underscore, and hyphen. It refuses `--database` and `--env`, whose values the command would otherwise carry, and a relative `--environment-file` unless it runs from the repository root. It checks these values, and that every `--env-from` host variable is set, before it contacts the tracker. The command is written for a POSIX shell: flags and simple mappings appear unquoted, and any argument that needs quoting, such as a URL with brackets or a path with a space, is quoted for that shell. The facts block does not change.
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
A fault on one line reads `line 41`.
|
|
92
92
|
|
|
93
93
|
```markdown
|
|
94
|
-
Test: `src/health/__testkit__/health.
|
|
94
|
+
Test: `src/health/__testkit__/health.contract.testkit.ts`, the whole script, recorded as "the health endpoint answers".
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
-
Testkit redacts the secrets it recognises in the title, in every section, and in `test.title`. It does so when it records the bug and again when it files the issue.
|
|
97
|
+
Testkit redacts the secrets it recognises in the title, in every section, and in `test.title`. It does so when it records the bug and again when it files the issue. `testkit run` applies the same rules when it stores a run result. Testkit recognises these forms.
|
|
98
98
|
|
|
99
99
|
- The value of a `KEY=value` assignment whose key names a secret.
|
|
100
100
|
- The password in a URL.
|
|
101
101
|
- The value of an `Authorization`, `Proxy-Authorization`, `Cookie`, or `Set-Cookie` header.
|
|
102
|
-
- A JSON string value whose key names a secret.
|
|
102
|
+
- A JSON string value whose key names a secret, including JSON that is itself inside a JSON string, as in `{"message":"{\"token\":\"…\"}"}`. Testkit reads the key's escapes, so `"\u0074oken"` names a secret too.
|
|
103
|
+
- The value of a single-quoted `'password': '…'` member, in any letter case. It ends at the next apostrophe that no backslash precedes, or with the line.
|
|
103
104
|
|
|
104
|
-
A key names a secret when it contains `PASSWORD`, `TOKEN`, `SECRET`, `PRIVATE_KEY`, `AUTH`, `COOKIE`, `SESSION`, or `API_KEY` in any letter case.
|
|
105
|
+
A key names a secret when it contains `PASSWORD`, `TOKEN`, `SECRET`, `PRIVATE_KEY`, `AUTH`, `COOKIE`, `SESSION`, or `API_KEY` in any letter case. Still keep credentials, tokens, and passwords out of the record.
|
|
105
106
|
|
|
106
|
-
An assigned value ends at the first space, with
|
|
107
|
+
An assigned value ends at the first space, with four exceptions.
|
|
107
108
|
|
|
108
109
|
- A value that starts with `"` or `'` ends at the next such quote on its line. When the line has no such quote, the value ends with the line.
|
|
110
|
+
- A quoted value inside a JSON string (`\"`), or inside JSON that is itself inside a JSON string (`\\\"`), ends at the next quote escaped to the same depth. A quote escaped more deeply belongs to the value. The value ends sooner at a quote escaped less deeply, such as the quote that closes the JSON string, at an escaped line break at its own depth or less, or with the line. A value quoted with an escaped apostrophe, `\'`, works the same way. JSON doesn't escape apostrophes, so each JSON layer only doubles the backslashes (`\\'`). A plain apostrophe inside the value belongs to it.
|
|
109
111
|
- A value that starts with `Basic`, `Bearer`, `Digest`, `Negotiate`, or `Token` and then a space or a tab ends with the line.
|
|
110
112
|
- Under a key that ends in `_URL`, Testkit keeps a value that starts with a scheme, such as `https://`, and redacts the URL's password only.
|
|
111
113
|
|
|
114
|
+
When `testkit run` stores a result, it redacts JSON one string value at a time. That covers text that is a JSON object, array, or string, and a line whose text from its first `{` or `[` is JSON. Each string value gets the rules above, and so does JSON inside a string. A value that runs to a space or to the end of its line therefore ends with its string, and the record's other values stay as they are. Other text gets the rules as written, and so does JSON in two cases:
|
|
115
|
+
|
|
116
|
+
- a rule reading the whole line would redact across the line's first `{` or `[`;
|
|
117
|
+
- a secret Testkit resolved from the run's environment, whole or cut short, crosses the JSON's edge or spans more than one string.
|
|
118
|
+
|
|
119
|
+
A string that holds such a secret in escaped form is redacted as decoded text when the escaped text decodes to the secret, or, for a secret cut short, to the start of one, and redacted whole otherwise. Where these rules and a resolved secret overlap, Testkit redacts every character that either would redact.
|
|
120
|
+
|
|
121
|
+
Testkit writes `<redacted>` in place of the value. A quoted value keeps its quotes, as in `PASSWORD="<redacted>"`, so redacting the text again changes nothing. A `<redacted>` that the text already holds counts as part of the value, so `TOKEN=<redacted>example-secret` becomes `TOKEN=<redacted>`. A secret resolved from the run's environment can itself contain part of `<redacted>`, or a character Testkit reserves. Such a secret can match text that redaction creates, so where it takes part, `testkit run` redacts the whole line of a log, or the whole JSON string, when it stores the result. When such a secret spans lines, or takes part only across lines, `testkit run` redacts every line between the nearest JSON lines instead, or the whole text when it holds none.
|
|
122
|
+
|
|
112
123
|
A URL password is the text between `://user:` and the last `@` before the next `/` or space. The user can be empty, as in `redis://:password@cache`. Testkit does not recognise a password that holds a `/`, or a token that stands alone as the user, as in `https://token@host`.
|
|
113
124
|
|
|
114
125
|
Testkit does not rewrite a path or an area's name. `testkit bug record` rejects a record whose `test.file` or `fault.path` holds text that Testkit redacts. `testkit bug file` stops when the area's name or the reproduce command holds such text.
|
|
@@ -214,29 +225,25 @@ An area id matches `^[a-z0-9]+(?:-[a-z0-9]+)*$` and is at most 40 characters lon
|
|
|
214
225
|
|
|
215
226
|
## Known failures
|
|
216
227
|
|
|
217
|
-
A failed file reports its failures in one of
|
|
228
|
+
A failed file reports its failures in one of two forms.
|
|
218
229
|
|
|
219
|
-
| Failure | When
|
|
220
|
-
| --------------- |
|
|
221
|
-
| Named failure | The engine names the test that failed. One failure for each title.
|
|
222
|
-
|
|
|
223
|
-
| Unnamed failure | The file fails any other way, such as a crash, a timeout, a file that does not load, a Vitest error outside a test, a Playwright error outside a spec, or a k6 script that throws during `setup`. |
|
|
230
|
+
| Failure | When |
|
|
231
|
+
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
232
|
+
| Named failure | The engine names the test that failed. One failure for each title. |
|
|
233
|
+
| Unnamed failure | The file fails any other way, such as a crash, a timeout, a file that does not load, a Vitest error outside a test, a Playwright error outside a spec. |
|
|
224
234
|
|
|
225
235
|
A named failure's title comes from the engine.
|
|
226
236
|
|
|
227
|
-
| Engine | Title
|
|
228
|
-
| ---------- |
|
|
229
|
-
| Vitest | The names of the `describe` blocks around the test and the test's own name, joined by single spaces.
|
|
230
|
-
| Playwright | The names of the `describe` blocks around the spec and the spec's own title, joined by single spaces.
|
|
231
|
-
| k6 | The label of a failed assertion from `@gfdelarue/testkit/k6`, or the assertion's request and default title when it has no label. |
|
|
237
|
+
| Engine | Title |
|
|
238
|
+
| ---------- | ----------------------------------------------------------------------------------------------------- |
|
|
239
|
+
| Vitest | The names of the `describe` blocks around the test and the test's own name, joined by single spaces. |
|
|
240
|
+
| Playwright | The names of the `describe` blocks around the spec and the spec's own title, joined by single spaces. |
|
|
232
241
|
|
|
233
242
|
A Playwright title holds neither the file path nor the project name. A spec that fails in two projects is one named failure.
|
|
234
243
|
|
|
235
|
-
A k6 assertion on a response has a default title when the script gives it no label. Those assertions are `expect.status`, `expect.statusOneOf`, `expect.notStatus`, `expect.json`, `expect.jsonPath`, `expect.error.shape`, and `expect.error.message`. Testkit names such a failure by its request and the default title, as in `GET /health > status is 201`. Inside a k6 `group`, the group's name comes first, as in `orders > GET /health > status is 201`. Any other assertion with no label keeps its default title, such as `row count is 2`. A label names its failure as written, even when it reads like a default title. Two failures in one file whose titles are equal are one named failure.
|
|
236
|
-
|
|
237
244
|
When a file reports named failures, `testkit bug file` rejects a bug record whose `test.title` is not one of their titles. Its message lists the titles a bug record can use.
|
|
238
245
|
|
|
239
|
-
Testkit files no bug under a title that spans lines or holds text it redacts as a secret, so no issue with a `test.title` covers such a failure. `testkit run` redacts
|
|
246
|
+
Testkit files no bug under a title that spans lines or holds text it redacts as a secret, so no issue with a `test.title` covers such a failure. `testkit run` redacts those secrets when it stores a run result and writes `<redacted>` in their place. A title that the run result stores with `<redacted>` is such a title. Rename the test, or give the assertion a label, so that its title is one line and holds no such text. [Issue body](#issue-body) lists what Testkit redacts.
|
|
240
247
|
|
|
241
248
|
Vitest reports an error outside a test when a hook such as `beforeAll` throws, or when code throws after its test has returned. The file then reports one unnamed failure beside its named failures.
|
|
242
249
|
|
|
@@ -250,22 +257,15 @@ A file also reports one unnamed failure beside its named failures when the engin
|
|
|
250
257
|
- A Playwright config sets `failOnFlakyTests` and a spec passes only on a retry. A spec that passes on a retry is no named failure, so no issue can cover it.
|
|
251
258
|
- A Playwright spec fails in a file other than the selected one, such as a spec in a project that the selected file's project depends on or a spec in a teardown project. That spec is no named failure of the selected file, so no issue can cover it. A spec's file is the file that Playwright loaded. A compiled file whose source map names the selected file is still another file.
|
|
252
259
|
- Testkit cannot keep a file that a Playwright spec attached, or cannot store the evidence of the Playwright run.
|
|
253
|
-
- A k6 process whose thresholds failed ends on a signal or with an exit code other than 99.
|
|
254
|
-
- A k6 process whose script threw an error ends on a signal or with an exit code other than 0 or 99, or leaves no summary that Testkit can read.
|
|
255
|
-
|
|
256
|
-
A k6 script reports a script failure and no named failure when it fails only through `fail()`, a thrown error, a k6 `check()`, or a threshold. `testkit bug file` then files one issue for the whole file, and the issue's facts carry no `test.title`.
|
|
257
|
-
|
|
258
|
-
A k6 script reports its named failures and one script failure when it also fails that way beside the assertions the run names. Testkit tells a k6 `check()` from its own assertions by count. The k6 summary counts every failed check, and each failed assertion from `@gfdelarue/testkit/k6` is one failed check. When the summary's count differs from the number of failed assertions the run names, or the summary carries no count, the file has a script failure.
|
|
259
260
|
|
|
260
261
|
A failure is known when an open issue with the `testkit` label covers it. The issue's `test.file` must equal the failing file's path from the repository root.
|
|
261
262
|
|
|
262
263
|
| Failure | Covered by |
|
|
263
264
|
| --------------- | ----------------------------------------------------------------------------------------------------- |
|
|
264
265
|
| Named failure | An issue whose `test.title` equals the failure's title, or an issue whose facts have no `test.title`. |
|
|
265
|
-
| Script failure | An issue whose facts have no `test.title`. |
|
|
266
266
|
| Unnamed failure | No issue. |
|
|
267
267
|
|
|
268
|
-
An issue with a `test.title` covers that one title and nothing else. An issue with no `test.title` covers the whole file. That is every named failure in the file
|
|
268
|
+
An issue with a `test.title` covers that one title and nothing else. An issue with no `test.title` covers the whole file. That is every named failure in the file, and never an unnamed failure. An unnamed failure is always new. Closing an issue makes the next failure it covered new.
|
|
269
269
|
|
|
270
270
|
When Testkit cannot read the issues, every failure is new.
|
|
271
271
|
|
|
@@ -282,7 +282,7 @@ When Testkit cannot read the issues, every failure is new.
|
|
|
282
282
|
| Target URL | The CI run's URL, when the CI provider gives one. |
|
|
283
283
|
| Description | See below. At most 140 characters. |
|
|
284
284
|
|
|
285
|
-
The description has one of
|
|
285
|
+
The description has one of two forms.
|
|
286
286
|
|
|
287
287
|
| Run | Description |
|
|
288
288
|
| -------------------------------- | -------------------------- |
|
|
@@ -294,12 +294,12 @@ The counts are failures. A script failure counts as one failure. An unnamed fail
|
|
|
294
294
|
|
|
295
295
|
Testkit redacts the secrets it recognises in the reason. [Issue body](#issue-body) lists the forms.
|
|
296
296
|
|
|
297
|
-
|
|
297
|
+
A run result stored before Testkit 0.5.0 can keep the rest of a secret after a `<redacted>`. The description therefore ends at the first `<redacted>` in the stored reason, keeping a quote that directly follows it. A redacted URL password is the exception. `testkit run` always redacted a URL password whole, so the description continues past it.
|
|
298
298
|
|
|
299
299
|
## Pull request comment
|
|
300
300
|
|
|
301
|
-
`testkit ci report` keeps one comment on the run's pull request and updates it in place. The comment's first line is `<!-- testkit-ci-report -->`, or `<!-- testkit-ci-report:<context> -->` when the context is not `testkit`. Testkit
|
|
301
|
+
`testkit ci report` keeps one comment on the run's pull request and updates it in place. The comment's first line is `<!-- testkit-ci-report -->`, or `<!-- testkit-ci-report:<context> -->` when the context is not `testkit`. Testkit updates the comment that starts with that line, and adds one when no comment does, so each context keeps its own comment.
|
|
302
302
|
|
|
303
303
|
The comment names each failure by its file and its title. Testkit redacts the secrets it recognises in both, in the reason for a run that failed outside its tests, and in the reason it could not read the open bugs. [Issue body](#issue-body) lists the forms.
|
|
304
304
|
|
|
305
|
-
A file, a title, or a run's reason that the run result stores with `<redacted>` ends there in the comment and in the step summary, as it does in the [commit status](#commit-status). A title such as `rejects PASSWORD=<redacted> with 401` shows as `rejects PASSWORD=<redacted
|
|
305
|
+
A file, a title, or a run's reason that the run result stores with `<redacted>` ends there in the comment and in the step summary, as it does in the [commit status](#commit-status). A title such as `rejects PASSWORD=<redacted> with 401` shows as `rejects PASSWORD=<redacted>`, and `rejects PASSWORD="<redacted>" with 401` shows as `rejects PASSWORD="<redacted>"`.
|
package/docs/engines.md
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# Engines
|
|
2
|
+
|
|
3
|
+
Testkit runs tests with two engines: `node-vitest` and `playwright`.
|
|
4
|
+
[Execution engines](../README.md#execution-engines) says which files each one
|
|
5
|
+
runs. This page covers what a test author or a CI setup needs from each engine:
|
|
6
|
+
native authoring, typechecking, the environment a test receives, Playwright
|
|
7
|
+
attachments, and installation.
|
|
8
|
+
|
|
9
|
+
## Engine-native authoring
|
|
10
|
+
|
|
11
|
+
Each engine keeps its own test language. The root package declares a typed
|
|
12
|
+
file's engine, and each engine's subpath exposes that engine's API.
|
|
13
|
+
|
|
14
|
+
Node/Vitest runs plain Vitest test files, and data and contract suites:
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { defineFile } from "@gfdelarue/testkit";
|
|
18
|
+
import { dataScenario } from "@gfdelarue/testkit/node-vitest/data";
|
|
19
|
+
import { expect } from "vitest";
|
|
20
|
+
|
|
21
|
+
export const testkit = defineFile({ engine: "node-vitest" });
|
|
22
|
+
|
|
23
|
+
dataScenario("records checkout traffic", ({ count, record }) => {
|
|
24
|
+
record("checkout", { count: 1 });
|
|
25
|
+
count("orders", 1);
|
|
26
|
+
expect(1).toBe(1);
|
|
27
|
+
});
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Playwright runs UI suites and keeps ordinary Playwright configuration:
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
import { defineFile } from "@gfdelarue/testkit";
|
|
34
|
+
import { expect, test } from "@playwright/test";
|
|
35
|
+
|
|
36
|
+
export const testkit = defineFile({ engine: "playwright" });
|
|
37
|
+
|
|
38
|
+
test("shows the account", async ({ page }) => {
|
|
39
|
+
await page.goto("/account");
|
|
40
|
+
await expect(page.getByRole("heading", { name: "Account" })).toBeVisible();
|
|
41
|
+
});
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Typechecking
|
|
45
|
+
|
|
46
|
+
`testkit typecheck` groups the discovered test files by engine and by their
|
|
47
|
+
nearest tsconfig, and checks each group with native `tsc --noEmit`. Plain Vitest
|
|
48
|
+
test files written in TypeScript join the Node/Vitest program, and plain
|
|
49
|
+
JavaScript files are skipped. Config and Node/Vitest use Node types and ES2022;
|
|
50
|
+
Playwright adds DOM and DOM.Iterable. Each check has a deadline and can be
|
|
51
|
+
cancelled. When a program fails, the report includes the programs that passed
|
|
52
|
+
before it.
|
|
53
|
+
|
|
54
|
+
Testkit supports consumer TypeScript 5.9.3 and 6.0.2. Each program uses the
|
|
55
|
+
compiler installed beside its nearest tsconfig or in an ancestor directory, and
|
|
56
|
+
otherwise Testkit's bundled compiler. Config checking starts at the product
|
|
57
|
+
root. Runtime toolchain settings don't select the typecheck compiler.
|
|
58
|
+
|
|
59
|
+
TypeScript follows transitive imports and workspace links and reports type
|
|
60
|
+
errors. Programs inherit the consumer's compiler options and aliases, but a
|
|
61
|
+
tsconfig's `files`, `include`, and project references don't add test roots.
|
|
62
|
+
Testkit's authoring declarations and its pinned engine packages take precedence
|
|
63
|
+
over conflicting consumer packages. A helper shared by several engines must
|
|
64
|
+
typecheck in each engine's program. Testkit's generated configs don't set
|
|
65
|
+
`baseUrl`, so they need no deprecation suppression and you never edit them.
|
|
66
|
+
Aliases inherited from a config with `baseUrl` keep their target directory and
|
|
67
|
+
fallback order.
|
|
68
|
+
|
|
69
|
+
### Playwright support files
|
|
70
|
+
|
|
71
|
+
A Playwright program always includes the discovered UI suites and the nearest
|
|
72
|
+
`playwright.config.*` above the owning group's roots. Typechecking never runs
|
|
73
|
+
that config. For support files that the config names as strings or chooses at
|
|
74
|
+
run time, add a `tsconfig.playwright.json` in the test file's directory or an
|
|
75
|
+
ancestor inside the product root:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"extends": "./tsconfig.json",
|
|
80
|
+
"files": ["global/setup.ts", "global/teardown.ts"],
|
|
81
|
+
"include": ["fixtures/**/*.ts", "reporters/**/*.ts", "projects/**/*.ts"],
|
|
82
|
+
"exclude": ["projects/generated/**"]
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The nearest companion takes precedence over the ordinary tsconfig for that
|
|
87
|
+
Playwright scope. Its `extends`, `files`, `include`, and `exclude` select the
|
|
88
|
+
support files that join the Playwright program. Use it for global setup and
|
|
89
|
+
teardown, reporters, fixtures, and dependency and teardown projects, including
|
|
90
|
+
every variant of a multi-project config. An empty companion can supply options
|
|
91
|
+
alone. Without a companion, Testkit checks the implicit roots, what they import,
|
|
92
|
+
and the existing Next ambient and fixture defaults. Project references don't
|
|
93
|
+
run.
|
|
94
|
+
|
|
95
|
+
TypeScript follows imported helpers, but it can't find a file that only a
|
|
96
|
+
runtime string or function names. Include those files in the companion.
|
|
97
|
+
|
|
98
|
+
## Environment
|
|
99
|
+
|
|
100
|
+
The environment declared for a test is part of the test's input. Each engine
|
|
101
|
+
exposes it through its own authoring surface:
|
|
102
|
+
|
|
103
|
+
- Node/Vitest data and contract callbacks read it from immutable `context.env`.
|
|
104
|
+
- Playwright files read immutable `context.env` from `readPlaywrightContext()`
|
|
105
|
+
when Testkit runs them.
|
|
106
|
+
|
|
107
|
+
Outside a Testkit run, a Node/Vitest authoring context has an empty `env`, and
|
|
108
|
+
`readPlaywrightContext()` returns `null`.
|
|
109
|
+
|
|
110
|
+
Typed Node/Vitest files, and plain files under `--vitest-runner managed`, also
|
|
111
|
+
see each value as an immutable, non-enumerable `process.env.KEY` property, so
|
|
112
|
+
libraries that read `process.env` see it. `process.env` isn't the enumerable
|
|
113
|
+
list of the test's values, though. A Node child that inherits Testkit's
|
|
114
|
+
bootstrap sees the values too. A non-Node child process receives only the
|
|
115
|
+
values the test passes it. Plain files under the repository's Vitest get the
|
|
116
|
+
values as ordinary environment variables, which tests and child processes can
|
|
117
|
+
read, enumerate, change, and delete like any other.
|
|
118
|
+
|
|
119
|
+
Test files of every engine may import `@gfdelarue/testkit/environment` and read
|
|
120
|
+
named endpoints, databases, and handles with `endpoint(name)`, `database(name)`,
|
|
121
|
+
and `handle(name)`. See
|
|
122
|
+
[Named endpoints and databases](../README.md#named-endpoints-and-databases) and
|
|
123
|
+
[Handles](../README.md#handles). `testkit.config.ts` and lifecycle step modules
|
|
124
|
+
may not import it. In Node, a handle's operations use `node:http`, so a test
|
|
125
|
+
that replaces `fetch` doesn't reroute them.
|
|
126
|
+
|
|
127
|
+
Testkit checks the consumer environment's names case-insensitively. Empty
|
|
128
|
+
names, names containing `=` or NUL, values containing NUL, and names that
|
|
129
|
+
differ only in case fail instead of being normalized. Every engine reserves
|
|
130
|
+
the keys `APPDATA`, `ComSpec`, `HOME`, `LANG`, `LC_ALL`, `LOCALAPPDATA`, `PATH`,
|
|
131
|
+
`PATHEXT`, `SystemRoot`, `TEMP`, `TMP`, `TMPDIR`, `USERPROFILE`,
|
|
132
|
+
`XDG_CACHE_HOME`, `XDG_CONFIG_HOME`, and `XDG_DATA_HOME`.
|
|
133
|
+
|
|
134
|
+
Each engine also reserves these prefixes and keys, and limits the consumer
|
|
135
|
+
environment:
|
|
136
|
+
|
|
137
|
+
| Engine | Reserved prefixes | Other reserved keys | Consumer environment limit |
|
|
138
|
+
| ------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
|
|
139
|
+
| `node-vitest` | none | `BASE_URL`, `FORCE_COLOR`, `NODE_OPTIONS`, `NO_COLOR`, `UPDATE_SNAPSHOT`, `VITEST_POOL_ID`, `VITEST_WORKER_ID`, `TESTKIT_ACTIVE`, `TESTKIT_DATA_ARTIFACT_DIR`, `TESTKIT_INVOCATION_ID`, `TESTKIT_LEASE_DIR`, `TESTKIT_LEASE_ID`, `TESTKIT_MODE`, `TESTKIT_NODE_VITEST_INPUT_FILE`, `TESTKIT_NODE_VITEST_INPUT_SHA256`, `TESTKIT_RUNTIME_ID`, `TESTKIT_TEST_FILE`, `TESTKIT_TEST_ID` | 512 entries and 4 MiB of UTF-8 key/value data; 8 MiB for all of the test's inputs together |
|
|
140
|
+
| `playwright` | `TESTKIT_`, `PLAYWRIGHT_`, `PWTEST_`, `PW_TEST_` | `BASE_URL`, `FORCE_COLOR`, `NODE_OPTIONS`, `NO_COLOR` | 512 entries and 2 MiB of UTF-8 key/value data; 4 MiB for all of the test's inputs together |
|
|
141
|
+
|
|
142
|
+
Prefixes and keys match in any letter case. The processes Testkit starts have
|
|
143
|
+
separate environment limits, which consumer values don't count toward: 24,576
|
|
144
|
+
character units for Testkit's own Vitest, and 64 entries and 24 KiB for
|
|
145
|
+
Playwright. The repository's Vitest starts with the shell's environment and the
|
|
146
|
+
group's values, so only the operating system's limit applies to it. The
|
|
147
|
+
reservations keep consumer
|
|
148
|
+
configuration from overriding the endpoint, cancellation, deadline, reporter,
|
|
149
|
+
module-resolution, and native-runner controls Testkit sets.
|
|
150
|
+
|
|
151
|
+
## Compilation cache
|
|
152
|
+
|
|
153
|
+
Node/Vitest and Playwright reuse Node's compilation cache across a run's files.
|
|
154
|
+
Only compiled code is shared: evaluated modules, globals, and runner state stay
|
|
155
|
+
in each test process. The cache lasts for one run. Setting Node's own cache controls or enabling V8 coverage
|
|
156
|
+
turns it off, and a cache Testkit can't use falls back to running without one.
|
|
157
|
+
|
|
158
|
+
Testkit rejects a file it reads for a test, such as a fixture, when a symlink
|
|
159
|
+
leads it outside the product directory. A file inside the product whose name
|
|
160
|
+
starts with `..`, such as `..fixtures/input.json`, is fine.
|
|
161
|
+
|
|
162
|
+
## Playwright reports and attachments
|
|
163
|
+
|
|
164
|
+
Testkit adds its reporter after the product's reporters, including JSON
|
|
165
|
+
reporters, so the product's reporters keep running.
|
|
166
|
+
|
|
167
|
+
A Playwright attachment may hold at most 64 MiB, and one file's attachments at
|
|
168
|
+
most 256 MiB in total, whether the test attached a body or a path. An
|
|
169
|
+
attachment over a limit fails the task with `PLAYWRIGHT_ATTACHMENT_LIMIT`,
|
|
170
|
+
which names the attachment, the limit, and the bytes it held, and takes
|
|
171
|
+
precedence over the spec's own result. An attachment that can't be read fails
|
|
172
|
+
the task as an infrastructure failure when no spec failed. Either way, the
|
|
173
|
+
results, assertion details, and accepted attachments of the rest of the file
|
|
174
|
+
are kept, and every rejected attachment stays in the evidence. Cancellation,
|
|
175
|
+
timeouts, and process failures keep their precedence over both.
|
|
176
|
+
|
|
177
|
+
## Installation
|
|
178
|
+
|
|
179
|
+
Consumers declare one dependency, `@gfdelarue/testkit`. It installs Vitest
|
|
180
|
+
4.1.11 and Playwright 1.59.1. Plain Vitest test files run with the product's own
|
|
181
|
+
Vitest 4.x and its config; see
|
|
182
|
+
[Plain Vitest test files](../README.md#plain-vitest-test-files). Otherwise a
|
|
183
|
+
product's copies of Vitest, Vite, esbuild, TypeScript, or Playwright don't
|
|
184
|
+
replace the versions Testkit runs.
|
|
185
|
+
|
|
186
|
+
Keep optional dependencies enabled because JavaScript tools such as esbuild
|
|
187
|
+
use platform-specific optional packages. The product's lockfile makes the
|
|
188
|
+
install reproducible. Testkit never downloads a missing package during a run.
|
|
189
|
+
|
|
190
|
+
Browser installation is explicit:
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
testkit setup playwright
|
|
194
|
+
testkit setup playwright --with-deps
|
|
195
|
+
testkit setup playwright --force
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
The command runs Playwright's own installer for Chromium. A run never installs
|
|
199
|
+
a browser. When Chromium fails to launch, the task fails as an infrastructure
|
|
200
|
+
failure with Playwright's own cause. The product's Playwright global setup and
|
|
201
|
+
teardown still run.
|
|
202
|
+
|
|
203
|
+
To recover a broken install, reinstall from the lockfile with optional
|
|
204
|
+
dependencies included. To recover a broken browser, run
|
|
205
|
+
`testkit setup playwright --force`, adding `--with-deps` on a host that lacks
|
|
206
|
+
the browser's system libraries.
|
|
207
|
+
|
|
208
|
+
### Supported platforms
|
|
209
|
+
|
|
210
|
+
- Linux: Node/Vitest supports glibc and musl. Playwright doesn't support
|
|
211
|
+
musl and fails before setup or a run starts.
|
|
212
|
+
- macOS: arm64 and x64.
|
|
213
|
+
- Windows: x64 on Windows 10 or Windows Server 2016 and newer.
|
package/docs/test-types.md
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
# Test Types
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A test file is either a plain Vitest test file or a typed file.
|
|
4
|
+
|
|
5
|
+
Plain Vitest test files have no test type. A file such as `src/sum.test.ts`
|
|
6
|
+
imports `test` and `expect` from `vitest` and needs no Testkit suffix,
|
|
7
|
+
`__testkit__` directory, `defineFile`, or wrapper. Unit tests belong here, and
|
|
8
|
+
so does any Node-side test that reads its environment from `process.env` or
|
|
9
|
+
`@gfdelarue/testkit/environment`. These files run under the general
|
|
10
|
+
`node-vitest` profile, and a bug filed from one records no `testType`. See
|
|
11
|
+
[Plain Vitest test files](../README.md#plain-vitest-test-files) for which files
|
|
12
|
+
Testkit runs.
|
|
13
|
+
|
|
14
|
+
Typed files carry one of three product-level test types in their filename
|
|
15
|
+
suffix:
|
|
4
16
|
|
|
5
17
|
- `ui`: browser-level UI checks for user-visible pages and interactions.
|
|
6
|
-
- `e2e`: service-spanning flows that exercise real runtime behavior without driving a browser.
|
|
7
|
-
- `int`: integration checks around routes, services, queues, jobs, or other runtime boundaries.
|
|
8
18
|
- `contract`: Node-backed service/runtime contract checks that need Node APIs but are not data-flow evidence suites.
|
|
9
19
|
- `data`: data-flow and data-contract checks for throughput, payload shape, conversation/request traces, and cost/latency budgets.
|
|
10
|
-
- `dal`: data access and persistence checks.
|
|
11
|
-
- `load`: load, soak, or pressure checks.
|
|
12
20
|
|
|
13
21
|
Consumers choose the type that describes the product behavior and declare the
|
|
14
22
|
execution engine in each file's `defineFile(...)` metadata. Testkit validates
|
|
@@ -16,21 +24,20 @@ that pair against its engine catalog and resolves the exact runner profile.
|
|
|
16
24
|
|
|
17
25
|
The current catalog is deliberately explicit:
|
|
18
26
|
|
|
19
|
-
| Test type
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
| `
|
|
23
|
-
| `
|
|
24
|
-
| `
|
|
25
|
-
| `ui` | `playwright` | `playwright-ui` |
|
|
27
|
+
| Test type | Engine | Runner profile |
|
|
28
|
+
| ------------------ | ------------- | ---------------------- |
|
|
29
|
+
| none, a plain file | `node-vitest` | `node-vitest` |
|
|
30
|
+
| `data` | `node-vitest` | `node-vitest-data` |
|
|
31
|
+
| `contract` | `node-vitest` | `node-vitest-contract` |
|
|
32
|
+
| `ui` | `playwright` | `playwright-ui` |
|
|
26
33
|
|
|
27
|
-
Every file must import `defineFile` from the root package and export one
|
|
28
|
-
metadata declaration:
|
|
34
|
+
Every typed file must import `defineFile` from the root package and export one
|
|
35
|
+
direct metadata declaration:
|
|
29
36
|
|
|
30
37
|
```ts
|
|
31
38
|
import { defineFile } from "@gfdelarue/testkit";
|
|
32
39
|
|
|
33
|
-
export const testkit = defineFile({ engine: "
|
|
40
|
+
export const testkit = defineFile({ engine: "node-vitest" });
|
|
34
41
|
```
|
|
35
42
|
|
|
36
43
|
The engine is not inferred from the suffix, imports, or repo configuration. A
|
|
@@ -38,24 +45,22 @@ missing declaration, dynamic engine value, or unsupported pair is a discovery
|
|
|
38
45
|
error. The profile is derived from the validated pair and is carried unchanged
|
|
39
46
|
through scheduling, results, and immutable run evidence.
|
|
40
47
|
|
|
41
|
-
Run selection by `--file`, `--
|
|
42
|
-
whose engine metadata is read and validated.
|
|
43
|
-
|
|
44
|
-
|
|
48
|
+
Run selection by `--file`, `--group`, `--type`, or `--suite` narrows the files
|
|
49
|
+
whose engine metadata is read and validated. A `--type` that names test types
|
|
50
|
+
and typed suite selectors select typed files only; `--type all` includes plain
|
|
51
|
+
files. Testkit uses discovered paths, canonical type
|
|
52
|
+
suffixes, and suite names to select candidates; each selected typed file must
|
|
53
|
+
still declare a valid engine. Invalid metadata in an unselected file
|
|
45
54
|
does not block that focused run. Root configuration, service dependencies, and
|
|
46
|
-
|
|
55
|
+
group skip, requirement, and isolation selectors remain validated against
|
|
47
56
|
the complete discovered project. `discover`, `doctor`, and `typecheck` validate
|
|
48
57
|
metadata across the whole project.
|
|
49
58
|
|
|
50
59
|
Canonical filename suffixes:
|
|
51
60
|
|
|
52
61
|
- `*.ui.testkit.ts`
|
|
53
|
-
- `*.e2e.testkit.ts`
|
|
54
62
|
- `*.contract.testkit.ts`
|
|
55
63
|
- `*.data.testkit.ts`
|
|
56
|
-
- `*.int.testkit.ts`
|
|
57
|
-
- `*.dal.testkit.ts`
|
|
58
|
-
- `*.load.testkit.ts`
|
|
59
64
|
|
|
60
65
|
UI tests may import Playwright's public browser primitives directly from the
|
|
61
66
|
managed native package:
|
|
@@ -112,15 +117,12 @@ data-flow suite.
|
|
|
112
117
|
Data suites run as Node processes managed by Testkit's `node-vitest` engine and
|
|
113
118
|
should use configured service URLs for data-flow evidence. If a check requires
|
|
114
119
|
service-local loopback, `serviceContextUrl`, DOM rendering, browser automation,
|
|
115
|
-
or raw app-server process access, use
|
|
116
|
-
|
|
117
|
-
Use
|
|
118
|
-
`contract` for
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
native k6 options, scenarios, executors, VUs, thresholds, and lifecycle hooks;
|
|
122
|
-
Testkit orchestrates them without translating those concepts into the other
|
|
123
|
-
engines.
|
|
120
|
+
or raw app-server process access, use a plain Vitest test, `contract`, or `ui` instead.
|
|
121
|
+
|
|
122
|
+
Use a plain Vitest test file for unit tests and other Node-side checks that need
|
|
123
|
+
no Testkit context, `contract` for typed service or protocol contracts, and `ui`
|
|
124
|
+
when the browser is part of the assertion. Plain Vitest files can exercise HTTP,
|
|
125
|
+
persistence, and service-spanning flows without a type label.
|
|
124
126
|
|
|
125
127
|
The retired `@gfdelarue/testkit/runtime`, `@gfdelarue/testkit/data`,
|
|
126
128
|
`@gfdelarue/testkit/contract`, `@gfdelarue/testkit/ui`, and
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gfdelarue/testkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Test orchestration platform for product acceptance and QA workflows",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
|
@@ -12,59 +12,59 @@
|
|
|
12
12
|
"access": "public",
|
|
13
13
|
"registry": "https://registry.npmjs.org/"
|
|
14
14
|
},
|
|
15
|
-
"types": "./dist/index.d.ts",
|
|
15
|
+
"types": "./dist/types/index.d.ts",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
18
|
-
"types": "./dist/index.d.ts",
|
|
18
|
+
"types": "./dist/types/index.d.ts",
|
|
19
19
|
"default": "./dist/index.js"
|
|
20
20
|
},
|
|
21
|
-
"./k6": {
|
|
22
|
-
"types": "./dist/engines/k6/runtime/index.d.ts",
|
|
23
|
-
"default": "./dist/engines/k6/runtime/index.js"
|
|
24
|
-
},
|
|
25
21
|
"./config": {
|
|
26
|
-
"types": "./dist/config
|
|
22
|
+
"types": "./dist/types/config.d.ts",
|
|
27
23
|
"default": "./dist/config/authoring/index.js"
|
|
28
24
|
},
|
|
29
25
|
"./config/database-steps": {
|
|
30
|
-
"types": "./dist/database
|
|
26
|
+
"types": "./dist/types/config-database-steps.d.ts",
|
|
31
27
|
"default": "./dist/database/steps.js"
|
|
32
28
|
},
|
|
33
29
|
"./drizzle": {
|
|
34
|
-
"types": "./dist/
|
|
30
|
+
"types": "./dist/types/drizzle.d.ts",
|
|
35
31
|
"default": "./dist/database/drizzle/index.js"
|
|
36
32
|
},
|
|
37
33
|
"./env": {
|
|
38
|
-
"types": "./dist/
|
|
34
|
+
"types": "./dist/types/env.d.ts",
|
|
39
35
|
"default": "./dist/config/runtime/env/index.js"
|
|
40
36
|
},
|
|
37
|
+
"./environment": {
|
|
38
|
+
"types": "./dist/types/environment.d.ts",
|
|
39
|
+
"default": "./dist/engines/environment/index.js"
|
|
40
|
+
},
|
|
41
41
|
"./playwright": {
|
|
42
|
-
"types": "./dist/
|
|
42
|
+
"types": "./dist/types/playwright.d.ts",
|
|
43
43
|
"default": "./dist/engines/playwright/runtime/index.js"
|
|
44
44
|
},
|
|
45
45
|
"./tooling/vitest": {
|
|
46
|
-
"types": "./dist/
|
|
46
|
+
"types": "./dist/types/tooling-vitest.d.ts",
|
|
47
47
|
"default": "./dist/toolchains/vitest/index.js"
|
|
48
48
|
},
|
|
49
49
|
"./node-vitest/data": {
|
|
50
|
-
"types": "./dist/
|
|
50
|
+
"types": "./dist/types/node-vitest-data.d.ts",
|
|
51
51
|
"default": "./dist/engines/node-vitest/runtime/data/index.js"
|
|
52
52
|
},
|
|
53
53
|
"./node-vitest/contract": {
|
|
54
|
-
"types": "./dist/
|
|
54
|
+
"types": "./dist/types/node-vitest-contract.d.ts",
|
|
55
55
|
"default": "./dist/engines/node-vitest/runtime/contract/index.js"
|
|
56
56
|
},
|
|
57
57
|
"./workspace": {
|
|
58
|
-
"types": "./dist/
|
|
58
|
+
"types": "./dist/types/workspace.d.ts",
|
|
59
59
|
"default": "./dist/app/inspect/index.js"
|
|
60
60
|
},
|
|
61
61
|
"./package.json": "./package.json",
|
|
62
62
|
"./config/build-assets": {
|
|
63
|
-
"types": "./dist/config
|
|
63
|
+
"types": "./dist/types/config-build-assets.d.ts",
|
|
64
64
|
"default": "./dist/config/runtime/build-assets.js"
|
|
65
65
|
},
|
|
66
66
|
"./config/next-runtime-tsconfig": {
|
|
67
|
-
"types": "./dist/config
|
|
67
|
+
"types": "./dist/types/config-next-runtime-tsconfig.d.ts",
|
|
68
68
|
"default": "./dist/config/runtime/next-runtime-tsconfig.js"
|
|
69
69
|
}
|
|
70
70
|
},
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"bin/",
|
|
88
88
|
"dist/",
|
|
89
89
|
"docs/bug-records.md",
|
|
90
|
-
"docs/
|
|
90
|
+
"docs/engines.md",
|
|
91
91
|
"docs/test-types.md",
|
|
92
92
|
"testkit-config-schema.md"
|
|
93
93
|
],
|
|
@@ -102,18 +102,18 @@
|
|
|
102
102
|
"@gfdelarue/code-budget": "0.1.2",
|
|
103
103
|
"@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
|
|
104
104
|
"@kitschpatrol/tokei": "2.0.2",
|
|
105
|
-
"@types/k6": "1.6.0",
|
|
106
105
|
"@types/picomatch": "4.0.3",
|
|
107
106
|
"@types/yauzl": "3.4.0",
|
|
107
|
+
"dts-bundle-generator": "9.5.1",
|
|
108
108
|
"globals": "^17.7.0",
|
|
109
|
+
"pg": "8.23.1",
|
|
109
110
|
"prettier": "3.9.6",
|
|
110
111
|
"strip-ansi": "^7.1.2",
|
|
111
112
|
"tsx": "4.23.12",
|
|
112
113
|
"typescript-eslint": "^8.65.0",
|
|
113
114
|
"typescript6": "npm:typescript@6.0.2",
|
|
114
115
|
"typescript7": "npm:typescript@7.0.2",
|
|
115
|
-
"verdaccio": "6.10.3"
|
|
116
|
-
"xk6-sql": "https://github.com/grafana/xk6-sql/archive/refs/tags/v1.0.6.tar.gz"
|
|
116
|
+
"verdaccio": "6.10.3"
|
|
117
117
|
},
|
|
118
118
|
"dependencies": {
|
|
119
119
|
"@playwright/test": "1.59.1",
|
|
@@ -138,13 +138,6 @@
|
|
|
138
138
|
"wrap-ansi": "^10.0.0",
|
|
139
139
|
"yauzl": "3.4.0"
|
|
140
140
|
},
|
|
141
|
-
"optionalDependencies": {
|
|
142
|
-
"@gfdelarue/testkit-engine-k6-darwin-arm64": "1.0.0",
|
|
143
|
-
"@gfdelarue/testkit-engine-k6-darwin-x64": "1.0.0",
|
|
144
|
-
"@gfdelarue/testkit-engine-k6-linux-arm64": "1.0.0",
|
|
145
|
-
"@gfdelarue/testkit-engine-k6-linux-x64": "1.0.0",
|
|
146
|
-
"@gfdelarue/testkit-engine-k6-win32-x64": "1.0.0"
|
|
147
|
-
},
|
|
148
141
|
"overrides": {
|
|
149
142
|
"postcss": "8.5.24"
|
|
150
143
|
},
|