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 {
11
11
public preserveUrl = false
12
12
protected current : Partial < Page > = { }
13
13
protected queue : ( ( ) => Promise < void > ) [ ] = [ ]
14
+ // We need initialState for `restore`
15
+ protected initialState : Partial < Page > | null = null
14
16
15
17
public remember ( data : unknown , key : string ) : void {
16
18
this . replaceState ( {
@@ -24,7 +26,7 @@ class History {
24
26
25
27
public restore ( key : string ) : unknown {
26
28
if ( ! isServer ) {
27
- return this . getState < { [ key : string ] : any } > ( this . rememberedState , { } ) ?. [ key ]
29
+ return this . initialState ?. [ this . rememberedState ] ?. [ key ]
28
30
}
29
31
}
30
32
@@ -77,7 +79,11 @@ class History {
77
79
throw new Error ( 'Unable to decrypt history' )
78
80
}
79
81
80
- this . current = data ?? { }
82
+ if ( this . initialState === null ) {
83
+ this . initialState = data ?? undefined
84
+ } else {
85
+ this . current = data ?? { }
86
+ }
81
87
82
88
return data
83
89
} )
Original file line number Diff line number Diff line change @@ -36,3 +36,29 @@ test('can load deferred props', async ({ page }) => {
36
36
await expect ( page . getByText ( 'qux value' ) ) . toBeVisible ( )
37
37
await expect ( page . getByText ( 'both baz value and qux value' ) ) . toBeVisible ( )
38
38
} )
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