test: speed up default test env

This commit is contained in:
Peter Steinberger
2026-01-23 18:31:33 +00:00
parent fdc50a0feb
commit 29353e2e81
6 changed files with 22 additions and 13 deletions

View File

@@ -28,6 +28,7 @@ export async function getReplyFromConfig(
opts?: GetReplyOptions,
configOverride?: ClawdbotConfig,
): Promise<ReplyPayload | ReplyPayload[] | undefined> {
const isFastTestEnv = process.env.CLAWDBOT_TEST_FAST === "1";
const cfg = configOverride ?? loadConfig();
const targetSessionKey =
ctx.CommandSource === "native" ? ctx.CommandTargetSessionKey?.trim() : undefined;
@@ -62,7 +63,7 @@ export async function getReplyFromConfig(
const workspaceDirRaw = resolveAgentWorkspaceDir(cfg, agentId) ?? DEFAULT_AGENT_WORKSPACE_DIR;
const workspace = await ensureAgentWorkspace({
dir: workspaceDirRaw,
ensureBootstrapFiles: !agentCfg?.skipBootstrap,
ensureBootstrapFiles: !agentCfg?.skipBootstrap && !isFastTestEnv,
});
const workspaceDir = workspace.dir;
const agentDir = resolveAgentDir(cfg, agentId);
@@ -81,12 +82,14 @@ export async function getReplyFromConfig(
const finalized = finalizeInboundContext(ctx);
await applyMediaUnderstanding({
ctx: finalized,
cfg,
agentDir,
activeModel: { provider, model },
});
if (!isFastTestEnv) {
await applyMediaUnderstanding({
ctx: finalized,
cfg,
agentDir,
activeModel: { provider, model },
});
}
const commandAuthorized = finalized.CommandAuthorized;
resolveCommandAuthorization({

6
test/global-setup.ts Normal file
View File

@@ -0,0 +1,6 @@
import { installTestEnv } from "./test-env";
export default async () => {
const { cleanup } = installTestEnv();
return () => cleanup();
};

View File

@@ -9,11 +9,6 @@ import type { ClawdbotConfig } from "../src/config/config.js";
import type { OutboundSendDeps } from "../src/infra/outbound/deliver.js";
import { setActivePluginRegistry } from "../src/plugins/runtime.js";
import { createTestRegistry } from "../src/test-utils/channel-plugins.js";
import { installTestEnv } from "./test-env";
const { cleanup } = installTestEnv();
process.on("exit", cleanup);
const pickSendFn = (id: ChannelId, deps?: OutboundSendDeps) => {
switch (id) {
case "discord":

View File

@@ -54,6 +54,7 @@ export function installTestEnv(): { cleanup: () => void; tempHome: string } {
}
const restore: RestoreEntry[] = [
{ key: "CLAWDBOT_TEST_FAST", value: process.env.CLAWDBOT_TEST_FAST },
{ key: "HOME", value: process.env.HOME },
{ key: "USERPROFILE", value: process.env.USERPROFILE },
{ key: "XDG_CONFIG_HOME", value: process.env.XDG_CONFIG_HOME },
@@ -84,6 +85,7 @@ export function installTestEnv(): { cleanup: () => void; tempHome: string } {
process.env.HOME = tempHome;
process.env.USERPROFILE = tempHome;
process.env.CLAWDBOT_TEST_HOME = tempHome;
process.env.CLAWDBOT_TEST_FAST = "1";
// Ensure test runs never touch the developer's real config/state, even if they have overrides set.
delete process.env.CLAWDBOT_CONFIG_PATH;

View File

@@ -26,6 +26,7 @@ export default defineConfig({
"test/format-error.test.ts",
],
setupFiles: ["test/setup.ts"],
globalSetup: ["test/global-setup.ts"],
exclude: [
"dist/**",
"apps/macos/**",
@@ -34,6 +35,7 @@ export default defineConfig({
"**/vendor/**",
"dist/Clawdbot.app/**",
"**/*.live.test.ts",
"**/*.e2e.test.ts",
],
coverage: {
provider: "v8",

View File

@@ -9,8 +9,9 @@ export default defineConfig({
test: {
pool: "forks",
maxWorkers: e2eWorkers,
include: ["test/**/*.e2e.test.ts"],
include: ["test/**/*.e2e.test.ts", "src/**/*.e2e.test.ts"],
setupFiles: ["test/setup.ts"],
globalSetup: ["test/global-setup.ts"],
exclude: [
"dist/**",
"apps/macos/**",