diff --git a/packages/analytics-client-common/src/storage/cookie.ts b/packages/analytics-client-common/src/storage/cookie.ts index f0945d83a..c951c147f 100644 --- a/packages/analytics-client-common/src/storage/cookie.ts +++ b/packages/analytics-client-common/src/storage/cookie.ts @@ -39,12 +39,12 @@ export class CookieStorage implements Storage { try { value = decodeURIComponent(atob(value)); } catch { - // value not encoded + console.error(`Amplitude Logger [Error]: Failed to decode cookie value for key: ${key}, value: ${value}`); } // eslint-disable-next-line @typescript-eslint/no-unsafe-return return JSON.parse(value); } catch { - /* istanbul ignore next */ + console.error(`Amplitude Logger [Error]: Failed to parse cookie value for key: ${key}, value: ${value}`); return undefined; } } @@ -87,8 +87,9 @@ export class CookieStorage implements Storage { if (globalScope) { globalScope.document.cookie = str; } - } catch { - // + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + console.error(`Amplitude Logger [Error]: Failed to set cookie for key: ${key}. Error: ${errorMessage}`); } } diff --git a/packages/analytics-client-common/test/storage/cookies.test.ts b/packages/analytics-client-common/test/storage/cookies.test.ts index b1152a9b4..d18a5bf7b 100644 --- a/packages/analytics-client-common/test/storage/cookies.test.ts +++ b/packages/analytics-client-common/test/storage/cookies.test.ts @@ -84,6 +84,27 @@ describe('cookies', () => { expect(await cookies.get('hello')).toBe(undefined); await cookies.remove('hello'); }); + + test.each([new Error('Simulated error'), 'Simulated error'])( + 'logs an error message when setting a cookie fails', + async (error) => { + console.error = jest.fn(); + jest.spyOn(global, 'btoa').mockImplementation(() => { + throw error; + }); + + const cookies = new CookieStorage(); + await cookies.set('hello', 'world'); + + expect(console.error).toHaveBeenCalledWith( + expect.stringContaining( + `Amplitude Logger [Error]: Failed to set cookie for key: hello. Error: Simulated error`, + ), + ); + + jest.restoreAllMocks(); + }, + ); }); describe('remove', () => {