@@ -272,3 +272,42 @@ test('can require CJS module that is not bundled', async ({ simple }) => {
272272 expect ( parsedBody . notBundledCJSModule . isBundled ) . toEqual ( false )
273273 expect ( parsedBody . bundledCJSModule . isBundled ) . toEqual ( true )
274274} )
275+
276+ test ( 'next/after callback is executed and finishes' , async ( { page, simple } ) => {
277+ test . skip ( ! nextVersionSatisfies ( '>=15.0.0' ) , 'This test is only for Next.js 15+' )
278+
279+ // trigger initial request to check page which might be stale and allow regenerating in background
280+ await page . goto ( `${ simple . url } /after/check` )
281+
282+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
283+
284+ // after it was possibly regenerated we can start checking actual content of the page
285+ await page . goto ( `${ simple . url } /after/check` )
286+ const pageInfoLocator1 = await page . locator ( '#page-info' )
287+ const pageInfo1 = JSON . parse ( ( await pageInfoLocator1 . textContent ( ) ) ?? '{}' )
288+
289+ expect ( typeof pageInfo1 ?. timestamp , 'Check page should have timestamp' ) . toBe ( 'number' )
290+
291+ await page . goto ( `${ simple . url } /after/check` )
292+ const pageInfoLocator2 = await page . locator ( '#page-info' )
293+ const pageInfo2 = JSON . parse ( ( await pageInfoLocator2 . textContent ( ) ) ?? '{}' )
294+
295+ expect ( typeof pageInfo2 ?. timestamp , 'Check page should have timestamp' ) . toBe ( 'number' )
296+
297+ expect ( pageInfo2 . timestamp , 'Check page should be cached' ) . toBe ( pageInfo1 . timestamp )
298+
299+ await page . goto ( `${ simple . url } /after/trigger` )
300+
301+ // wait for next/after to trigger revalidation of check page
302+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
303+
304+ await page . goto ( `${ simple . url } /after/check` )
305+ const pageInfoLocator3 = await page . locator ( '#page-info' )
306+ const pageInfo3 = JSON . parse ( ( await pageInfoLocator3 . textContent ( ) ) ?? '{}' )
307+
308+ expect ( typeof pageInfo3 ?. timestamp , 'Check page should have timestamp' ) . toBe ( 'number' )
309+ expect (
310+ pageInfo3 . timestamp ,
311+ 'Check page should be invalidated with newer timestamp' ,
312+ ) . toBeGreaterThan ( pageInfo1 . timestamp )
313+ } )
0 commit comments