From 1e0456eb4eb780d8ad100487cc06a7a768c75bfe Mon Sep 17 00:00:00 2001 From: "izaaz.yunus" Date: Mon, 16 Sep 2024 21:01:36 -0700 Subject: [PATCH 1/2] fix: disable network checker if navigator is unavailable --- .../src/plugins/network-connectivity-checker.ts | 8 ++++++++ .../plugins/network-connectivity-checker.test.ts | 13 +++++++++++++ 2 files changed, 21 insertions(+) diff --git a/packages/analytics-browser/src/plugins/network-connectivity-checker.ts b/packages/analytics-browser/src/plugins/network-connectivity-checker.ts index 4581d89c1..35aff29a2 100644 --- a/packages/analytics-browser/src/plugins/network-connectivity-checker.ts +++ b/packages/analytics-browser/src/plugins/network-connectivity-checker.ts @@ -33,6 +33,14 @@ export const networkConnectivityCheckerPlugin = (): BeforePlugin => { }; const setup = async (config: BrowserConfig, amplitude: BrowserClient) => { + if (typeof navigator === 'undefined') { + config.loggerProvider.debug( + 'Network connectivity checker plugin is disabled because navigator is not available.', + ); + config.offline = true; + return; + } + config.offline = !navigator.onLine; addNetworkListener('online', () => { diff --git a/packages/analytics-browser/test/plugins/network-connectivity-checker.test.ts b/packages/analytics-browser/test/plugins/network-connectivity-checker.test.ts index ff0387675..40e2ff102 100644 --- a/packages/analytics-browser/test/plugins/network-connectivity-checker.test.ts +++ b/packages/analytics-browser/test/plugins/network-connectivity-checker.test.ts @@ -43,4 +43,17 @@ describe('networkConnectivityCheckerPlugin', () => { expect(removeEventListenerSpy).toHaveBeenCalledWith('online', expect.any(Function)); expect(removeEventListenerSpy).toHaveBeenCalledWith('offline', expect.any(Function)); }); + + test('should do nothing when not on a browser', async () => { + const plugin = networkConnectivityCheckerPlugin(); + // @ts-expect-error we are mocking a node.js environment + jest.spyOn(window, 'navigator', 'get').mockReturnValue(undefined); + const addEventListenerSpy = jest.spyOn(window, 'addEventListener'); + + await plugin.setup?.(config, amplitude); + + expect(config.offline).toEqual(true); + expect(addEventListenerSpy).not.toHaveBeenCalled(); + addEventListenerSpy.mockRestore(); + }); }); From ac29dec7958503e2ad7ee5101ed333485e865f31 Mon Sep 17 00:00:00 2001 From: "izaaz.yunus" Date: Mon, 16 Sep 2024 21:02:50 -0700 Subject: [PATCH 2/2] chore: default offline to false --- .../src/plugins/network-connectivity-checker.ts | 2 +- .../test/plugins/network-connectivity-checker.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/analytics-browser/src/plugins/network-connectivity-checker.ts b/packages/analytics-browser/src/plugins/network-connectivity-checker.ts index 35aff29a2..00616d68a 100644 --- a/packages/analytics-browser/src/plugins/network-connectivity-checker.ts +++ b/packages/analytics-browser/src/plugins/network-connectivity-checker.ts @@ -37,7 +37,7 @@ export const networkConnectivityCheckerPlugin = (): BeforePlugin => { config.loggerProvider.debug( 'Network connectivity checker plugin is disabled because navigator is not available.', ); - config.offline = true; + config.offline = false; return; } diff --git a/packages/analytics-browser/test/plugins/network-connectivity-checker.test.ts b/packages/analytics-browser/test/plugins/network-connectivity-checker.test.ts index 40e2ff102..3725c204b 100644 --- a/packages/analytics-browser/test/plugins/network-connectivity-checker.test.ts +++ b/packages/analytics-browser/test/plugins/network-connectivity-checker.test.ts @@ -52,7 +52,7 @@ describe('networkConnectivityCheckerPlugin', () => { await plugin.setup?.(config, amplitude); - expect(config.offline).toEqual(true); + expect(config.offline).toEqual(false); expect(addEventListenerSpy).not.toHaveBeenCalled(); addEventListenerSpy.mockRestore(); });