diff --git a/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts b/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts index b76d8c080..1ee77a35f 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts @@ -18,14 +18,20 @@ import { } from '../../../../test/utils'; import { createAlgoliaInsightsPlugin } from '../createAlgoliaInsightsPlugin'; -beforeEach(() => { - (window as any).AlgoliaAnalyticsObject = undefined; - (window as any).aa = undefined; +describe('createAlgoliaInsightsPlugin', () => { + const originalWindow = global.window; - document.body.innerHTML = ''; -}); + beforeEach(() => { + (window as any).AlgoliaAnalyticsObject = undefined; + (window as any).aa = undefined; + + document.body.innerHTML = ''; + }); + + afterEach(() => { + global.window = originalWindow; + }); -describe('createAlgoliaInsightsPlugin', () => { test('has a name', () => { const plugin = createAlgoliaInsightsPlugin({ insightsClient }); @@ -343,6 +349,17 @@ describe('createAlgoliaInsightsPlugin', () => { '[Autocomplete]: Could not load search-insights.js. Please load it manually following https://alg.li/insights-autocomplete' ); }); + + it('does not throw in server environments', () => { + // @ts-expect-error + delete global.window; + + expect(() => { + createPlayground(createAutocomplete, { + plugins: [createAlgoliaInsightsPlugin({})], + }); + }).not.toThrow(); + }); }); describe('onItemsChange', () => { diff --git a/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts b/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts index 19c6f4e19..c18b05a5c 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts @@ -131,6 +131,12 @@ export function createAlgoliaInsightsPlugin( }); } + // We return an empty plugin if `insightsClient` is still undefined at + // this stage, which can happen in server environments. + if (!insightsClient) { + return {}; + } + const insights = createSearchInsightsApi(insightsClient); const previousItems = createRef([]);