Skip to content

Commit

Permalink
Fix SPR always revalidating in production (#9091)
Browse files Browse the repository at this point in the history
* Add failing tests for SPR

* Fix SPR always revalidating in production

* Remove extra changes
  • Loading branch information
ijjk authored and Timer committed Oct 16, 2019
1 parent 07502ba commit d3cbb16
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
2 changes: 1 addition & 1 deletion packages/next/next-server/server/spr-cache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
23 changes: 21 additions & 2 deletions test/integration/prerender/test/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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/)
Expand All @@ -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/)
Expand Down

0 comments on commit d3cbb16

Please sign in to comment.