diff --git a/.changeset/dirty-eggs-deliver.md b/.changeset/dirty-eggs-deliver.md new file mode 100644 index 00000000000..bbd338d1a76 --- /dev/null +++ b/.changeset/dirty-eggs-deliver.md @@ -0,0 +1,5 @@ +--- +'@firebase/performance': patch +--- + +Expand check in `getServiceWorkerStatus` to account for a `navigator` that has a key of `serviceWorker` with a falsy value diff --git a/packages/performance/src/utils/attribute_utils.test.ts b/packages/performance/src/utils/attribute_utils.test.ts index ba258ddf37c..fa7a43d901b 100644 --- a/packages/performance/src/utils/attribute_utils.test.ts +++ b/packages/performance/src/utils/attribute_utils.test.ts @@ -32,12 +32,20 @@ import '../../test/setup'; describe('Firebase Performance > attribute_utils', () => { describe('#getServiceWorkerStatus', () => { + it('returns unsupported when service workers is in navigator but has a falsy value', () => { + stub(Api, 'getInstance').returns({ + navigator: { serviceWorker: undefined } + } as unknown as Api); + + expect(getServiceWorkerStatus()).to.be.eql(1 /** UNSUPPORTED */); + }); + it('returns unsupported when service workers unsupported', () => { stub(Api, 'getInstance').returns({ navigator: {} } as unknown as Api); - expect(getServiceWorkerStatus()).to.be.eql(1); + expect(getServiceWorkerStatus()).to.be.eql(1 /** UNSUPPORTED */); }); it('returns controlled when service workers controlled', () => { @@ -49,7 +57,7 @@ describe('Firebase Performance > attribute_utils', () => { } } as unknown as Api); - expect(getServiceWorkerStatus()).to.be.eql(2); + expect(getServiceWorkerStatus()).to.be.eql(2 /** CONTROLLED */); }); it('returns uncontrolled when service workers uncontrolled', () => { @@ -59,7 +67,7 @@ describe('Firebase Performance > attribute_utils', () => { } } as unknown as Api); - expect(getServiceWorkerStatus()).to.be.eql(3); + expect(getServiceWorkerStatus()).to.be.eql(3 /** UNCONTROLLED */); }); }); diff --git a/packages/performance/src/utils/attributes_utils.ts b/packages/performance/src/utils/attributes_utils.ts index ef3f499e23b..074a4deb66a 100644 --- a/packages/performance/src/utils/attributes_utils.ts +++ b/packages/performance/src/utils/attributes_utils.ts @@ -59,7 +59,7 @@ const MAX_ATTRIBUTE_VALUE_LENGTH = 100; export function getServiceWorkerStatus(): ServiceWorkerStatus { const navigator = Api.getInstance().navigator; - if ('serviceWorker' in navigator) { + if (navigator?.serviceWorker) { if (navigator.serviceWorker.controller) { return ServiceWorkerStatus.CONTROLLED; } else {