@@ -8,13 +8,13 @@ import { File } from 'next-test-utils'
88const appDir = join ( __dirname , '../prerelease' )
99const page = new File ( join ( appDir , 'components/dynamic-suspense.js' ) )
1010
11- function writeDynamicTestComponent ( { ssr = false , suspense = false } ) {
11+ function writeDynamicTestComponent ( { ssr, suspense = false } ) {
1212 const content = `import { Suspense } from 'react'
1313 import dynamic from 'next/dynamic'
1414
1515 const Hello = dynamic(() => import('./hello'), {
16- ssr: ${ ssr } ,
17- suspense : ${ suspense } ,
16+ ${ typeof ssr !== 'undefined' ? `ssr : ${ ssr } ,` : '' }
17+ unstable_suspense : ${ suspense } ,
1818 })
1919
2020 export default function SuspenseNoSSR({ thrown }) {
@@ -34,11 +34,11 @@ export default (context, render) => {
3434 }
3535
3636 describe ( 'suspense:true option' , ( ) => {
37+ beforeAll ( ( ) => writeDynamicTestComponent ( { suspense : true } ) )
38+ afterAll ( ( ) => page . restore ( ) )
39+
3740 describe ( 'promise is thrown on server side' , ( ) => {
3841 // let `ssr` option be auto overridden
39- beforeAll ( ( ) => writeDynamicTestComponent ( { suspense : true } ) )
40- afterAll ( ( ) => page . restore ( ) )
41-
4242 it ( 'should render the fallback on server side' , async ( ) => {
4343 const $ = await get$ ( '/suspense/thrown' )
4444 const html = $ ( 'body' ) . html ( )
@@ -62,10 +62,11 @@ export default (context, render) => {
6262 } )
6363
6464 describe ( 'promise is not thrown on server side' , ( ) => {
65+ // TODO: add case after streaming mode is supported
6566 it ( 'should render fallback on server side' , async ( ) => {
6667 const $ = await get$ ( '/suspense/no-thrown' )
6768 const text = $ ( '#__next' ) . text ( )
68- expect ( text ) . toBe ( 'loading' )
69+ expect ( text ) . toContain ( 'loading' )
6970 } )
7071
7172 it ( 'should hydrate on client side' , async ( ) => {
@@ -81,28 +82,4 @@ export default (context, render) => {
8182 } )
8283 } )
8384 } )
84-
85- describe ( 'suspense:false option' , ( ) => {
86- beforeAll ( ( ) => writeDynamicTestComponent ( { suspense : false , ssr : false } ) )
87- afterAll ( ( ) => page . restore ( ) )
88-
89- it ( 'should render nothing on server side under Suspense' , async ( ) => {
90- const $ = await get$ ( '/suspense/thrown' )
91- const text = $ ( '#__next' ) . text ( )
92- expect ( text ) . toBe ( '' )
93- expect ( JSON . parse ( $ ( '#__NEXT_DATA__' ) . html ( ) ) . dynamicIds ) . toBeUndefined ( )
94- } )
95-
96- it ( 'should hydrate suspenses on client side with ssr disabled' , async ( ) => {
97- let browser
98- try {
99- browser = await webdriver ( context . appPort , '/suspense/no-thrown' )
100- await check ( ( ) => browser . elementByCss ( 'body' ) . text ( ) , / h e l l o 1 8 / )
101- } finally {
102- if ( browser ) {
103- await browser . close ( )
104- }
105- }
106- } )
107- } )
10885}
0 commit comments