test: split agents vitest shards

This commit is contained in:
Peter Steinberger 2026-04-28 02:58:16 +01:00
parent fe1c7fae99
commit f64e4fd8cf
No known key found for this signature in database
17 changed files with 125 additions and 14 deletions

View file

@ -190,7 +190,12 @@ const SPLIT_NODE_SHARDS = new Map([
},
{
shardName: "agentic-agents",
configs: ["test/vitest/vitest.agents.config.ts"],
configs: [
"test/vitest/vitest.agents-core.config.ts",
"test/vitest/vitest.agents-pi-embedded.config.ts",
"test/vitest/vitest.agents-support.config.ts",
"test/vitest/vitest.agents-tools.config.ts",
],
requiresDist: false,
},
{

View file

@ -45,7 +45,10 @@ const FULL_SUITE_CONFIG_WEIGHT = new Map([
["test/vitest/vitest.gateway-client.config.ts", 178],
["test/vitest/vitest.gateway-methods.config.ts", 177],
["test/vitest/vitest.commands.config.ts", 175],
["test/vitest/vitest.agents.config.ts", 170],
["test/vitest/vitest.agents-core.config.ts", 170],
["test/vitest/vitest.agents-pi-embedded.config.ts", 169],
["test/vitest/vitest.agents-support.config.ts", 168],
["test/vitest/vitest.agents-tools.config.ts", 167],
["test/vitest/vitest.extension-voice-call.config.ts", 169],
["test/vitest/vitest.extensions.config.ts", 168],
["test/vitest/vitest.extension-provider-openai.config.ts", 167],

View file

@ -1,5 +1,9 @@
import { vi } from "vitest";
vi.mock("./queue.js", () => ({
clearSessionQueues: vi.fn(() => ({ followupCleared: 0, laneCleared: 0, keys: [] })),
}));
vi.mock("./queue.js", async () => {
const actual = await vi.importActual<typeof import("./queue.js")>("./queue.js");
return {
...actual,
clearSessionQueues: vi.fn(() => ({ followupCleared: 0, laneCleared: 0, keys: [] })),
};
});

View file

@ -26,10 +26,14 @@ vi.mock("../group-activation.js", () => ({
normalizeGroupActivation: (value: unknown) => value,
}));
vi.mock("./queue.js", () => ({
getFollowupQueueDepth: () => 0,
resolveQueueSettings: () => ({ mode: "interrupt" }),
}));
vi.mock("./queue.js", async () => {
const actual = await vi.importActual<typeof import("./queue.js")>("./queue.js");
return {
...actual,
getFollowupQueueDepth: () => 0,
resolveQueueSettings: () => ({ mode: "interrupt" }),
};
});
const { buildStatusReply } = await import("./commands-status.js");

View file

@ -171,7 +171,12 @@ describe("scripts/lib/ci-node-test-plan.mjs", () => {
expect(agentShard).toEqual({
checkName: "checks-node-agentic-agents",
shardName: "agentic-agents",
configs: ["test/vitest/vitest.agents.config.ts"],
configs: [
"test/vitest/vitest.agents-core.config.ts",
"test/vitest/vitest.agents-pi-embedded.config.ts",
"test/vitest/vitest.agents-support.config.ts",
"test/vitest/vitest.agents-tools.config.ts",
],
requiresDist: false,
});
expect(pluginSdkShard).toEqual({

View file

@ -1057,7 +1057,10 @@ describe("scripts/test-projects full-suite sharding", () => {
"test/vitest/vitest.cli.config.ts",
"test/vitest/vitest.commands-light.config.ts",
"test/vitest/vitest.commands.config.ts",
"test/vitest/vitest.agents.config.ts",
"test/vitest/vitest.agents-core.config.ts",
"test/vitest/vitest.agents-pi-embedded.config.ts",
"test/vitest/vitest.agents-support.config.ts",
"test/vitest/vitest.agents-tools.config.ts",
"test/vitest/vitest.daemon.config.ts",
"test/vitest/vitest.plugin-sdk-light.config.ts",
"test/vitest/vitest.plugin-sdk.config.ts",

View file

@ -1,6 +1,10 @@
import { afterEach, describe, expect, it } from "vitest";
import { createPatternFileHelper } from "./helpers/pattern-file.js";
import { normalizeConfigPath, normalizeConfigPaths } from "./helpers/vitest-config-paths.js";
import { createAgentsCoreVitestConfig } from "./vitest/vitest.agents-core.config.ts";
import { createAgentsPiEmbeddedVitestConfig } from "./vitest/vitest.agents-pi-embedded.config.ts";
import { createAgentsSupportVitestConfig } from "./vitest/vitest.agents-support.config.ts";
import { createAgentsToolsVitestConfig } from "./vitest/vitest.agents-tools.config.ts";
import { createAgentsVitestConfig } from "./vitest/vitest.agents.config.ts";
import bundledConfig from "./vitest/vitest.bundled.config.ts";
import { createCommandsLightVitestConfig } from "./vitest/vitest.commands-light.config.ts";
@ -45,6 +49,10 @@ describe("projects vitest config", () => {
it("keeps root projects on their expected pool defaults", () => {
expect(createGatewayVitestConfig().test.pool).toBe("threads");
expect(createAgentsVitestConfig().test.pool).toBe("threads");
expect(createAgentsCoreVitestConfig().test.pool).toBe("threads");
expect(createAgentsPiEmbeddedVitestConfig().test.pool).toBe("threads");
expect(createAgentsSupportVitestConfig().test.pool).toBe("threads");
expect(createAgentsToolsVitestConfig().test.pool).toBe("threads");
expect(createCommandsLightVitestConfig().test.pool).toBe("threads");
expect(createCommandsVitestConfig().test.pool).toBe("threads");
expect(createPluginSdkLightVitestConfig().test.pool).toBe("threads");

View file

@ -0,0 +1,12 @@
import { agentsCoreTestPatterns } from "./vitest.agents-paths.mjs";
import { createScopedVitestConfig } from "./vitest.scoped-config.ts";
export function createAgentsCoreVitestConfig(env?: Record<string, string | undefined>) {
return createScopedVitestConfig(agentsCoreTestPatterns, {
dir: "src/agents",
env,
name: "agents-core",
});
}
export default createAgentsCoreVitestConfig();

View file

@ -0,0 +1,14 @@
export const agentsAllTestPatterns = ["src/agents/**/*.test.ts"];
export const agentsCoreTestPatterns = ["src/agents/*.test.ts"];
export const agentsPiEmbeddedTestPatterns = ["src/agents/pi-embedded-runner/**/*.test.ts"];
export const agentsToolsTestPatterns = ["src/agents/tools/**/*.test.ts"];
export const agentsSupportTestPatterns = ["src/agents/*/**/*.test.ts"];
export const agentsSupportExcludePatterns = [
"src/agents/pi-embedded-runner/**",
"src/agents/tools/**",
];

View file

@ -0,0 +1,12 @@
import { agentsPiEmbeddedTestPatterns } from "./vitest.agents-paths.mjs";
import { createScopedVitestConfig } from "./vitest.scoped-config.ts";
export function createAgentsPiEmbeddedVitestConfig(env?: Record<string, string | undefined>) {
return createScopedVitestConfig(agentsPiEmbeddedTestPatterns, {
dir: "src/agents",
env,
name: "agents-pi-embedded",
});
}
export default createAgentsPiEmbeddedVitestConfig();

View file

@ -0,0 +1,13 @@
import { agentsSupportExcludePatterns, agentsSupportTestPatterns } from "./vitest.agents-paths.mjs";
import { createScopedVitestConfig } from "./vitest.scoped-config.ts";
export function createAgentsSupportVitestConfig(env?: Record<string, string | undefined>) {
return createScopedVitestConfig(agentsSupportTestPatterns, {
dir: "src/agents",
env,
exclude: agentsSupportExcludePatterns,
name: "agents-support",
});
}
export default createAgentsSupportVitestConfig();

View file

@ -0,0 +1,12 @@
import { agentsToolsTestPatterns } from "./vitest.agents-paths.mjs";
import { createScopedVitestConfig } from "./vitest.scoped-config.ts";
export function createAgentsToolsVitestConfig(env?: Record<string, string | undefined>) {
return createScopedVitestConfig(agentsToolsTestPatterns, {
dir: "src/agents",
env,
name: "agents-tools",
});
}
export default createAgentsToolsVitestConfig();

View file

@ -1,7 +1,8 @@
import { agentsAllTestPatterns } from "./vitest.agents-paths.mjs";
import { createScopedVitestConfig } from "./vitest.scoped-config.ts";
export function createAgentsVitestConfig(env?: Record<string, string | undefined>) {
return createScopedVitestConfig(["src/agents/**/*.test.ts"], {
return createScopedVitestConfig(agentsAllTestPatterns, {
dir: "src/agents",
env,
name: "agents",

View file

@ -32,7 +32,10 @@ export const rootVitestProjects = [
"test/vitest/vitest.commands-light.config.ts",
"test/vitest/vitest.commands.config.ts",
"test/vitest/vitest.auto-reply.config.ts",
"test/vitest/vitest.agents.config.ts",
"test/vitest/vitest.agents-core.config.ts",
"test/vitest/vitest.agents-pi-embedded.config.ts",
"test/vitest/vitest.agents-support.config.ts",
"test/vitest/vitest.agents-tools.config.ts",
"test/vitest/vitest.daemon.config.ts",
"test/vitest/vitest.media.config.ts",
"test/vitest/vitest.unit-fast.config.ts",

View file

@ -45,6 +45,10 @@ const SCOPED_PROJECT_GROUP_ORDER_BY_NAME = new Map(
[
"acp",
"agents",
"agents-core",
"agents-pi-embedded",
"agents-support",
"agents-tools",
"auto-reply",
"auto-reply-core",
"auto-reply-reply",

View file

@ -168,6 +168,11 @@ export const sharedVitestConfig = {
"test/setup.extensions.ts",
"test/setup-openclaw-runtime.ts",
"test/vitest/vitest.channel-paths.mjs",
"test/vitest/vitest.agents-paths.mjs",
"test/vitest/vitest.agents-core.config.ts",
"test/vitest/vitest.agents-pi-embedded.config.ts",
"test/vitest/vitest.agents-support.config.ts",
"test/vitest/vitest.agents-tools.config.ts",
"test/vitest/vitest.channels.config.ts",
"test/vitest/vitest.acp.config.ts",
"test/vitest/vitest.boundary.config.ts",

View file

@ -86,7 +86,10 @@ export const fullSuiteVitestShards = [
"test/vitest/vitest.cli.config.ts",
"test/vitest/vitest.commands-light.config.ts",
"test/vitest/vitest.commands.config.ts",
"test/vitest/vitest.agents.config.ts",
"test/vitest/vitest.agents-core.config.ts",
"test/vitest/vitest.agents-pi-embedded.config.ts",
"test/vitest/vitest.agents-support.config.ts",
"test/vitest/vitest.agents-tools.config.ts",
"test/vitest/vitest.daemon.config.ts",
"test/vitest/vitest.plugin-sdk-light.config.ts",
"test/vitest/vitest.plugin-sdk.config.ts",