perf(secrets): move plugin-owned coverage out of core matrix

This commit is contained in:
Vincent Koc
2026-04-07 08:35:01 +01:00
parent 49fbecbf16
commit c19f322ff9
3 changed files with 97 additions and 1 deletions

View File

@@ -1015,6 +1015,36 @@ describe("runtime web tools resolution", () => {
).toBe("firecrawl-runtime-key");
});
it("resolves legacy Firecrawl web fetch SecretRefs through the plugin-owned path", async () => {
const { metadata, resolvedConfig } = await runRuntimeWebTools({
config: asConfig({
tools: {
web: {
fetch: {
firecrawl: {
apiKey: { source: "env", provider: "default", id: "FIRECRAWL_API_KEY" },
},
},
},
},
}),
env: {
FIRECRAWL_API_KEY: "firecrawl-legacy-key",
},
});
expect(metadata.fetch.providerSource).toBe("auto-detect");
expect(metadata.fetch.selectedProvider).toBe("firecrawl");
expect(metadata.fetch.selectedProviderKeySource).toBe("env");
expect(
(
resolvedConfig.plugins?.entries?.firecrawl?.config as
| { webFetch?: { apiKey?: unknown } }
| undefined
)?.webFetch?.apiKey,
).toBe("firecrawl-legacy-key");
});
it("fails fast when active web fetch provider SecretRef is unresolved with no fallback", async () => {
const sourceConfig = asConfig({
plugins: {

View File

@@ -53,6 +53,10 @@ const COVERAGE_REGISTRY_ENTRIES = loadCoverageRegistryEntries();
const DEBUG_COVERAGE_BATCHES = process.env.OPENCLAW_DEBUG_RUNTIME_COVERAGE === "1";
const COVERAGE_LOADABLE_PLUGIN_ORIGINS =
buildCoverageLoadablePluginOrigins(COVERAGE_REGISTRY_ENTRIES);
const PLUGIN_OWNED_OPENCLAW_COVERAGE_EXCLUSIONS = new Set([
"channels.googlechat.accounts.*.serviceAccount",
"tools.web.fetch.firecrawl.apiKey",
]);
let applyResolvedAssignments: typeof import("./runtime-shared.js").applyResolvedAssignments;
let collectAuthStoreAssignments: typeof import("./runtime-auth-collectors.js").collectAuthStoreAssignments;
@@ -513,7 +517,9 @@ describe("secrets runtime target coverage", () => {
it("handles every openclaw.json registry target when configured as active", async () => {
const entries = COVERAGE_REGISTRY_ENTRIES.filter(
(entry) => entry.configFile === "openclaw.json",
(entry) =>
entry.configFile === "openclaw.json" &&
!PLUGIN_OWNED_OPENCLAW_COVERAGE_EXCLUSIONS.has(entry.id),
);
for (const batch of buildCoverageBatches(entries)) {
logCoverageBatch("openclaw.json", batch);