File tree Expand file tree Collapse file tree 2 files changed +34
-2
lines changed Expand file tree Collapse file tree 2 files changed +34
-2
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,8 @@ class History {
1111 public preserveUrl = false
1212 protected current : Partial < Page > = { }
1313 protected queue : ( ( ) => Promise < void > ) [ ] = [ ]
14+ // We need initialState for `restore`
15+ protected initialState : Partial < Page > | null = null
1416
1517 public remember ( data : unknown , key : string ) : void {
1618 this . replaceState ( {
@@ -24,7 +26,7 @@ class History {
2426
2527 public restore ( key : string ) : unknown {
2628 if ( ! isServer ) {
27- return this . getState < { [ key : string ] : any } > ( this . rememberedState , { } ) ?. [ key ]
29+ return this . initialState ?. [ this . rememberedState ] ?. [ key ]
2830 }
2931 }
3032
@@ -77,7 +79,11 @@ class History {
7779 throw new Error ( 'Unable to decrypt history' )
7880 }
7981
80- this . current = data ?? { }
82+ if ( this . initialState === null ) {
83+ this . initialState = data ?? undefined
84+ } else {
85+ this . current = data ?? { }
86+ }
8187
8288 return data
8389 } )
Original file line number Diff line number Diff line change @@ -36,3 +36,29 @@ test('can load deferred props', async ({ page }) => {
3636 await expect ( page . getByText ( 'qux value' ) ) . toBeVisible ( )
3737 await expect ( page . getByText ( 'both baz value and qux value' ) ) . toBeVisible ( )
3838} )
39+
40+ test ( 'we are not caching deferred props after reload' , async ( { page } ) => {
41+ await page . goto ( '/deferred-props/page-1' )
42+
43+ await expect ( page . getByText ( 'Loading foo...' ) ) . toBeVisible ( )
44+ await expect ( page . getByText ( 'Loading bar...' ) ) . toBeVisible ( )
45+
46+ await page . waitForResponse ( page . url ( ) )
47+
48+ await expect ( page . getByText ( 'Loading foo...' ) ) . not . toBeVisible ( )
49+ await expect ( page . getByText ( 'Loading bar...' ) ) . not . toBeVisible ( )
50+ await expect ( page . getByText ( 'foo value' ) ) . toBeVisible ( )
51+ await expect ( page . getByText ( 'bar value' ) ) . toBeVisible ( )
52+
53+ await page . reload ( )
54+
55+ await expect ( page . getByText ( 'Loading foo...' ) ) . toBeVisible ( )
56+ await expect ( page . getByText ( 'Loading bar...' ) ) . toBeVisible ( )
57+
58+ await page . waitForResponse ( page . url ( ) )
59+
60+ await expect ( page . getByText ( 'Loading foo...' ) ) . not . toBeVisible ( )
61+ await expect ( page . getByText ( 'Loading bar...' ) ) . not . toBeVisible ( )
62+ await expect ( page . getByText ( 'foo value' ) ) . toBeVisible ( )
63+ await expect ( page . getByText ( 'bar value' ) ) . toBeVisible ( )
64+ } )
You can’t perform that action at this time.
0 commit comments