perf: split infra, tooling, and provider test lanes

This commit is contained in:
Peter Steinberger
2026-04-04 04:36:47 +01:00
parent f62db7950a
commit 32ba917079
16 changed files with 348 additions and 42 deletions

View File

@@ -43,7 +43,16 @@ describe("scripts/test-extension.mjs", () => {
expect(plan.hasTests).toBe(true);
});
it("resolves provider extensions onto the extensions vitest config", () => {
it("resolves provider extensions onto the provider vitest config", () => {
const plan = resolveExtensionTestPlan({ targetArg: "openai", cwd: process.cwd() });
expect(plan.extensionId).toBe("openai");
expect(plan.config).toBe("vitest.extension-providers.config.ts");
expect(plan.roots).toContain(bundledPluginRoot("openai"));
expect(plan.hasTests).toBe(true);
});
it("keeps non-provider extensions on the shared extensions vitest config", () => {
const plan = resolveExtensionTestPlan({ targetArg: "firecrawl", cwd: process.cwd() });
expect(plan.extensionId).toBe("firecrawl");
@@ -111,10 +120,10 @@ describe("scripts/test-extension.mjs", () => {
it("batches extensions into config-specific vitest invocations", () => {
const batch = resolveExtensionBatchPlan({
cwd: process.cwd(),
extensionIds: ["slack", "firecrawl", "line"],
extensionIds: ["slack", "firecrawl", "line", "openai"],
});
expect(batch.extensionIds).toEqual(["firecrawl", "line", "slack"]);
expect(batch.extensionIds).toEqual(["firecrawl", "line", "openai", "slack"]);
expect(batch.planGroups).toEqual([
{
config: "vitest.channels.config.ts",
@@ -122,6 +131,12 @@ describe("scripts/test-extension.mjs", () => {
roots: [bundledPluginRoot("slack"), bundledPluginRoot("line")],
testFileCount: expect.any(Number),
},
{
config: "vitest.extension-providers.config.ts",
extensionIds: ["openai"],
roots: [bundledPluginRoot("openai")],
testFileCount: expect.any(Number),
},
{
config: "vitest.extensions.config.ts",
extensionIds: ["firecrawl"],

View File

@@ -8,9 +8,12 @@ import { createAutoReplyVitestConfig } from "../vitest.auto-reply.config.ts";
import { createChannelsVitestConfig } from "../vitest.channels.config.ts";
import { createCommandsVitestConfig } from "../vitest.commands.config.ts";
import { createExtensionChannelsVitestConfig } from "../vitest.extension-channels.config.ts";
import { createExtensionProvidersVitestConfig } from "../vitest.extension-providers.config.ts";
import { createExtensionsVitestConfig } from "../vitest.extensions.config.ts";
import { createGatewayVitestConfig } from "../vitest.gateway.config.ts";
import { createInfraVitestConfig } from "../vitest.infra.config.ts";
import { createScopedVitestConfig, resolveVitestIsolation } from "../vitest.scoped-config.ts";
import { createToolingVitestConfig } from "../vitest.tooling.config.ts";
import { createUiVitestConfig } from "../vitest.ui.config.ts";
import { BUNDLED_PLUGIN_TEST_GLOB, bundledPluginFile } from "./helpers/bundled-plugin-paths.js";
@@ -71,10 +74,13 @@ describe("scoped vitest configs", () => {
const defaultAcpConfig = createAcpVitestConfig({});
const defaultExtensionsConfig = createExtensionsVitestConfig({});
const defaultExtensionChannelsConfig = createExtensionChannelsVitestConfig({});
const defaultExtensionProvidersConfig = createExtensionProvidersVitestConfig({});
const defaultGatewayConfig = createGatewayVitestConfig({});
const defaultInfraConfig = createInfraVitestConfig({});
const defaultCommandsConfig = createCommandsVitestConfig({});
const defaultAutoReplyConfig = createAutoReplyVitestConfig({});
const defaultAgentsConfig = createAgentsVitestConfig({});
const defaultToolingConfig = createToolingVitestConfig({});
const defaultUiConfig = createUiVitestConfig({});
it("defaults channel tests to non-isolated mode", () => {
@@ -138,6 +144,13 @@ describe("scoped vitest configs", () => {
expect(defaultExtensionsConfig.test?.include).toEqual(["**/*.test.ts"]);
});
it("normalizes extension provider include patterns relative to the scoped dir", () => {
expect(defaultExtensionProvidersConfig.test?.dir).toBe("extensions");
expect(defaultExtensionProvidersConfig.test?.include).toEqual(
expect.arrayContaining(["openai/**/*.test.ts", "xai/**/*.test.ts", "google/**/*.test.ts"]),
);
});
it("keeps telegram plugin tests in extensions while excluding channel-surface plugin roots", () => {
const extensionExcludes = defaultExtensionsConfig.test?.exclude ?? [];
expect(
@@ -155,11 +168,35 @@ describe("scoped vitest configs", () => {
expect(defaultExtensionsConfig.test?.setupFiles).toEqual(["test/setup.extensions.ts"]);
});
it("keeps provider plugin tests out of the shared extensions lane", () => {
const extensionExcludes = defaultExtensionsConfig.test?.exclude ?? [];
expect(
extensionExcludes.some((pattern) =>
path.matchesGlob("openai/openai-codex-provider.test.ts", pattern),
),
).toBe(true);
});
it("normalizes gateway include patterns relative to the scoped dir", () => {
expect(defaultGatewayConfig.test?.dir).toBe("src/gateway");
expect(defaultGatewayConfig.test?.include).toEqual(["**/*.test.ts"]);
});
it("normalizes infra include patterns relative to the scoped dir", () => {
expect(defaultInfraConfig.test?.dir).toBe("src");
expect(defaultInfraConfig.test?.include).toEqual(["infra/**/*.test.ts"]);
});
it("keeps tooling tests in their own lane", () => {
expect(defaultToolingConfig.test?.include).toEqual(
expect.arrayContaining([
"test/**/*.test.ts",
"src/scripts/**/*.test.ts",
"src/config/doc-baseline.integration.test.ts",
]),
);
});
it("normalizes acp include patterns relative to the scoped dir", () => {
expect(defaultAcpConfig.test?.dir).toBe("src/acp");
expect(defaultAcpConfig.test?.include).toEqual(["**/*.test.ts"]);