From 31876930ae9bc5b57d3f7d2cdf3c2a63c619e44a Mon Sep 17 00:00:00 2001 From: Kevin Henderson Date: Tue, 3 Mar 2020 09:38:57 -0500 Subject: [PATCH] Fix service worker serving from cache (#56) * Fix service worker serving from cache * Fix SW test --- package.json | 2 +- service-worker/bootstrap.js | 4 ++++ test/bootstrap.test.js | 5 ++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index e8b95bcb..b38687eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-storefront", - "version": "7.7.0", + "version": "7.7.1", "description": "Build and deploy e-commerce progressive web apps (PWAs) in record time.", "module": "./index.js", "license": "Apache-2.0", diff --git a/service-worker/bootstrap.js b/service-worker/bootstrap.js index c208d32c..8b20d00a 100644 --- a/service-worker/bootstrap.js +++ b/service-worker/bootstrap.js @@ -252,6 +252,10 @@ self.addEventListener('fetch', event => { event.respondWith( (async function() { try { + const cacheResponse = await caches.match(event.request) + if (cacheResponse) { + return cacheResponse + } return await fetch(event.request) } finally { if (toResume.size) { diff --git a/test/bootstrap.test.js b/test/bootstrap.test.js index 8c77b0c5..a4f3d6cf 100644 --- a/test/bootstrap.test.js +++ b/test/bootstrap.test.js @@ -1,5 +1,4 @@ import makeServiceWorkerEnv from 'service-worker-mock' -import makeFetchMock from 'service-worker-mock/fetch' let sw @@ -15,7 +14,7 @@ describe('bootstrap', () => { expiration: { ExpirationPlugin: jest.fn() }, routing: { registerRoute: jest.fn() }, } - Object.assign(global, serviceWorkerEnv, makeFetchMock()) + Object.assign(global, serviceWorkerEnv) jest.resetModules() sw = require('../service-worker/bootstrap') }) @@ -90,7 +89,7 @@ describe('bootstrap', () => { it('should resume prefetches when non-prefetch fetch is done', async () => { const toResume = sw.__get__('toResume') toResume.add([{ path: '', apiVersion: 'v1' }]) - await self.trigger('fetch') + await self.trigger('fetch', '') expect(toResume.size).toEqual(0) })