File tree Expand file tree Collapse file tree 3 files changed +57
-0
lines changed
packages/tests-e2e/tests/experimental Expand file tree Collapse file tree 3 files changed +57
-0
lines changed Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ const nextConfig: NextConfig = {
9
9
} ,
10
10
experimental : {
11
11
ppr : "incremental" ,
12
+ nodeMiddleware : true ,
12
13
} ,
13
14
} ;
14
15
Original file line number Diff line number Diff line change
1
+ import { type NextRequest , NextResponse } from "next/server" ;
2
+ import crypto from "node:crypto" ;
3
+
4
+ export default function middleware ( request : NextRequest ) {
5
+ if ( request . nextUrl . pathname === "/api/hello" ) {
6
+ return NextResponse . json ( {
7
+ name : "World" ,
8
+ } ) ;
9
+ }
10
+ if ( request . nextUrl . pathname === "/redirect" ) {
11
+ return NextResponse . redirect ( new URL ( "/" , request . url ) ) ;
12
+ }
13
+ if ( request . nextUrl . pathname === "/rewrite" ) {
14
+ return NextResponse . rewrite ( new URL ( "/" , request . url ) ) ;
15
+ }
16
+
17
+ return NextResponse . next ( {
18
+ headers : {
19
+ "x-middleware-test" : "1" ,
20
+ "x-random-node" : crypto . randomUUID ( ) ,
21
+ } ,
22
+ } ) ;
23
+ }
24
+
25
+ export const config = {
26
+ runtime : "nodejs" ,
27
+ } ;
Original file line number Diff line number Diff line change
1
+ import { expect , test } from "@playwright/test" ;
2
+
3
+ test ( "Node middleware should add headers" , async ( { request } ) => {
4
+ const resp = await request . get ( "/" ) ;
5
+ expect ( resp . status ( ) ) . toEqual ( 200 ) ;
6
+ const headers = resp . headers ( ) ;
7
+ expect ( headers [ "x-middleware-test" ] ) . toEqual ( "1" ) ;
8
+ expect ( headers [ "x-random-node" ] ) . toBeDefined ( ) ;
9
+ } ) ;
10
+
11
+ test ( "Node middleware should return json" , async ( { request } ) => {
12
+ const resp = await request . get ( "/api/hello" ) ;
13
+ expect ( resp . status ( ) ) . toEqual ( 200 ) ;
14
+ const json = await resp . json ( ) ;
15
+ expect ( json ) . toEqual ( { name : "World" } ) ;
16
+ } ) ;
17
+
18
+ test ( "Node middleware should redirect" , async ( { page } ) => {
19
+ await page . goto ( "/redirect" ) ;
20
+ await page . waitForURL ( "/" ) ;
21
+ const el = page . getByText ( "Incremental PPR" ) ;
22
+ await expect ( el ) . toBeVisible ( ) ;
23
+ } ) ;
24
+
25
+ test ( "Node middleware should rewrite" , async ( { page } ) => {
26
+ await page . goto ( "/rewrite" ) ;
27
+ const el = page . getByText ( "Incremental PPR" ) ;
28
+ await expect ( el ) . toBeVisible ( ) ;
29
+ } ) ;
You can’t perform that action at this time.
0 commit comments