(route, routePath)
| 19 | let buildId |
| 20 | |
| 21 | function runTests(route, routePath) { |
| 22 | it(`[${route}] should regenerate page when revalidate time exceeded`, async () => { |
| 23 | const fileName = join( |
| 24 | appDir, |
| 25 | '.next', |
| 26 | 'server', |
| 27 | getPageFileFromPagesManifest(appDir, routePath).replace('.js', '.html') |
| 28 | ) |
| 29 | const initialHtmlFile = await fs.readFile(fileName, 'utf8') |
| 30 | |
| 31 | await waitFor(1000) // Wait revalidate duration |
| 32 | |
| 33 | expect(await renderViaHTTP(appPort, route)).toBe(initialHtmlFile) |
| 34 | |
| 35 | await waitFor(500) // Wait for regeneration to occur |
| 36 | |
| 37 | const regeneratedFileHtml = await fs.readFile(fileName, 'utf8') |
| 38 | expect(regeneratedFileHtml).not.toBe(initialHtmlFile) |
| 39 | expect(await renderViaHTTP(appPort, route)).toBe(regeneratedFileHtml) |
| 40 | }) |
| 41 | |
| 42 | it(`[${route}] should regenerate /_next/data when revalidate time exceeded`, async () => { |
| 43 | const fileName = join( |
| 44 | appDir, |
| 45 | '.next', |
| 46 | 'server', |
| 47 | getPageFileFromPagesManifest(appDir, routePath).replace('.js', '.json') |
| 48 | ) |
| 49 | const route = join(`/_next/data/${buildId}`, `${routePath}.json`) |
| 50 | const initialFileJson = await fs.readFile(fileName, 'utf8') |
| 51 | |
| 52 | await waitFor(1000) // Wait revalidate duration |
| 53 | |
| 54 | expect(JSON.parse(await renderViaHTTP(appPort, route))).toEqual( |
| 55 | JSON.parse(initialFileJson) |
| 56 | ) |
| 57 | |
| 58 | await waitFor(500) // Wait for regeneration to occur |
| 59 | |
| 60 | const regeneratedFileJson = await fs.readFile(fileName, 'utf8') |
| 61 | expect(regeneratedFileJson).not.toBe(initialFileJson) |
| 62 | expect(JSON.parse(await renderViaHTTP(appPort, route))).toEqual( |
| 63 | JSON.parse(regeneratedFileJson) |
| 64 | ) |
| 65 | }) |
| 66 | } |
| 67 | |
| 68 | describe('SSG Prerender Revalidate', () => { |
| 69 | ;(process.env.TURBOPACK_DEV ? describe.skip : describe)( |
no test coverage detected