提交 d3cbb163 编写于 作者: J JJ Kasper 提交者: Joe Haddad

Fix SPR always revalidating in production (#9091)

* Add failing tests for SPR

* Fix SPR always revalidating in production

* Remove extra changes
上级 07502ba2
......@@ -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,
......
......@@ -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/)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册