@@ -2,46 +2,44 @@ import { expect } from '@playwright/test'
22import { nextVersionSatisfies } from '../utils/next-version-helpers.mjs'
33import { test } from '../utils/playwright-helpers.js'
44
5- test ( 'next/after callback is executed and finishes' , async ( { page , after } ) => {
6- test . skip (
7- ! nextVersionSatisfies ( '>=15.1.0' ) ,
8- 'This test is only for Next.js >=15.1.0 that has stable after() support' ,
9- )
5+ // This test is only for Next.js >=15.1.0 that has stable after() support
6+ if ( nextVersionSatisfies ( '>=15.1.0' ) ) {
7+ test ( 'next/after callback is executed and finishes' , async ( { page , after } ) => {
8+ // trigger initial request to check page which might be stale and allow regenerating in background
9+ await page . goto ( ` ${ after . url } /after/check` )
1010
11- // trigger initial request to check page which might be stale and allow regenerating in background
12- await page . goto ( `${ after . url } /after/check` )
11+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
1312
14- await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
13+ // after it was possibly regenerated we can start checking actual content of the page
14+ await page . goto ( `${ after . url } /after/check` )
15+ const pageInfoLocator1 = await page . locator ( '#page-info' )
16+ const pageInfo1 = JSON . parse ( ( await pageInfoLocator1 . textContent ( ) ) ?? '{}' )
1517
16- // after it was possibly regenerated we can start checking actual content of the page
17- await page . goto ( `${ after . url } /after/check` )
18- const pageInfoLocator1 = await page . locator ( '#page-info' )
19- const pageInfo1 = JSON . parse ( ( await pageInfoLocator1 . textContent ( ) ) ?? '{}' )
18+ expect ( typeof pageInfo1 ?. timestamp , 'Check page should have timestamp' ) . toBe ( 'number' )
2019
21- expect ( typeof pageInfo1 ?. timestamp , 'Check page should have timestamp' ) . toBe ( 'number' )
20+ await page . goto ( `${ after . url } /after/check` )
21+ const pageInfoLocator2 = await page . locator ( '#page-info' )
22+ const pageInfo2 = JSON . parse ( ( await pageInfoLocator2 . textContent ( ) ) ?? '{}' )
2223
23- await page . goto ( `${ after . url } /after/check` )
24- const pageInfoLocator2 = await page . locator ( '#page-info' )
25- const pageInfo2 = JSON . parse ( ( await pageInfoLocator2 . textContent ( ) ) ?? '{}' )
24+ expect ( typeof pageInfo2 ?. timestamp , 'Check page should have timestamp' ) . toBe ( 'number' )
2625
27- expect ( typeof pageInfo2 ? .timestamp , 'Check page should have timestamp ' ) . toBe ( 'number' )
26+ expect ( pageInfo2 . timestamp , 'Check page should be cached ' ) . toBe ( pageInfo1 . timestamp )
2827
29- expect ( pageInfo2 . timestamp , 'Check page should be cached' ) . toBe ( pageInfo1 . timestamp )
28+ const response = await page . goto ( ` ${ after . url } /after/trigger` )
3029
31- const response = await page . goto ( ` ${ after . url } /after/trigger` )
30+ expect ( response ?. status ( ) , 'Trigger should return 200' ) . toBe ( 200 )
3231
33- expect ( response ?. status ( ) , 'Trigger should return 200' ) . toBe ( 200 )
32+ // wait for next/after to trigger revalidation of check page
33+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
3434
35- // wait for next/after to trigger revalidation of check page
36- await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) )
35+ await page . goto ( `${ after . url } /after/check` )
36+ const pageInfoLocator3 = await page . locator ( '#page-info' )
37+ const pageInfo3 = JSON . parse ( ( await pageInfoLocator3 . textContent ( ) ) ?? '{}' )
3738
38- await page . goto ( `${ after . url } /after/check` )
39- const pageInfoLocator3 = await page . locator ( '#page-info' )
40- const pageInfo3 = JSON . parse ( ( await pageInfoLocator3 . textContent ( ) ) ?? '{}' )
41- 42- expect ( typeof pageInfo3 ?. timestamp , 'Check page should have timestamp' ) . toBe ( 'number' )
43- expect (
44- pageInfo3 . timestamp ,
45- 'Check page should be invalidated with newer timestamp' ,
46- ) . toBeGreaterThan ( pageInfo1 . timestamp )
47- } )
39+ expect ( typeof pageInfo3 ?. timestamp , 'Check page should have timestamp' ) . toBe ( 'number' )
40+ expect (
41+ pageInfo3 . timestamp ,
42+ 'Check page should be invalidated with newer timestamp' ,
43+ ) . toBeGreaterThan ( pageInfo1 . timestamp )
44+ } )
45+ }
0 commit comments