From d3cbb163beb69e328b0c3c36a3c0283e15e85ca3 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 15 Oct 2019 21:00:50 -0500 Subject: [PATCH] Fix SPR always revalidating in production (#9091) * Add failing tests for SPR * Fix SPR always revalidating in production * Remove extra changes --- packages/next/next-server/server/spr-cache.ts | 2 +- test/integration/prerender/test/index.test.js | 23 +++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/next/next-server/server/spr-cache.ts b/packages/next/next-server/server/spr-cache.ts index 23be5b03ab..9d3d6eb8d3 100644 --- a/packages/next/next-server/server/spr-cache.ts +++ b/packages/next/next-server/server/spr-cache.ts @@ -35,7 +35,7 @@ export const calculateRevalidate = (pathname: string): number | false => { // in development we don't have a prerender-manifest // and default to always revalidating to allow easier debugging const curTime = new Date().getTime() - if (!sprOptions.dev) return curTime + if (sprOptions.dev) return curTime const { initialRevalidateSeconds } = prerenderManifest.routes[pathname] || { initialRevalidateSeconds: 1, diff --git a/test/integration/prerender/test/index.test.js b/test/integration/prerender/test/index.test.js index 696d1ccabb..266493026f 100644 --- a/test/integration/prerender/test/index.test.js +++ b/test/integration/prerender/test/index.test.js @@ -259,17 +259,33 @@ const runTests = (dev = false) => { expect(new Set(vals).size).toBe(1) }) + it('should not revalidate when set to false', async () => { + const route = '/something' + const initialHtml = await renderViaHTTP(appPort, route) + let newHtml = await renderViaHTTP(appPort, route) + expect(initialHtml).toBe(newHtml) + + newHtml = await renderViaHTTP(appPort, route) + expect(initialHtml).toBe(newHtml) + + newHtml = await renderViaHTTP(appPort, route) + expect(initialHtml).toBe(newHtml) + }) + it('should handle revalidating HTML correctly', async () => { const route = '/blog/post-1/comment-1' const initialHtml = await renderViaHTTP(appPort, route) expect(initialHtml).toMatch(/Post:.*?post-1/) expect(initialHtml).toMatch(/Comment:.*?comment-1/) + let newHtml = await renderViaHTTP(appPort, route) + expect(newHtml).toBe(initialHtml) + await waitFor(2 * 1000) await renderViaHTTP(appPort, route) await waitFor(2 * 1000) - const newHtml = await renderViaHTTP(appPort, route) + newHtml = await renderViaHTTP(appPort, route) expect(newHtml === initialHtml).toBe(false) expect(newHtml).toMatch(/Post:.*?post-1/) expect(newHtml).toMatch(/Comment:.*?comment-1/) @@ -281,11 +297,14 @@ const runTests = (dev = false) => { expect(initialJson).toMatch(/post-2/) expect(initialJson).toMatch(/comment-3/) + let newJson = await renderViaHTTP(appPort, route) + expect(newJson).toBe(initialJson) + await waitFor(2 * 1000) await renderViaHTTP(appPort, route) await waitFor(2 * 1000) - const newJson = await renderViaHTTP(appPort, route) + newJson = await renderViaHTTP(appPort, route) expect(newJson === initialJson).toBe(false) expect(newJson).toMatch(/post-2/) expect(newJson).toMatch(/comment-3/)