test: micro-optimize heavy gateway/browser/telegram suites

This commit is contained in:
Peter Steinberger
2026-03-02 22:29:04 +00:00
parent 1fa2488db1
commit 3cb851be90
10 changed files with 242 additions and 143 deletions

View File

@@ -17,6 +17,7 @@ async function pathExists(filePath: string): Promise<boolean> {
let fixtureRoot = "";
let fixtureCount = 0;
let syncSourceTemplateDir = "";
async function createCaseDir(prefix: string): Promise<string> {
const dir = path.join(fixtureRoot, `${prefix}-${fixtureCount++}`);
@@ -26,6 +27,27 @@ async function createCaseDir(prefix: string): Promise<string> {
beforeAll(async () => {
fixtureRoot = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-skills-sync-suite-"));
syncSourceTemplateDir = await createCaseDir("source-template");
await writeSkill({
dir: path.join(syncSourceTemplateDir, ".extra", "demo-skill"),
name: "demo-skill",
description: "Extra version",
});
await writeSkill({
dir: path.join(syncSourceTemplateDir, ".bundled", "demo-skill"),
name: "demo-skill",
description: "Bundled version",
});
await writeSkill({
dir: path.join(syncSourceTemplateDir, ".managed", "demo-skill"),
name: "demo-skill",
description: "Managed version",
});
await writeSkill({
dir: path.join(syncSourceTemplateDir, "skills", "demo-skill"),
name: "demo-skill",
description: "Workspace version",
});
});
afterAll(async () => {
@@ -39,34 +61,19 @@ describe("buildWorkspaceSkillsPrompt", () => {
) =>
withEnv({ HOME: workspaceDir, PATH: "" }, () => buildWorkspaceSkillsPrompt(workspaceDir, opts));
it("syncs merged skills into a target workspace", async () => {
const cloneSourceTemplate = async () => {
const sourceWorkspace = await createCaseDir("source");
await fs.cp(syncSourceTemplateDir, sourceWorkspace, { recursive: true });
return sourceWorkspace;
};
it("syncs merged skills into a target workspace", async () => {
const sourceWorkspace = await cloneSourceTemplate();
const targetWorkspace = await createCaseDir("target");
const extraDir = path.join(sourceWorkspace, ".extra");
const bundledDir = path.join(sourceWorkspace, ".bundled");
const managedDir = path.join(sourceWorkspace, ".managed");
await writeSkill({
dir: path.join(extraDir, "demo-skill"),
name: "demo-skill",
description: "Extra version",
});
await writeSkill({
dir: path.join(bundledDir, "demo-skill"),
name: "demo-skill",
description: "Bundled version",
});
await writeSkill({
dir: path.join(managedDir, "demo-skill"),
name: "demo-skill",
description: "Managed version",
});
await writeSkill({
dir: path.join(sourceWorkspace, "skills", "demo-skill"),
name: "demo-skill",
description: "Workspace version",
});
await withEnv({ HOME: sourceWorkspace, PATH: "" }, () =>
syncSkillsToWorkspace({
sourceWorkspaceDir: sourceWorkspace,

View File

@@ -7,9 +7,32 @@ import { writeSkill } from "./skills.e2e-test-helpers.js";
import { buildWorkspaceSkillSnapshot, buildWorkspaceSkillsPrompt } from "./skills.js";
const fixtureSuite = createFixtureSuite("openclaw-skills-snapshot-suite-");
let truncationWorkspaceTemplateDir = "";
let nestedRepoTemplateDir = "";
beforeAll(async () => {
await fixtureSuite.setup();
truncationWorkspaceTemplateDir = await fixtureSuite.createCaseDir(
"template-truncation-workspace",
);
for (let i = 0; i < 8; i += 1) {
const name = `skill-${String(i).padStart(2, "0")}`;
await writeSkill({
dir: path.join(truncationWorkspaceTemplateDir, "skills", name),
name,
description: "x".repeat(800),
});
}
nestedRepoTemplateDir = await fixtureSuite.createCaseDir("template-skills-repo");
for (let i = 0; i < 8; i += 1) {
const name = `repo-skill-${String(i).padStart(2, "0")}`;
await writeSkill({
dir: path.join(nestedRepoTemplateDir, "skills", name),
name,
description: `Desc ${i}`,
});
}
});
afterAll(async () => {
@@ -20,6 +43,12 @@ function withWorkspaceHome<T>(workspaceDir: string, cb: () => T): T {
return withEnv({ HOME: workspaceDir, PATH: "" }, cb);
}
async function cloneTemplateDir(templateDir: string, prefix: string): Promise<string> {
const cloned = await fixtureSuite.createCaseDir(prefix);
await fs.cp(templateDir, cloned, { recursive: true });
return cloned;
}
describe("buildWorkspaceSkillSnapshot", () => {
it("returns an empty snapshot when skills dirs are missing", async () => {
const workspaceDir = await fixtureSuite.createCaseDir("workspace");
@@ -110,17 +139,7 @@ describe("buildWorkspaceSkillSnapshot", () => {
});
it("truncates the skills prompt when it exceeds the configured char budget", async () => {
const workspaceDir = await fixtureSuite.createCaseDir("workspace");
// Keep fixture size modest while still forcing truncation logic.
for (let i = 0; i < 8; i += 1) {
const name = `skill-${String(i).padStart(2, "0")}`;
await writeSkill({
dir: path.join(workspaceDir, "skills", name),
name,
description: "x".repeat(800),
});
}
const workspaceDir = await cloneTemplateDir(truncationWorkspaceTemplateDir, "workspace");
const snapshot = withWorkspaceHome(workspaceDir, () =>
buildWorkspaceSkillSnapshot(workspaceDir, {
@@ -143,16 +162,7 @@ describe("buildWorkspaceSkillSnapshot", () => {
it("limits discovery for nested repo-style skills roots (dir/skills/*)", async () => {
const workspaceDir = await fixtureSuite.createCaseDir("workspace");
const repoDir = await fixtureSuite.createCaseDir("skills-repo");
for (let i = 0; i < 8; i += 1) {
const name = `repo-skill-${String(i).padStart(2, "0")}`;
await writeSkill({
dir: path.join(repoDir, "skills", name),
name,
description: `Desc ${i}`,
});
}
const repoDir = await cloneTemplateDir(nestedRepoTemplateDir, "skills-repo");
const snapshot = withWorkspaceHome(workspaceDir, () =>
buildWorkspaceSkillSnapshot(workspaceDir, {