File tree 4 files changed +36
-7
lines changed
packages/tests-e2e/tests/appRouter 4 files changed +36
-7
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ " @opennextjs/aws " : patch
3
+ ---
4
+
5
+ fix: Ensure cookies set in middleware are available on initial render when using ` cookies().get() ` from Next.js
Original file line number Diff line number Diff line change
1
+ import { cookies } from "next/headers" ;
2
+
3
+ export default async function Page ( ) {
4
+ const foo = ( await cookies ( ) ) . get ( "foo" ) ?. value ;
5
+
6
+ return < div data-testid = "foo" > { foo } </ div > ;
7
+ }
Original file line number Diff line number Diff line change @@ -28,6 +28,11 @@ export function middleware(request: NextRequest) {
28
28
const u = new URL ( "https://opennext.js.org/share.png" ) ;
29
29
return NextResponse . rewrite ( u ) ;
30
30
}
31
+ if ( path === "/cookies" ) {
32
+ const res = NextResponse . next ( ) ;
33
+ res . cookies . set ( "foo" , "bar" ) ;
34
+ return res ;
35
+ }
31
36
const requestHeaders = new Headers ( request . headers ) ;
32
37
// Setting the Request Headers, this should be available in RSC
33
38
requestHeaders . set ( "request-header" , "request-header" ) ;
Original file line number Diff line number Diff line change 1
1
import { expect , test } from "@playwright/test" ;
2
2
3
- test ( "Cookies" , async ( { page, context } ) => {
4
- await page . goto ( "/" ) ;
3
+ test . describe ( "Middleware Cookies" , ( ) => {
4
+ test ( "should be able to set cookies on response in middleware" , async ( {
5
+ page,
6
+ context,
7
+ } ) => {
8
+ await page . goto ( "/" ) ;
5
9
6
- const cookies = await context . cookies ( ) ;
7
- const from = cookies . find ( ( { name } ) => name === "from" ) ;
8
- expect ( from ?. value ) . toEqual ( "middleware" ) ;
10
+ const cookies = await context . cookies ( ) ;
11
+ const from = cookies . find ( ( { name } ) => name === "from" ) ;
12
+ expect ( from ?. value ) . toEqual ( "middleware" ) ;
9
13
10
- const love = cookies . find ( ( { name } ) => name === "with" ) ;
11
- expect ( love ?. value ) . toEqual ( "love" ) ;
14
+ const love = cookies . find ( ( { name } ) => name === "with" ) ;
15
+ expect ( love ?. value ) . toEqual ( "love" ) ;
16
+ } ) ;
17
+ test ( "should be able to get cookies set in the middleware with Next's cookies().get()" , async ( {
18
+ page,
19
+ } ) => {
20
+ await page . goto ( "/cookies" ) ;
21
+
22
+ expect ( await page . getByTestId ( "foo" ) . textContent ( ) ) . toBe ( "bar" ) ;
23
+ } ) ;
12
24
} ) ;
You can’t perform that action at this time.
0 commit comments