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

Stop hardcoding require('next/dist/compiled/react') #65122

Draft
wants to merge 1 commit into
base: canary
Choose a base branch
from

Conversation

eps1lon
Copy link
Member

@eps1lon eps1lon commented Apr 27, 2024

This will be picked up by our next alias in createWebpackAliases. Any subsequent alias of next/* would be ignored e.g. aliasing next/dist/compiled/react to the react-server entrypoint.

I also hope we don't actually need this since we're already aliasing react to next/dist/compiled/react in Webpack. At the same time we're not hardcoding next/dist/compiled/react-dom. This split in behavior is really confusing.

The alternate would be ensuring that our next alias becomes a fallback. Or list all the public entrypoints.
Or remove it entirely: #65123

Closes NEXT-3248

This will be picked up by our `next` alias in `createWebpackAliases`.
Any subsequent alias of `next/*` would be ignored e.g. aliasing `next/dist/compiled/react` to the react-server entrypoint.

I also hope we don't actually need this since we're already aliasing `react` to `next/dist/compiled/react` in Webpack.
At the same time we're not hardcoding `next/dist/compiled/react-dom`.
This split in behavior is really confusing.

The alternate would be ensuring that our `next` alias becomes a falback.
Or list all the public entrypoints.
Or remove it entirely.
@ijjk ijjk added created-by: Next.js team PRs by the Next.js team type: next labels Apr 27, 2024
@eps1lon eps1lon changed the title Stop hardcoding require('next/dist/compiled/react')` Stop hardcoding require('next/dist/compiled/react') Apr 27, 2024
@ijjk
Copy link
Member

ijjk commented Apr 27, 2024

Failing test suites

Commit: 4d78689

TURBOPACK=1 pnpm test test/integration/app-dir-export/test/dev-custom-dist-dir.test.ts (turbopack)

  • app dir - with output export and custom distDir (next dev) > should render properly
Expand output

● app dir - with output export and custom distDir (next dev) › should render properly

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

Expected: 200
Received: 500

  31 |   it('should render properly', async () => {
  32 |     const res = await fetchViaHTTP(appPort, '/')
> 33 |     expect(res.status).toBe(200)
     |                        ^
  34 |     expect(await res.text()).toContain('Home')
  35 |   })
  36 | })

  at Object.toBe (integration/app-dir-export/test/dev-custom-dist-dir.test.ts:33:24)

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

TURBOPACK=1 pnpm test test/integration/app-dir-export/test/config.test.ts (turbopack)

  • app dir - with output export (next dev / next build) > production mode > should error when running next export
Expand output

● app dir - with output export (next dev / next build) › production mode › should error when running next export

command failed with code 1 signal null
  ▲ Next.js 14.3.0-canary.29 (turbo)

   Creating an optimized production build ...
next-swc build: local built @next/swc from NEXT_TEST_NATIVE_DIR
   Building (0/11) ...
   Building (2/11) 
   Building (5/11) 
   Building (8/11) 
 ✓ Building (11/11)

> Build error occurred
Error: Turbopack build failed with 6 errors:
Page: {"type":"app","side":"server","page":"/another/[slug]/page"}
./packages/next/dist/compiled/react-dom/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'


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


Page: {"type":"app","side":"server","page":"/client/page"}
./packages/next/dist/compiled/react-dom/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'


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


Page: {"type":"app","side":"server","page":"/another/page"}
./packages/next/dist/compiled/react-dom/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'


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


Page: {"type":"app","side":"server","page":"/_not-found/page"}
./packages/next/dist/compiled/react-dom/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'


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


Page: {"type":"app","side":"server","page":"/image-import/page"}
./packages/next/dist/compiled/react-dom/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'


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


Page: {"type":"app","side":"server","page":"/page"}
./packages/next/dist/compiled/react-dom/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'


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

  927 |                 }
  928 |                 if (errors.length > 0) {
> 929 |                     throw new Error(`Turbopack build failed with ${errors.length} errors:\n${errors.map((e)=>{
      |                           ^
  930 |                         return 'Page: ' + e.page + '\n' + e.message;
  931 |                     }).join('\n')}`);
  932 |                 }

  at turbopackBuild (../packages/next/dist/build/index.js:929:27)
  at ../async /root/actions-runner/_work/next.js/next.js/packages/next/dist/build/index.js:1010:86
  at async Span.traceAsyncFn (../packages/next/dist/trace/trace.js:154:20)
  at async build (../packages/next/dist/build/index.js:371:9)
  at ChildProcess.<anonymous> (lib/next-test-utils.ts:284:11)

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

TURBOPACK=1 pnpm test test/integration/app-dynamic-error/test/index.test.ts (turbopack)

  • app-dynamic-error > production mode > throws an error when prerendering a page with config dynamic error
Expand output

● app-dynamic-error › production mode › throws an error when prerendering a page with config dynamic error

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

Expected substring: "Error occurred prerendering page \"/dynamic-error\""
Received string:    "
> Build error occurred
Error: Turbopack build failed with 2 errors:
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/dynamic-error/page\"}
./packages/next/dist/compiled/react-dom/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'··
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/_not-found/page\"}
./packages/next/dist/compiled/react-dom/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'··
https://nextjs.org/docs/messages/module-not-found··

  927 |                 }
  928 |                 if (errors.length > 0) {
> 929 |                     throw new Error(`Turbopack build failed with ${errors.length} errors:\n${errors.map((e)=>{
      |                           ^
  930 |                         return 'Page: ' + e.page + '\n' + e.message;
  931 |                     }).join('\n')}`);
  932 |                 }

  at turbopackBuild (../packages/next/dist/build/index.js:929:27)
  at ../async /root/actions-runner/_work/next.js/next.js/packages/next/dist/build/index.js:1010:86
  at async Span.traceAsyncFn (../packages/next/dist/trace/trace.js:154:20)
  at async build (../packages/next/dist/build/index.js:371:9)
  "
  at Object.toContain (integration/app-dynamic-error/test/index.test.ts:13:24)

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

TURBOPACK=1 pnpm test test/integration/app-config-asset-prefix/test/index.test.js (turbopack)

  • App assetPrefix config > should render correctly with assetPrefix: "/"
Expand output

● App assetPrefix config › should render correctly with assetPrefix: "/"

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

Expected: false
Received: true

  26 |     try {
  27 |       await waitFor(2000)
> 28 |       expect(await hasRedbox(browser)).toBe(false)
     |                                        ^
  29 |       const title = await browser.elementById('title').text()
  30 |       expect(title).toBe('IndexPage')
  31 |     } finally {

  at Object.toBe (integration/app-config-asset-prefix/test/index.test.js:28:40)

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

TURBOPACK=1 pnpm test-start test/e2e/app-dir/ppr-errors/ppr-errors.test.ts (turbopack)

  • ppr build errors > production mode > outside of a suspense boundary > should fail the build for uncaught errors
  • ppr build errors > production mode > when a postpone call is caught and logged it should > should include a message telling why
  • ppr build errors > production mode > within a suspense boundary > should fail the build for uncaught prerender errors
Expand output

● ppr build errors › production mode › within a suspense boundary › should fail the build for uncaught prerender errors

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

Expected substring: "Error occurred prerendering page \"/regular-error-suspense-boundary\"."
Received string:    "
> Build error occurred
Error: Turbopack build failed with 8 errors:
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/_not-found/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/no-suspense-boundary/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/re-throwing-error/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/regular-error/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/logging-error/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/no-suspense-boundary-re-throwing-error/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/regular-error-suspense-boundary/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··

  927 |                 }
  928 |                 if (errors.length > 0) {
> 929 |                     throw new Error(`Turbopack build failed with ${errors.length} errors:\n${errors.map((e)=>{
      |                           ^
  930 |                         return 'Page: ' + e.page + '\n' + e.message;
  931 |                     }).join('\n')}`);
  932 |                 }

  at turbopackBuild (../packages/next/dist/build/index.js:929:27)
  at ../async /root/actions-runner/_work/next.js/next.js/packages/next/dist/build/index.js:1010:86
  at async Span.traceAsyncFn (../packages/next/dist/trace/trace.js:154:20)
  at async build (../packages/next/dist/build/index.js:371:9)
  "
  at Object.toContain (e2e/app-dir/ppr-errors/ppr-errors.test.ts:21:26)

● ppr build errors › production mode › outside of a suspense boundary › should fail the build for uncaught errors

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

Expected substring: "Error occurred prerendering page \"/regular-error\"."
Received string:    "
> Build error occurred
Error: Turbopack build failed with 8 errors:
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/_not-found/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/no-suspense-boundary/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/re-throwing-error/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/regular-error/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/logging-error/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/no-suspense-boundary-re-throwing-error/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/regular-error-suspense-boundary/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··
Page: {\"type\":\"app\",\"side\":\"server\",\"page\":\"/page\"}
./packages/next/dist/compiled/react-dom-experimental/cjs/react-dom.production.min.js:11:41
Module not found: Can't resolve 'scheduler'
   9 |  Modernizr 3.0.0pre (Custom Build) | MIT
  10 | */
> 11 | 'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function ca(){}var da={usingClientEntryPoint:!1,Events:null,ReactDOMCurrentDispatcher:{current:{prefetchDNS:ca,preconnect:ca,preload:ca,preloadModule:ca,preinitScript:ca,preinitStyle:ca,preinitModuleScript:ca}}};
     |                                         ^^^^^^^^^^^^^^^^^^^^
  12 | function u(a){var b=\"https://react.dev/errors/\"+a;if(1<arguments.length){b+=\"?args[]=\"+encodeURIComponent(arguments[1]);for(var c=2;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c])}return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}
  13 | var C=Object.assign,ea=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,fa=ea.ReactCurrentDispatcher,ha={pending:!1,data:null,method:null,action:null};function ia(){return fa.current.useHostTransitionStatus()}function ja(a,b,c){return fa.current.useFormState(a,b,c)}var ka=[],la=-1;function ma(a){return{current:a}}function na(a){0>la||(a.current=ka[la],ka[la]=null,la--)}function E(a,b){la++;ka[la]=a.current;a.current=b}
  14 | var oa=Symbol.for(\"react.element\"),pa=Symbol.for(\"react.portal\"),qa=Symbol.for(\"react.fragment\"),ra=Symbol.for(\"react.strict_mode\"),sa=Symbol.for(\"react.profiler\"),ta=Symbol.for(\"react.provider\"),ua=Symbol.for(\"react.consumer\"),va=Symbol.for(\"react.context\"),wa=Symbol.for(\"react.forward_ref\"),xa=Symbol.for(\"react.suspense\"),ya=Symbol.for(\"react.suspense_list\"),za=Symbol.for(\"react.memo\"),Aa=Symbol.for(\"react.lazy\"),Ba=Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");···
https://nextjs.org/docs/messages/module-not-found··

  927 |                 }
  928 |                 if (errors.length > 0) {
> 929 |                     throw new Error(`Turbopack build failed with ${errors.length} errors:\n${errors.map((e)=>{
      |                           ^
  930 |                         return 'Page: ' + e.page + '\n' + e.message;
  931 |                     }).join('\n')}`);
  932 |                 }

  at turbopackBuild (../packages/next/dist/build/index.js:929:27)
  at ../async /root/actions-runner/_work/next.js/next.js/packages/next/dist/build/index.js:1010:86
  at async Span.traceAsyncFn (../packages/next/dist/trace/trace.js:154:20)
  at async build (../packages/next/dist/build/index.js:371:9)
  "
  at Object.toContain (e2e/app-dir/ppr-errors/ppr-errors.test.ts:32:26)

● ppr build errors › production mode › when a postpone call is caught and logged it should › should include a message telling why

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

Expected substring: "User land logged error: Route /logging-error needs to bail out of prerendering at this point because it used cookies."
Received string:    "  ▲ Next.js 14.3.0-canary.29 (turbo)
  - Experiments (use with caution):
    · ppr·
   Creating an optimized production build ...
next-swc build: local built @next/swc from NEXT_TEST_NATIVE_DIR
   Building (0/9) ...
   Building (2/9)··
   Building (4/9)··
   Building (6/9)··
 ✓ Building (9/9)
"

  41 |       describe('when a postpone call is caught and logged it should', () => {
  42 |         it('should include a message telling why', async () => {
> 43 |           expect(stdout).toContain(
     |                          ^
  44 |             'User land logged error: Route /logging-error needs to bail out of prerendering at this point because it used cookies.'
  45 |           )
  46 |         })

  at Object.toContain (e2e/app-dir/ppr-errors/ppr-errors.test.ts:43:26)

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

TURBOPACK=1 pnpm test test/integration/app-dir-export/test/trailing-slash-dev.test.ts (turbopack)

  • app dir - with output export - trailing slash dev > development mode > should work in dev with trailingSlash 'false'
  • app dir - with output export - trailing slash dev > development mode > should work in dev with trailingSlash 'true'
Expand output

● app dir - with output export - trailing slash dev › development mode › should work in dev with trailingSlash 'false'

TIMED OUT: Home

Build Error

undefined

  686 |
  687 |   if (hardError) {
> 688 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  689 |   }
  690 |   return false
  691 | }

  at check (lib/next-test-utils.ts:688:11)
  at runTests (integration/app-dir-export/test/utils.ts:168:7)
  at integration/app-dir-export/test/trailing-slash-dev.test.ts:10:11

● app dir - with output export - trailing slash dev › development mode › should work in dev with trailingSlash 'true'

TIMED OUT: Home

Build Error

undefined

  686 |
  687 |   if (hardError) {
> 688 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  689 |   }
  690 |   return false
  691 | }

  at check (lib/next-test-utils.ts:688:11)
  at runTests (integration/app-dir-export/test/utils.ts:168:7)
  at integration/app-dir-export/test/trailing-slash-dev.test.ts:10:11

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

TURBOPACK=1 pnpm test-start test/production/app-dir/deopted-into-client-rendering-warning/deopted-into-client-rendering-warning.test.ts (turbopack)

  • should not show deopted into client rendering warning

Expand output

● should not show deopted into client rendering warning

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

Expected: 0
Received: 1

   6 |     stderr: true,
   7 |   })
>  8 |   expect(output.code).toBe(0)
     |                       ^
   9 |   expect(output.stderr).not.toContain(
  10 |     `Entire page / deopted into client-side rendering.`
  11 |   )

  at Object.toBe (production/app-dir/deopted-into-client-rendering-warning/deopted-into-client-rendering-warning.test.ts:8:23)

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

pnpm test-start test/e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts

  • parallel-routes-and-interception > parallel routes > should gracefully handle when two page segments match the children parallel slot
  • parallel-routes-and-interception > parallel routes > should throw a 404 when no matching parallel route is found
  • parallel-routes-and-interception > parallel routes > should render nested parallel routes
  • parallel-routes-and-interception > parallel routes > should support layout files in parallel routes
  • parallel-routes-and-interception > parallel routes > should only scroll to the parallel route that was navigated to
  • parallel-routes-and-interception > parallel routes > should apply the catch-all route to the parallel route if no matching route is found
  • parallel-routes-and-interception > parallel routes > should match the catch-all routes of the more specific path, if there is more than one catch-all route
  • parallel-routes-and-interception > parallel routes > should navigate with a link with prefetch=false
  • parallel-routes-and-interception > parallel routes > should display all parallel route params with useParams
  • parallel-routes-and-interception > parallel routes > should load CSS for a default page that exports another page
  • parallel-routes-and-interception > parallel routes > should handle a loading state
  • parallel-routes-and-interception > route intercepting > should render intercepted route
  • parallel-routes-and-interception > route intercepting > should render an intercepted route from a slot
  • parallel-routes-and-interception > route intercepting > should render an intercepted route at the top level from a nested path
  • parallel-routes-and-interception > route intercepting > should render intercepted route from a nested route
  • parallel-routes-and-interception > route intercepting > should re-render the layout on the server when it had a default child route
  • parallel-routes-and-interception > route intercepting > should render modal when paired with parallel routes
  • parallel-routes-and-interception > route intercepting > should support intercepting with beforeFiles rewrites
  • parallel-routes-and-interception > route intercepting > should support intercepting local dynamic sibling routes
  • parallel-routes-and-interception > route intercepting > should intercept on routes that contain hyphenated/special dynamic params
  • parallel-routes-and-interception > route intercepting > should not have /default paths in the prerender manifest
  • parallel-routes-and-interception > route intercepting with dynamic catch-all routes > should render intercepted route
  • parallel-routes-and-interception > route intercepting with dynamic optional catch-all routes > should render intercepted route
  • parallel-routes-and-interception > route intercepting with dynamic routes > should render intercepted route
Expand output

● parallel-routes-and-interception › parallel routes › should gracefully handle when two page segments match the children parallel slot

next build failed with code/signal 1

  89 |           if (code || signal)
  90 |             reject(
> 91 |               new Error(`next build failed with code/signal ${code || signal}`)
     |               ^
  92 |             )
  93 |           else resolve()
  94 |         })

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

● parallel-routes-and-interception › parallel routes › should throw a 404 when no matching parallel route is found

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:218:23)

● parallel-routes-and-interception › parallel routes › should render nested parallel routes

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:39203/parallel-side-bar/nested/deeper
Call log:
  - navigating to "http://localhost:39203/parallel-side-bar/nested/deeper", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:237:23)

● parallel-routes-and-interception › parallel routes › should support layout files in parallel routes

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:271:23)

● parallel-routes-and-interception › parallel routes › should only scroll to the parallel route that was navigated to

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:290:23)

● parallel-routes-and-interception › parallel routes › should apply the catch-all route to the parallel route if no matching route is found

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:302:23)

● parallel-routes-and-interception › parallel routes › should match the catch-all routes of the more specific path, if there is more than one catch-all route

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:334:23)

● parallel-routes-and-interception › parallel routes › should navigate with a link with prefetch=false

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:365:23)

● parallel-routes-and-interception › parallel routes › should display all parallel route params with useParams

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:39203/parallel-dynamic/foo/bar
Call log:
  - navigating to "http://localhost:39203/parallel-dynamic/foo/bar", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:386:23)

● parallel-routes-and-interception › parallel routes › should load CSS for a default page that exports another page

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:400:23)

● parallel-routes-and-interception › parallel routes › should handle a loading state

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:428:23)

● parallel-routes-and-interception › route intercepting with dynamic routes › should render intercepted route

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:39203/intercepting-routes-dynamic/photos
Call log:
  - navigating to "http://localhost:39203/intercepting-routes-dynamic/photos", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:485:23)

● parallel-routes-and-interception › route intercepting with dynamic optional catch-all routes › should render intercepted route

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:39203/intercepting-routes-dynamic-catchall/photos
Call log:
  - navigating to "http://localhost:39203/intercepting-routes-dynamic-catchall/photos", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:523:23)

● parallel-routes-and-interception › route intercepting with dynamic catch-all routes › should render intercepted route

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:39203/intercepting-routes-dynamic-catchall/photos
Call log:
  - navigating to "http://localhost:39203/intercepting-routes-dynamic-catchall/photos", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:568:23)

● parallel-routes-and-interception › route intercepting › should render intercepted route

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:611:23)

● parallel-routes-and-interception › route intercepting › should render an intercepted route from a slot

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:648:23)

● parallel-routes-and-interception › route intercepting › should render an intercepted route at the top level from a nested path

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:678:23)

● parallel-routes-and-interception › route intercepting › should render intercepted route from a nested route

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:39203/intercepting-routes/feed/nested
Call log:
  - navigating to "http://localhost:39203/intercepting-routes/feed/nested", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:702:23)

● parallel-routes-and-interception › route intercepting › should re-render the layout on the server when it had a default child route

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:739:23)

● parallel-routes-and-interception › route intercepting › should render modal when paired with parallel routes

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:39203/intercepting-parallel-modal/vercel
Call log:
  - navigating to "http://localhost:39203/intercepting-parallel-modal/vercel", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:763:23)

● parallel-routes-and-interception › route intercepting › should support intercepting with beforeFiles rewrites

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:811:23)

● parallel-routes-and-interception › route intercepting › should support intercepting local dynamic sibling routes

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

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:825:23)

● parallel-routes-and-interception › route intercepting › should intercept on routes that contain hyphenated/special dynamic params

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:39203/interception-route-special-params/some-random-param
Call log:
  - navigating to "http://localhost:39203/interception-route-special-params/some-random-param", waiting until "load"

  274 |     opts?.beforePageLoad?.(page)
  275 |
> 276 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  277 |   }
  278 |
  279 |   back(options): BrowserInterface {

  at BrowserInterface.goto (lib/browsers/playwright.ts:276:16)
  at webdriver (lib/next-webdriver.ts:129:3)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-and-interception/parallel-routes-and-interception.test.ts:861:23)

● parallel-routes-and-interception › route intercepting › should not have /default paths in the prerender manifest

ENOENT: no such file or directory, open '/tmp/next-install-35ea6bc29428b8f46f31dfff31879279893856a6d9c591eba1cdfc35e0107e0c/.next/prerender-manifest.json'

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

TURBOPACK=1 pnpm test test/integration/next-image-new/app-dir/test/static.test.ts (turbopack)

  • Static Image Component Tests > development mode > Should allow an image with a static src to omit height and width
  • Static Image Component Tests > development mode > should have containing followed by for priority image
  • Static Image Component Tests > development mode > Should automatically provide an image height and width
  • Static Image Component Tests > development mode > should use width and height prop to override import
  • Static Image Component Tests > development mode > should use height prop to adjust both width and height
  • Static Image Component Tests > development mode > should use width prop to adjust both width and height
  • Static Image Component Tests > development mode > should add a data URL placeholder to an image
  • Static Image Component Tests > development mode > should add a blur placeholder a statically imported jpg
  • Static Image Component Tests > development mode > should add a blur placeholder a statically imported png
  • Static Image Component Tests > development mode > should add a blur placeholder a statically imported png with fill
  • Static Image Component Tests > development mode > should add placeholder with blurDataURL and fill
  • Static Image Component Tests > development mode > should add placeholder even when blurDataURL aspect ratio does not match width/height ratio
  • Static Image Component Tests > development mode > should load direct imported image
Expand output

● Static Image Component Tests › development mode › Should allow an image with a static src to omit height and width

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  23 |
  24 | const runTests = (isDev) => {
> 25 |   it('Should allow an image with a static src to omit height and width', async () => {
     |   ^
  26 |     expect(await browser.elementById('basic-static')).toBeTruthy()
  27 |     expect(await browser.elementById('blur-png')).toBeTruthy()
  28 |     expect(await browser.elementById('blur-webp')).toBeTruthy()

  at it (integration/next-image-new/app-dir/test/static.test.ts:25:3)
  at runTests (integration/next-image-new/app-dir/test/static.test.ts:279:7)
  at integration/next-image-new/app-dir/test/static.test.ts:266:58
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:248:1)

● Static Image Component Tests › development mode › should have containing followed by for priority image

expect(received).toMatch(expected)

Matcher error: received value must be a string

Received has value: undefined

  89 |       })
  90 |     expect(metaViewport.attribs.content).toContain('width=device-width')
> 91 |     expect(linkPreload.attribs.imagesrcset).toMatch(
     |                                             ^
  92 |       /%2F_next%2Fstatic%2Fmedia%2Ftest-rect\.(.*)\.jpg/g
  93 |     )
  94 |     expect(metaViewport.index).toBeLessThan(linkPreload.index)

  at Object.toMatch (integration/next-image-new/app-dir/test/static.test.ts:91:45)

● Static Image Component Tests › development mode › Should automatically provide an image height and width

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

Expected: "400"
Received: undefined

   96 |   it('Should automatically provide an image height and width', async () => {
   97 |     const img = $('#basic-non-static')
>  98 |     expect(img.attr('width')).toBe('400')
      |                               ^
   99 |     expect(img.attr('height')).toBe('300')
  100 |   })
  101 |   it('should use width and height prop to override import', async () => {

  at Object.toBe (integration/next-image-new/app-dir/test/static.test.ts:98:31)

● Static Image Component Tests › development mode › should use width and height prop to override import

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

Expected: "150"
Received: undefined

  101 |   it('should use width and height prop to override import', async () => {
  102 |     const img = $('#defined-width-and-height')
> 103 |     expect(img.attr('width')).toBe('150')
      |                               ^
  104 |     expect(img.attr('height')).toBe('150')
  105 |   })
  106 |   it('should use height prop to adjust both width and height', async () => {

  at Object.toBe (integration/next-image-new/app-dir/test/static.test.ts:103:31)

● Static Image Component Tests › development mode › should use height prop to adjust both width and height

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

Expected: "600"
Received: undefined

  106 |   it('should use height prop to adjust both width and height', async () => {
  107 |     const img = $('#defined-height-only')
> 108 |     expect(img.attr('width')).toBe('600')
      |                               ^
  109 |     expect(img.attr('height')).toBe('350')
  110 |   })
  111 |   it('should use width prop to adjust both width and height', async () => {

  at Object.toBe (integration/next-image-new/app-dir/test/static.test.ts:108:31)

● Static Image Component Tests › development mode › should use width prop to adjust both width and height

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

Expected: "400"
Received: undefined

  111 |   it('should use width prop to adjust both width and height', async () => {
  112 |     const img = $('#defined-width-only')
> 113 |     expect(img.attr('width')).toBe('400')
      |                               ^
  114 |     expect(img.attr('height')).toBe('233')
  115 |   })
  116 |

  at Object.toBe (integration/next-image-new/app-dir/test/static.test.ts:113:31)

● Static Image Component Tests › development mode › should add a data URL placeholder to an image

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

Expected: "color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml;base64,Cjxzdmcgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImciPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMzMzIiBvZmZzZXQ9IjIwJSIgLz4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzIyMiIgb2Zmc2V0PSI1MCUiIC8+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMzMzMiIG9mZnNldD0iNzAlIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPHJlY3Qgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9IiMzMzMiIC8+CiAgPHJlY3QgaWQ9InIiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJ1cmwoI2cpIiAvPgogIDxhbmltYXRlIHhsaW5rOmhyZWY9IiNyIiBhdHRyaWJ1dGVOYW1lPSJ4IiBmcm9tPSItMjAwIiB0bz0iMjAwIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgIC8+Cjwvc3ZnPg==\")"
Received: undefined

  117 |   it('should add a data URL placeholder to an image', async () => {
  118 |     const style = $('#data-url-placeholder').attr('style')
> 119 |     expect(style).toBe(
      |                   ^
  120 |       `color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url("data:image/svg+xml;base64,Cjxzdmcgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9ImciPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMzMzIiBvZmZzZXQ9IjIwJSIgLz4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzIyMiIgb2Zmc2V0PSI1MCUiIC8+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMzMzMiIG9mZnNldD0iNzAlIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPHJlY3Qgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIGZpbGw9IiMzMzMiIC8+CiAgPHJlY3QgaWQ9InIiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJ1cmwoI2cpIiAvPgogIDxhbmltYXRlIHhsaW5rOmhyZWY9IiNyIiBhdHRyaWJ1dGVOYW1lPSJ4IiBmcm9tPSItMjAwIiB0bz0iMjAwIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgIC8+Cjwvc3ZnPg==")`
  121 |     )
  122 |   })

  at Object.toBe (integration/next-image-new/app-dir/test/static.test.ts:119:19)

● Static Image Component Tests › development mode › should add a blur placeholder a statically imported jpg

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

Matcher error: received value must not be null nor undefined

Received has value: undefined

  126 |     if (isDev) {
  127 |       if (process.env.TURBOPACK) {
> 128 |         expect(style).toContain(
      |                       ^
  129 |           `color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url("data:image/svg+xml`
  130 |         )
  131 |       } else {

  at Object.toContain (integration/next-image-new/app-dir/test/static.test.ts:128:23)

● Static Image Component Tests › development mode › should add a blur placeholder a statically imported png

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

Matcher error: received value must not be null nor undefined

Received has value: undefined

  151 |     if (isDev) {
  152 |       if (process.env.TURBOPACK) {
> 153 |         expect(style).toContain(
      |                       ^
  154 |           `color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url("data:image/svg+xml`
  155 |         )
  156 |       } else {

  at Object.toContain (integration/next-image-new/app-dir/test/static.test.ts:153:23)

● Static Image Component Tests › development mode › should add a blur placeholder a statically imported png with fill

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

Matcher error: received value must not be null nor undefined

Received has value: undefined

  176 |     if (isDev) {
  177 |       if (process.env.TURBOPACK) {
> 178 |         expect(style).toContain(
      |                       ^
  179 |           `position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url("data:image/svg+xml`
  180 |         )
  181 |       } else {

  at Object.toContain (integration/next-image-new/app-dir/test/static.test.ts:178:23)

● Static Image Component Tests › development mode › should add placeholder with blurDataURL and fill

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

Expected: "position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' %3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='none' style='filter: url(%23b);' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNM/s/wBwAFjwJgf8HDLgAAAABJRU5ErkJggg=='/%3E%3C/svg%3E\")"
Received: undefined

  199 |   it('should add placeholder with blurDataURL and fill', async () => {
  200 |     const style = $('#blurdataurl-fill').attr('style')
> 201 |     expect(style).toBe(
      |                   ^
  202 |       `position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' %3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='none' style='filter: url(%23b);' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNM/s/wBwAFjwJgf8HDLgAAAABJRU5ErkJggg=='/%3E%3C/svg%3E")`
  203 |     )
  204 |   })

  at Object.toBe (integration/next-image-new/app-dir/test/static.test.ts:201:19)

● Static Image Component Tests › development mode › should add placeholder even when blurDataURL aspect ratio does not match width/height ratio

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

Expected: "color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 200'%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='none' style='filter: url(%23b);' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNM/s/wBwAFjwJgf8HDLgAAAABJRU5ErkJggg=='/%3E%3C/svg%3E\")"
Received: undefined

  206 |   it('should add placeholder even when blurDataURL aspect ratio does not match width/height ratio', async () => {
  207 |     const style = $('#blurdataurl-ratio').attr('style')
> 208 |     expect(style).toBe(
      |                   ^
  209 |       `color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 200'%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='none' style='filter: url(%23b);' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNM/s/wBwAFjwJgf8HDLgAAAABJRU5ErkJggg=='/%3E%3C/svg%3E")`
  210 |     )
  211 |   })

  at Object.toBe (integration/next-image-new/app-dir/test/static.test.ts:208:19)

● Static Image Component Tests › development mode › should load direct imported image

thrown: "Exceeded timeout of 60000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  211 |   })
  212 |
> 213 |   it('should load direct imported image', async () => {
      |   ^
  214 |     const src = await browser.elementById('basic-static').getAttribute('src')
  215 |     expect(src).toMatch(
  216 |       /_next\/image\?url=%2F_next%2Fstatic%2Fmedia%2Ftest-rect(.+)\.jpg&w=828&q=75/

  at it (integration/next-image-new/app-dir/test/static.test.ts:213:3)
  at runTests (integration/next-image-new/app-dir/test/static.test.ts:279:7)
  at integration/next-image-new/app-dir/test/static.test.ts:266:58
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:248:1)

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

@ijjk
Copy link
Member

ijjk commented Apr 27, 2024

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js sebbie/no-hardcoded-react-alias Change
buildDuration 15.6s 14s N/A
buildDurationCached 8s 6.7s N/A
nodeModulesSize 360 MB 359 MB N/A
nextStartRea..uration (ms) 389ms 389ms
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary vercel/next.js sebbie/no-hardcoded-react-alias Change
1103-HASH.js gzip 31.8 kB 32 kB ⚠️ +142 B
1a9f679d-HASH.js gzip 53.5 kB 53.5 kB
335-HASH.js gzip 5.09 kB 5.09 kB N/A
7953.HASH.js gzip 169 B 169 B
framework-HASH.js gzip 45.2 kB 45.2 kB
main-app-HASH.js gzip 231 B 228 B N/A
main-HASH.js gzip 31.5 kB 31.5 kB N/A
webpack-HASH.js gzip 1.65 kB 1.65 kB N/A
Overall change 131 kB 131 kB ⚠️ +142 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js sebbie/no-hardcoded-react-alias Change
polyfills-HASH.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary vercel/next.js sebbie/no-hardcoded-react-alias Change
_app-HASH.js gzip 192 B 193 B N/A
_error-HASH.js gzip 192 B 193 B N/A
amp-HASH.js gzip 507 B 511 B N/A
css-HASH.js gzip 341 B 343 B N/A
dynamic-HASH.js gzip 2.52 kB 2.52 kB
edge-ssr-HASH.js gzip 266 B 265 B N/A
head-HASH.js gzip 362 B 365 B N/A
hooks-HASH.js gzip 392 B 392 B
image-HASH.js gzip 4.32 kB 4.32 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.69 kB 2.7 kB N/A
routerDirect..HASH.js gzip 329 B 328 B N/A
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 324 B 324 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 4 kB 4 kB
Client Build Manifests
vercel/next.js canary vercel/next.js sebbie/no-hardcoded-react-alias Change
_buildManifest.js gzip 483 B 484 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js sebbie/no-hardcoded-react-alias Change
index.html gzip 527 B 527 B
link.html gzip 542 B 541 B N/A
withRouter.html gzip 524 B 524 B
Overall change 1.05 kB 1.05 kB
Edge SSR bundle Size
vercel/next.js canary vercel/next.js sebbie/no-hardcoded-react-alias Change
edge-ssr.js gzip 94.7 kB 94.7 kB N/A
page.js gzip 181 kB 179 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js sebbie/no-hardcoded-react-alias Change
middleware-b..fest.js gzip 624 B 625 B N/A
middleware-r..fest.js gzip 156 B 156 B
middleware.js gzip 25.7 kB 25.7 kB N/A
edge-runtime..pack.js gzip 839 B 839 B
Overall change 995 B 995 B
Next Runtimes
vercel/next.js canary vercel/next.js sebbie/no-hardcoded-react-alias Change
app-page-exp...dev.js gzip 171 kB 167 kB N/A
app-page-exp..prod.js gzip 98.4 kB 96.7 kB N/A
app-page-tur..prod.js gzip 99.9 kB 98.2 kB N/A
app-page-tur..prod.js gzip 94.3 kB 94.3 kB
app-page.run...dev.js gzip 157 kB 157 kB
app-page.run..prod.js gzip 93 kB 93 kB
app-route-ex...dev.js gzip 21.5 kB 21.5 kB
app-route-ex..prod.js gzip 15.2 kB 15.2 kB
app-route-tu..prod.js gzip 15.2 kB 15.2 kB
app-route-tu..prod.js gzip 15 kB 15 kB
app-route.ru...dev.js gzip 21.3 kB 21.3 kB
app-route.ru..prod.js gzip 15 kB 15 kB
pages-api-tu..prod.js gzip 9.55 kB 9.55 kB
pages-api.ru...dev.js gzip 9.82 kB 9.82 kB
pages-api.ru..prod.js gzip 9.55 kB 9.55 kB
pages-turbo...prod.js gzip 21.5 kB 21.5 kB
pages.runtim...dev.js gzip 22.1 kB 22.1 kB
pages.runtim..prod.js gzip 21.5 kB 21.5 kB
server.runti..prod.js gzip 51.6 kB 51.6 kB
Overall change 593 kB 593 kB
build cache
vercel/next.js canary vercel/next.js sebbie/no-hardcoded-react-alias Change
0.pack gzip 1.62 MB 1.62 MB N/A
index.pack gzip 113 kB 112 kB N/A
Overall change 0 B 0 B
Diff details
Diff for edge-ssr.js

Diff too large to display

Diff for 1103-HASH.js

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-exp..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Commit: 4d78689

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.

None yet

2 participants