@@ -415,7 +415,7 @@ function defineTest(f: Fixture) {
415415 await page . getByRole ( 'button' , { name : 'client-counter: 0' } ) . click ( )
416416 } )
417417
418- test ( 'non-boundary client hmr' , async ( { page } ) => {
418+ test ( 'non-client-reference client hmr' , async ( { page } ) => {
419419 await page . goto ( f . url ( ) )
420420 await waitForHydration ( page )
421421
@@ -437,6 +437,38 @@ function defineTest(f: Fixture) {
437437 await expect ( locator ) . toHaveText ( 'test-hmr-client-dep: 0[ok]' )
438438 } )
439439
440+ test ( 'non-self-accepting client hmr' , async ( { page } ) => {
441+ await page . goto ( f . url ( ) )
442+ await waitForHydration ( page )
443+
444+ const locator = page . getByTestId ( 'test-hmr-client-dep2' )
445+ await expect ( locator ) . toHaveText ( 'test-hmr-client-dep2: 0[ok]' )
446+ await locator . locator ( 'button' ) . click ( )
447+ await expect ( locator ) . toHaveText ( 'test-hmr-client-dep2: 1[ok]' )
448+
449+ const editor = f . createEditor ( 'src/routes/hmr-client-dep2/client-dep.ts' )
450+ editor . edit ( ( s ) => s . replace ( '[ok]' , '[ok-edit]' ) )
451+ await expect ( locator ) . toHaveText ( 'test-hmr-client-dep2: 1[ok-edit]' )
452+
453+ // check next rsc payload includes an updated client reference and preserves state
454+ await page . locator ( "a[href='?test-hmr-client-dep2-re-render']" ) . click ( )
455+ await expect (
456+ page . locator ( "a[href='?test-hmr-client-dep2-re-render']" ) ,
457+ ) . toHaveText ( 're-render [ok]' )
458+ await expect ( locator ) . toHaveText ( 'test-hmr-client-dep2: 1[ok-edit]' )
459+
460+ // check next ssr is updated
461+ const res = await page . request . get ( f . url ( ) , {
462+ headers : {
463+ accept : 'text/html' ,
464+ } ,
465+ } )
466+ expect ( await res ?. text ( ) ) . toContain ( '[ok-edit]' )
467+
468+ editor . reset ( )
469+ await expect ( locator ) . toHaveText ( 'test-hmr-client-dep2: 1[ok]' )
470+ } )
471+
440472 test ( 'server hmr' , async ( { page } ) => {
441473 await page . goto ( f . url ( ) )
442474 await waitForHydration ( page )
0 commit comments