test: extract shared e2e helpers for trigger handling and skills

This commit is contained in:
Peter Steinberger
2026-02-18 03:37:53 +00:00
parent b099171db5
commit d1ab852972
8 changed files with 49 additions and 78 deletions

View File

@@ -3,27 +3,21 @@ import { beforeAll, describe, expect, it } from "vitest";
import {
getRunEmbeddedPiAgentMock,
installTriggerHandlingE2eTestHooks,
loadGetReplyFromConfig,
MAIN_SESSION_KEY,
makeWhatsAppElevatedCfg,
requireSessionStorePath,
runDirectElevatedToggleAndLoadStore,
withTempHome,
} from "./reply.triggers.trigger-handling.test-harness.js";
let getReplyFromConfig: typeof import("./reply.js").getReplyFromConfig;
beforeAll(async () => {
({ getReplyFromConfig } = await import("./reply.js"));
getReplyFromConfig = await loadGetReplyFromConfig();
});
installTriggerHandlingE2eTestHooks();
function requireSessionStorePath(cfg: { session?: { store?: string } }): string {
const storePath = cfg.session?.store;
if (!storePath) {
throw new Error("expected session store path");
}
return storePath;
}
describe("trigger handling", () => {
it("allows approved sender to toggle elevated mode", async () => {
await withTempHome(async (home) => {

View File

@@ -3,27 +3,21 @@ import { beforeAll, describe, expect, it } from "vitest";
import { loadSessionStore } from "../config/sessions.js";
import {
installTriggerHandlingE2eTestHooks,
loadGetReplyFromConfig,
MAIN_SESSION_KEY,
makeWhatsAppElevatedCfg,
requireSessionStorePath,
runDirectElevatedToggleAndLoadStore,
withTempHome,
} from "./reply.triggers.trigger-handling.test-harness.js";
let getReplyFromConfig: typeof import("./reply.js").getReplyFromConfig;
beforeAll(async () => {
({ getReplyFromConfig } = await import("./reply.js"));
getReplyFromConfig = await loadGetReplyFromConfig();
});
installTriggerHandlingE2eTestHooks();
function requireSessionStorePath(cfg: { session?: { store?: string } }): string {
const storePath = cfg.session?.store;
if (!storePath) {
throw new Error("expected session store path");
}
return storePath;
}
describe("trigger handling", () => {
it("allows elevated off in groups without mention", async () => {
await withTempHome(async (home) => {

View File

@@ -5,27 +5,21 @@ import type { OpenClawConfig } from "../config/config.js";
import {
getRunEmbeddedPiAgentMock,
installTriggerHandlingE2eTestHooks,
loadGetReplyFromConfig,
MAIN_SESSION_KEY,
makeCfg,
makeWhatsAppElevatedCfg,
requireSessionStorePath,
withTempHome,
} from "./reply.triggers.trigger-handling.test-harness.js";
let getReplyFromConfig: typeof import("./reply.js").getReplyFromConfig;
beforeAll(async () => {
({ getReplyFromConfig } = await import("./reply.js"));
getReplyFromConfig = await loadGetReplyFromConfig();
});
installTriggerHandlingE2eTestHooks();
function requireSessionStorePath(cfg: { session?: { store?: string } }): string {
const storePath = cfg.session?.store;
if (!storePath) {
throw new Error("expected session store path");
}
return storePath;
}
describe("trigger handling", () => {
it("ignores inline elevated directive for unapproved sender", async () => {
await withTempHome(async (home) => {

View File

@@ -6,26 +6,20 @@ import {
createBlockReplyCollector,
getRunEmbeddedPiAgentMock,
installTriggerHandlingE2eTestHooks,
loadGetReplyFromConfig,
makeCfg,
mockRunEmbeddedPiAgentOk,
requireSessionStorePath,
withTempHome,
} from "./reply.triggers.trigger-handling.test-harness.js";
let getReplyFromConfig: typeof import("./reply.js").getReplyFromConfig;
beforeAll(async () => {
({ getReplyFromConfig } = await import("./reply.js"));
getReplyFromConfig = await loadGetReplyFromConfig();
});
installTriggerHandlingE2eTestHooks();
function requireSessionStorePath(cfg: { session?: { store?: string } }): string {
const storePath = cfg.session?.store;
if (!storePath) {
throw new Error("expected session store path");
}
return storePath;
}
describe("trigger handling", () => {
it("reports active auth profile and key snippet in status", async () => {
await withTempHome(async (home) => {

View File

@@ -135,6 +135,18 @@ export function makeCfg(home: string): OpenClawConfig {
} as OpenClawConfig;
}
export async function loadGetReplyFromConfig() {
return (await import("./reply.js")).getReplyFromConfig;
}
export function requireSessionStorePath(cfg: { session?: { store?: string } }): string {
const storePath = cfg.session?.store;
if (!storePath) {
throw new Error("expected session store path");
}
return storePath;
}
export function makeWhatsAppElevatedCfg(
home: string,
opts?: { elevatedEnabled?: boolean; requireMentionInGroups?: boolean },