Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(after): surface after errors in error overlay #73449

Draft
wants to merge 3 commits into
base: lubieowoce/after-errors
Choose a base branch
from

Conversation

lubieowoce
Copy link
Member

No description provided.

Copy link
Member Author

lubieowoce commented Dec 3, 2024

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@lubieowoce lubieowoce force-pushed the lubieowoce/after-error-overlay branch from 54e465e to c798207 Compare December 3, 2024 00:16
@lubieowoce lubieowoce changed the title Pin version of nwsapi (revert later) (#73351) feat(after): surface after errors in error overlay Dec 3, 2024
@ijjk
Copy link
Member

ijjk commented Dec 3, 2024

Failing test suites

Commit: c145214

pnpm test-dev packages/next/src/server/after/after-context.test.ts

  • AfterContext > runs after() callbacks from a run() callback that resolves
Expand output

● AfterContext › runs after() callbacks from a run() callback that resolves

expect(received).toEqual(expected) // deep equality

- Expected  - 1
+ Received  + 1

  Array [
-   "0",
+   undefined,
    undefined,
  ]

  106 |
  107 |     const results = await Promise.all(waitUntilPromises)
> 108 |     expect(results).toEqual([
      |                     ^
  109 |       '0', // promises are passed to waitUntil as is
  110 |       undefined, // callbacks all get collected into a big void promise
  111 |     ])

  at Object.toEqual (../packages/next/src/server/after/after-context.test.ts:108:21)

Read more about building and testing Next.js in contributing.md.

pnpm test-start test/e2e/app-dir/actions-navigation/index.test.ts

  • app-dir action handling > should handle actions correctly after navigation / redirection events
  • app-dir action handling > should handle actions correctly after following a relative link
Expand output

● app-dir action handling › should handle actions correctly after navigation / redirection events

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app-dir action handling › should handle actions correctly after following a relative link

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/edge-runtime-response-error/test/index.test.js (turbopack)

  • Edge runtime code with imports > test error if response is not Response type > Edge API dev test Response
  • Edge runtime code with imports > test error if response is not Response type > Middleware dev test Response
Expand output

● Edge runtime code with imports › test error if response is not Response type › Edge API dev test Response

expect(received).toContain(expected) // indexOf

Expected substring: "Expected an instance of Response to be returned"
Received string:    " ⨯ TypeError: Cannot read properties of undefined (reading 'indexOf')

  at e1.exports (integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:4595:29)
  at 7220 (integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:4939:17)
  at __nccwpck_require__ (integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:65106:19)
  at 6148 (integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:2018:23)
  at __nccwpck_require__ (integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:65106:19)
  at 6448 (integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:27219:45)
  at __nccwpck_require__ (integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:65106:19)
  at 2430 (integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:5435:21)
  at __nccwpck_require__ (integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:65106:19)
  at Object.codeFrame (integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:5047:24)
   ⨯ Error [TypeError]: Cannot read properties of undefined (reading 'indexOf')
  at e1.exports (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:4595:29)
  at 7220 (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:4939:17)
  at __nccwpck_require__ (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:65106:19)
  at 6148 (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:2018:23)
  at __nccwpck_require__ (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:65106:19)
  at 6448 (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:27219:45)
  at __nccwpck_require__ (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:65106:19)
  at 2430 (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:5435:21)
  at __nccwpck_require__ (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:65106:19)
  at Object.codeFrame (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_550efd.js:5047:24)
  "
  at Object.toContain (integration/edge-runtime-response-error/test/index.test.js:70:35)

● Edge runtime code with imports › test error if response is not Response type › Middleware dev test Response

expect(received).toContain(expected) // indexOf

Expected substring: "Expected an instance of Response to be returned"
Received string:    " ⨯ Error [TypeError]: Cannot read properties of undefined (reading 'indexOf')

  at e1.exports (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:4595:29)
  at 7220 (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:4939:17)
  at __nccwpck_require__ (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:65106:19)
  at 6148 (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:2018:23)
  at __nccwpck_require__ (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:65106:19)
  at 6448 (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:27219:45)
  at __nccwpck_require__ (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:65106:19)
  at 2430 (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:5435:21)
  at __nccwpck_require__ (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:65106:19)
  at Object.codeFrame (../../../test/integration/edge-runtime-response-error/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:5047:24)
  "
  at Object.toContain (integration/edge-runtime-response-error/test/index.test.js:70:35)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/app-edge-root-layout/index.test.ts (turbopack)

  • app-dir edge runtime root layout > should not emit metadata files into bad paths
  • app-dir edge runtime root layout > should mark static contain metadata routes as edge functions
Expand output

● app-dir edge runtime root layout › should not emit metadata files into bad paths

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app-dir edge runtime root layout › should mark static contain metadata routes as edge functions

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/app-edge/app-edge.test.ts (turbopack)

  • app-dir edge SSR > should handle edge only routes
  • app-dir edge SSR > should retrieve cookies in a server component in the edge runtime
  • app-dir edge SSR > should treat process as object without polyfill in edge runtime
  • app-dir edge SSR > should handle /index routes correctly
Expand output

● app-dir edge SSR › should handle edge only routes

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app-dir edge SSR › should retrieve cookies in a server component in the edge runtime

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app-dir edge SSR › should treat process as object without polyfill in edge runtime

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app-dir edge SSR › should handle /index routes correctly

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app-dir edge SSR › should generate matchers correctly in middleware manifest

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/edge-runtime-dynamic-code/test/index.test.js (turbopack)

  • Edge route usage of dynamic code evaluation > development mode > shows a warning when running code with eval
  • Edge route usage of dynamic code evaluation > development mode > does not show warning when no code uses eval
  • Edge route usage of dynamic code evaluation > development mode > shows a warning when running WebAssembly.compile
  • Edge route usage of dynamic code evaluation > development mode > shows a warning when running WebAssembly.instantiate with a buffer parameter
  • Edge route usage of dynamic code evaluation > development mode > does not show a warning when running WebAssembly.instantiate with a module parameter
  • Middleware usage of dynamic code evaluation > development mode > shows a warning when running code with eval
  • Middleware usage of dynamic code evaluation > development mode > does not show warning when no code uses eval
  • Middleware usage of dynamic code evaluation > development mode > shows a warning when running WebAssembly.compile
  • Middleware usage of dynamic code evaluation > development mode > shows a warning when running WebAssembly.instantiate with a buffer parameter
  • Middleware usage of dynamic code evaluation > development mode > does not show a warning when running WebAssembly.instantiate with a module parameter
  • Page using eval in development mode > does issue dynamic code evaluation warnings
Expand output

● Page using eval in development mode › does issue dynamic code evaluation warnings

expect(received).toMatch(expected)

Expected pattern: />.*?100.*?and.*?100.*?<\//
Received string:  "<!DOCTYPE html><html><head><meta charSet=\"utf-8\" data-next-head=\"\"/><meta name=\"viewport\" content=\"width=device-width\" data-next-head=\"\"/><style data-next-hide-fouc=\"true\">body{display:none}</style><noscript data-next-hide-fouc=\"true\"><style>body{display:block}</style></noscript><noscript data-n-css=\"\"></noscript><script src=\"/_next/static/chunks/%5Broot%20of%20the%20server%5D__098118._.js\" defer=\"\"></script><script src=\"/_next/static/chunks/08b5e__pnpm_39642c._.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages__app_5771e1._.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages__app_23735c._.js\" defer=\"\"></script><script src=\"/_next/static/chunks/%5Broot%20of%20the%20server%5D__07cc82._.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages__error_5771e1._.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages__error_6e0b14._.js\" defer=\"\"></script><script src=\"/_next/static/development/_ssgManifest.js\" defer=\"\"></script><script src=\"/_next/static/development/_buildManifest.js\" defer=\"\"></script><noscript id=\"__next_css__DO_NOT_USE__\"></noscript></head><body><div id=\"__next\"></div><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"statusCode\":500}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"TypeError\",\"source\":\"edge-server\",\"message\":\"Cannot read properties of undefined (reading 'indexOf')\",\"stack\":\"TypeError: Cannot read properties of undefined (reading 'indexOf')\\n    at e1.exports (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:4595:29)\\n    at 7220 (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:4939:17)\\n    at __nccwpck_require__ (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:65106:19)\\n    at 6148 (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:2018:23)\\n    at __nccwpck_require__ (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:65106:19)\\n    at 6448 (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:27219:45)\\n    at __nccwpck_require__ (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:65106:19)\\n    at 2430 (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:5435:21)\\n    at __nccwpck_require__ (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:65106:19)\\n    at Object.codeFrame (file:///root/actions-runner/_work/next.js/next.js/test/integration/edge-runtime-dynamic-code/.next/server/edge/chunks/[project]_packages_next_dist_compiled_babel_bundle_be8ba1.js:5047:24)\"},\"gip\":true,\"scriptLoader\":[]}</script></body></html>"

  44 |   it('does issue dynamic code evaluation warnings', async () => {
  45 |     const html = await renderViaHTTP(context.appPort, '/')
> 46 |     expect(html).toMatch(/>.*?100.*?and.*?100.*?<\//)
     |                  ^
  47 |     await waitFor(500)
  48 |     expect(output).not.toContain(EVAL_ERROR)
  49 |     expect(output).not.toContain(DYNAMIC_CODE_ERROR)

  at Object.toMatch (integration/edge-runtime-dynamic-code/test/index.test.js:46:18)

● Middleware usage of dynamic code evaluation › development mode › shows a warning when running code with eval

TypeError: Cannot read properties of null (reading 'value')

  60 |     },
  61 |     async extractValue(response) {
> 62 |       return JSON.parse(response.headers.get('data')).value
     |                                              ^
  63 |     },
  64 |   },
  65 |   {

  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:62:46)
  at Object.extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:103:24)

● Middleware usage of dynamic code evaluation › development mode › does not show warning when no code uses eval

TypeError: Cannot read properties of null (reading 'value')

  60 |     },
  61 |     async extractValue(response) {
> 62 |       return JSON.parse(response.headers.get('data')).value
     |                                              ^
  63 |     },
  64 |   },
  65 |   {

  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:62:46)
  at Object.extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:117:24)

● Middleware usage of dynamic code evaluation › development mode › shows a warning when running WebAssembly.compile

TypeError: Cannot read properties of null (reading 'value')

  60 |     },
  61 |     async extractValue(response) {
> 62 |       return JSON.parse(response.headers.get('data')).value
     |                                              ^
  63 |     },
  64 |   },
  65 |   {

  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:62:46)
  at Object.extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:127:24)

● Middleware usage of dynamic code evaluation › development mode › shows a warning when running WebAssembly.instantiate with a buffer parameter

TypeError: Cannot read properties of null (reading 'value')

  60 |     },
  61 |     async extractValue(response) {
> 62 |       return JSON.parse(response.headers.get('data')).value
     |                                              ^
  63 |     },
  64 |   },
  65 |   {

  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:62:46)
  at Object.extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:142:24)

● Middleware usage of dynamic code evaluation › development mode › does not show a warning when running WebAssembly.instantiate with a module parameter

TypeError: Cannot read properties of null (reading 'value')

  60 |     },
  61 |     async extractValue(response) {
> 62 |       return JSON.parse(response.headers.get('data')).value
     |                                              ^
  63 |     },
  64 |   },
  65 |   {

  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:62:46)
  at Object.extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:157:24)

● Edge route usage of dynamic code evaluation › development mode › shows a warning when running code with eval

FetchError: invalid json response body at http://localhost:46525/api/route?case=using-eval reason: Unexpected token < in JSON at position 0

  69 |     },
  70 |     async extractValue(response) {
> 71 |       return (await response.json()).value
     |               ^
  72 |     },
  73 |   },
  74 | ])(

  at ../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:273:32
  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:71:15)
  at Object.<anonymous> (integration/edge-runtime-dynamic-code/test/index.test.js:103:18)

● Edge route usage of dynamic code evaluation › development mode › does not show warning when no code uses eval

FetchError: invalid json response body at http://localhost:46525/api/route?case=not-using-eval reason: Unexpected token < in JSON at position 0

  69 |     },
  70 |     async extractValue(response) {
> 71 |       return (await response.json()).value
     |               ^
  72 |     },
  73 |   },
  74 | ])(

  at ../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:273:32
  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:71:15)
  at Object.<anonymous> (integration/edge-runtime-dynamic-code/test/index.test.js:117:18)

● Edge route usage of dynamic code evaluation › development mode › shows a warning when running WebAssembly.compile

FetchError: invalid json response body at http://localhost:46525/api/route?case=using-webassembly-compile reason: Unexpected token < in JSON at position 0

  69 |     },
  70 |     async extractValue(response) {
> 71 |       return (await response.json()).value
     |               ^
  72 |     },
  73 |   },
  74 | ])(

  at ../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:273:32
  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:71:15)
  at Object.<anonymous> (integration/edge-runtime-dynamic-code/test/index.test.js:127:18)

● Edge route usage of dynamic code evaluation › development mode › shows a warning when running WebAssembly.instantiate with a buffer parameter

FetchError: invalid json response body at http://localhost:46525/api/route?case=using-webassembly-instantiate-with-buffer reason: Unexpected token < in JSON at position 0

  69 |     },
  70 |     async extractValue(response) {
> 71 |       return (await response.json()).value
     |               ^
  72 |     },
  73 |   },
  74 | ])(

  at ../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:273:32
  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:71:15)
  at Object.<anonymous> (integration/edge-runtime-dynamic-code/test/index.test.js:142:18)

● Edge route usage of dynamic code evaluation › development mode › does not show a warning when running WebAssembly.instantiate with a module parameter

FetchError: invalid json response body at http://localhost:46525/api/route?case=using-webassembly-instantiate reason: Unexpected token < in JSON at position 0

  69 |     },
  70 |     async extractValue(response) {
> 71 |       return (await response.json()).value
     |               ^
  72 |     },
  73 |   },
  74 | ])(

  at ../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:273:32
  at extractValue (integration/edge-runtime-dynamic-code/test/index.test.js:71:15)
  at Object.<anonymous> (integration/edge-runtime-dynamic-code/test/index.test.js:157:18)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/app-simple-routes/app-simple-routes.test.ts (turbopack)

  • app-simple-routes > works with simple routes > renders a node route
  • app-simple-routes > works with simple routes > renders a edge route
Expand output

● app-simple-routes › works with simple routes › renders a node route

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app-simple-routes › works with simple routes › renders a edge route

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/app-dir/app-routes-subrequests/app-routes-subrequests.test.ts (turbopack)

  • app-routes-subrequests > shortcuts after 5 subrequests
Expand output

● app-routes-subrequests › shortcuts after 5 subrequests

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev-turbo test/development/app-dir/server-navigation-error/server-navigation-error.test.ts (turbopack)

  • server-navigation-error > middleware > should error on navigation API redirect
  • server-navigation-error > middleware > should error on navigation API not-found
  • server-navigation-error > pages router > should error on navigation API redirect
  • server-navigation-error > pages router > should error on navigation API notFound
Expand output

● server-navigation-error › pages router › should error on navigation API redirect

expect(received).toMatch(expected)

Expected substring: "Next.js navigation API is not allowed to be used in Pages Router."
Received string:    "TypeError: Cannot read properties of undefined (reading 'indexOf')"

  15 |       const browser = await next.browser('/pages/redirect')
  16 |       await assertHasRedbox(browser)
> 17 |       expect(await getRedboxDescription(browser)).toMatch(
     |                                                   ^
  18 |         `Next.js navigation API is not allowed to be used in Pages Router.`
  19 |       )
  20 |       const source = await getRedboxSource(browser)

  at Object.toMatch (development/app-dir/server-navigation-error/server-navigation-error.test.ts:17:51)

● server-navigation-error › pages router › should error on navigation API notFound

expect(received).toMatch(expected)

Expected substring: "Next.js navigation API is not allowed to be used in Pages Router."
Received string:    "TypeError: Cannot read properties of undefined (reading 'indexOf')"

  47 |       const browser = await next.browser('/pages/not-found')
  48 |       await assertHasRedbox(browser)
> 49 |       expect(await getRedboxDescription(browser)).toMatch(
     |                                                   ^
  50 |         `Next.js navigation API is not allowed to be used in Pages Router.`
  51 |       )
  52 |       const source = await getRedboxSource(browser)

  at Object.toMatch (development/app-dir/server-navigation-error/server-navigation-error.test.ts:49:51)

● server-navigation-error › middleware › should error on navigation API redirect

expect(received).toMatch(expected)

Expected substring: "Next.js navigation API is not allowed to be used in Middleware."
Received string:    "TypeError: Cannot read properties of undefined (reading 'indexOf')"

  83 |       await browser.refresh()
  84 |       await assertHasRedbox(browser)
> 85 |       expect(await getRedboxDescription(browser)).toMatch(
     |                                                   ^
  86 |         `Next.js navigation API is not allowed to be used in Middleware.`
  87 |       )
  88 |       const source = await getRedboxSource(browser)

  at Object.toMatch (development/app-dir/server-navigation-error/server-navigation-error.test.ts:85:51)

● server-navigation-error › middleware › should error on navigation API not-found

expect(received).toMatch(expected)

Expected substring: "Next.js navigation API is not allowed to be used in Middleware."
Received string:    "TypeError: Cannot read properties of undefined (reading 'indexOf')"

  117 |       const browser = await next.browser('/middleware/not-found')
  118 |       await assertHasRedbox(browser)
> 119 |       expect(await getRedboxDescription(browser)).toMatch(
      |                                                   ^
  120 |         `Next.js navigation API is not allowed to be used in Middleware.`
  121 |       )
  122 |       const source = await getRedboxSource(browser)

  at Object.toMatch (development/app-dir/server-navigation-error/server-navigation-error.test.ts:119:51)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/middleware-basic/test/index.test.js (turbopack)

  • development mode > loads a middleware
Expand output

● development mode › loads a middleware

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

  20 |   it('loads a middleware', async () => {
  21 |     const response = await fetchViaHTTP(appPort, '/post-1')
> 22 |     expect(response.headers.has(header)).toBe(true)
     |                                          ^
  23 |   })
  24 | }
  25 |

  at Object.toBe (integration/middleware-basic/test/index.test.js:22:42)

Read more about building and testing Next.js in contributing.md.

pnpm test-start test/e2e/app-dir/app-css/index.test.ts

  • app dir - css > css support > chunks > should bundle css resources into chunks
  • app dir - css > css support > client components > should support css modules inside client page
  • app dir - css > css support > client components > should support css modules inside client components
  • app dir - css > css support > client layouts > should support css modules inside client layouts
  • app dir - css > css support > client layouts > should support global css inside client layouts
  • app dir - css > css support > client pages > should support css modules inside client pages
  • app dir - css > css support > client pages > should support global css inside client pages
  • app dir - css > css support > css ordering > should have inner layers take precedence over outer layers
  • app dir - css > css support > page extensions > should include css imported in MDX pages
  • app dir - css > css support > server layouts > should support css modules inside server layouts
  • app dir - css > css support > server layouts > should support external css imports
  • app dir - css > css support > server pages > should support global css inside server pages
  • app dir - css > css support > server pages > should support css modules inside server pages
  • app dir - css > css support > server pages > should not contain pages css in app dir page
  • app dir - css > css support > special entries > should include css imported in loading.js
  • app dir - css > css support > special entries > should include css imported in client template.js
  • app dir - css > css support > special entries > should include css imported in server template.js
  • app dir - css > css support > special entries > should include css imported in client not-found.js
  • app dir - css > css support > special entries > should include css imported in server not-found.js
  • app dir - css > css support > special entries > should include root layout css for root not-found.js
  • app dir - css > css support > special entries > should include css imported in root not-found.js
  • app dir - css > css support > special entries > should include css imported in error.js
  • app dir - css > pages dir > should include css modules and global css after page transition
  • app dir - css > sass support > client layouts > should support global sass/scss inside client layouts
  • app dir - css > sass support > client layouts > should support sass/scss modules inside client layouts
  • app dir - css > sass support > client pages > should support global sass/scss inside client pages
  • app dir - css > sass support > client pages > should support sass/scss modules inside client pages
  • app dir - css > sass support > server layouts > should support global sass/scss inside server layouts
  • app dir - css > sass support > server layouts > should support sass/scss modules inside server layouts
  • app dir - css > sass support > server pages > should support global sass/scss inside server pages
  • app dir - css > sass support > server pages > should support sass/scss modules inside server pages
Expand output

● app dir - css › css support › server layouts › should support global css inside server layouts

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › server layouts › should support css modules inside server layouts

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › server layouts › should support external css imports

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › server pages › should support global css inside server pages

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › server pages › should support css modules inside server pages

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › server pages › should not contain pages css in app dir page

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › client layouts › should support css modules inside client layouts

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › client layouts › should support global css inside client layouts

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › client pages › should support css modules inside client pages

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › client pages › should support global css inside client pages

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › client components › should support css modules inside client page

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › client components › should support css modules inside client components

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › special entries › should include css imported in loading.js

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › special entries › should include css imported in client template.js

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › special entries › should include css imported in server template.js

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › special entries › should include css imported in client not-found.js

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › special entries › should include css imported in server not-found.js

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › special entries › should include root layout css for root not-found.js

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › special entries › should include css imported in root not-found.js

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › special entries › should include css imported in error.js

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › page extensions › should include css imported in MDX pages

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › chunks › should bundle css resources into chunks

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › css support › css ordering › should have inner layers take precedence over outer layers

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › sass support › server layouts › should support global sass/scss inside server layouts

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › sass support › server layouts › should support sass/scss modules inside server layouts

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › sass support › server pages › should support global sass/scss inside server pages

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › sass support › server pages › should support sass/scss modules inside server pages

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › sass support › client layouts › should support global sass/scss inside client layouts

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › sass support › client layouts › should support sass/scss modules inside client layouts

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › sass support › client pages › should support global sass/scss inside client pages

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › sass support › client pages › should support sass/scss modules inside client pages

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

● app dir - css › pages dir › should include css modules and global css after page transition

next build failed with code/signal 1

   98 |           if (code || signal)
   99 |             reject(
> 100 |               new Error(`next build failed with code/signal ${code || signal}`)
      |               ^
  101 |             )
  102 |           else resolve()
  103 |         })

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:100:15)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/edge-runtime-streaming-error/test/index.test.ts

  • development mode > logs the error correctly
  • production mode > logs the error correctly
Expand output

● development mode › logs the error correctly

expect(received).toEqual(expected) // deep equality

Expected: "hello"
Received: "<!DOCTYPE html><html><head><meta charSet=\"utf-8\" data-next-head=\"\"/><meta name=\"viewport\" content=\"width=device-width\" data-next-head=\"\"/><style data-next-hide-fouc=\"true\">body{display:none}</style><noscript data-next-hide-fouc=\"true\"><style>body{display:block}</style></noscript><noscript data-n-css=\"\"></noscript><script defer=\"\" noModule=\"\" src=\"/_next/static/chunks/polyfills.js\"></script><script src=\"/_next/static/chunks/webpack.js\" defer=\"\"></script><script src=\"/_next/static/chunks/main.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages/_app.js\" defer=\"\"></script><script src=\"/_next/static/chunks/pages/_error.js\" defer=\"\"></script><script src=\"/_next/static/development/_buildManifest.js\" defer=\"\"></script><script src=\"/_next/static/development/_ssgManifest.js\" defer=\"\"></script><noscript id=\"__next_css__DO_NOT_USE__\"></noscript></head><body><div id=\"__next\"></div><script src=\"/_next/static/chunks/react-refresh.js\"></script><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"statusCode\":500}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"TypeError\",\"source\":\"edge-server\",\"message\":\"Cannot read properties of undefined (reading 'indexOf')\",\"stack\":\"TypeError: Cannot read properties of undefined (reading 'indexOf')\\n    at \\u003cunknown\\u003e (file:///root/actions-runner/_work/next.js/next.js/packages/next/dist/compiled/babel/bundle.js:1)\\n    at e.exports (webpack-internal:///(api)/../../../packages/next/dist/compiled/babel/bundle.js:3:61103)\\n    at 7220 (webpack-internal:///(api)/../../../packages/next/dist/compiled/babel/bundle.js:3:67429)\\n    at __nccwpck_require__ (webpack-internal:///(api)/../../../packages/next/dist/compiled/babel/bundle.js:1873:450922)\\n    at 6148 (webpack-internal:///(api)/../../../packages/next/dist/compiled/babel/bundle.js:3:32833)\\n    at __nccwpck_require__ (webpack-internal:///(api)/../../../packages/next/dist/compiled/babel/bundle.js:1873:450922)\\n    at 6448 (webpack-internal:///(api)/../../../packages/next/dist/compiled/babel/bundle.js:1850:4542)\\n    at __nccwpck_require__ (webpack-internal:///(api)/../../../packages/next/dist/compiled/babel/bundle.js:1873:450922)\\n    at 2430 (webpack-internal:///(api)/../../../packages/next/dist/compiled/babel/bundle.js:3:77108)\\n    at __nccwpck_require__ (webpack-internal:///(api)/../../../packages/next/dist/compiled/babel/bundle.js:1873:450922)\\n    at Object.codeFrame (webpack-internal:///(api)/../../../packages/next/dist/compiled/babel/bundle.js:3:69316)\"},\"gip\":true,\"scriptLoader\":[]}</script></body></html>"

  18 |   return async () => {
  19 |     const res = await fetchViaHTTP(context.appPort, '/api/test')
> 20 |     expect(await res.text()).toEqual('hello')
     |                              ^
  21 |     expect(res.status).toBe(200)
  22 |     await waitFor(200)
  23 |     await check(

  at Object.toEqual (integration/edge-runtime-streaming-error/test/index.test.ts:20:30)

● production mode › logs the error correctly

FetchError: request to http://localhost:42809/api/test failed, reason: connect ECONNREFUSED 127.0.0.1:42809

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev-turbo test/development/app-dir/edge-errors-hmr/index.test.ts (turbopack)

  • develop - app-dir - edge errros hmr > should recover from build errors when server component error
  • develop - app-dir - edge errros hmr > should recover from build errors when client component error
Expand output

● develop - app-dir - edge errros hmr › should recover from build errors when server component error

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.4-canary.41) (Turbopack)
Server Error

TypeError: Cannot read properties of undefined (reading 'indexOf')

This error happened while generating the page. Any console logs will be displayed in the terminal window.
description: TypeError: Cannot read properties of undefined (reading 'indexOf')
source: null

  19 |     await next.patchFile('app/comp.server.js', clientComponentSource)
  20 |
> 21 |     await assertNoRedbox(browser)
     |     ^
  22 |   })
  23 |
  24 |   it('should recover from build errors when client component error', async () => {

  at Object.<anonymous> (development/app-dir/edge-errors-hmr/index.test.ts:21:5)

● develop - app-dir - edge errros hmr › should recover from build errors when client component error

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.4-canary.41) (Turbopack)
Server Error

TypeError: Cannot read properties of undefined (reading 'indexOf')

This error happened while generating the page. Any console logs will be displayed in the terminal window.
description: TypeError: Cannot read properties of undefined (reading 'indexOf')
source: null

  34 |     await next.patchFile('app/comp.client.js', clientComponentSource)
  35 |
> 36 |     await assertNoRedbox(browser)
     |     ^
  37 |   })
  38 | })
  39 |

  at Object.<anonymous> (development/app-dir/edge-errors-hmr/index.test.ts:36:5)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/image-generation/test/index.test.ts

  • Image Generation > production mode > should generate the image without errors
Expand output

● Image Generation › production mode › should generate the image without errors

command failed with code 1 signal null
 ⚠ Linting is disabled.
   No config file found
   No config file found
   ▲ Next.js 15.0.4-canary.41

   Checking validity of types ...
   Creating an optimized production build ...
   No config file found
   No config file found
<w> [webpack.cache.PackFileCacheStrategy] Serializing big strings (699kiB) impacts deserialization performance (consider using Buffer instead and decode when needed)
Failed to compile.

../../../../packages/next/dist/compiled/babel-packages/packages-bundle.js
Dynamic Code Evaluation (e. g. 'eval', 'new Function', 'WebAssembly.compile') not allowed in Edge Runtime 
Learn More: https://nextjs.org/docs/messages/edge-dynamic-code-evaluation

Import trace for requested module:
  ../../../../packages/next/dist/compiled/babel-packages/packages-bundle.js
  ../../../../packages/next/dist/compiled/babel/bundle.js
  ../../../../packages/next/dist/compiled/babel/code-frame.js
  ../../../../packages/next/dist/esm/client/components/react-dev-overlay/server/shared.js
  ../../../../packages/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js
  ../../../../packages/next/dist/esm/server/after/stitch-after-callstack.js
  ../../../../packages/next/dist/esm/server/after/after-context.js
  ../../../../packages/next/dist/esm/server/async-storage/work-store.js
  ../../../../packages/next/dist/esm/server/web/adapter.js

../../../../packages/next/dist/compiled/browserslist/index.js
Dynamic Code Evaluation (e. g. 'eval', 'new Function', 'WebAssembly.compile') not allowed in Edge Runtime 
Learn More: https://nextjs.org/docs/messages/edge-dynamic-code-evaluation

Import trace for requested module:
  ../../../../packages/next/dist/compiled/browserslist/index.js
  ../../../../packages/next/dist/compiled/babel/bundle.js
  ../../../../packages/next/dist/compiled/babel/code-frame.js
  ../../../../packages/next/dist/esm/client/components/react-dev-overlay/server/shared.js
  ../../../../packages/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js
  ../../../../packages/next/dist/esm/server/after/stitch-after-callstack.js
  ../../../../packages/next/dist/esm/server/after/after-context.js
  ../../../../packages/next/dist/esm/server/async-storage/work-store.js
  ../../../../packages/next/dist/esm/server/web/adapter.js


> Build failed because of webpack errors

  308 |       ) {
  309 |         return reject(
> 310 |           new Error(
      |           ^
  311 |             `command failed with code ${code} signal ${signal}\n${mergedStdio}`
  312 |           )
  313 |         )

  at ChildProcess.<anonymous> (lib/next-test-utils.ts:310:11)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/router-rerender/test/index.test.js (turbopack)

  • router rerender > development mode > with middleware > should not trigger unnecessary rerenders when middleware is used
Expand output

● router rerender › development mode › with middleware › should not trigger unnecessary rerenders when middleware is used

expect(received).toEqual(expected) // deep equality

Expected: [undefined]
Received: undefined

  22 |       await new Promise((resolve) => setTimeout(resolve, 100))
  23 |
> 24 |       expect(await browser.eval('window.__renders')).toEqual([undefined])
     |                                                      ^
  25 |     })
  26 |   })
  27 |

  at Object.toEqual (integration/router-rerender/test/index.test.js:24:54)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/middleware-overrides-node.js-api/test/index.test.ts

  • Middleware overriding a Node.js API > development mode > does not show a warning and allows overriding
Expand output

● Middleware overriding a Node.js API › development mode › does not show a warning and allows overriding

expect(received).toBe(expected) // Object.is equality

Expected: 200
Received: 500

  38 |         const res = await fetchViaHTTP(context.appPort, '/')
  39 |         await waitFor(500)
> 40 |         expect(res.status).toBe(200)
     |                            ^
  41 |         expect(output).toContain('fixed-value')
  42 |         expect(output).not.toContain('TypeError')
  43 |         expect(output).not.toContain('A Node.js API is used (process.env')

  at Object.toBe (integration/middleware-overrides-node.js-api/test/index.test.ts:40:28)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/middleware-src/test/index.test.js

  • Middleware in src/ and / folders > development mode > loads and runs only root middleware
  • Middleware in src/ and / folders > production mode > should warn about middleware on export
  • Middleware in src/ folder > development mode > loads an runs src middleware
  • Middleware in src/ folder > production mode > should warn about middleware on export
Expand output

● Middleware in src/ folder › development mode › loads an runs src middleware

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

  25 |     const response = await fetchViaHTTP(appPort, '/post-1')
  26 |     expect(response.headers.has(srcHeader)).toBe(false)
> 27 |     expect(response.headers.has(`${srcHeader}-TS`)).toBe(true)
     |                                                     ^
  28 |   })
  29 | }
  30 |

  at Object.toBe (integration/middleware-src/test/index.test.js:27:53)

● Middleware in src/ folder › production mode › should warn about middleware on export

expect(received).toContain(expected) // indexOf

Expected substring: "Statically exporting a Next.js application via `next export` disables API routes and middleware."
Received string:    " ⚠ Linting is disabled.
Failed to compile.·
../../../packages/next/dist/compiled/babel-packages/packages-bundle.js
Dynamic Code Evaluation (e. g. 'eval', 'new Function', 'WebAssembly.compile') not allowed in Edge Runtime·
Learn More: https://nextjs.org/docs/messages/edge-dynamic-code-evaluation·
Import trace for requested module:
  ../../../packages/next/dist/compiled/babel-packages/packages-bundle.js
  ../../../packages/next/dist/compiled/babel/bundle.js
  ../../../packages/next/dist/compiled/babel/code-frame.js
  ../../../packages/next/dist/esm/client/components/react-dev-overlay/server/shared.js
  ../../../packages/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js
  ../../../packages/next/dist/esm/server/after/stitch-after-callstack.js
  ../../../packages/next/dist/esm/server/after/after-context.js
  ../../../packages/next/dist/esm/server/async-storage/work-store.js
  ../../../packages/next/dist/esm/server/web/adapter.js·
../../../packages/next/dist/compiled/browserslist/index.js
Dynamic Code Evaluation (e. g. 'eval', 'new Function', 'WebAssembly.compile') not allowed in Edge Runtime·
Learn More: https://nextjs.org/docs/messages/edge-dynamic-code-evaluation·
Import trace for requested module:
  ../../../packages/next/dist/compiled/browserslist/index.js
  ../../../packages/next/dist/compiled/babel/bundle.js
  ../../../packages/next/dist/compiled/babel/code-frame.js
  ../../../packages/next/dist/esm/client/components/react-dev-overlay/server/shared.js
  ../../../packages/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js
  ../../../packages/next/dist/esm/server/after/stitch-after-callstack.js
  ../../../packages/next/dist/esm/server/after/after-context.js
  ../../../packages/next/dist/esm/server/async-storage/work-store.js
  ../../../packages/next/dist/esm/server/web/adapter.js··
> Build failed because of webpack errors
   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/middleware-src/next.config.js
   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/middleware-src/next.config.js
   ▲ Next.js 15.0.4-canary.41·
   Checking validity of types ...
   Creating an optimized production build ...
   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/middleware-src/next.config.js
   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/middleware-src/next.config.js
"

  122 |
  123 |       it('should warn about middleware on export', async () => {
> 124 |         expect(exportOutput).toContain(
      |                              ^
  125 |           'Statically exporting a Next.js application via `next export` disables API routes and middleware.'
  126 |         )
  127 |       })

  at Object.toContain (integration/middleware-src/test/index.test.js:124:30)

● Middleware in src/ and / folders › development mode › loads and runs only root middleware

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

  35 |     expect(response.headers.has(`${srcHeader}-TS`)).toBe(false)
  36 |     expect(response.headers.has(rootHeader)).toBe(false)
> 37 |     expect(response.headers.has(`${rootHeader}-TS`)).toBe(true)
     |                                                      ^
  38 |   })
  39 | }
  40 |

  at Object.toBe (integration/middleware-src/test/index.test.js:37:54)

● Middleware in src/ and / folders › production mode › should warn about middleware on export

expect(received).toContain(expected) // indexOf

Expected substring: "Statically exporting a Next.js application via `next export` disables API routes and middleware."
Received string:    " ⚠ Linting is disabled.
Failed to compile.·
../../../packages/next/dist/compiled/babel-packages/packages-bundle.js
Dynamic Code Evaluation (e. g. 'eval', 'new Function', 'WebAssembly.compile') not allowed in Edge Runtime·
Learn More: https://nextjs.org/docs/messages/edge-dynamic-code-evaluation·
Import trace for requested module:
  ../../../packages/next/dist/compiled/babel-packages/packages-bundle.js
  ../../../packages/next/dist/compiled/babel/bundle.js
  ../../../packages/next/dist/compiled/babel/code-frame.js
  ../../../packages/next/dist/esm/client/components/react-dev-overlay/server/shared.js
  ../../../packages/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js
  ../../../packages/next/dist/esm/server/after/stitch-after-callstack.js
  ../../../packages/next/dist/esm/server/after/after-context.js
  ../../../packages/next/dist/esm/server/async-storage/work-store.js
  ../../../packages/next/dist/esm/server/web/adapter.js·
../../../packages/next/dist/compiled/browserslist/index.js
Dynamic Code Evaluation (e. g. 'eval', 'new Function', 'WebAssembly.compile') not allowed in Edge Runtime·
Learn More: https://nextjs.org/docs/messages/edge-dynamic-code-evaluation·
Import trace for requested module:
  ../../../packages/next/dist/compiled/browserslist/index.js
  ../../../packages/next/dist/compiled/babel/bundle.js
  ../../../packages/next/dist/compiled/babel/code-frame.js
  ../../../packages/next/dist/esm/client/components/react-dev-overlay/server/shared.js
  ../../../packages/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js
  ../../../packages/next/dist/esm/server/after/stitch-after-callstack.js
  ../../../packages/next/dist/esm/server/after/after-context.js
  ../../../packages/next/dist/esm/server/async-storage/work-store.js
  ../../../packages/next/dist/esm/server/web/adapter.js··
> Build failed because of webpack errors
   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/middleware-src/next.config.js
   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/middleware-src/next.config.js
   ▲ Next.js 15.0.4-canary.41·
   Checking validity of types ...
   Creating an optimized production build ...
   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/middleware-src/next.config.js
   Loading config from /root/actions-runner/_work/next.js/next.js/test/integration/middleware-src/next.config.js
"

  122 |
  123 |       it('should warn about middleware on export', async () => {
> 124 |         expect(exportOutput).toContain(
      |                              ^
  125 |           'Statically exporting a Next.js application via `next export` disables API routes and middleware.'
  126 |         )
  127 |       })

  at Object.toContain (integration/middleware-src/test/index.test.js:124:30)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/dynamic-routing/test/middleware.test.js (turbopack)

Expand output

● Test suite failed to run

RangeError: Invalid string length
    at Array.join (<anonymous>)

  at formatResultsErrors (../node_modules/.pnpm/[email protected]/node_modules/jest-message-util/build/index.js:477:6)

Read more about building and testing Next.js in contributing.md.

__NEXT_EXPERIMENTAL_PPR=true pnpm test-dev test/e2e/app-dir/dynamic-css/index.test.ts (PPR)

  • app dir - dynamic css > should only apply corresponding css for page loaded in edge runtime
  • app dir - dynamic css > should only apply corresponding css for page loaded that /another
Expand output

● app dir - dynamic css › should only apply corresponding css for page loaded in edge runtime

expect(received).toBe(expected) // Object.is equality

Expected: "rgb(255, 0, 0)"
Received: null

  46 |           `window.getComputedStyle(document.querySelector('.text')).color`
  47 |         )
> 48 |       ).toBe('rgb(255, 0, 0)')
     |         ^
  49 |       // Default border width, which is not effected by bar.css that is not loaded in /ssr
  50 |       expect(
  51 |         await browser.eval(

  at toBe (e2e/app-dir/dynamic-css/index.test.ts:48:9)
  at retry (lib/next-test-utils.ts:806:14)
  at Object.<anonymous> (e2e/app-dir/dynamic-css/index.test.ts:43:5)

● app dir - dynamic css › should only apply corresponding css for page loaded that /another

expect(received).toBe(expected) // Object.is equality

Expected: "1px"
Received: null

  69 |           `window.getComputedStyle(document.querySelector('.text')).borderWidth`
  70 |         )
> 71 |       ).toBe('1px')
     |         ^
  72 |     })
  73 |   })
  74 |

  at toBe (e2e/app-dir/dynamic-css/index.test.ts:71:9)
  at retry (lib/next-test-utils.ts:806:14)
  at Object.<anonymous> (e2e/app-dir/dynamic-css/index.test.ts:60:5)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/react-streaming/test/index.test.js

  • production mode > streaming prod prod > should support streaming for fizz response
  • production mode > streaming prod prod > should not stream to crawlers or google pagerender bot
  • production mode > streaming prod prod > should render 500 error correctly
  • production mode > streaming prod prod > should render fallback if error raised from suspense during streaming
  • streaming dev dev > should support streaming for fizz response
  • streaming dev dev > should not stream to crawlers or google pagerender bot
  • streaming dev dev > should render 500 error correctly
  • streaming dev dev > should render fallback if error raised from suspense during streaming
Expand output

● streaming dev dev › should support streaming for fizz response

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

  43 |           // Streaming is disabled for pages, no fallback should be rendered.
  44 |           expect(gotFallback).toBe(false)
> 45 |           expect(gotData).toBe(true)
     |                           ^
  46 |         }
  47 |       )
  48 |

  at toBe (integration/react-streaming/test/streaming.js:45:27)
  at testStreamingResponse (integration/react-streaming/test/streaming.js:28:7)
  at Object.<anonymous> (integration/react-streaming/test/streaming.js:55:5)

● streaming dev dev › should not stream to crawlers or google pagerender bot

expect(received).toBe(expected) // Object.is equality

Expected: 1
Received: 2

  84 |       flushCount++
  85 |     })
> 86 |     expect(flushCount).toBe(1)
     |                        ^
  87 |     const html = await res1.text()
  88 |     const body = await getNodeBySelector(html, '#__next')
  89 |     // Resolve data instead of fallback

  at Object.toBe (integration/react-streaming/test/streaming.js:86:24)

● streaming dev dev › should render 500 error correctly

expect(received).toContain(expected) // indexOf

Expected substring: "Error: oops"
Received string:    "<!DOCTYPE html><html><head><meta charSet=\"utf-8\" data-next-head=\"\"/><meta name=\"viewport\" content=\"width=device-width\" data-next-head=\"\"/><style data-next-hide-fouc=\"true\">body{display:none}</style><noscript data-next-hide-fouc=\"true\"><style>body{display:block}</style></noscript><noscript data-n-css=\"\"></noscript><script defer=\"\" noModule=\"\" src=\"/_next/static/chunks/polyfills.js\"></script><script src=\"/_next/static/chunks/fallback/webpack.js\" defer=\"\"></script><script src=\"/_next/static/chunks/fallback/main.js\" defer=\"\"></script><script src=\"/_next/static/chunks/fallback/pages/_app.js\" defer=\"\"></script><script src=\"/_next/static/chunks/fallback/pages/_error.js\" defer=\"\"></script><noscript id=\"__next_css__DO_NOT_USE__\"></noscript></head><body><div id=\"__next\"></div><script src=\"/_next/static/chunks/fallback/react-refresh.js\"></script><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"statusCode\":500}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"Error\",\"source\":\"server\",\"message\":\"Module not found: Can't resolve 'fs/promises'\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\nImport trace for requested module:\\n../../../../packages/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js\\n../../../../packages/next/dist/esm/server/after/stitch-after-callstack.js\\n../../../../packages/next/dist/esm/server/after/after-context.js\\n../../../../packages/next/dist/esm/server/async-storage/work-store.js\\n../../../../packages/next/dist/esm/server/web/adapter.js\\n../../../../packages/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{\\\"absolute500Path\\\":\\\"\\\",\\\"absoluteAppPath\\\":\\\"private-next-pages/_app\\\",\\\"absoluteDocumentPath\\\":\\\"private-next-pages/_document\\\",\\\"absoluteErrorPath\\\":\\\"private-next-pages/_error\\\",\\\"absolutePagePath\\\":\\\"/root/actions-runner/_work/next.js/next.js/test/integration/react-streaming/app/pages/streaming.js\\\",\\\"dev\\\":true,\\\"isServerComponent\\\":false,\\\"page\\\":\\\"/streaming\\\",\\\"stringifiedConfig\\\":\\\"eyJlbnYiOnt9LCJ3ZWJwYWNrIjpudWxsLCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJkZWZhdWx0IiwidXNlRmlsZVN5c3RlbVB1YmxpY1JvdXRlcyI6dHJ1ZSwiZ2VuZXJhdGVFdGFncyI6dHJ1ZSwicGFnZUV4dGVuc2lvbnMiOlsidHN4IiwidHMiLCJqc3giLCJqcyJdLCJwb3dlcmVkQnlIZWFkZXIiOnRydWUsImNvbXByZXNzIjp0cnVlLCJpbWFnZXMiOnsiZGV2aWNlU2l6ZXMiOls2NDAsNzUwLDgyOCwxMDgwLDEyMDAsMTkyMCwyMDQ4LDM4NDBdLCJpbWFnZVNpemVzIjpbMTYsMzIsNDgsNjQsOTYsMTI4LDI1NiwzODRdLCJwYXRoIjoiL19uZXh0L2ltYWdlIiwibG9hZGVyIjoiZGVmYXVsdCIsImxvYWRlckZpbGUiOiIiLCJkb21haW5zIjpbXSwiZGlzYWJsZVN0YXRpY0ltYWdlcyI6ZmFsc2UsIm1pbmltdW1DYWNoZVRUTCI6NjAsImZvcm1hdHMiOlsiaW1hZ2Uvd2VicCJdLCJkYW5nZXJvdXNseUFsbG93U1ZHIjpmYWxzZSwiY29udGVudFNlY3VyaXR5UG9saWN5Ijoic2NyaXB0LXNyYyAnbm9uZSc7IGZyYW1lLXNyYyAnbm9uZSc7IHNhbmRib3g7IiwiY29udGVudERpc3Bvc2l0aW9uVHlwZSI6ImF0dGFjaG1lbnQiLCJyZW1vdGVQYXR0ZXJucyI6W10sInVub3B0aW1pemVkIjpmYWxzZX0sImRldkluZGljYXRvcnMiOnsiYXBwSXNyU3RhdHVzIjp0cnVlLCJidWlsZEFjdGl2aXR5Ijp0cnVlLCJidWlsZEFjdGl2aXR5UG9zaXRpb24iOiJib3R0b20tcmlnaHQifSwib25EZW1hbmRFbnRyaWVzIjp7Im1heEluYWN0aXZlQWdlIjo2MDAwMCwicGFnZXNCdWZmZXJMZW5ndGgiOjV9LCJhbXAiOnsiY2Fub25pY2FsQmFzZSI6IiJ9LCJiYXNlUGF0aCI6IiIsInNhc3NPcHRpb25zIjp7fSwidHJhaWxpbmdTbGFzaCI6ZmFsc2UsImkxOG4iOm51bGwsInByb2R1Y3Rpb25Ccm93c2VyU291cmNlTWFwcyI6ZmFsc2UsImV4Y2x1ZGVEZWZhdWx0TW9tZW50TG9jYWxlcyI6dHJ1ZSwic2VydmVyUnVudGltZUNvbmZpZyI6e30sInB1YmxpY1J1bnRpbWVDb25maWciOnt9LCJyZWFjdFByb2R1Y3Rpb25Qcm9maWxpbmciOmZhbHNlLCJyZWFjdFN0cmljdE1vZGUiOm51bGwsInJlYWN0TWF4SGVhZGVyc0xlbmd0aCI6NjAwMCwiaHR0cEFnZW50T3B0aW9ucyI6eyJrZWVwQWxpdmUiOnRydWV9LCJsb2dnaW5nIjp7fSwic3RhdGljUGFnZUdlbmVyYXRpb25UaW1lb3V0Ijo2MCwibW9kdWxhcml6ZUltcG9ydHMiOnsiQG11aS9pY29ucy1tYXRlcmlhbCI6eyJ0cmFuc2Zvcm0iOiJAbXVpL2ljb25zLW1hdGVyaWFsL3t7bWVtYmVyfX0ifSwibG9kYXNoIjp7InRyYW5zZm9ybSI6ImxvZGFzaC97e21lbWJlcn19In19LCJvdXRwdXRGaWxlVHJhY2luZ1Jvb3QiOiIvcm9vdC9hY3Rpb25zLXJ1bm5lci9fd29yay9uZXh0LmpzL25leHQuanMiLCJleHBlcmltZW50YWwiOnsiY2FjaGVMaWZlIjp7ImRlZmF1bHQiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6OTAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9LCJzZWNvbmRzIjp7InN0YWxlIjowLCJyZXZhbGlkYXRlIjoxLCJleHBpcmUiOjYwfSwibWludXRlcyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo2MCwiZXhwaXJlIjozNjAwfSwiaG91cnMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MzYwMCwiZXhwaXJlIjo4NjQwMH0sImRheXMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6ODY0MDAsImV4cGlyZSI6NjA0ODAwfSwid2Vla3MiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6NjA0ODAwLCJleHBpcmUiOjI1OTIwMDB9LCJtYXgiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MjU5MjAwMCwiZXhwaXJlIjo0Mjk0OTY3Mjk0fX0sImNhY2hlSGFuZGxlcnMiOnt9LCJjc3NDaHVua2luZyI6dHJ1ZSwibXVsdGlab25lRHJhZnRNb2RlIjpmYWxzZSwiYXBwTmF2RmFpbEhhbmRsaW5nIjpmYWxzZSwicHJlcmVuZGVyRWFybHlFeGl0Ijp0cnVlLCJzZXJ2ZXJNaW5pZmljYXRpb24iOnRydWUsInNlcnZlclNvdXJjZU1hcHMiOmZhbHNlLCJsaW5rTm9Ub3VjaFN0YXJ0IjpmYWxzZSwiY2FzZVNlbnNpdGl2ZVJvdXRlcyI6ZmFsc2UsImNsaWVudFNlZ21lbnRDYWNoZSI6ZmFsc2UsInByZWxvYWRFbnRyaWVzT25TdGFydCI6dHJ1ZSwiY2xpZW50Um91dGVyRmlsdGVyIjp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXJSZWRpcmVjdHMiOmZhbHNlLCJmZXRjaENhY2hlS2V5UHJlZml4IjoiIiwibWlkZGxld2FyZVByZWZldGNoIjoiZmxleGlibGUiLCJvcHRpbWlzdGljQ2xpZW50Q2FjaGUiOnRydWUsIm1hbnVhbENsaWVudEJhc2VQYXRoIjpmYWxzZSwiY3B1cyI6MTksIm1lbW9yeUJhc2VkV29ya2Vyc0NvdW50IjpmYWxzZSwiaW1nT3B0Q29uY3VycmVuY3kiOm51bGwsImltZ09wdFRpbWVvdXRJblNlY29uZHMiOjcsImltZ09wdE1heElucHV0UGl4ZWxzIjoyNjg0MDI2ODksImltZ09wdFNlcXVlbnRpYWxSZWFkIjpudWxsLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvcm9vdC9hY3Rpb25zLXJ1bm5lci9fd29yay9uZXh0LmpzL25leHQuanMifSwidHlwZWRSb3V0ZXMiOmZhbHNlLCJ0eXBlZEVudiI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQ29tcGlsZXMiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckJ1aWxkVHJhY2VzIjpmYWxzZSwicHByIjpmYWxzZSwiYXV0aEludGVycnVwdHMiOmZhbHNlLCJyZWFjdE93bmVyU3RhY2siOmZhbHNlLCJ3ZWJwYWNrTWVtb3J5T3B0aW1pemF0aW9ucyI6ZmFsc2UsIm9wdGltaXplU2VydmVyUmVhY3QiOnRydWUsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsImlubGluZUNzcyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlTmFtZSI6Im5leHQuY29uZmlnLmpzIn0=\\\",\\\"pagesType\\\":\\\"pages\\\",\\\"appDirLoader\\\":\\\"\\\",\\\"sriEnabled\\\":false,\\\"middlewareConfig\\\":\\\"e30=\\\",\\\"cacheHandlers\\\":\\\"{}\\\"}!\",\"stack\":\"Error: Module not found: Can't resolve 'fs/promises'\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\nImport trace for requested module:\\n../../../../packages/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js\\n../../../../packages/next/dist/esm/server/after/stitch-after-callstack.js\\n../../../../packages/next/dist/esm/server/after/after-context.js\\n../../../../packages/next/dist/esm/server/async-storage/work-store.js\\n../../../../packages/next/dist/esm/server/web/adapter.js\\n../../../../packages/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{\\\"absolute500Path\\\":\\\"\\\",\\\"absoluteAppPath\\\":\\\"private-next-pages/_app\\\",\\\"absoluteDocumentPath\\\":\\\"private-next-pages/_document\\\",\\\"absoluteErrorPath\\\":\\\"private-next-pages/_error\\\",\\\"absolutePagePath\\\":\\\"/root/actions-runner/_work/next.js/next.js/test/integration/react-streaming/app/pages/streaming.js\\\",\\\"dev\\\":true,\\\"isServerComponent\\\":false,\\\"page\\\":\\\"/streaming\\\",\\\"stringifiedConfig\\\":\\\"eyJlbnYiOnt9LCJ3ZWJwYWNrIjpudWxsLCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJkZWZhdWx0IiwidXNlRmlsZVN5c3RlbVB1YmxpY1JvdXRlcyI6dHJ1ZSwiZ2VuZXJhdGVFdGFncyI6dHJ1ZSwicGFnZUV4dGVuc2lvbnMiOlsidHN4IiwidHMiLCJqc3giLCJqcyJdLCJwb3dlcmVkQnlIZWFkZXIiOnRydWUsImNvbXByZXNzIjp0cnVlLCJpbWFnZXMiOnsiZGV2aWNlU2l6ZXMiOls2NDAsNzUwLDgyOCwxMDgwLDEyMDAsMTkyMCwyMDQ4LDM4NDBdLCJpbWFnZVNpemVzIjpbMTYsMzIsNDgsNjQsOTYsMTI4LDI1NiwzODRdLCJwYXRoIjoiL19uZXh0L2ltYWdlIiwibG9hZGVyIjoiZGVmYXVsdCIsImxvYWRlckZpbGUiOiIiLCJkb21haW5zIjpbXSwiZGlzYWJsZVN0YXRpY0ltYWdlcyI6ZmFsc2UsIm1pbmltdW1DYWNoZVRUTCI6NjAsImZvcm1hdHMiOlsiaW1hZ2Uvd2VicCJdLCJkYW5nZXJvdXNseUFsbG93U1ZHIjpmYWxzZSwiY29udGVudFNlY3VyaXR5UG9saWN5Ijoic2NyaXB0LXNyYyAnbm9uZSc7IGZyYW1lLXNyYyAnbm9uZSc7IHNhbmRib3g7IiwiY29udGVudERpc3Bvc2l0aW9uVHlwZSI6ImF0dGFjaG1lbnQiLCJyZW1vdGVQYXR0ZXJucyI6W10sInVub3B0aW1pemVkIjpmYWxzZX0sImRldkluZGljYXRvcnMiOnsiYXBwSXNyU3RhdHVzIjp0cnVlLCJidWlsZEFjdGl2aXR5Ijp0cnVlLCJidWlsZEFjdGl2aXR5UG9zaXRpb24iOiJib3R0b20tcmlnaHQifSwib25EZW1hbmRFbnRyaWVzIjp7Im1heEluYWN0aXZlQWdlIjo2MDAwMCwicGFnZXNCdWZmZXJMZW5ndGgiOjV9LCJhbXAiOnsiY2Fub25pY2FsQmFzZSI6IiJ9LCJiYXNlUGF0aCI6IiIsInNhc3NPcHRpb25zIjp7fSwidHJhaWxpbmdTbGFzaCI6ZmFsc2UsImkxOG4iOm51bGwsInByb2R1Y3Rpb25Ccm93c2VyU291cmNlTWFwcyI6ZmFsc2UsImV4Y2x1ZGVEZWZhdWx0TW9tZW50TG9jYWxlcyI6dHJ1ZSwic2VydmVyUnVudGltZUNvbmZpZyI6e30sInB1YmxpY1J1bnRpbWVDb25maWciOnt9LCJyZWFjdFByb2R1Y3Rpb25Qcm9maWxpbmciOmZhbHNlLCJyZWFjdFN0cmljdE1vZGUiOm51bGwsInJlYWN0TWF4SGVhZGVyc0xlbmd0aCI6NjAwMCwiaHR0cEFnZW50T3B0aW9ucyI6eyJrZWVwQWxpdmUiOnRydWV9LCJsb2dnaW5nIjp7fSwic3RhdGljUGFnZUdlbmVyYXRpb25UaW1lb3V0Ijo2MCwibW9kdWxhcml6ZUltcG9ydHMiOnsiQG11aS9pY29ucy1tYXRlcmlhbCI6eyJ0cmFuc2Zvcm0iOiJAbXVpL2ljb25zLW1hdGVyaWFsL3t7bWVtYmVyfX0ifSwibG9kYXNoIjp7InRyYW5zZm9ybSI6ImxvZGFzaC97e21lbWJlcn19In19LCJvdXRwdXRGaWxlVHJhY2luZ1Jvb3QiOiIvcm9vdC9hY3Rpb25zLXJ1bm5lci9fd29yay9uZXh0LmpzL25leHQuanMiLCJleHBlcmltZW50YWwiOnsiY2FjaGVMaWZlIjp7ImRlZmF1bHQiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6OTAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9LCJzZWNvbmRzIjp7InN0YWxlIjowLCJyZXZhbGlkYXRlIjoxLCJleHBpcmUiOjYwfSwibWludXRlcyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo2MCwiZXhwaXJlIjozNjAwfSwiaG91cnMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MzYwMCwiZXhwaXJlIjo4NjQwMH0sImRheXMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6ODY0MDAsImV4cGlyZSI6NjA0ODAwfSwid2Vla3MiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6NjA0ODAwLCJleHBpcmUiOjI1OTIwMDB9LCJtYXgiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MjU5MjAwMCwiZXhwaXJlIjo0Mjk0OTY3Mjk0fX0sImNhY2hlSGFuZGxlcnMiOnt9LCJjc3NDaHVua2luZyI6dHJ1ZSwibXVsdGlab25lRHJhZnRNb2RlIjpmYWxzZSwiYXBwTmF2RmFpbEhhbmRsaW5nIjpmYWxzZSwicHJlcmVuZGVyRWFybHlFeGl0Ijp0cnVlLCJzZXJ2ZXJNaW5pZmljYXRpb24iOnRydWUsInNlcnZlclNvdXJjZU1hcHMiOmZhbHNlLCJsaW5rTm9Ub3VjaFN0YXJ0IjpmYWxzZSwiY2FzZVNlbnNpdGl2ZVJvdXRlcyI6ZmFsc2UsImNsaWVudFNlZ21lbnRDYWNoZSI6ZmFsc2UsInByZWxvYWRFbnRyaWVzT25TdGFydCI6dHJ1ZSwiY2xpZW50Um91dGVyRmlsdGVyIjp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXJSZWRpcmVjdHMiOmZhbHNlLCJmZXRjaENhY2hlS2V5UHJlZml4IjoiIiwibWlkZGxld2FyZVByZWZldGNoIjoiZmxleGlibGUiLCJvcHRpbWlzdGljQ2xpZW50Q2FjaGUiOnRydWUsIm1hbnVhbENsaWVudEJhc2VQYXRoIjpmYWxzZSwiY3B1cyI6MTksIm1lbW9yeUJhc2VkV29ya2Vyc0NvdW50IjpmYWxzZSwiaW1nT3B0Q29uY3VycmVuY3kiOm51bGwsImltZ09wdFRpbWVvdXRJblNlY29uZHMiOjcsImltZ09wdE1heElucHV0UGl4ZWxzIjoyNjg0MDI2ODksImltZ09wdFNlcXVlbnRpYWxSZWFkIjpudWxsLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvcm9vdC9hY3Rpb25zLXJ1bm5lci9fd29yay9uZXh0LmpzL25leHQuanMifSwidHlwZWRSb3V0ZXMiOmZhbHNlLCJ0eXBlZEVudiI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQ29tcGlsZXMiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckJ1aWxkVHJhY2VzIjpmYWxzZSwicHByIjpmYWxzZSwiYXV0aEludGVycnVwdHMiOmZhbHNlLCJyZWFjdE93bmVyU3RhY2siOmZhbHNlLCJ3ZWJwYWNrTWVtb3J5T3B0aW1pemF0aW9ucyI6ZmFsc2UsIm9wdGltaXplU2VydmVyUmVhY3QiOnRydWUsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsImlubGluZUNzcyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlTmFtZSI6Im5leHQuY29uZmlnLmpzIn0=\\\",\\\"pagesType\\\":\\\"pages\\\",\\\"appDirLoader\\\":\\\"\\\",\\\"sriEnabled\\\":false,\\\"middlewareConfig\\\":\\\"e30=\\\",\\\"cacheHandlers\\\":\\\"{}\\\"}!\\n    at getNotFoundError (/root/actions-runner/_work/next.js/next.js/packages/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js:134:16)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async getModuleBuildError (/root/actions-runner/_work/next.js/next.js/packages/next/dist/build/webpack/plugins/wellknown-errors-plugin/webpackModuleError.js:104:27)\\n    at async /root/actions-runner/_work/next.js/next.js/packages/next/dist/build/webpack/plugins/wellknown-errors-plugin/index.js:29:49\\n    at async Promise.all (index 0)\\n    at async /root/actions-runner/_work/next.js/next.js/packages/next/dist/build/webpack/plugins/wellknown-errors-plugin/index.js:27:21\"},\"gip\":true,\"scriptLoader\":[]}</script></body></html>"

  100 |       if (env === 'dev') {
  101 |         // In development mode it should show the error popup.
> 102 |         expect(html).toContain('Error: oops')
      |                      ^
  103 |       } else {
  104 |         expect(html).toContain('custom-500-page')
  105 |       }

  at toContain (integration/react-streaming/test/streaming.js:102:22)
      at async Promise.all (index 1)
  at Object.<anonymous> (integration/react-streaming/test/streaming.js:107:5)

● streaming dev dev › should render fallback if error raised from suspense during streaming

expect(received).toContain(expected) // indexOf

Expected substring: "error-fallback"
Received string:    "<!DOCTYPE html><html><head><meta charSet=\"utf-8\" data-next-head=\"\"/><meta name=\"viewport\" content=\"width=device-width\" data-next-head=\"\"/><style data-next-hide-fouc=\"true\">body{display:none}</style><noscript data-next-hide-fouc=\"true\"><style>body{display:block}</style></noscript><noscript data-n-css=\"\"></noscript><script defer=\"\" noModule=\"\" src=\"/_next/static/chunks/polyfills.js\"></script><script src=\"/_next/static/chunks/fallback/webpack.js\" defer=\"\"></script><script src=\"/_next/static/chunks/fallback/main.js\" defer=\"\"></script><script src=\"/_next/static/chunks/fallback/pages/_app.js\" defer=\"\"></script><script src=\"/_next/static/chunks/fallback/pages/_error.js\" defer=\"\"></script><noscript id=\"__next_css__DO_NOT_USE__\"></noscript></head><body><div id=\"__next\"></div><script src=\"/_next/static/chunks/fallback/react-refresh.js\"></script><script id=\"__NEXT_DATA__\" type=\"application/json\">{\"props\":{\"pageProps\":{\"statusCode\":500}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"Error\",\"source\":\"server\",\"message\":\"Module not found: Can't resolve 'fs/promises'\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\nImport trace for requested module:\\n../../../../packages/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js\\n../../../../packages/next/dist/esm/server/after/stitch-after-callstack.js\\n../../../../packages/next/dist/esm/server/after/after-context.js\\n../../../../packages/next/dist/esm/server/async-storage/work-store.js\\n../../../../packages/next/dist/esm/server/web/adapter.js\\n../../../../packages/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{\\\"absolute500Path\\\":\\\"\\\",\\\"absoluteAppPath\\\":\\\"private-next-pages/_app\\\",\\\"absoluteDocumentPath\\\":\\\"private-next-pages/_document\\\",\\\"absoluteErrorPath\\\":\\\"private-next-pages/_error\\\",\\\"absolutePagePath\\\":\\\"/root/actions-runner/_work/next.js/next.js/test/integration/react-streaming/app/pages/streaming.js\\\",\\\"dev\\\":true,\\\"isServerComponent\\\":false,\\\"page\\\":\\\"/streaming\\\",\\\"stringifiedConfig\\\":\\\"eyJlbnYiOnt9LCJ3ZWJwYWNrIjpudWxsLCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJkZWZhdWx0IiwidXNlRmlsZVN5c3RlbVB1YmxpY1JvdXRlcyI6dHJ1ZSwiZ2VuZXJhdGVFdGFncyI6dHJ1ZSwicGFnZUV4dGVuc2lvbnMiOlsidHN4IiwidHMiLCJqc3giLCJqcyJdLCJwb3dlcmVkQnlIZWFkZXIiOnRydWUsImNvbXByZXNzIjp0cnVlLCJpbWFnZXMiOnsiZGV2aWNlU2l6ZXMiOls2NDAsNzUwLDgyOCwxMDgwLDEyMDAsMTkyMCwyMDQ4LDM4NDBdLCJpbWFnZVNpemVzIjpbMTYsMzIsNDgsNjQsOTYsMTI4LDI1NiwzODRdLCJwYXRoIjoiL19uZXh0L2ltYWdlIiwibG9hZGVyIjoiZGVmYXVsdCIsImxvYWRlckZpbGUiOiIiLCJkb21haW5zIjpbXSwiZGlzYWJsZVN0YXRpY0ltYWdlcyI6ZmFsc2UsIm1pbmltdW1DYWNoZVRUTCI6NjAsImZvcm1hdHMiOlsiaW1hZ2Uvd2VicCJdLCJkYW5nZXJvdXNseUFsbG93U1ZHIjpmYWxzZSwiY29udGVudFNlY3VyaXR5UG9saWN5Ijoic2NyaXB0LXNyYyAnbm9uZSc7IGZyYW1lLXNyYyAnbm9uZSc7IHNhbmRib3g7IiwiY29udGVudERpc3Bvc2l0aW9uVHlwZSI6ImF0dGFjaG1lbnQiLCJyZW1vdGVQYXR0ZXJucyI6W10sInVub3B0aW1pemVkIjpmYWxzZX0sImRldkluZGljYXRvcnMiOnsiYXBwSXNyU3RhdHVzIjp0cnVlLCJidWlsZEFjdGl2aXR5Ijp0cnVlLCJidWlsZEFjdGl2aXR5UG9zaXRpb24iOiJib3R0b20tcmlnaHQifSwib25EZW1hbmRFbnRyaWVzIjp7Im1heEluYWN0aXZlQWdlIjo2MDAwMCwicGFnZXNCdWZmZXJMZW5ndGgiOjV9LCJhbXAiOnsiY2Fub25pY2FsQmFzZSI6IiJ9LCJiYXNlUGF0aCI6IiIsInNhc3NPcHRpb25zIjp7fSwidHJhaWxpbmdTbGFzaCI6ZmFsc2UsImkxOG4iOm51bGwsInByb2R1Y3Rpb25Ccm93c2VyU291cmNlTWFwcyI6ZmFsc2UsImV4Y2x1ZGVEZWZhdWx0TW9tZW50TG9jYWxlcyI6dHJ1ZSwic2VydmVyUnVudGltZUNvbmZpZyI6e30sInB1YmxpY1J1bnRpbWVDb25maWciOnt9LCJyZWFjdFByb2R1Y3Rpb25Qcm9maWxpbmciOmZhbHNlLCJyZWFjdFN0cmljdE1vZGUiOm51bGwsInJlYWN0TWF4SGVhZGVyc0xlbmd0aCI6NjAwMCwiaHR0cEFnZW50T3B0aW9ucyI6eyJrZWVwQWxpdmUiOnRydWV9LCJsb2dnaW5nIjp7fSwic3RhdGljUGFnZUdlbmVyYXRpb25UaW1lb3V0Ijo2MCwibW9kdWxhcml6ZUltcG9ydHMiOnsiQG11aS9pY29ucy1tYXRlcmlhbCI6eyJ0cmFuc2Zvcm0iOiJAbXVpL2ljb25zLW1hdGVyaWFsL3t7bWVtYmVyfX0ifSwibG9kYXNoIjp7InRyYW5zZm9ybSI6ImxvZGFzaC97e21lbWJlcn19In19LCJvdXRwdXRGaWxlVHJhY2luZ1Jvb3QiOiIvcm9vdC9hY3Rpb25zLXJ1bm5lci9fd29yay9uZXh0LmpzL25leHQuanMiLCJleHBlcmltZW50YWwiOnsiY2FjaGVMaWZlIjp7ImRlZmF1bHQiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6OTAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9LCJzZWNvbmRzIjp7InN0YWxlIjowLCJyZXZhbGlkYXRlIjoxLCJleHBpcmUiOjYwfSwibWludXRlcyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo2MCwiZXhwaXJlIjozNjAwfSwiaG91cnMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MzYwMCwiZXhwaXJlIjo4NjQwMH0sImRheXMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6ODY0MDAsImV4cGlyZSI6NjA0ODAwfSwid2Vla3MiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6NjA0ODAwLCJleHBpcmUiOjI1OTIwMDB9LCJtYXgiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MjU5MjAwMCwiZXhwaXJlIjo0Mjk0OTY3Mjk0fX0sImNhY2hlSGFuZGxlcnMiOnt9LCJjc3NDaHVua2luZyI6dHJ1ZSwibXVsdGlab25lRHJhZnRNb2RlIjpmYWxzZSwiYXBwTmF2RmFpbEhhbmRsaW5nIjpmYWxzZSwicHJlcmVuZGVyRWFybHlFeGl0Ijp0cnVlLCJzZXJ2ZXJNaW5pZmljYXRpb24iOnRydWUsInNlcnZlclNvdXJjZU1hcHMiOmZhbHNlLCJsaW5rTm9Ub3VjaFN0YXJ0IjpmYWxzZSwiY2FzZVNlbnNpdGl2ZVJvdXRlcyI6ZmFsc2UsImNsaWVudFNlZ21lbnRDYWNoZSI6ZmFsc2UsInByZWxvYWRFbnRyaWVzT25TdGFydCI6dHJ1ZSwiY2xpZW50Um91dGVyRmlsdGVyIjp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXJSZWRpcmVjdHMiOmZhbHNlLCJmZXRjaENhY2hlS2V5UHJlZml4IjoiIiwibWlkZGxld2FyZVByZWZldGNoIjoiZmxleGlibGUiLCJvcHRpbWlzdGljQ2xpZW50Q2FjaGUiOnRydWUsIm1hbnVhbENsaWVudEJhc2VQYXRoIjpmYWxzZSwiY3B1cyI6MTksIm1lbW9yeUJhc2VkV29ya2Vyc0NvdW50IjpmYWxzZSwiaW1nT3B0Q29uY3VycmVuY3kiOm51bGwsImltZ09wdFRpbWVvdXRJblNlY29uZHMiOjcsImltZ09wdE1heElucHV0UGl4ZWxzIjoyNjg0MDI2ODksImltZ09wdFNlcXVlbnRpYWxSZWFkIjpudWxsLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvcm9vdC9hY3Rpb25zLXJ1bm5lci9fd29yay9uZXh0LmpzL25leHQuanMifSwidHlwZWRSb3V0ZXMiOmZhbHNlLCJ0eXBlZEVudiI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQ29tcGlsZXMiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckJ1aWxkVHJhY2VzIjpmYWxzZSwicHByIjpmYWxzZSwiYXV0aEludGVycnVwdHMiOmZhbHNlLCJyZWFjdE93bmVyU3RhY2siOmZhbHNlLCJ3ZWJwYWNrTWVtb3J5T3B0aW1pemF0aW9ucyI6ZmFsc2UsIm9wdGltaXplU2VydmVyUmVhY3QiOnRydWUsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsImlubGluZUNzcyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlTmFtZSI6Im5leHQuY29uZmlnLmpzIn0=\\\",\\\"pagesType\\\":\\\"pages\\\",\\\"appDirLoader\\\":\\\"\\\",\\\"sriEnabled\\\":false,\\\"middlewareConfig\\\":\\\"e30=\\\",\\\"cacheHandlers\\\":\\\"{}\\\"}!\",\"stack\":\"Error: Module not found: Can't resolve 'fs/promises'\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\nImport trace for requested module:\\n../../../../packages/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js\\n../../../../packages/next/dist/esm/server/after/stitch-after-callstack.js\\n../../../../packages/next/dist/esm/server/after/after-context.js\\n../../../../packages/next/dist/esm/server/async-storage/work-store.js\\n../../../../packages/next/dist/esm/server/web/adapter.js\\n../../../../packages/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{\\\"absolute500Path\\\":\\\"\\\",\\\"absoluteAppPath\\\":\\\"private-next-pages/_app\\\",\\\"absoluteDocumentPath\\\":\\\"private-next-pages/_document\\\",\\\"absoluteErrorPath\\\":\\\"private-next-pages/_error\\\",\\\"absolutePagePath\\\":\\\"/root/actions-runner/_work/next.js/next.js/test/integration/react-streaming/app/pages/streaming.js\\\",\\\"dev\\\":true,\\\"isServerComponent\\\":false,\\\"page\\\":\\\"/streaming\\\",\\\"stringifiedConfig\\\":\\\"eyJlbnYiOnt9LCJ3ZWJwYWNrIjpudWxsLCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJkZWZhdWx0IiwidXNlRmlsZVN5c3RlbVB1YmxpY1JvdXRlcyI6dHJ1ZSwiZ2VuZXJhdGVFdGFncyI6dHJ1ZSwicGFnZUV4dGVuc2lvbnMiOlsidHN4IiwidHMiLCJqc3giLCJqcyJdLCJwb3dlcmVkQnlIZWFkZXIiOnRydWUsImNvbXByZXNzIjp0cnVlLCJpbWFnZXMiOnsiZGV2aWNlU2l6ZXMiOls2NDAsNzUwLDgyOCwxMDgwLDEyMDAsMTkyMCwyMDQ4LDM4NDBdLCJpbWFnZVNpemVzIjpbMTYsMzIsNDgsNjQsOTYsMTI4LDI1NiwzODRdLCJwYXRoIjoiL19uZXh0L2ltYWdlIiwibG9hZGVyIjoiZGVmYXVsdCIsImxvYWRlckZpbGUiOiIiLCJkb21haW5zIjpbXSwiZGlzYWJsZVN0YXRpY0ltYWdlcyI6ZmFsc2UsIm1pbmltdW1DYWNoZVRUTCI6NjAsImZvcm1hdHMiOlsiaW1hZ2Uvd2VicCJdLCJkYW5nZXJvdXNseUFsbG93U1ZHIjpmYWxzZSwiY29udGVudFNlY3VyaXR5UG9saWN5Ijoic2NyaXB0LXNyYyAnbm9uZSc7IGZyYW1lLXNyYyAnbm9uZSc7IHNhbmRib3g7IiwiY29udGVudERpc3Bvc2l0aW9uVHlwZSI6ImF0dGFjaG1lbnQiLCJyZW1vdGVQYXR0ZXJucyI6W10sInVub3B0aW1pemVkIjpmYWxzZX0sImRldkluZGljYXRvcnMiOnsiYXBwSXNyU3RhdHVzIjp0cnVlLCJidWlsZEFjdGl2aXR5Ijp0cnVlLCJidWlsZEFjdGl2aXR5UG9zaXRpb24iOiJib3R0b20tcmlnaHQifSwib25EZW1hbmRFbnRyaWVzIjp7Im1heEluYWN0aXZlQWdlIjo2MDAwMCwicGFnZXNCdWZmZXJMZW5ndGgiOjV9LCJhbXAiOnsiY2Fub25pY2FsQmFzZSI6IiJ9LCJiYXNlUGF0aCI6IiIsInNhc3NPcHRpb25zIjp7fSwidHJhaWxpbmdTbGFzaCI6ZmFsc2UsImkxOG4iOm51bGwsInByb2R1Y3Rpb25Ccm93c2VyU291cmNlTWFwcyI6ZmFsc2UsImV4Y2x1ZGVEZWZhdWx0TW9tZW50TG9jYWxlcyI6dHJ1ZSwic2VydmVyUnVudGltZUNvbmZpZyI6e30sInB1YmxpY1J1bnRpbWVDb25maWciOnt9LCJyZWFjdFByb2R1Y3Rpb25Qcm9maWxpbmciOmZhbHNlLCJyZWFjdFN0cmljdE1vZGUiOm51bGwsInJlYWN0TWF4SGVhZGVyc0xlbmd0aCI6NjAwMCwiaHR0cEFnZW50T3B0aW9ucyI6eyJrZWVwQWxpdmUiOnRydWV9LCJsb2dnaW5nIjp7fSwic3RhdGljUGFnZUdlbmVyYXRpb25UaW1lb3V0Ijo2MCwibW9kdWxhcml6ZUltcG9ydHMiOnsiQG11aS9pY29ucy1tYXRlcmlhbCI6eyJ0cmFuc2Zvcm0iOiJAbXVpL2ljb25zLW1hdGVyaWFsL3t7bWVtYmVyfX0ifSwibG9kYXNoIjp7InRyYW5zZm9ybSI6ImxvZGFzaC97e21lbWJlcn19In19LCJvdXRwdXRGaWxlVHJhY2luZ1Jvb3QiOiIvcm9vdC9hY3Rpb25zLXJ1bm5lci9fd29yay9uZXh0LmpzL25leHQuanMiLCJleHBlcmltZW50YWwiOnsiY2FjaGVMaWZlIjp7ImRlZmF1bHQiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6OTAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9LCJzZWNvbmRzIjp7InN0YWxlIjowLCJyZXZhbGlkYXRlIjoxLCJleHBpcmUiOjYwfSwibWludXRlcyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo2MCwiZXhwaXJlIjozNjAwfSwiaG91cnMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MzYwMCwiZXhwaXJlIjo4NjQwMH0sImRheXMiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6ODY0MDAsImV4cGlyZSI6NjA0ODAwfSwid2Vla3MiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6NjA0ODAwLCJleHBpcmUiOjI1OTIwMDB9LCJtYXgiOnsic3RhbGUiOjMwMCwicmV2YWxpZGF0ZSI6MjU5MjAwMCwiZXhwaXJlIjo0Mjk0OTY3Mjk0fX0sImNhY2hlSGFuZGxlcnMiOnt9LCJjc3NDaHVua2luZyI6dHJ1ZSwibXVsdGlab25lRHJhZnRNb2RlIjpmYWxzZSwiYXBwTmF2RmFpbEhhbmRsaW5nIjpmYWxzZSwicHJlcmVuZGVyRWFybHlFeGl0Ijp0cnVlLCJzZXJ2ZXJNaW5pZmljYXRpb24iOnRydWUsInNlcnZlclNvdXJjZU1hcHMiOmZhbHNlLCJsaW5rTm9Ub3VjaFN0YXJ0IjpmYWxzZSwiY2FzZVNlbnNpdGl2ZVJvdXRlcyI6ZmFsc2UsImNsaWVudFNlZ21lbnRDYWNoZSI6ZmFsc2UsInByZWxvYWRFbnRyaWVzT25TdGFydCI6dHJ1ZSwiY2xpZW50Um91dGVyRmlsdGVyIjp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXJSZWRpcmVjdHMiOmZhbHNlLCJmZXRjaENhY2hlS2V5UHJlZml4IjoiIiwibWlkZGxld2FyZVByZWZldGNoIjoiZmxleGlibGUiLCJvcHRpbWlzdGljQ2xpZW50Q2FjaGUiOnRydWUsIm1hbnVhbENsaWVudEJhc2VQYXRoIjpmYWxzZSwiY3B1cyI6MTksIm1lbW9yeUJhc2VkV29ya2Vyc0NvdW50IjpmYWxzZSwiaW1nT3B0Q29uY3VycmVuY3kiOm51bGwsImltZ09wdFRpbWVvdXRJblNlY29uZHMiOjcsImltZ09wdE1heElucHV0UGl4ZWxzIjoyNjg0MDI2ODksImltZ09wdFNlcXVlbnRpYWxSZWFkIjpudWxsLCJpc3JGbHVzaFRvRGlzayI6dHJ1ZSwid29ya2VyVGhyZWFkcyI6ZmFsc2UsIm9wdGltaXplQ3NzIjpmYWxzZSwibmV4dFNjcmlwdFdvcmtlcnMiOmZhbHNlLCJzY3JvbGxSZXN0b3JhdGlvbiI6ZmFsc2UsImV4dGVybmFsRGlyIjpmYWxzZSwiZGlzYWJsZU9wdGltaXplZExvYWRpbmciOmZhbHNlLCJnemlwU2l6ZSI6dHJ1ZSwiY3JhQ29tcGF0IjpmYWxzZSwiZXNtRXh0ZXJuYWxzIjp0cnVlLCJmdWxseVNwZWNpZmllZCI6ZmFsc2UsInN3Y1RyYWNlUHJvZmlsaW5nIjpmYWxzZSwiZm9yY2VTd2NUcmFuc2Zvcm1zIjpmYWxzZSwibGFyZ2VQYWdlRGF0YUJ5dGVzIjoxMjgwMDAsInR1cmJvIjp7InJvb3QiOiIvcm9vdC9hY3Rpb25zLXJ1bm5lci9fd29yay9uZXh0LmpzL25leHQuanMifSwidHlwZWRSb3V0ZXMiOmZhbHNlLCJ0eXBlZEVudiI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQ29tcGlsZXMiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckJ1aWxkVHJhY2VzIjpmYWxzZSwicHByIjpmYWxzZSwiYXV0aEludGVycnVwdHMiOmZhbHNlLCJyZWFjdE93bmVyU3RhY2siOmZhbHNlLCJ3ZWJwYWNrTWVtb3J5T3B0aW1pemF0aW9ucyI6ZmFsc2UsIm9wdGltaXplU2VydmVyUmVhY3QiOnRydWUsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsImlubGluZUNzcyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlTmFtZSI6Im5leHQuY29uZmlnLmpzIn0=\\\",\\\"pagesType\\\":\\\"pages\\\",\\\"appDirLoader\\\":\\\"\\\",\\\"sriEnabled\\\":false,\\\"middlewareConfig\\\":\\\"e30=\\\",\\\"cacheHandlers\\\":\\\"{}\\\"}!\\n    at getNotFoundError (/root/actions-runner/_work/next.js/next.js/packages/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js:134:16)\\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\\n    at async getModuleBuildError (/root/actions-runner/_work/next.js/next.js/packages/next/dist/build/webpack/plugins/wellknown-errors-plugin/webpackModuleError.js:104:27)\\n    at async /root/actions-runner/_work/next.js/next.js/packages/next/dist/build/webpack/plugins/wellknown-errors-plugin/index.js:29:49\\n    at async Promise.all (index 0)\\n    at async /root/actions-runner/_work/next.js/next.js/packages/next/dist/build/webpack/plugins/wellknown-errors-plugin/index.js:27:21\"},\"gip\":true,\"scriptLoader\":[]}</script></body></html>"

  110 |   it('should render fallback if error raised from suspense during streaming', async () => {
  111 |     const html = await renderViaHTTP(context.appPort, '/err/suspense')
> 112 |     expect(html).toContain('error-fallback')
      |                  ^
  113 |   })
  114 | }
  115 |

  at Object.toContain (integration/react-streaming/test/streaming.js:112:18)

● production mode › streaming prod prod › should support streaming for fizz response

FetchError: request to http://localhost:39669/streaming failed, reason: connect ECONNREFUSED 127.0.0.1:39669

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

● production mode › streaming prod prod › should not stream to crawlers or google pagerender bot

FetchError: request to http://localhost:39669/streaming failed, reason: connect ECONNREFUSED 127.0.0.1:39669

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

● production mode › streaming prod prod › should render 500 error correctly

FetchError: request to http://localhost:39669/err failed, reason: connect ECONNREFUSED 127.0.0.1:39669

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

● production mode › streaming prod prod › should render fallback if error raised from suspense during streaming

FetchError: request to http://localhost:39669/err/suspense failed, reason: connect ECONNREFUSED 127.0.0.1:39669

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev-turbo test/e2e/app-dir/dynamic-io/dynamic-io.params.test.ts (turbopack)

  • dynamic-io > Async Params > should prerender pages that await params in a server component when prebuilt
  • dynamic-io > Async Params > should prerender pages that use params in a client component when prebuilt
  • dynamic-io > Async Params > should render pages that await params in a server component when not prebuilt
  • dynamic-io > Async Params > should render pages that use params in a client component when not prebuilt
  • dynamic-io > Async Params > should fully prerender pages that check individual param keys after awaiting params in a server component
  • dynamic-io > Async Params > should fully prerender pages that check individual param keys after useing params in a client component
  • dynamic-io > Async Params > should prerender pages that spread awaited params in a server component when prebuilt
  • dynamic-io > Async Params > should prerender pages that spread useed params in a client component when prebuilt
  • dynamic-io > Async Params > should render pages that spread awaited params in a server component when not prebuilt
  • dynamic-io > Async Params > should render pages that spread useed params in a client component when not prebuilt
  • dynamic-io > Param Shadowing > should correctly allow param names like then, value, and status when awaiting params in a server component
  • dynamic-io > Param Shadowing > should correctly allow param names like then, value, and status when useing params in a client component
  • dynamic-io > Param Shadowing > should not allow param names like then and status when accessing params directly in a server component
  • dynamic-io > Param Shadowing > should not allow param names like then and status when accessing params directly in a client component
  • dynamic-io > Synchronous Params access > should prerender pages that access params synchronously in a server component when prebuilt
  • dynamic-io > Synchronous Params access > should prerender pages that access params synchronously in a client component when prebuilt
  • dynamic-io > Synchronous Params access > should render pages that access params synchronously in a server component when not prebuilt
  • dynamic-io > Synchronous Params access > should render pages that access params synchronously in a client component when not prebuilt
  • dynamic-io > Synchronous Params access > should fully prerender pages that check individual param keys directly on the params prop in a server component
  • dynamic-io > Synchronous Params access > should fully prerender pages that check individual param keys directly on the params prop in a client component
  • dynamic-io > Synchronous Params access > should prerender pages that spread params without awaiting first in a server component when prebuilt
  • dynamic-io > Synchronous Params access > should prerender pages that spread params without useing first in a client component when prebuilt
  • dynamic-io > Synchronous Params access > should prerender pages that spread params without awaiting first in a server component when not prebuilt
  • dynamic-io > Synchronous Params access > should prerender pages that spread params without useing first in a client component when not prebuilt
Expand output

● dynamic-io › Async Params › should prerender pages that await params in a server component when prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  228 |         )
  229 |         if (isNextDev) {
> 230 |           expect($('#layout').text()).toBe('at runtime')
      |                                       ^
  231 |           expect($('#lowcard').text()).toBe('at runtime')
  232 |           expect($('#highcard').text()).toBe('at runtime')
  233 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:230:39)

● dynamic-io › Async Params › should prerender pages that use params in a client component when prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  273 |         )
  274 |         if (isNextDev) {
> 275 |           expect($('#layout').text()).toBe('at runtime')
      |                                       ^
  276 |           expect($('#lowcard').text()).toBe('at runtime')
  277 |           expect($('#highcard').text()).toBe('at runtime')
  278 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:275:39)

● dynamic-io › Async Params › should render pages that await params in a server component when not prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  321 |         )
  322 |         if (isNextDev) {
> 323 |           expect($('#layout').text()).toBe('at runtime')
      |                                       ^
  324 |           expect($('#lowcard').text()).toBe('at runtime')
  325 |           expect($('#highcard').text()).toBe('at runtime')
  326 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:323:39)

● dynamic-io › Async Params › should render pages that use params in a client component when not prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  366 |         )
  367 |         if (isNextDev) {
> 368 |           expect($('#layout').text()).toBe('at runtime')
      |                                       ^
  369 |           expect($('#lowcard').text()).toBe('at runtime')
  370 |           expect($('#highcard').text()).toBe('at runtime')
  371 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:368:39)

● dynamic-io › Async Params › should fully prerender pages that check individual param keys after awaiting params in a server component

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  412 |       )
  413 |       if (isNextDev) {
> 414 |         expect($('#layout').text()).toBe('at runtime')
      |                                     ^
  415 |         expect($('#lowcard').text()).toBe('at runtime')
  416 |         expect($('#highcard').text()).toBe('at runtime')
  417 |         expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:414:37)

● dynamic-io › Async Params › should fully prerender pages that check individual param keys after useing params in a client component

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  537 |       )
  538 |       if (isNextDev) {
> 539 |         expect($('#layout').text()).toBe('at runtime')
      |                                     ^
  540 |         expect($('#lowcard').text()).toBe('at runtime')
  541 |         expect($('#highcard').text()).toBe('at runtime')
  542 |         expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:539:37)

● dynamic-io › Async Params › should prerender pages that spread awaited params in a server component when prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  887 |         )
  888 |         if (isNextDev) {
> 889 |           expect($('#layout').text()).toBe('at runtime')
      |                                       ^
  890 |           expect($('#lowcard').text()).toBe('at runtime')
  891 |           expect($('#highcard').text()).toBe('at runtime')
  892 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:889:39)

● dynamic-io › Async Params › should prerender pages that spread useed params in a client component when prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  936 |         )
  937 |         if (isNextDev) {
> 938 |           expect($('#layout').text()).toBe('at runtime')
      |                                       ^
  939 |           expect($('#lowcard').text()).toBe('at runtime')
  940 |           expect($('#highcard').text()).toBe('at runtime')
  941 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:938:39)

● dynamic-io › Async Params › should render pages that spread awaited params in a server component when not prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  987 |         )
  988 |         if (isNextDev) {
> 989 |           expect($('#layout').text()).toBe('at runtime')
      |                                       ^
  990 |           expect($('#lowcard').text()).toBe('at runtime')
  991 |           expect($('#highcard').text()).toBe('at runtime')
  992 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:989:39)

● dynamic-io › Async Params › should render pages that spread useed params in a client component when not prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  1033 |         )
  1034 |         if (isNextDev) {
> 1035 |           expect($('#layout').text()).toBe('at runtime')
       |                                       ^
  1036 |           expect($('#lowcard').text()).toBe('at runtime')
  1037 |           expect($('#highcard').text()).toBe('at runtime')
  1038 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:1035:39)

● dynamic-io › Synchronous Params access › should prerender pages that access params synchronously in a server component when prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  1298 |         )
  1299 |         if (isNextDev) {
> 1300 |           expect($('#layout').text()).toBe('at runtime')
       |                                       ^
  1301 |           expect($('#lowcard').text()).toBe('at runtime')
  1302 |           expect($('#highcard').text()).toBe('at runtime')
  1303 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:1300:39)

● dynamic-io › Synchronous Params access › should prerender pages that access params synchronously in a client component when prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  1349 |         )
  1350 |         if (isNextDev) {
> 1351 |           expect($('#layout').text()).toBe('at runtime')
       |                                       ^
  1352 |           expect($('#lowcard').text()).toBe('at runtime')
  1353 |           expect($('#highcard').text()).toBe('at runtime')
  1354 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:1351:39)

● dynamic-io › Synchronous Params access › should render pages that access params synchronously in a server component when not prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  1403 |         )
  1404 |         if (isNextDev) {
> 1405 |           expect($('#layout').text()).toBe('at runtime')
       |                                       ^
  1406 |           expect($('#lowcard').text()).toBe('at runtime')
  1407 |           expect($('#highcard').text()).toBe('at runtime')
  1408 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:1405:39)

● dynamic-io › Synchronous Params access › should render pages that access params synchronously in a client component when not prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  1454 |         )
  1455 |         if (isNextDev) {
> 1456 |           expect($('#layout').text()).toBe('at runtime')
       |                                       ^
  1457 |           expect($('#lowcard').text()).toBe('at runtime')
  1458 |           expect($('#highcard').text()).toBe('at runtime')
  1459 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:1456:39)

● dynamic-io › Synchronous Params access › should fully prerender pages that check individual param keys directly on the params prop in a server component

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  1506 |       )
  1507 |       if (isNextDev) {
> 1508 |         expect($('#layout').text()).toBe('at runtime')
       |                                     ^
  1509 |         expect($('#lowcard').text()).toBe('at runtime')
  1510 |         expect($('#highcard').text()).toBe('at runtime')
  1511 |         expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:1508:37)

● dynamic-io › Synchronous Params access › should fully prerender pages that check individual param keys directly on the params prop in a client component

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  1623 |       )
  1624 |       if (isNextDev) {
> 1625 |         expect($('#layout').text()).toBe('at runtime')
       |                                     ^
  1626 |         expect($('#lowcard').text()).toBe('at runtime')
  1627 |         expect($('#highcard').text()).toBe('at runtime')
  1628 |         expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:1625:37)

● dynamic-io › Synchronous Params access › should prerender pages that spread params without awaiting first in a server component when prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  1991 |         )
  1992 |         if (isNextDev) {
> 1993 |           expect($('#layout').text()).toBe('at runtime')
       |                                       ^
  1994 |           expect($('#lowcard').text()).toBe('at runtime')
  1995 |           expect($('#highcard').text()).toBe('at runtime')
  1996 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:1993:39)

● dynamic-io › Synchronous Params access › should prerender pages that spread params without useing first in a client component when prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  2044 |         )
  2045 |         if (isNextDev) {
> 2046 |           expect($('#layout').text()).toBe('at runtime')
       |                                       ^
  2047 |           expect($('#lowcard').text()).toBe('at runtime')
  2048 |           expect($('#highcard').text()).toBe('at runtime')
  2049 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:2046:39)

● dynamic-io › Synchronous Params access › should prerender pages that spread params without awaiting first in a server component when not prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  2104 |         )
  2105 |         if (isNextDev) {
> 2106 |           expect($('#layout').text()).toBe('at runtime')
       |                                       ^
  2107 |           expect($('#lowcard').text()).toBe('at runtime')
  2108 |           expect($('#highcard').text()).toBe('at runtime')
  2109 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:2106:39)

● dynamic-io › Synchronous Params access › should prerender pages that spread params without useing first in a client component when not prebuilt

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  2159 |         )
  2160 |         if (isNextDev) {
> 2161 |           expect($('#layout').text()).toBe('at runtime')
       |                                       ^
  2162 |           expect($('#lowcard').text()).toBe('at runtime')
  2163 |           expect($('#highcard').text()).toBe('at runtime')
  2164 |           expect($('#page').text()).toBe('at runtime')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:2161:39)

● dynamic-io › Param Shadowing › should correctly allow param names like then, value, and status when awaiting params in a server component

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  2220 |       )
  2221 |       if (isNextDev) {
> 2222 |         expect($('#layout').text()).toBe('at runtime')
       |                                     ^
  2223 |         expect($('#page').text()).toBe('at runtime')
  2224 |         expect($('#param-dyn').text()).toBe('foo')
  2225 |         expect($('#param-then').text()).toBe('bar')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:2222:37)

● dynamic-io › Param Shadowing › should correctly allow param names like then, value, and status when useing params in a client component

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  2273 |       )
  2274 |       if (isNextDev) {
> 2275 |         expect($('#layout').text()).toBe('at runtime')
       |                                     ^
  2276 |         expect($('#page').text()).toBe('at runtime')
  2277 |         expect($('#param-dyn').text()).toBe('foo')
  2278 |         expect($('#param-then').text()).toBe('bar')

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:2275:37)

● dynamic-io › Param Shadowing › should not allow param names like then and status when accessing params directly in a server component

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  2326 |       )
  2327 |       if (isNextDev) {
> 2328 |         expect($('#layout').text()).toBe('at runtime')
       |                                     ^
  2329 |         expect($('#page').text()).toBe('at runtime')
  2330 |         expect($('#param-dyn').text()).toBe('foo')
  2331 |         expect($('#param-then').text()).toEqual(

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:2328:37)

● dynamic-io › Param Shadowing › should not allow param names like then and status when accessing params directly in a client component

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  2395 |       )
  2396 |       if (isNextDev) {
> 2397 |         expect($('#layout').text()).toBe('at runtime')
       |                                     ^
  2398 |         expect($('#page').text()).toBe('at runtime')
  2399 |         expect($('#param-dyn').text()).toBe('foo')
  2400 |         expect($('#param-then').text()).toEqual(

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.params.test.ts:2397:37)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/middleware-prefetch/tests/index.test.js (turbopack)

  • Middleware Production Prefetch > production mode > prefetch correctly for unexistent routes
  • Middleware Production Prefetch > production mode > does not prefetch provided path if it will be rewritten
Expand output

● Middleware Production Prefetch › production mode › prefetch correctly for unexistent routes

ENOENT: no such file or directory, open '/root/actions-runner/_work/next.js/next.js/test/integration/middleware-prefetch/.next/BUILD_ID'

● Middleware Production Prefetch › production mode › does not prefetch provided path if it will be rewritten

ENOENT: no such file or directory, open '/root/actions-runner/_work/next.js/next.js/test/integration/middleware-prefetch/.next/BUILD_ID'

Read more about building and testing Next.js in contributing.md.

__NEXT_EXPERIMENTAL_PPR=true pnpm test-dev test/development/app-hmr/hmr.test.ts (PPR)

  • app-dir-hmr > filesystem changes > should update server components after navigating to a page with a different runtime
  • app-dir-hmr > filesystem changes > should update server components pages when env files is changed (node)
  • app-dir-hmr > filesystem changes > should update server components pages when env files is changed (node-module-var)
  • app-dir-hmr > filesystem changes > should update server components pages when env files is changed (edge)
  • app-dir-hmr > filesystem changes > should update server components pages when env files is changed (edge-module-var)
  • app-dir-hmr > filesystem changes > can navigate cleanly to a page that requires a change in the Webpack runtime
Expand output

● app-dir-hmr › filesystem changes › should update server components after navigating to a page with a different runtime

expect(received).toBe(expected) // Object.is equality

Expected: "mac"
Received: ""

  62 |       await browser.eval('window.__TEST_NO_RELOAD = true')
  63 |
> 64 |       expect(await browser.elementByCss('p').text()).toBe('mac')
     |                                                      ^
  65 |
  66 |       const getCliOutput = next.getCliOutputFromHere()
  67 |       await next.patchFile(envFile, 'MY_DEVICE="ipad"', async () => {

  at Object.toBe (development/app-hmr/hmr.test.ts:64:54)

● app-dir-hmr › filesystem changes › should update server components pages when env files is changed (node)

expect(received).toBe(expected) // Object.is equality

Expected: "mac"
Received: ""

  152 |       async (page) => {
  153 |         const browser = await next.browser(`/env/${page}`)
> 154 |         expect(await browser.elementByCss('p').text()).toBe('mac')
      |                                                        ^
  155 |
  156 |         await next.patchFile(envFile, 'MY_DEVICE="ipad"', async () => {
  157 |           let logs

  at toBe (development/app-hmr/hmr.test.ts:154:56)

● app-dir-hmr › filesystem changes › should update server components pages when env files is changed (node-module-var)

expect(received).toBe(expected) // Object.is equality

Expected: "mac"
Received: ""

  152 |       async (page) => {
  153 |         const browser = await next.browser(`/env/${page}`)
> 154 |         expect(await browser.elementByCss('p').text()).toBe('mac')
      |                                                        ^
  155 |
  156 |         await next.patchFile(envFile, 'MY_DEVICE="ipad"', async () => {
  157 |           let logs

  at toBe (development/app-hmr/hmr.test.ts:154:56)

● app-dir-hmr › filesystem changes › should update server components pages when env files is changed (edge)

expect(received).toBe(expected) // Object.is equality

Expected: "mac"
Received: ""

  152 |       async (page) => {
  153 |         const browser = await next.browser(`/env/${page}`)
> 154 |         expect(await browser.elementByCss('p').text()).toBe('mac')
      |                                                        ^
  155 |
  156 |         await next.patchFile(envFile, 'MY_DEVICE="ipad"', async () => {
  157 |           let logs

  at toBe (development/app-hmr/hmr.test.ts:154:56)

● app-dir-hmr › filesystem changes › should update server components pages when env files is changed (edge-module-var)

expect(received).toBe(expected) // Object.is equality

Expected: "mac"
Received: ""

  152 |       async (page) => {
  153 |         const browser = await next.browser(`/env/${page}`)
> 154 |         expect(await browser.elementByCss('p').text()).toBe('mac')
      |                                                        ^
  155 |
  156 |         await next.patchFile(envFile, 'MY_DEVICE="ipad"', async () => {
  157 |           let logs

  at toBe (development/app-hmr/hmr.test.ts:154:56)

● app-dir-hmr › filesystem changes › can navigate cleanly to a page that requires a change in the Webpack runtime

page.waitForSelector: Timeout 60000ms exceeded.
Call log:
  - waiting for locator('[data-testid="new-runtime-functionality-page"]')

  423 |     return this.chain(() => {
  424 |       return page
> 425 |         .waitForSelector(selector, { timeout, state: 'attached' })
      |          ^
  426 |         .then(async (el) => {
  427 |           // it seems selenium waits longer and tests rely on this behavior
  428 |           // so we wait for the load event fire before returning

  at waitForSelector (lib/browsers/playwright.ts:425:10)
  at Object.<anonymous> (development/app-hmr/hmr.test.ts:217:7)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev-turbo test/e2e/app-dir/dynamic-io/dynamic-io.cookies.test.ts (turbopack)

  • dynamic-io > should produce dynamic pages when using async or sync cookies
  • dynamic-io > should be able to access cookie properties asynchronously
  • dynamic-io > should be able to access cookie properties synchronously
Expand output

● dynamic-io › should produce dynamic pages when using async or sync cookies

expect(received).toBe(expected) // Object.is equality

Expected: "at runtime"
Received: ""

  43 |       let $ = await next.render$('/cookies/static-behavior/sync', {})
  44 |       if (isNextDev) {
> 45 |         expect($('#layout').text()).toBe('at runtime')
     |                                     ^
  46 |         expect($('#page').text()).toBe('at runtime')
  47 |         expect($('#x-sentinel').text()).toBe('hello')
  48 |       } else {

  at Object.toBe (e2e/app-dir/dynamic-io/dynamic-io.cookies.test.ts:45:37)

● dynamic-io › should be able to access cookie properties asynchronously

expect(received).toContain(expected) // indexOf

Expected substring: "hello"
Received string:    ""

  89 |
  90 |     // For...of iteration
> 91 |     expect($('#for-of-x-sentinel').text()).toContain('hello')
     |                                            ^
  92 |     expect($('#for-of-x-sentinel-path').text()).toContain(
  93 |       '/cookies/exercise/async'
  94 |     )

  at Object.toContain (e2e/app-dir/dynamic-io/dynamic-io.cookies.test.ts:91:44)

● dynamic-io › should be able to access cookie properties synchronously

expect(received).toContain(expected) // indexOf

Expected substring: "hello"
Received string:    ""

  152 |
  153 |     // For...of iteration
> 154 |     expect($('#for-of-x-sentinel').text()).toContain('hello')
      |                                            ^
  155 |     expect($('#for-of-x-sentinel-path').text()).toContain(
  156 |       '/cookies/exercise/sync'
  157 |     )

  at Object.toContain (e2e/app-dir/dynamic-io/dynamic-io.cookies.test.ts:154:44)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev test/e2e/app-dir/app-routes-trailing-slash/app-routes-trailing-slash.test.ts

  • app-routes-trailing-slash > should handle trailing slash for edge runtime
  • app-routes-trailing-slash > should handle trailing slash for node runtime
Expand output

● app-routes-trailing-slash › should handle trailing slash for edge runtime

expect(received).toEqual(expected) // deep equality

Expected: 200
Received: 500

  20 |       })
  21 |
> 22 |       expect(res.status).toEqual(200)
     |                          ^
  23 |       await expect(res.json()).resolves.toEqual({
  24 |         url: `/runtime/${runtime}/`,
  25 |         nextUrl: `/runtime/${runtime}/`,

  at toEqual (e2e/app-dir/app-routes-trailing-slash/app-routes-trailing-slash.test.ts:22:26)

● app-routes-trailing-slash › should handle trailing slash for node runtime

expect(received).toEqual(expected) // deep equality

Expected: 200
Received: 500

  20 |       })
  21 |
> 22 |       expect(res.status).toEqual(200)
     |                          ^
  23 |       await expect(res.json()).resolves.toEqual({
  24 |         url: `/runtime/${runtime}/`,
  25 |         nextUrl: `/runtime/${runtime}/`,

  at toEqual (e2e/app-dir/app-routes-trailing-slash/app-routes-trailing-slash.test.ts:22:26)

Read more about building and testing Next.js in contributing.md.

pnpm test test/integration/react-current-version/test/index.test.js

  • production mode > Concurrent mode in the experimental-edge runtime prod > flushes styled-jsx styles as the page renders
  • production mode > Concurrent mode in the experimental-edge runtime prod > should not have invalid config warning
  • production mode > Concurrent mode in the experimental-edge runtime prod > > should not have the initial route announced
Expand output

● production mode › Concurrent mode in the experimental-edge runtime prod › flushes styled-jsx styles as the page renders

FetchError: request to http://localhost:39099/use-flush-effect/styled-jsx failed, reason: connect ECONNREFUSED 127.0.0.1:39099

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

● production mode › Concurrent mode in the experimental-edge runtime prod › › should not have the initial route announced

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:39099/
Call log:
  - navigating to "http://localhost:39099/", waiting until "load"

  282 |     opts?.beforePageLoad?.(page)
  283 |
> 284 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  285 |   }
  286 |
  287 |   back(options) {

  at BrowserInterface.goto (lib/browsers/playwright.ts:284:16)
  at webdriver (lib/next-webdriver.ts:136:3)
  at Object.<anonymous> (integration/react-current-version/test/index.test.js:111:27)

● production mode › Concurrent mode in the experimental-edge runtime prod › should not have invalid config warning

FetchError: request to http://localhost:39099/ failed, reason: connect ECONNREFUSED 127.0.0.1:39099

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

Read more about building and testing Next.js in contributing.md.

pnpm test-dev test/development/app-dir/ssr-in-rsc/ssr-in-rsc.test.ts

  • react-dom/server in React Server environment > implicit react-dom/server.edge usage in library code
Expand output

● react-dom/server in React Server environment › implicit react-dom/server.edge usage in library code

Expected no Redbox but found one
header: 1 of 1 error
Next.js (15.0.4-canary.41)
Server Error

Error: Module not found: Can't resolve 'fs'

https://nextjs.org/docs/messages/module-not-found

Import trace for requested module:
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/compiled/babel/bundle.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/compiled/babel/code-frame.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/client/components/react-dev-overlay/server/shared.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/server/after/stitch-after-callstack.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/server/after/after-context.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/server/async-storage/work-store.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/server/web/adapter.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{"absolute500Path":"","absoluteAppPath":"next/dist/pages/_app","absoluteDocumentPath":"next/dist/pages/_document","absoluteErrorPath":"next/dist/pages/_error","absolutePagePath":"/tmp/next-install-05081069392febffbf5e716b05aa4809ed5aeea91e121fadefef3ccd776f6d73/app/exports/library-code/react-dom-server-edge-implicit/page.js","dev":true,"isServerComponent":true,"page":"/exports/library-code/react-dom-server-edge-implicit/page","stringifiedConfig":"eyJlbnYiOnt9LCJ3ZWJwYWNrIjpudWxsLCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwib3V0cHV0RmlsZVRyYWNpbmdSb290IjoiL3RtcC9uZXh0LWluc3RhbGwtMDUwODEwNjkzOTJmZWJmZmJmNWU3MTZiMDVhYTQ4MDllZDVhZWVhOTFlMTIxZmFkZWZlZjNjY2Q3NzZmNmQ3MyIsImV4cGVyaW1lbnRhbCI6eyJjYWNoZUxpZmUiOnsiZGVmYXVsdCI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo5MDAsImV4cGlyZSI6NDI5NDk2NzI5NH0sInNlY29uZHMiOnsic3RhbGUiOjAsInJldmFsaWRhdGUiOjEsImV4cGlyZSI6NjB9LCJtaW51dGVzIjp7InN0YWxlIjozMDAsInJldmFsaWRhdGUiOjYwLCJleHBpcmUiOjM2MDB9LCJob3VycyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjozNjAwLCJleHBpcmUiOjg2NDAwfSwiZGF5cyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo4NjQwMCwiZXhwaXJlIjo2MDQ4MDB9LCJ3ZWVrcyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo2MDQ4MDAsImV4cGlyZSI6MjU5MjAwMH0sIm1heCI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjoyNTkyMDAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9fSwiY2FjaGVIYW5kbGVycyI6e30sImNzc0NodW5raW5nIjp0cnVlLCJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwiY2xpZW50U2VnbWVudENhY2hlIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpbWdPcHRDb25jdXJyZW5jeSI6bnVsbCwiaW1nT3B0VGltZW91dEluU2Vjb25kcyI6NywiaW1nT3B0TWF4SW5wdXRQaXhlbHMiOjI2ODQwMjY4OSwiaW1nT3B0U2VxdWVudGlhbFJlYWQiOm51bGwsImlzckZsdXNoVG9EaXNrIjp0cnVlLCJ3b3JrZXJUaHJlYWRzIjpmYWxzZSwib3B0aW1pemVDc3MiOmZhbHNlLCJuZXh0U2NyaXB0V29ya2VycyI6ZmFsc2UsInNjcm9sbFJlc3RvcmF0aW9uIjpmYWxzZSwiZXh0ZXJuYWxEaXIiOmZhbHNlLCJkaXNhYmxlT3B0aW1pemVkTG9hZGluZyI6ZmFsc2UsImd6aXBTaXplIjp0cnVlLCJjcmFDb21wYXQiOmZhbHNlLCJlc21FeHRlcm5hbHMiOnRydWUsImZ1bGx5U3BlY2lmaWVkIjpmYWxzZSwic3djVHJhY2VQcm9maWxpbmciOmZhbHNlLCJmb3JjZVN3Y1RyYW5zZm9ybXMiOmZhbHNlLCJsYXJnZVBhZ2VEYXRhQnl0ZXMiOjEyODAwMCwidHVyYm8iOnsicm9vdCI6Ii90bXAvbmV4dC1pbnN0YWxsLTA1MDgxMDY5MzkyZmViZmZiZjVlNzE2YjA1YWE0ODA5ZWQ1YWVlYTkxZTEyMWZhZGVmZWYzY2NkNzc2ZjZkNzMifSwidHlwZWRSb3V0ZXMiOmZhbHNlLCJ0eXBlZEVudiI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQ29tcGlsZXMiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckJ1aWxkVHJhY2VzIjpmYWxzZSwicHByIjpmYWxzZSwiYXV0aEludGVycnVwdHMiOmZhbHNlLCJyZWFjdE93bmVyU3RhY2siOmZhbHNlLCJ3ZWJwYWNrTWVtb3J5T3B0aW1pemF0aW9ucyI6ZmFsc2UsIm9wdGltaXplU2VydmVyUmVhY3QiOnRydWUsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsImlubGluZUNzcyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlIjoiL3RtcC9uZXh0LWluc3RhbGwtMDUwODEwNjkzOTJmZWJmZmJmNWU3MTZiMDVhYTQ4MDllZDVhZWVhOTFlMTIxZmFkZWZlZjNjY2Q3NzZmNmQ3My9uZXh0LmNvbmZpZy5qcyIsImNvbmZpZ0ZpbGVOYW1lIjoibmV4dC5jb25maWcuanMifQ==","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGZXhwb3J0cyUyRmxpYnJhcnktY29kZSUyRnJlYWN0LWRvbS1zZXJ2ZXItZWRnZS1pbXBsaWNpdCUyRnBhZ2UmcGFnZT0lMkZleHBvcnRzJTJGbGlicmFyeS1jb2RlJTJGcmVhY3QtZG9tLXNlcnZlci1lZGdlLWltcGxpY2l0JTJGcGFnZSZhcHBQYXRocz0lMkZleHBvcnRzJTJGbGlicmFyeS1jb2RlJTJGcmVhY3QtZG9tLXNlcnZlci1lZGdlLWltcGxpY2l0JTJGcGFnZSZwYWdlUGF0aD1wcml2YXRlLW5leHQtYXBwLWRpciUyRmV4cG9ydHMlMkZsaWJyYXJ5LWNvZGUlMkZyZWFjdC1kb20tc2VydmVyLWVkZ2UtaW1wbGljaXQlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LWluc3RhbGwtMDUwODEwNjkzOTJmZWJmZmJmNWU3MTZiMDVhYTQ4MDllZDVhZWVhOTFlMTIxZmFkZWZlZjNjY2Q3NzZmNmQ3MyUyRmFwcCZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJnJvb3REaXI9JTJGdG1wJTJGbmV4dC1pbnN0YWxsLTA1MDgxMDY5MzkyZmViZmZiZjVlNzE2YjA1YWE0ODA5ZWQ1YWVlYTkxZTEyMWZhZGVmZWYzY2NkNzc2ZjZkNzMmaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0Qh","sriEnabled":false,"middlewareConfig":"e30=","cacheHandlers":"{}"}!

This error happened while generating the page. Any console logs will be displayed in the terminal window.
description: Error: Module not found: Can't resolve 'fs'

https://nextjs.org/docs/messages/module-not-found

Import trace for requested module:
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/compiled/babel/bundle.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/compiled/babel/code-frame.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/client/components/react-dev-overlay/server/shared.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/server/after/stitch-after-callstack.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/server/after/after-context.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/server/async-storage/work-store.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/esm/server/web/adapter.js
./node_modules/.pnpm/file+..+next-repo-c2d7efe955fbf43193776e8ec0802576f4c36cdac68b9127012af968dd10ff3e+packages+n_sv7q4chavwwkqix4jm4x7nlzbe/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js?{"absolute500Path":"","absoluteAppPath":"next/dist/pages/_app","absoluteDocumentPath":"next/dist/pages/_document","absoluteErrorPath":"next/dist/pages/_error","absolutePagePath":"/tmp/next-install-05081069392febffbf5e716b05aa4809ed5aeea91e121fadefef3ccd776f6d73/app/exports/library-code/react-dom-server-edge-implicit/page.js","dev":true,"isServerComponent":true,"page":"/exports/library-code/react-dom-server-edge-implicit/page","stringifiedConfig":"eyJlbnYiOnt9LCJ3ZWJwYWNrIjpudWxsLCJlc2xpbnQiOnsiaWdub3JlRHVyaW5nQnVpbGRzIjpmYWxzZX0sInR5cGVzY3JpcHQiOnsiaWdub3JlQnVpbGRFcnJvcnMiOmZhbHNlLCJ0c2NvbmZpZ1BhdGgiOiJ0c2NvbmZpZy5qc29uIn0sImRpc3REaXIiOiIubmV4dCIsImNsZWFuRGlzdERpciI6dHJ1ZSwiYXNzZXRQcmVmaXgiOiIiLCJjYWNoZU1heE1lbW9yeVNpemUiOjUyNDI4ODAwLCJjb25maWdPcmlnaW4iOiJuZXh0LmNvbmZpZy5qcyIsInVzZUZpbGVTeXN0ZW1QdWJsaWNSb3V0ZXMiOnRydWUsImdlbmVyYXRlRXRhZ3MiOnRydWUsInBhZ2VFeHRlbnNpb25zIjpbInRzeCIsInRzIiwianN4IiwianMiXSwicG93ZXJlZEJ5SGVhZGVyIjp0cnVlLCJjb21wcmVzcyI6dHJ1ZSwiaW1hZ2VzIjp7ImRldmljZVNpemVzIjpbNjQwLDc1MCw4MjgsMTA4MCwxMjAwLDE5MjAsMjA0OCwzODQwXSwiaW1hZ2VTaXplcyI6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSwicGF0aCI6Ii9fbmV4dC9pbWFnZSIsImxvYWRlciI6ImRlZmF1bHQiLCJsb2FkZXJGaWxlIjoiIiwiZG9tYWlucyI6W10sImRpc2FibGVTdGF0aWNJbWFnZXMiOmZhbHNlLCJtaW5pbXVtQ2FjaGVUVEwiOjYwLCJmb3JtYXRzIjpbImltYWdlL3dlYnAiXSwiZGFuZ2Vyb3VzbHlBbGxvd1NWRyI6ZmFsc2UsImNvbnRlbnRTZWN1cml0eVBvbGljeSI6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsImNvbnRlbnREaXNwb3NpdGlvblR5cGUiOiJhdHRhY2htZW50IiwicmVtb3RlUGF0dGVybnMiOltdLCJ1bm9wdGltaXplZCI6ZmFsc2V9LCJkZXZJbmRpY2F0b3JzIjp7ImFwcElzclN0YXR1cyI6dHJ1ZSwiYnVpbGRBY3Rpdml0eSI6dHJ1ZSwiYnVpbGRBY3Rpdml0eVBvc2l0aW9uIjoiYm90dG9tLXJpZ2h0In0sIm9uRGVtYW5kRW50cmllcyI6eyJtYXhJbmFjdGl2ZUFnZSI6NjAwMDAsInBhZ2VzQnVmZmVyTGVuZ3RoIjo1fSwiYW1wIjp7ImNhbm9uaWNhbEJhc2UiOiIifSwiYmFzZVBhdGgiOiIiLCJzYXNzT3B0aW9ucyI6e30sInRyYWlsaW5nU2xhc2giOmZhbHNlLCJpMThuIjpudWxsLCJwcm9kdWN0aW9uQnJvd3NlclNvdXJjZU1hcHMiOmZhbHNlLCJleGNsdWRlRGVmYXVsdE1vbWVudExvY2FsZXMiOnRydWUsInNlcnZlclJ1bnRpbWVDb25maWciOnt9LCJwdWJsaWNSdW50aW1lQ29uZmlnIjp7fSwicmVhY3RQcm9kdWN0aW9uUHJvZmlsaW5nIjpmYWxzZSwicmVhY3RTdHJpY3RNb2RlIjpudWxsLCJyZWFjdE1heEhlYWRlcnNMZW5ndGgiOjYwMDAsImh0dHBBZ2VudE9wdGlvbnMiOnsia2VlcEFsaXZlIjp0cnVlfSwibG9nZ2luZyI6e30sInN0YXRpY1BhZ2VHZW5lcmF0aW9uVGltZW91dCI6NjAsIm1vZHVsYXJpemVJbXBvcnRzIjp7IkBtdWkvaWNvbnMtbWF0ZXJpYWwiOnsidHJhbnNmb3JtIjoiQG11aS9pY29ucy1tYXRlcmlhbC97e21lbWJlcn19In0sImxvZGFzaCI6eyJ0cmFuc2Zvcm0iOiJsb2Rhc2gve3ttZW1iZXJ9fSJ9fSwib3V0cHV0RmlsZVRyYWNpbmdSb290IjoiL3RtcC9uZXh0LWluc3RhbGwtMDUwODEwNjkzOTJmZWJmZmJmNWU3MTZiMDVhYTQ4MDllZDVhZWVhOTFlMTIxZmFkZWZlZjNjY2Q3NzZmNmQ3MyIsImV4cGVyaW1lbnRhbCI6eyJjYWNoZUxpZmUiOnsiZGVmYXVsdCI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo5MDAsImV4cGlyZSI6NDI5NDk2NzI5NH0sInNlY29uZHMiOnsic3RhbGUiOjAsInJldmFsaWRhdGUiOjEsImV4cGlyZSI6NjB9LCJtaW51dGVzIjp7InN0YWxlIjozMDAsInJldmFsaWRhdGUiOjYwLCJleHBpcmUiOjM2MDB9LCJob3VycyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjozNjAwLCJleHBpcmUiOjg2NDAwfSwiZGF5cyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo4NjQwMCwiZXhwaXJlIjo2MDQ4MDB9LCJ3ZWVrcyI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjo2MDQ4MDAsImV4cGlyZSI6MjU5MjAwMH0sIm1heCI6eyJzdGFsZSI6MzAwLCJyZXZhbGlkYXRlIjoyNTkyMDAwLCJleHBpcmUiOjQyOTQ5NjcyOTR9fSwiY2FjaGVIYW5kbGVycyI6e30sImNzc0NodW5raW5nIjp0cnVlLCJtdWx0aVpvbmVEcmFmdE1vZGUiOmZhbHNlLCJhcHBOYXZGYWlsSGFuZGxpbmciOmZhbHNlLCJwcmVyZW5kZXJFYXJseUV4aXQiOnRydWUsInNlcnZlck1pbmlmaWNhdGlvbiI6dHJ1ZSwic2VydmVyU291cmNlTWFwcyI6ZmFsc2UsImxpbmtOb1RvdWNoU3RhcnQiOmZhbHNlLCJjYXNlU2Vuc2l0aXZlUm91dGVzIjpmYWxzZSwiY2xpZW50U2VnbWVudENhY2hlIjpmYWxzZSwicHJlbG9hZEVudHJpZXNPblN0YXJ0Ijp0cnVlLCJjbGllbnRSb3V0ZXJGaWx0ZXIiOnRydWUsImNsaWVudFJvdXRlckZpbHRlclJlZGlyZWN0cyI6ZmFsc2UsImZldGNoQ2FjaGVLZXlQcmVmaXgiOiIiLCJtaWRkbGV3YXJlUHJlZmV0Y2giOiJmbGV4aWJsZSIsIm9wdGltaXN0aWNDbGllbnRDYWNoZSI6dHJ1ZSwibWFudWFsQ2xpZW50QmFzZVBhdGgiOmZhbHNlLCJjcHVzIjoxOSwibWVtb3J5QmFzZWRXb3JrZXJzQ291bnQiOmZhbHNlLCJpbWdPcHRDb25jdXJyZW5jeSI6bnVsbCwiaW1nT3B0VGltZW91dEluU2Vjb25kcyI6NywiaW1nT3B0TWF4SW5wdXRQaXhlbHMiOjI2ODQwMjY4OSwiaW1nT3B0U2VxdWVudGlhbFJlYWQiOm51bGwsImlzckZsdXNoVG9EaXNrIjp0cnVlLCJ3b3JrZXJUaHJlYWRzIjpmYWxzZSwib3B0aW1pemVDc3MiOmZhbHNlLCJuZXh0U2NyaXB0V29ya2VycyI6ZmFsc2UsInNjcm9sbFJlc3RvcmF0aW9uIjpmYWxzZSwiZXh0ZXJuYWxEaXIiOmZhbHNlLCJkaXNhYmxlT3B0aW1pemVkTG9hZGluZyI6ZmFsc2UsImd6aXBTaXplIjp0cnVlLCJjcmFDb21wYXQiOmZhbHNlLCJlc21FeHRlcm5hbHMiOnRydWUsImZ1bGx5U3BlY2lmaWVkIjpmYWxzZSwic3djVHJhY2VQcm9maWxpbmciOmZhbHNlLCJmb3JjZVN3Y1RyYW5zZm9ybXMiOmZhbHNlLCJsYXJnZVBhZ2VEYXRhQnl0ZXMiOjEyODAwMCwidHVyYm8iOnsicm9vdCI6Ii90bXAvbmV4dC1pbnN0YWxsLTA1MDgxMDY5MzkyZmViZmZiZjVlNzE2YjA1YWE0ODA5ZWQ1YWVlYTkxZTEyMWZhZGVmZWYzY2NkNzc2ZjZkNzMifSwidHlwZWRSb3V0ZXMiOmZhbHNlLCJ0eXBlZEVudiI6ZmFsc2UsInBhcmFsbGVsU2VydmVyQ29tcGlsZXMiOmZhbHNlLCJwYXJhbGxlbFNlcnZlckJ1aWxkVHJhY2VzIjpmYWxzZSwicHByIjpmYWxzZSwiYXV0aEludGVycnVwdHMiOmZhbHNlLCJyZWFjdE93bmVyU3RhY2siOmZhbHNlLCJ3ZWJwYWNrTWVtb3J5T3B0aW1pemF0aW9ucyI6ZmFsc2UsIm9wdGltaXplU2VydmVyUmVhY3QiOnRydWUsInVzZUVhcmx5SW1wb3J0IjpmYWxzZSwic3RhbGVUaW1lcyI6eyJkeW5hbWljIjowLCJzdGF0aWMiOjMwMH0sImFmdGVyIjpmYWxzZSwic2VydmVyQ29tcG9uZW50c0htckNhY2hlIjp0cnVlLCJzdGF0aWNHZW5lcmF0aW9uTWF4Q29uY3VycmVuY3kiOjgsInN0YXRpY0dlbmVyYXRpb25NaW5QYWdlc1BlcldvcmtlciI6MjUsImR5bmFtaWNJTyI6ZmFsc2UsImlubGluZUNzcyI6ZmFsc2UsIm9wdGltaXplUGFja2FnZUltcG9ydHMiOlsibHVjaWRlLXJlYWN0IiwiZGF0ZS1mbnMiLCJsb2Rhc2gtZXMiLCJyYW1kYSIsImFudGQiLCJyZWFjdC1ib290c3RyYXAiLCJhaG9va3MiLCJAYW50LWRlc2lnbi9pY29ucyIsIkBoZWFkbGVzc3VpL3JlYWN0IiwiQGhlYWRsZXNzdWktZmxvYXQvcmVhY3QiLCJAaGVyb2ljb25zL3JlYWN0LzIwL3NvbGlkIiwiQGhlcm9pY29ucy9yZWFjdC8yNC9zb2xpZCIsIkBoZXJvaWNvbnMvcmVhY3QvMjQvb3V0bGluZSIsIkB2aXN4L3Zpc3giLCJAdHJlbW9yL3JlYWN0IiwicnhqcyIsIkBtdWkvbWF0ZXJpYWwiLCJAbXVpL2ljb25zLW1hdGVyaWFsIiwicmVjaGFydHMiLCJyZWFjdC11c2UiLCJlZmZlY3QiLCJAZWZmZWN0L3NjaGVtYSIsIkBlZmZlY3QvcGxhdGZvcm0iLCJAZWZmZWN0L3BsYXRmb3JtLW5vZGUiLCJAZWZmZWN0L3BsYXRmb3JtLWJyb3dzZXIiLCJAZWZmZWN0L3BsYXRmb3JtLWJ1biIsIkBlZmZlY3Qvc3FsIiwiQGVmZmVjdC9zcWwtbXNzcWwiLCJAZWZmZWN0L3NxbC1teXNxbDIiLCJAZWZmZWN0L3NxbC1wZyIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtbm9kZSIsIkBlZmZlY3Qvc3FsLXNxdWxpdGUtYnVuIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS13YXNtIiwiQGVmZmVjdC9zcWwtc3F1bGl0ZS1yZWFjdC1uYXRpdmUiLCJAZWZmZWN0L3JwYyIsIkBlZmZlY3QvcnBjLWh0dHAiLCJAZWZmZWN0L3R5cGVjbGFzcyIsIkBlZmZlY3QvZXhwZXJpbWVudGFsIiwiQGVmZmVjdC9vcGVudGVsZW1ldHJ5IiwiQG1hdGVyaWFsLXVpL2NvcmUiLCJAbWF0ZXJpYWwtdWkvaWNvbnMiLCJAdGFibGVyL2ljb25zLXJlYWN0IiwibXVpLWNvcmUiLCJyZWFjdC1pY29ucy9haSIsInJlYWN0LWljb25zL2JpIiwicmVhY3QtaWNvbnMvYnMiLCJyZWFjdC1pY29ucy9jZyIsInJlYWN0LWljb25zL2NpIiwicmVhY3QtaWNvbnMvZGkiLCJyZWFjdC1pY29ucy9mYSIsInJlYWN0LWljb25zL2ZhNiIsInJlYWN0LWljb25zL2ZjIiwicmVhY3QtaWNvbnMvZmkiLCJyZWFjdC1pY29ucy9naSIsInJlYWN0LWljb25zL2dvIiwicmVhY3QtaWNvbnMvZ3IiLCJyZWFjdC1pY29ucy9oaSIsInJlYWN0LWljb25zL2hpMiIsInJlYWN0LWljb25zL2ltIiwicmVhY3QtaWNvbnMvaW8iLCJyZWFjdC1pY29ucy9pbzUiLCJyZWFjdC1pY29ucy9saWEiLCJyZWFjdC1pY29ucy9saWIiLCJyZWFjdC1pY29ucy9sdSIsInJlYWN0LWljb25zL21kIiwicmVhY3QtaWNvbnMvcGkiLCJyZWFjdC1pY29ucy9yaSIsInJlYWN0LWljb25zL3J4IiwicmVhY3QtaWNvbnMvc2kiLCJyZWFjdC1pY29ucy9zbCIsInJlYWN0LWljb25zL3RiIiwicmVhY3QtaWNvbnMvdGZpIiwicmVhY3QtaWNvbnMvdGkiLCJyZWFjdC1pY29ucy92c2MiLCJyZWFjdC1pY29ucy93aSJdfSwiYnVuZGxlUGFnZXNSb3V0ZXJEZXBlbmRlbmNpZXMiOmZhbHNlLCJjb25maWdGaWxlIjoiL3RtcC9uZXh0LWluc3RhbGwtMDUwODEwNjkzOTJmZWJmZmJmNWU3MTZiMDVhYTQ4MDllZDVhZWVhOTFlMTIxZmFkZWZlZjNjY2Q3NzZmNmQ3My9uZXh0LmNvbmZpZy5qcyIsImNvbmZpZ0ZpbGVOYW1lIjoibmV4dC5jb25maWcuanMifQ==","pagesType":"app","appDirLoader":"bmV4dC1hcHAtbG9hZGVyP25hbWU9YXBwJTJGZXhwb3J0cyUyRmxpYnJhcnktY29kZSUyRnJlYWN0LWRvbS1zZXJ2ZXItZWRnZS1pbXBsaWNpdCUyRnBhZ2UmcGFnZT0lMkZleHBvcnRzJTJGbGlicmFyeS1jb2RlJTJGcmVhY3QtZG9tLXNlcnZlci1lZGdlLWltcGxpY2l0JTJGcGFnZSZhcHBQYXRocz0lMkZleHBvcnRzJTJGbGlicmFyeS1jb2RlJTJGcmVhY3QtZG9tLXNlcnZlci1lZGdlLWltcGxpY2l0JTJGcGFnZSZwYWdlUGF0aD1wcml2YXRlLW5leHQtYXBwLWRpciUyRmV4cG9ydHMlMkZsaWJyYXJ5LWNvZGUlMkZyZWFjdC1kb20tc2VydmVyLWVkZ2UtaW1wbGljaXQlMkZwYWdlLmpzJmFwcERpcj0lMkZ0bXAlMkZuZXh0LWluc3RhbGwtMDUwODEwNjkzOTJmZWJmZmJmNWU3MTZiMDVhYTQ4MDllZDVhZWVhOTFlMTIxZmFkZWZlZjNjY2Q3NzZmNmQ3MyUyRmFwcCZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJnJvb3REaXI9JTJGdG1wJTJGbmV4dC1pbnN0YWxsLTA1MDgxMDY5MzkyZmViZmZiZjVlNzE2YjA1YWE0ODA5ZWQ1YWVlYTkxZTEyMWZhZGVmZWYzY2NkNzc2ZjZkNzMmaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0Qh","sriEnabled":false,"middlewareConfig":"e30=","cacheHandlers":"{}"}!
source: null

  604 |     )
  605 |
> 606 |     await assertNoRedbox(browser)
      |     ^
  607 |     if (isTurbopack) {
  608 |       if (isReactExperimental) {
  609 |         expect(await browser.elementByCss('main').text())

  at Object.<anonymous> (development/app-dir/ssr-in-rsc/ssr-in-rsc.test.ts:606:5)

Read more about building and testing Next.js in contributing.md.

@lubieowoce lubieowoce force-pushed the lubieowoce/headers-in-after-update branch from 9a8ade7 to b637690 Compare December 3, 2024 11:31
@lubieowoce lubieowoce force-pushed the lubieowoce/after-error-overlay branch from c798207 to 54181f4 Compare December 3, 2024 11:31
@lubieowoce lubieowoce force-pushed the lubieowoce/headers-in-after-update branch from b637690 to e9da061 Compare December 3, 2024 11:32
@lubieowoce lubieowoce force-pushed the lubieowoce/after-error-overlay branch from 54181f4 to 855f8c0 Compare December 3, 2024 11:32
@lubieowoce lubieowoce force-pushed the lubieowoce/headers-in-after-update branch from e9da061 to 761fa76 Compare December 3, 2024 16:49
Base automatically changed from lubieowoce/headers-in-after-update to canary December 3, 2024 17:40
@lubieowoce lubieowoce force-pushed the lubieowoce/after-error-overlay branch from 855f8c0 to e5df5f1 Compare December 3, 2024 19:03
@@ -501,13 +516,24 @@ function processMessage(
// TODO-APP: potentially only refresh if the currently viewed page was added/removed.
return router.hmrRefresh()
}
case HMR_ACTIONS_SENT_TO_BROWSER.AFTER_ERROR: {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was assuming we just console.error these. That way we cover Terminal, Node.js debuggers and the error overlay.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as discussed offline, the problem is that after errors occur after everything else, so we can't rely on e.g. react's error replaying to get them here, we need to push them (technically the client could also try to pull, maybe that's a better strategy?)

@lubieowoce lubieowoce force-pushed the lubieowoce/after-error-overlay branch 2 times, most recently from 1e3c813 to ae85cce Compare December 6, 2024 12:00
@lubieowoce lubieowoce changed the base branch from canary to lubieowoce/after-errors December 6, 2024 12:00
@lubieowoce lubieowoce force-pushed the lubieowoce/after-errors branch 2 times, most recently from 981f9b9 to 2601c8c Compare December 6, 2024 14:27
@lubieowoce lubieowoce force-pushed the lubieowoce/after-error-overlay branch from ae85cce to ef47933 Compare December 6, 2024 14:27
@lubieowoce lubieowoce force-pushed the lubieowoce/after-errors branch 2 times, most recently from c03f2a4 to c9a64d5 Compare December 6, 2024 19:05
@lubieowoce lubieowoce force-pushed the lubieowoce/after-error-overlay branch from ef47933 to bd6cb75 Compare December 6, 2024 19:05
@lubieowoce lubieowoce force-pushed the lubieowoce/after-errors branch from c9a64d5 to 8e57164 Compare December 6, 2024 19:20
@lubieowoce lubieowoce force-pushed the lubieowoce/after-error-overlay branch from bd6cb75 to 275eccc Compare December 6, 2024 19:20
@lubieowoce lubieowoce force-pushed the lubieowoce/after-errors branch from 8e57164 to 2313f46 Compare December 6, 2024 19:57
@lubieowoce lubieowoce force-pushed the lubieowoce/after-error-overlay branch from 275eccc to 5401626 Compare December 6, 2024 19:57
@lubieowoce lubieowoce force-pushed the lubieowoce/after-errors branch from 2313f46 to 4e9eb8c Compare December 10, 2024 11:30
@lubieowoce lubieowoce force-pushed the lubieowoce/after-errors branch from 4e9eb8c to 1b57ac1 Compare December 10, 2024 13:24
@lubieowoce lubieowoce force-pushed the lubieowoce/after-error-overlay branch from 5401626 to 06fde3b Compare December 10, 2024 13:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants