From 8d747d20b82bb2519412fbd9b32e7ab677424c81 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 21 Apr 2026 02:54:47 +0100 Subject: [PATCH] test: split contract vitest shards --- package.json | 4 +- scripts/test-projects.mjs | 6 +- scripts/test-projects.test-support.mjs | 84 +++++++++++++++++-- src/scripts/test-projects.test.ts | 4 +- test/scripts/test-projects.test.ts | 28 ++++++- test/vitest-projects-config.test.ts | 13 +-- test/vitest/vitest.config.ts | 6 +- .../vitest.contracts-channel-config.config.ts | 6 ++ ...itest.contracts-channel-registry.config.ts | 6 ++ ...vitest.contracts-channel-session.config.ts | 6 ++ ...vitest.contracts-channel-surface.config.ts | 6 ++ test/vitest/vitest.contracts-plugin.config.ts | 3 + test/vitest/vitest.contracts-shared.ts | 69 +++++++++++++++ test/vitest/vitest.contracts.config.ts | 41 --------- test/vitest/vitest.shared.config.ts | 7 +- test/vitest/vitest.test-shards.mjs | 8 +- 16 files changed, 233 insertions(+), 64 deletions(-) create mode 100644 test/vitest/vitest.contracts-channel-config.config.ts create mode 100644 test/vitest/vitest.contracts-channel-registry.config.ts create mode 100644 test/vitest/vitest.contracts-channel-session.config.ts create mode 100644 test/vitest/vitest.contracts-channel-surface.config.ts create mode 100644 test/vitest/vitest.contracts-plugin.config.ts create mode 100644 test/vitest/vitest.contracts-shared.ts delete mode 100644 test/vitest/vitest.contracts.config.ts diff --git a/package.json b/package.json index 6a7ddba188d..8930c0c032a 100644 --- a/package.json +++ b/package.json @@ -1403,8 +1403,8 @@ "test:changed:max": "OPENCLAW_VITEST_MAX_WORKERS=8 node scripts/test-projects.mjs --changed origin/main", "test:channels": "node scripts/run-vitest.mjs run --config test/vitest/vitest.channels.config.ts", "test:contracts": "pnpm test:contracts:channels && pnpm test:contracts:plugins", - "test:contracts:channels": "node scripts/run-vitest.mjs run --config test/vitest/vitest.contracts.config.ts --maxWorkers=1 src/channels/plugins/contracts", - "test:contracts:plugins": "node scripts/run-vitest.mjs run --config test/vitest/vitest.contracts.config.ts --maxWorkers=1 src/plugins/contracts", + "test:contracts:channels": "node scripts/test-projects.mjs --maxWorkers=1 test/vitest/vitest.contracts-channel-surface.config.ts test/vitest/vitest.contracts-channel-config.config.ts test/vitest/vitest.contracts-channel-registry.config.ts test/vitest/vitest.contracts-channel-session.config.ts", + "test:contracts:plugins": "node scripts/run-vitest.mjs run --config test/vitest/vitest.contracts-plugin.config.ts --maxWorkers=1", "test:coverage": "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts --coverage", "test:coverage:changed": "node scripts/run-vitest.mjs run --config test/vitest/vitest.unit.config.ts --coverage --changed origin/main", "test:docker:all": "pnpm test:docker:live-build && OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-models && OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:live-gateway && pnpm test:docker:openwebui && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:mcp-channels && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup", diff --git a/scripts/test-projects.mjs b/scripts/test-projects.mjs index c9893d4d000..ec825455e3e 100644 --- a/scripts/test-projects.mjs +++ b/scripts/test-projects.mjs @@ -38,7 +38,11 @@ const FULL_SUITE_CONFIG_WEIGHT = new Map([ ["test/vitest/vitest.extensions.config.ts", 168], ["test/vitest/vitest.extension-provider-openai.config.ts", 167], ["test/vitest/vitest.runtime-config.config.ts", 166], - ["test/vitest/vitest.contracts.config.ts", 165], + ["test/vitest/vitest.contracts-channel-config.config.ts", 85], + ["test/vitest/vitest.contracts-channel-surface.config.ts", 60], + ["test/vitest/vitest.contracts-channel-session.config.ts", 50], + ["test/vitest/vitest.contracts-channel-registry.config.ts", 35], + ["test/vitest/vitest.contracts-plugin.config.ts", 20], ["test/vitest/vitest.tasks.config.ts", 165], ["test/vitest/vitest.channels.config.ts", 164], ["test/vitest/vitest.unit-fast.config.ts", 160], diff --git a/scripts/test-projects.test-support.mjs b/scripts/test-projects.test-support.mjs index 896486e1e5d..28305525028 100644 --- a/scripts/test-projects.test-support.mjs +++ b/scripts/test-projects.test-support.mjs @@ -50,7 +50,15 @@ const CHANNEL_VITEST_CONFIG = "test/vitest/vitest.channels.config.ts"; const CLI_VITEST_CONFIG = "test/vitest/vitest.cli.config.ts"; const COMMANDS_LIGHT_VITEST_CONFIG = "test/vitest/vitest.commands-light.config.ts"; const COMMANDS_VITEST_CONFIG = "test/vitest/vitest.commands.config.ts"; -const CONTRACTS_VITEST_CONFIG = "test/vitest/vitest.contracts.config.ts"; +const CONTRACTS_CHANNEL_CONFIG_VITEST_CONFIG = + "test/vitest/vitest.contracts-channel-config.config.ts"; +const CONTRACTS_CHANNEL_REGISTRY_VITEST_CONFIG = + "test/vitest/vitest.contracts-channel-registry.config.ts"; +const CONTRACTS_CHANNEL_SESSION_VITEST_CONFIG = + "test/vitest/vitest.contracts-channel-session.config.ts"; +const CONTRACTS_CHANNEL_SURFACE_VITEST_CONFIG = + "test/vitest/vitest.contracts-channel-surface.config.ts"; +const CONTRACTS_PLUGIN_VITEST_CONFIG = "test/vitest/vitest.contracts-plugin.config.ts"; const CRON_VITEST_CONFIG = "test/vitest/vitest.cron.config.ts"; const DAEMON_VITEST_CONFIG = "test/vitest/vitest.daemon.config.ts"; const E2E_VITEST_CONFIG = "test/vitest/vitest.e2e.config.ts"; @@ -112,7 +120,11 @@ const VITEST_CONFIG_BY_KIND = { cli: CLI_VITEST_CONFIG, command: COMMANDS_VITEST_CONFIG, commandLight: COMMANDS_LIGHT_VITEST_CONFIG, - contracts: CONTRACTS_VITEST_CONFIG, + contractsChannelConfig: CONTRACTS_CHANNEL_CONFIG_VITEST_CONFIG, + contractsChannelRegistry: CONTRACTS_CHANNEL_REGISTRY_VITEST_CONFIG, + contractsChannelSession: CONTRACTS_CHANNEL_SESSION_VITEST_CONFIG, + contractsChannelSurface: CONTRACTS_CHANNEL_SURFACE_VITEST_CONFIG, + contractsPlugin: CONTRACTS_PLUGIN_VITEST_CONFIG, cron: CRON_VITEST_CONFIG, daemon: DAEMON_VITEST_CONFIG, e2e: E2E_VITEST_CONFIG, @@ -256,6 +268,54 @@ function isVitestConfigTargetForKind(kind, targetArg, cwd) { return resolveVitestConfigTargetKind(toRepoRelativeTarget(targetArg, cwd)) === kind; } +function resolveChannelContractTargetKind(relative) { + if (!relative.startsWith("src/channels/plugins/contracts/")) { + return null; + } + const name = path.posix.basename(relative); + if (/-shard-[ae]\.contract\.test\.ts$/u.test(name)) { + return "contractsChannelSurface"; + } + if (/-shard-[bf]\.contract\.test\.ts$/u.test(name)) { + return "contractsChannelConfig"; + } + if (/-shard-[cg]\.contract\.test\.ts$/u.test(name)) { + return "contractsChannelRegistry"; + } + if (/-shard-[dh]\.contract\.test\.ts$/u.test(name)) { + return "contractsChannelSession"; + } + if ( + [ + "channel-catalog.contract.test.ts", + "channel-import-guardrails.test.ts", + "group-policy.fallback.contract.test.ts", + "outbound-payload.contract.test.ts", + ].includes(name) + ) { + return "contractsChannelSurface"; + } + if ( + [ + "plugins-core.authorize-config-write.policy.contract.test.ts", + "plugins-core.authorize-config-write.targets.contract.test.ts", + "plugins-core.catalog.entries.contract.test.ts", + ].includes(name) + ) { + return "contractsChannelConfig"; + } + if ( + [ + "plugins-core.catalog.paths.contract.test.ts", + "plugins-core.loader.contract.test.ts", + "plugins-core.registry.contract.test.ts", + ].includes(name) + ) { + return "contractsChannelRegistry"; + } + return "contractsChannelSession"; +} + function listChangedPathsFromGit(baseRef, cwd) { return [ ...new Set([ @@ -471,6 +531,13 @@ function classifyTarget(arg, cwd) { } return isProviderExtensionRoot(extensionRoot) ? "extensionProvider" : "extension"; } + const channelContractKind = resolveChannelContractTargetKind(relative); + if (channelContractKind) { + return channelContractKind; + } + if (relative.startsWith("src/plugins/contracts/")) { + return "contractsPlugin"; + } if (isChannelSurfaceTestFile(relative)) { return "channel"; } @@ -480,16 +547,11 @@ function classifyTarget(arg, cwd) { if ( relative.startsWith("test/") || relative.startsWith("src/scripts/") || - relative.startsWith("src/plugins/contracts/") || - relative.startsWith("src/channels/plugins/contracts/") || relative === "src/config/doc-baseline.integration.test.ts" || relative === "src/config/schema.base.generated.test.ts" || relative === "src/config/schema.help.quality.test.ts" ) { - return relative.startsWith("src/plugins/contracts/") || - relative.startsWith("src/channels/plugins/contracts/") - ? "contracts" - : "tooling"; + return "tooling"; } if (isBundledPluginDependentUnitTestFile(relative)) { return "bundled"; @@ -669,7 +731,11 @@ export function buildVitestRunPlans( "default", "boundary", "tooling", - "contracts", + "contractsChannelSurface", + "contractsChannelConfig", + "contractsChannelRegistry", + "contractsChannelSession", + "contractsPlugin", "bundled", "gateway", "hooks", diff --git a/src/scripts/test-projects.test.ts b/src/scripts/test-projects.test.ts index 960dd41f3c2..bbe4ad44bc9 100644 --- a/src/scripts/test-projects.test.ts +++ b/src/scripts/test-projects.test.ts @@ -168,12 +168,12 @@ describe("test-projects args", () => { ]); }); - it("routes contract tests to the contracts config", () => { + it("routes plugin contract tests to the plugin contracts config", () => { expect( buildVitestRunPlans(["src/plugins/contracts/memory-embedding-provider.contract.test.ts"]), ).toEqual([ { - config: "test/vitest/vitest.contracts.config.ts", + config: "test/vitest/vitest.contracts-plugin.config.ts", forwardedArgs: [], includePatterns: ["src/plugins/contracts/memory-embedding-provider.contract.test.ts"], watchMode: false, diff --git a/test/scripts/test-projects.test.ts b/test/scripts/test-projects.test.ts index b3ec76b82f6..cdd418dc5fd 100644 --- a/test/scripts/test-projects.test.ts +++ b/test/scripts/test-projects.test.ts @@ -59,6 +59,28 @@ describe("scripts/test-projects changed-target routing", () => { ]); }); + it("routes contract roots to separate contract shards", () => { + const plans = buildVitestRunPlans([ + "src/channels/plugins/contracts/channel-catalog.contract.test.ts", + "src/plugins/contracts/loader.contract.test.ts", + ]); + + expect(plans).toEqual([ + { + config: "test/vitest/vitest.contracts-channel-surface.config.ts", + forwardedArgs: [], + includePatterns: ["src/channels/plugins/contracts/channel-catalog.contract.test.ts"], + watchMode: false, + }, + { + config: "test/vitest/vitest.contracts-plugin.config.ts", + forwardedArgs: [], + includePatterns: ["src/plugins/contracts/loader.contract.test.ts"], + watchMode: false, + }, + ]); + }); + it("keeps the broad changed run for shared test helpers", () => { expect( resolveChangedTargetArgs(["--changed", "origin/main"], process.cwd(), () => [ @@ -567,7 +589,11 @@ describe("scripts/test-projects full-suite sharding", () => { "test/vitest/vitest.unit-support.config.ts", "test/vitest/vitest.boundary.config.ts", "test/vitest/vitest.tooling.config.ts", - "test/vitest/vitest.contracts.config.ts", + "test/vitest/vitest.contracts-channel-surface.config.ts", + "test/vitest/vitest.contracts-channel-config.config.ts", + "test/vitest/vitest.contracts-channel-registry.config.ts", + "test/vitest/vitest.contracts-channel-session.config.ts", + "test/vitest/vitest.contracts-plugin.config.ts", "test/vitest/vitest.bundled.config.ts", "test/vitest/vitest.infra.config.ts", "test/vitest/vitest.hooks.config.ts", diff --git a/test/vitest-projects-config.test.ts b/test/vitest-projects-config.test.ts index 93b6dd0a985..1283c091d27 100644 --- a/test/vitest-projects-config.test.ts +++ b/test/vitest-projects-config.test.ts @@ -5,7 +5,10 @@ import bundledConfig from "./vitest/vitest.bundled.config.ts"; import { createCommandsLightVitestConfig } from "./vitest/vitest.commands-light.config.ts"; import { createCommandsVitestConfig } from "./vitest/vitest.commands.config.ts"; import baseConfig, { rootVitestProjects } from "./vitest/vitest.config.ts"; -import { createContractsVitestConfig } from "./vitest/vitest.contracts.config.ts"; +import { + createContractsVitestConfig, + pluginContractPatterns, +} from "./vitest/vitest.contracts-shared.ts"; import { createGatewayVitestConfig } from "./vitest/vitest.gateway.config.ts"; import { createPluginSdkLightVitestConfig } from "./vitest/vitest.plugin-sdk-light.config.ts"; import { sharedVitestConfig } from "./vitest/vitest.shared.config.ts"; @@ -31,18 +34,18 @@ describe("projects vitest config", () => { expect(createCommandsVitestConfig().test.pool).toBe("threads"); expect(createPluginSdkLightVitestConfig().test.pool).toBe("threads"); expect(createUnitFastVitestConfig().test.pool).toBe("threads"); - expect(createContractsVitestConfig().test.pool).toBe("forks"); + expect(createContractsVitestConfig(pluginContractPatterns).test.pool).toBe("forks"); }); - it("keeps the contracts lane on the non-isolated fork runner by default", () => { - const config = createContractsVitestConfig(); + it("keeps contract shards on the non-isolated fork runner by default", () => { + const config = createContractsVitestConfig(pluginContractPatterns); expect(config.test.pool).toBe("forks"); expect(config.test.isolate).toBe(false); expect(normalizeConfigPath(config.test.runner)).toBe("test/non-isolated-runner.ts"); }); it("narrows the contracts lane to targeted contract files", () => { - const config = createContractsVitestConfig({}, [ + const config = createContractsVitestConfig(pluginContractPatterns, {}, [ "node", "vitest", "run", diff --git a/test/vitest/vitest.config.ts b/test/vitest/vitest.config.ts index 3cc33fdd1b2..4a922d7d326 100644 --- a/test/vitest/vitest.config.ts +++ b/test/vitest/vitest.config.ts @@ -13,7 +13,11 @@ export const rootVitestProjects = [ "test/vitest/vitest.unit.config.ts", "test/vitest/vitest.infra.config.ts", "test/vitest/vitest.boundary.config.ts", - "test/vitest/vitest.contracts.config.ts", + "test/vitest/vitest.contracts-channel-surface.config.ts", + "test/vitest/vitest.contracts-channel-config.config.ts", + "test/vitest/vitest.contracts-channel-registry.config.ts", + "test/vitest/vitest.contracts-channel-session.config.ts", + "test/vitest/vitest.contracts-plugin.config.ts", "test/vitest/vitest.bundled.config.ts", "test/vitest/vitest.gateway-core.config.ts", "test/vitest/vitest.gateway-client.config.ts", diff --git a/test/vitest/vitest.contracts-channel-config.config.ts b/test/vitest/vitest.contracts-channel-config.config.ts new file mode 100644 index 00000000000..cfdd5626b03 --- /dev/null +++ b/test/vitest/vitest.contracts-channel-config.config.ts @@ -0,0 +1,6 @@ +import { + channelConfigContractPatterns, + createContractsVitestConfig, +} from "./vitest.contracts-shared.ts"; + +export default createContractsVitestConfig(channelConfigContractPatterns); diff --git a/test/vitest/vitest.contracts-channel-registry.config.ts b/test/vitest/vitest.contracts-channel-registry.config.ts new file mode 100644 index 00000000000..4e05470b932 --- /dev/null +++ b/test/vitest/vitest.contracts-channel-registry.config.ts @@ -0,0 +1,6 @@ +import { + channelRegistryContractPatterns, + createContractsVitestConfig, +} from "./vitest.contracts-shared.ts"; + +export default createContractsVitestConfig(channelRegistryContractPatterns); diff --git a/test/vitest/vitest.contracts-channel-session.config.ts b/test/vitest/vitest.contracts-channel-session.config.ts new file mode 100644 index 00000000000..26813c4b026 --- /dev/null +++ b/test/vitest/vitest.contracts-channel-session.config.ts @@ -0,0 +1,6 @@ +import { + channelSessionContractPatterns, + createContractsVitestConfig, +} from "./vitest.contracts-shared.ts"; + +export default createContractsVitestConfig(channelSessionContractPatterns); diff --git a/test/vitest/vitest.contracts-channel-surface.config.ts b/test/vitest/vitest.contracts-channel-surface.config.ts new file mode 100644 index 00000000000..2a6190abe54 --- /dev/null +++ b/test/vitest/vitest.contracts-channel-surface.config.ts @@ -0,0 +1,6 @@ +import { + channelSurfaceContractPatterns, + createContractsVitestConfig, +} from "./vitest.contracts-shared.ts"; + +export default createContractsVitestConfig(channelSurfaceContractPatterns); diff --git a/test/vitest/vitest.contracts-plugin.config.ts b/test/vitest/vitest.contracts-plugin.config.ts new file mode 100644 index 00000000000..f7068420fa0 --- /dev/null +++ b/test/vitest/vitest.contracts-plugin.config.ts @@ -0,0 +1,3 @@ +import { createContractsVitestConfig, pluginContractPatterns } from "./vitest.contracts-shared.ts"; + +export default createContractsVitestConfig(pluginContractPatterns); diff --git a/test/vitest/vitest.contracts-shared.ts b/test/vitest/vitest.contracts-shared.ts new file mode 100644 index 00000000000..c071c2eb11d --- /dev/null +++ b/test/vitest/vitest.contracts-shared.ts @@ -0,0 +1,69 @@ +import { defineConfig } from "vitest/config"; +import { loadPatternListFromEnv, narrowIncludePatternsForCli } from "./vitest.pattern-file.ts"; +import { nonIsolatedRunnerPath, sharedVitestConfig } from "./vitest.shared.config.ts"; + +const base = sharedVitestConfig as Record; +const baseTest = sharedVitestConfig.test ?? {}; + +export const channelSurfaceContractPatterns = [ + "src/channels/plugins/contracts/channel-catalog.contract.test.ts", + "src/channels/plugins/contracts/channel-import-guardrails.test.ts", + "src/channels/plugins/contracts/group-policy.fallback.contract.test.ts", + "src/channels/plugins/contracts/outbound-payload.contract.test.ts", + "src/channels/plugins/contracts/*-shard-a.contract.test.ts", + "src/channels/plugins/contracts/*-shard-e.contract.test.ts", +]; + +export const channelConfigContractPatterns = [ + "src/channels/plugins/contracts/plugins-core.authorize-config-write.policy.contract.test.ts", + "src/channels/plugins/contracts/plugins-core.authorize-config-write.targets.contract.test.ts", + "src/channels/plugins/contracts/plugins-core.catalog.entries.contract.test.ts", + "src/channels/plugins/contracts/*-shard-b.contract.test.ts", + "src/channels/plugins/contracts/*-shard-f.contract.test.ts", +]; + +export const channelRegistryContractPatterns = [ + "src/channels/plugins/contracts/plugins-core.catalog.paths.contract.test.ts", + "src/channels/plugins/contracts/plugins-core.loader.contract.test.ts", + "src/channels/plugins/contracts/plugins-core.registry.contract.test.ts", + "src/channels/plugins/contracts/*-shard-c.contract.test.ts", + "src/channels/plugins/contracts/*-shard-g.contract.test.ts", +]; + +export const channelSessionContractPatterns = [ + "src/channels/plugins/contracts/plugins-core.resolve-config-writes.contract.test.ts", + "src/channels/plugins/contracts/registry.contract.test.ts", + "src/channels/plugins/contracts/session-binding.registry-backed.contract.test.ts", + "src/channels/plugins/contracts/*-shard-d.contract.test.ts", + "src/channels/plugins/contracts/*-shard-h.contract.test.ts", +]; + +export const pluginContractPatterns = ["src/plugins/contracts/**/*.test.ts"]; + +export function loadContractsIncludePatternsFromEnv( + env: Record = process.env, +): string[] | null { + return loadPatternListFromEnv("OPENCLAW_VITEST_INCLUDE_FILE", env); +} + +export function createContractsVitestConfig( + includePatterns: string[], + env: Record = process.env, + argv: string[] = process.argv, +) { + const cliIncludePatterns = narrowIncludePatternsForCli(includePatterns, argv); + return defineConfig({ + ...base, + test: { + ...baseTest, + isolate: false, + // Contract shards intentionally run non-isolated and load broad registries. + // Use forks so full-suite parallel runs do not hit worker-thread heap limits. + pool: "forks", + runner: nonIsolatedRunnerPath, + setupFiles: baseTest.setupFiles ?? [], + include: loadContractsIncludePatternsFromEnv(env) ?? cliIncludePatterns ?? includePatterns, + passWithNoTests: true, + }, + }); +} diff --git a/test/vitest/vitest.contracts.config.ts b/test/vitest/vitest.contracts.config.ts deleted file mode 100644 index adc768e7696..00000000000 --- a/test/vitest/vitest.contracts.config.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { defineConfig } from "vitest/config"; -import { loadPatternListFromEnv, narrowIncludePatternsForCli } from "./vitest.pattern-file.ts"; -import { nonIsolatedRunnerPath, sharedVitestConfig } from "./vitest.shared.config.ts"; - -const base = sharedVitestConfig as Record; -const baseTest = sharedVitestConfig.test ?? {}; -const contractIncludePatterns = [ - "src/channels/plugins/contracts/**/*.test.ts", - "src/plugins/contracts/**/*.test.ts", -]; - -export function loadContractsIncludePatternsFromEnv( - env: Record = process.env, -): string[] | null { - return loadPatternListFromEnv("OPENCLAW_VITEST_INCLUDE_FILE", env); -} - -export function createContractsVitestConfig( - env: Record = process.env, - argv: string[] = process.argv, -) { - const cliIncludePatterns = narrowIncludePatternsForCli(contractIncludePatterns, argv); - return defineConfig({ - ...base, - test: { - ...baseTest, - isolate: false, - // The contracts shard intentionally runs non-isolated and loads hundreds of - // contract files. Use forks so full-suite parallel runs do not hit - // Vitest worker-thread heap limits. - pool: "forks", - runner: nonIsolatedRunnerPath, - setupFiles: baseTest.setupFiles ?? [], - include: - loadContractsIncludePatternsFromEnv(env) ?? cliIncludePatterns ?? contractIncludePatterns, - passWithNoTests: true, - }, - }); -} - -export default createContractsVitestConfig(); diff --git a/test/vitest/vitest.shared.config.ts b/test/vitest/vitest.shared.config.ts index 6b752e79131..613aa65326c 100644 --- a/test/vitest/vitest.shared.config.ts +++ b/test/vitest/vitest.shared.config.ts @@ -134,7 +134,12 @@ export const sharedVitestConfig = { "test/vitest/vitest.bundled.config.ts", "test/vitest/vitest.cli.config.ts", "vitest.config.ts", - "test/vitest/vitest.contracts.config.ts", + "test/vitest/vitest.contracts-shared.ts", + "test/vitest/vitest.contracts-channel-surface.config.ts", + "test/vitest/vitest.contracts-channel-config.config.ts", + "test/vitest/vitest.contracts-channel-registry.config.ts", + "test/vitest/vitest.contracts-channel-session.config.ts", + "test/vitest/vitest.contracts-plugin.config.ts", "test/vitest/vitest.cron.config.ts", "test/vitest/vitest.daemon.config.ts", "test/vitest/vitest.e2e.config.ts", diff --git a/test/vitest/vitest.test-shards.mjs b/test/vitest/vitest.test-shards.mjs index 260e3e55907..46983961738 100644 --- a/test/vitest/vitest.test-shards.mjs +++ b/test/vitest/vitest.test-shards.mjs @@ -40,7 +40,13 @@ export const fullSuiteVitestShards = [ { config: "test/vitest/vitest.full-core-contracts.config.ts", name: "core-contracts", - projects: ["test/vitest/vitest.contracts.config.ts"], + projects: [ + "test/vitest/vitest.contracts-channel-surface.config.ts", + "test/vitest/vitest.contracts-channel-config.config.ts", + "test/vitest/vitest.contracts-channel-registry.config.ts", + "test/vitest/vitest.contracts-channel-session.config.ts", + "test/vitest/vitest.contracts-plugin.config.ts", + ], }, { config: "test/vitest/vitest.full-core-bundled.config.ts",