From 3915089a25f349ee9ca3c4f10acde71d9d44cab3 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 6 May 2026 08:51:25 +0100 Subject: [PATCH] test: cache provider contract entries --- src/plugin-sdk/test-helpers/provider-contract.ts | 10 ++++++++-- .../test-helpers/web-search-provider-contract.ts | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/plugin-sdk/test-helpers/provider-contract.ts b/src/plugin-sdk/test-helpers/provider-contract.ts index 0b11ded9f54..513a6b3888b 100644 --- a/src/plugin-sdk/test-helpers/provider-contract.ts +++ b/src/plugin-sdk/test-helpers/provider-contract.ts @@ -26,15 +26,21 @@ function resolveProviderContractProvidersFromPublicArtifact( } export function describeProviderContracts(pluginId: string) { + let providerEntries: ProviderContractEntry[] | undefined; const resolveProviderEntries = (): ProviderContractEntry[] => { + if (providerEntries) { + return providerEntries; + } const publicArtifactProviders = resolveProviderContractProvidersFromPublicArtifact(pluginId); if (publicArtifactProviders) { - return publicArtifactProviders; + providerEntries = publicArtifactProviders; + return providerEntries; } - return resolveProviderContractProvidersForPluginIds([pluginId]).map((provider) => ({ + providerEntries = resolveProviderContractProvidersForPluginIds([pluginId]).map((provider) => ({ pluginId, provider, })); + return providerEntries; }; const resolveProviderIds = (): string[] => resolveProviderEntries().map((entry) => entry.provider.id); diff --git a/src/plugin-sdk/test-helpers/web-search-provider-contract.ts b/src/plugin-sdk/test-helpers/web-search-provider-contract.ts index 1b6e0288d80..29a70ab93e9 100644 --- a/src/plugin-sdk/test-helpers/web-search-provider-contract.ts +++ b/src/plugin-sdk/test-helpers/web-search-provider-contract.ts @@ -33,18 +33,24 @@ export function describeWebSearchProviderContracts(pluginId: string) { pluginRegistrationContractRegistry.find((entry) => entry.pluginId === pluginId) ?.webSearchProviderIds ?? []; + let providerEntries: WebSearchContractEntry[] | undefined; const resolveProviders = (): WebSearchContractEntry[] => { + if (providerEntries) { + return providerEntries; + } const publicArtifactProviders = resolveBundledExplicitWebSearchProvidersFromPublicArtifacts({ onlyPluginIds: [pluginId], }); if (publicArtifactProviders) { - return publicArtifactProviders.map((provider) => ({ + providerEntries = publicArtifactProviders.map((provider) => ({ pluginId: provider.pluginId, provider, credentialValue: resolveWebSearchCredentialValue(provider), })); + return providerEntries; } - return resolveWebSearchProviderContractEntriesForPluginId(pluginId); + providerEntries = resolveWebSearchProviderContractEntriesForPluginId(pluginId); + return providerEntries; }; describe(`${pluginId} web search provider contract registry load`, () => {