diff --git a/extensions/facetime/tests/package-manifest.test.ts b/extensions/facetime/tests/package-manifest.test.ts index 366fabd501b8..ad2c3a84e819 100644 --- a/extensions/facetime/tests/package-manifest.test.ts +++ b/extensions/facetime/tests/package-manifest.test.ts @@ -91,7 +91,7 @@ describe("FaceTime plugin manifest", () => { clawhubSpec: "clawhub:@openclaw/facetime", npmSpec: "@openclaw/facetime", defaultChoice: "npm", - minHostVersion: `>=${hostVersion}`, + minHostVersion: ">=2026.9.4", allowInvalidConfigRecovery: true, }); expect(packageManifest.openclaw.compat.pluginApi).toBe(`>=${hostVersion}`); diff --git a/test/vitest/vitest.plugins.config.ts b/test/vitest/vitest.plugins.config.ts index b66fa532000a..ab9e3bc57b6a 100644 --- a/test/vitest/vitest.plugins.config.ts +++ b/test/vitest/vitest.plugins.config.ts @@ -1,9 +1,26 @@ // Vitest plugins config wires the plugins test shard. +import { defineConfig } from "vitest/config"; import { databaseWorkerCoreTestFiles } from "./vitest.database-worker-core-paths.mjs"; +import { relativizeScopedPatterns } from "./vitest.pattern-file.ts"; import { createScopedVitestConfig } from "./vitest.scoped-config.ts"; +// These suites exercise the plugin loader's own native require()/import() +// semantics on fixture packages. The shared tsx/esm worker preload rewrites +// .ts and ambiguous .js loading in-process and would replace the runtime under +// test, so they run in Node workers without it. +export const nativeLoaderPluginTestFiles = [ + "src/plugins/bundled-plugin-metadata.public-surfaces.test.ts", + "src/plugins/capability-provider-runtime.generation.test.ts", + "src/plugins/manifest-registry.test.ts", + "src/plugins/plugin-module-generation.interop.test.ts", + "src/plugins/plugin-module-generation.test.ts", + "src/plugins/plugin-runtime-artifact-resolution.test.ts", + "src/plugins/public-surface-loader.test.ts", + "src/plugins/stage-bundled-plugin-runtime.test.ts", +]; + export function createPluginsVitestConfig(env?: Record) { - return createScopedVitestConfig(["src/plugins/**/*.test.ts"], { + const options = { dir: "src/plugins", env, exclude: [ @@ -12,10 +29,40 @@ export function createPluginsVitestConfig(env?: Record; environment?: string; exclude?: string[]; + execArgv?: string[]; argv?: string[]; includeOpenClawRuntimeSetup?: boolean; isolate?: boolean; @@ -245,6 +246,7 @@ export function createScopedVitestConfig( ...(options?.deps ? { deps: options.deps } : {}), ...(options?.name ? { name: options.name } : {}), ...(options?.environment ? { environment: options.environment } : {}), + ...(options?.execArgv ? { execArgv: options.execArgv } : {}), isolate, ...(runner ? { runner } : { runner: undefined }), setupFiles,