Skip to content

Conversation

@lukesandberg
Copy link
Contributor

@lukesandberg lukesandberg commented Nov 29, 2025

During registration we can detect all trait methods with a single implementation and statically dispatch to it.

@ijjk ijjk added created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js. labels Nov 29, 2025
Copy link
Contributor Author

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

@lukesandberg lukesandberg changed the title Devirtualize some trait calls [turbopack] Devirtualize some trait calls Nov 29, 2025
@ijjk
Copy link
Member

ijjk commented Nov 29, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js devirtualize Change
buildDuration 16.8s 14.9s N/A
buildDurationCached 13.8s 10.7s N/A
nodeModulesSize 457 MB 457 MB
nextStartRea..uration (ms) 711ms 714ms N/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary vercel/next.js devirtualize Change
436-HASH.js gzip 5.32 kB 5.32 kB N/A
4779.HASH.js gzip 169 B 169 B
9760-HASH.js gzip 52.4 kB 52.7 kB ⚠️ +224 B
c57d0559-HASH.js gzip 62.3 kB 62.3 kB N/A
framework-HASH.js gzip 59.8 kB 59.8 kB
main-app-HASH.js gzip 254 B 256 B N/A
main-HASH.js gzip 38.3 kB 38.3 kB N/A
webpack-HASH.js gzip 1.69 kB 1.69 kB
Overall change 114 kB 114 kB ⚠️ +224 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js devirtualize Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js devirtualize Change
_app-HASH.js gzip 193 B 194 B N/A
_error-HASH.js gzip 182 B 182 B
css-HASH.js gzip 334 B 334 B
dynamic-HASH.js gzip 1.81 kB 1.81 kB N/A
edge-ssr-HASH.js gzip 255 B 254 B N/A
head-HASH.js gzip 350 B 351 B N/A
hooks-HASH.js gzip 384 B 384 B
image-HASH.js gzip 4.78 kB 4.77 kB N/A
index-HASH.js gzip 260 B 259 B N/A
link-HASH.js gzip 2.5 kB 2.5 kB N/A
routerDirect..HASH.js gzip 316 B 320 B N/A
script-HASH.js gzip 388 B 388 B
withRouter-HASH.js gzip 316 B 314 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 1.39 kB 1.39 kB
Client Build Manifests
vercel/next.js canary vercel/next.js devirtualize Change
_buildManifest.js gzip 718 B 720 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js devirtualize Change
index.html gzip 522 B 523 B N/A
link.html gzip 537 B 538 B N/A
withRouter.html gzip 520 B 519 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary vercel/next.js devirtualize Change
edge-ssr.js gzip 126 kB 126 kB N/A
page.js gzip 233 kB 234 kB ⚠️ +1.38 kB
Overall change 233 kB 234 kB ⚠️ +1.38 kB
Middleware size Overall increase ⚠️
vercel/next.js canary vercel/next.js devirtualize Change
middleware-b..fest.js gzip 636 B 637 B N/A
middleware-r..fest.js gzip 156 B 156 B
middleware.js gzip 32.8 kB 33 kB ⚠️ +166 B
edge-runtime..pack.js gzip 846 B 846 B
Overall change 33.8 kB 34 kB ⚠️ +166 B
Next Runtimes
vercel/next.js canary vercel/next.js devirtualize Change
app-page-exp...dev.js gzip 299 kB 299 kB
app-page-exp..prod.js gzip 154 kB 154 kB
app-page-tur...dev.js gzip 299 kB 299 kB N/A
app-page-tur..prod.js gzip 154 kB 154 kB
app-page-tur...dev.js gzip 296 kB 296 kB N/A
app-page-tur..prod.js gzip 152 kB 152 kB
app-page.run...dev.js gzip 296 kB 296 kB N/A
app-page.run..prod.js gzip 152 kB 152 kB
app-route-ex...dev.js gzip 68.5 kB 68.5 kB
app-route-ex..prod.js gzip 47.3 kB 47.3 kB
app-route-tu...dev.js gzip 68.5 kB 68.5 kB
app-route-tu..prod.js gzip 47.3 kB 47.3 kB
app-route-tu...dev.js gzip 68.1 kB 68.1 kB
app-route-tu..prod.js gzip 47.1 kB 47.1 kB
app-route.ru...dev.js gzip 68.1 kB 68.1 kB
app-route.ru..prod.js gzip 47.1 kB 47.1 kB
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 328 B 328 B
dist_client_...dev.js gzip 320 B 320 B
dist_client_...dev.js gzip 318 B 318 B
pages-api-tu...dev.js gzip 40.9 kB 40.9 kB
pages-api-tu..prod.js gzip 31 kB 31 kB
pages-api.ru...dev.js gzip 40.8 kB 40.8 kB
pages-api.ru..prod.js gzip 30.9 kB 30.9 kB
pages-turbo....dev.js gzip 50.3 kB 50.3 kB
pages-turbo...prod.js gzip 37.8 kB 37.8 kB
pages.runtim...dev.js gzip 50.3 kB 50.3 kB
pages.runtim..prod.js gzip 37.8 kB 37.8 kB
server.runti..prod.js gzip 60.5 kB 60.5 kB
Overall change 1.75 MB 1.75 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js devirtualize Change
0.pack gzip 3.1 MB 3.1 MB ⚠️ +4.16 kB
index.pack gzip 93.2 kB 93.9 kB ⚠️ +739 B
Overall change 3.19 MB 3.2 MB ⚠️ +4.9 kB
Diff details
Diff for page.js

Diff too large to display

Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for dynamic-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2291],
   {
-    /***/ 1033: /***/ (
+    /***/ 431: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/dynamic",
         function () {
-          return __webpack_require__(6490);
+          return __webpack_require__(8084);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 5323: /***/ (
+    /***/ 2699: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -60,7 +60,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(2223)
       );
-      const _loadablecontextsharedruntime = __webpack_require__(9289);
+      const _loadablecontextsharedruntime = __webpack_require__(3785);
       function resolve(obj) {
         return obj && obj.default ? obj.default : obj;
       }
@@ -293,73 +293,34 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 6490: /***/ (
+    /***/ 3785: /***/ (
       __unused_webpack_module,
-      __webpack_exports__,
+      exports,
       __webpack_require__
     ) => {
       "use strict";
-      __webpack_require__.r(__webpack_exports__);
-      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
-        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
-        /* harmony export */
+      /* __next_internal_client_entry_do_not_use__  cjs */
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
       });
-      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(1503);
-      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(7320);
-      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_dynamic__WEBPACK_IMPORTED_MODULE_1__
-        );
-
-      const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
-        () =>
-          __webpack_require__
-            .e(/* import() */ 4779)
-            .then(__webpack_require__.bind(__webpack_require__, 4779))
-            .then((mod) => mod.Hello),
-        {
-          loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 4779],
-          },
-        }
+      Object.defineProperty(exports, "LoadableContext", {
+        enumerable: true,
+        get: function () {
+          return LoadableContext;
+        },
+      });
+      const _interop_require_default = __webpack_require__(1532);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(2223)
       );
-      const Page = () =>
-        /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
-          react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
-          {
-            children: [
-              /*#__PURE__*/ (0,
-              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
-                children: "testing next/dynamic size",
-              }),
-              /*#__PURE__*/ (0,
-              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
-                DynamicHello,
-                {}
-              ),
-            ],
-          }
-        );
-      var __N_SSP = true;
-      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
-
-      /***/
-    },
-
-    /***/ 7320: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(7340);
+      const LoadableContext = _react.default.createContext(null);
+      if (false) {
+      } //# sourceMappingURL=loadable-context.shared-runtime.js.map
 
       /***/
     },
 
-    /***/ 7340: /***/ (module, exports, __webpack_require__) => {
+    /***/ 6828: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -392,7 +353,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
         __webpack_require__(2223)
       );
       const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(5323)
+        __webpack_require__(2699)
       );
       const isServerSide = "object" === "undefined";
       // Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -492,29 +453,68 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 9289: /***/ (
+    /***/ 7514: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(6828);
+
+      /***/
+    },
+
+    /***/ 8084: /***/ (
       __unused_webpack_module,
-      exports,
+      __webpack_exports__,
       __webpack_require__
     ) => {
       "use strict";
-      /* __next_internal_client_entry_do_not_use__  cjs */
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "LoadableContext", {
-        enumerable: true,
-        get: function () {
-          return LoadableContext;
-        },
+      __webpack_require__.r(__webpack_exports__);
+      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
+        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
+        /* harmony export */
       });
-      const _interop_require_default = __webpack_require__(1532);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2223)
+      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+        __webpack_require__(1503);
+      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
+        __webpack_require__(7514);
+      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_dynamic__WEBPACK_IMPORTED_MODULE_1__
+        );
+
+      const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
+        () =>
+          __webpack_require__
+            .e(/* import() */ 9573)
+            .then(__webpack_require__.bind(__webpack_require__, 9573))
+            .then((mod) => mod.Hello),
+        {
+          loadableGenerated: {
+            webpack: () => [/*require.resolve*/ 9573],
+          },
+        }
       );
-      const LoadableContext = _react.default.createContext(null);
-      if (false) {
-      } //# sourceMappingURL=loadable-context.shared-runtime.js.map
+      const Page = () =>
+        /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
+          react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
+          {
+            children: [
+              /*#__PURE__*/ (0,
+              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
+                children: "testing next/dynamic size",
+              }),
+              /*#__PURE__*/ (0,
+              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+                DynamicHello,
+                {}
+              ),
+            ],
+          }
+        );
+      var __N_SSP = true;
+      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
 
       /***/
     },
@@ -524,7 +524,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(1033)
+      __webpack_exec__(431)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,24 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [676],
   {
-    /***/ 1819: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/edge-ssr",
-        function () {
-          return __webpack_require__(7521);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 7521: /***/ (
+    /***/ 983: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -37,13 +20,30 @@
 
       /***/
     },
+
+    /***/ 985: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/edge-ssr",
+        function () {
+          return __webpack_require__(983);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(1819)
+      __webpack_exec__(985)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [5350],
   {
-    /***/ 619: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/head",
-        function () {
-          return __webpack_require__(9891);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 7997: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(6705);
-
-      /***/
-    },
-
-    /***/ 9891: /***/ (
+    /***/ 1417: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -43,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1503);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(7997);
+        __webpack_require__(5171);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +49,40 @@
 
       /***/
     },
+
+    /***/ 1937: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/head",
+        function () {
+          return __webpack_require__(1417);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 5171: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(7505);
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(619)
+      __webpack_exec__(1937)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,24 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9804],
   {
-    /***/ 1679: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/hooks",
-        function () {
-          return __webpack_require__(4655);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 4655: /***/ (
+    /***/ 1598: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -76,13 +59,30 @@
 
       /***/
     },
+
+    /***/ 3925: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/hooks",
+        function () {
+          return __webpack_require__(1598);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(1679)
+      __webpack_exec__(3925)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for image-HASH.js
@@ -1,24 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2983],
   {
-    /***/ 797: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/image",
-        function () {
-          return __webpack_require__(5999);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 1713: /***/ (__unused_webpack_module, exports) => {
+    /***/ 881: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -58,7 +41,7 @@
       /***/
     },
 
-    /***/ 2263: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1511: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -136,7 +119,137 @@
       /***/
     },
 
-    /***/ 2728: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1744: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "default", {
+        enumerable: true,
+        get: function () {
+          return _default;
+        },
+      });
+      const _findclosestquality = __webpack_require__(7054);
+      function defaultLoader({ config, src, width, quality }) {
+        if (
+          src.startsWith("/") &&
+          src.includes("?") &&
+          config.localPatterns?.length === 1 &&
+          config.localPatterns[0].pathname === "**" &&
+          config.localPatterns[0].search === ""
+        ) {
+          throw Object.defineProperty(
+            new Error(
+              `Image with src "${src}" is using a query string which is not configured in images.localPatterns.` +
+                `\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`
+            ),
+            "__NEXT_ERROR_CODE",
+            {
+              value: "E871",
+              enumerable: false,
+              configurable: true,
+            }
+          );
+        }
+        if (false) {
+        }
+        const q = (0, _findclosestquality.findClosestQuality)(quality, config);
+        return `${config.path}?url=${encodeURIComponent(
+          src
+        )}&w=${width}&q=${q}${
+          src.startsWith("/_next/static/media/") && false ? 0 : ""
+        }`;
+      }
+      // We use this to determine if the import is the default loader
+      // or a custom loader defined by the user in next.config.js
+      defaultLoader.__next_img_default = true;
+      const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
+
+      /***/
+    },
+
+    /***/ 2388: /***/ (
+      __unused_webpack_module,
+      __webpack_exports__,
+      __webpack_require__
+    ) => {
+      "use strict";
+      // ESM COMPAT FLAG
+      __webpack_require__.r(__webpack_exports__);
+
+      // EXPORTS
+      __webpack_require__.d(__webpack_exports__, {
+        __N_SSP: () => /* binding */ __N_SSP,
+        default: () => /* binding */ pages_image,
+      });
+
+      // EXTERNAL MODULE: ./node_modules/.pnpm/react@19.2.0/node_modules/react/jsx-runtime.js
+      var jsx_runtime = __webpack_require__(1503);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/image.js
+      var next_image = __webpack_require__(3866);
+      var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
+      /* harmony default export */ const nextjs = {
+        src: "/_next/static/media/nextjs.cae0b805.png",
+        height: 1347,
+        width: 1626,
+        blurDataURL:
+          "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAMAAAACh/xsAAAAD1BMVEX////x8fH6+vrb29vo6Oh8o70bAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAH0lEQVR4nGNgwARMjIyMjCAGCzMzMwsTRISJCcRABwAEcAAkLCQfgAAAAABJRU5ErkJggg==",
+        blurWidth: 8,
+        blurHeight: 7,
+      }; // ./pages/image.js
+      function ImagePage(props) {
+        return /*#__PURE__*/ (0, jsx_runtime.jsxs)(jsx_runtime.Fragment, {
+          children: [
+            /*#__PURE__*/ (0, jsx_runtime.jsx)("h1", {
+              children: "next/image example",
+            }),
+            /*#__PURE__*/ (0, jsx_runtime.jsx)(image_default(), {
+              src: nextjs,
+              placeholder: "blur",
+            }),
+          ],
+        });
+      }
+      var __N_SSP = true;
+      /* harmony default export */ const pages_image = ImagePage;
+
+      /***/
+    },
+
+    /***/ 3866: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(6888);
+
+      /***/
+    },
+
+    /***/ 4483: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/image",
+        function () {
+          return __webpack_require__(2388);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 6600: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -158,17 +271,17 @@
         __webpack_require__(9507)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6705)
+        __webpack_require__(7505)
       );
-      const _getimgprops = __webpack_require__(3556);
-      const _imageconfig = __webpack_require__(3157);
-      const _imageconfigcontextsharedruntime = __webpack_require__(9323);
-      const _warnonce = __webpack_require__(6173);
-      const _routercontextsharedruntime = __webpack_require__(6046);
+      const _getimgprops = __webpack_require__(9588);
+      const _imageconfig = __webpack_require__(2645);
+      const _imageconfigcontextsharedruntime = __webpack_require__(5451);
+      const _warnonce = __webpack_require__(7549);
+      const _routercontextsharedruntime = __webpack_require__(5470);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3744)
+        __webpack_require__(1744)
       );
-      const _usemergedref = __webpack_require__(2263);
+      const _usemergedref = __webpack_require__(1511);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -495,7 +608,96 @@
       /***/
     },
 
-    /***/ 3556: /***/ (
+    /***/ 6888: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      0 && 0;
+      function _export(target, all) {
+        for (var name in all)
+          Object.defineProperty(target, name, {
+            enumerable: true,
+            get: all[name],
+          });
+      }
+      _export(exports, {
+        default: function () {
+          return _default;
+        },
+        getImageProps: function () {
+          return getImageProps;
+        },
+      });
+      const _interop_require_default = __webpack_require__(1532);
+      const _getimgprops = __webpack_require__(9588);
+      const _imagecomponent = __webpack_require__(6600);
+      const _imageloader = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(1744)
+      );
+      function getImageProps(imgProps) {
+        const { props } = (0, _getimgprops.getImgProps)(imgProps, {
+          defaultLoader: _imageloader.default,
+          // This is replaced by webpack define plugin
+          imgConf: {
+            deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
+            imageSizes: [32, 48, 64, 96, 128, 256, 384],
+            qualities: [75],
+            path: "/_next/image",
+            loader: "default",
+            dangerouslyAllowSVG: false,
+            unoptimized: false,
+          },
+        });
+        // Normally we don't care about undefined props because we pass to JSX,
+        // but this exported function could be used by the end user for anything
+        // so we delete undefined props to clean it up a little.
+        for (const [key, value] of Object.entries(props)) {
+          if (value === undefined) {
+            delete props[key];
+          }
+        }
+        return {
+          props,
+        };
+      }
+      const _default = _imagecomponent.Image; //# sourceMappingURL=image-external.js.map
+
+      /***/
+    },
+
+    /***/ 7054: /***/ (__unused_webpack_module, exports) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "findClosestQuality", {
+        enumerable: true,
+        get: function () {
+          return findClosestQuality;
+        },
+      });
+      function findClosestQuality(quality, config) {
+        const q = quality || 75;
+        if (!config?.qualities?.length) {
+          return q;
+        }
+        return config.qualities.reduce(
+          (prev, cur) => (Math.abs(cur - q) < Math.abs(prev - q) ? cur : prev),
+          0
+        );
+      } //# sourceMappingURL=find-closest-quality.js.map
+
+      /***/
+    },
+
+    /***/ 9588: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -511,9 +713,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(6173);
-      const _imageblursvg = __webpack_require__(1713);
-      const _imageconfig = __webpack_require__(3157);
+      const _warnonce = __webpack_require__(7549);
+      const _imageblursvg = __webpack_require__(881);
+      const _imageconfig = __webpack_require__(2645);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -943,215 +1145,13 @@
 
       /***/
     },
-
-    /***/ 3744: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "default", {
-        enumerable: true,
-        get: function () {
-          return _default;
-        },
-      });
-      const _findclosestquality = __webpack_require__(8494);
-      function defaultLoader({ config, src, width, quality }) {
-        if (
-          src.startsWith("/") &&
-          src.includes("?") &&
-          config.localPatterns?.length === 1 &&
-          config.localPatterns[0].pathname === "**" &&
-          config.localPatterns[0].search === ""
-        ) {
-          throw Object.defineProperty(
-            new Error(
-              `Image with src "${src}" is using a query string which is not configured in images.localPatterns.` +
-                `\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`
-            ),
-            "__NEXT_ERROR_CODE",
-            {
-              value: "E871",
-              enumerable: false,
-              configurable: true,
-            }
-          );
-        }
-        if (false) {
-        }
-        const q = (0, _findclosestquality.findClosestQuality)(quality, config);
-        return `${config.path}?url=${encodeURIComponent(
-          src
-        )}&w=${width}&q=${q}${
-          src.startsWith("/_next/static/media/") && false ? 0 : ""
-        }`;
-      }
-      // We use this to determine if the import is the default loader
-      // or a custom loader defined by the user in next.config.js
-      defaultLoader.__next_img_default = true;
-      const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
-
-      /***/
-    },
-
-    /***/ 4292: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(7896);
-
-      /***/
-    },
-
-    /***/ 5999: /***/ (
-      __unused_webpack_module,
-      __webpack_exports__,
-      __webpack_require__
-    ) => {
-      "use strict";
-      // ESM COMPAT FLAG
-      __webpack_require__.r(__webpack_exports__);
-
-      // EXPORTS
-      __webpack_require__.d(__webpack_exports__, {
-        __N_SSP: () => /* binding */ __N_SSP,
-        default: () => /* binding */ pages_image,
-      });
-
-      // EXTERNAL MODULE: ./node_modules/.pnpm/react@19.2.0/node_modules/react/jsx-runtime.js
-      var jsx_runtime = __webpack_require__(1503);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/image.js
-      var next_image = __webpack_require__(4292);
-      var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
-      /* harmony default export */ const nextjs = {
-        src: "/_next/static/media/nextjs.cae0b805.png",
-        height: 1347,
-        width: 1626,
-        blurDataURL:
-          "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAMAAAACh/xsAAAAD1BMVEX////x8fH6+vrb29vo6Oh8o70bAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAH0lEQVR4nGNgwARMjIyMjCAGCzMzMwsTRISJCcRABwAEcAAkLCQfgAAAAABJRU5ErkJggg==",
-        blurWidth: 8,
-        blurHeight: 7,
-      }; // ./pages/image.js
-      function ImagePage(props) {
-        return /*#__PURE__*/ (0, jsx_runtime.jsxs)(jsx_runtime.Fragment, {
-          children: [
-            /*#__PURE__*/ (0, jsx_runtime.jsx)("h1", {
-              children: "next/image example",
-            }),
-            /*#__PURE__*/ (0, jsx_runtime.jsx)(image_default(), {
-              src: nextjs,
-              placeholder: "blur",
-            }),
-          ],
-        });
-      }
-      var __N_SSP = true;
-      /* harmony default export */ const pages_image = ImagePage;
-
-      /***/
-    },
-
-    /***/ 7896: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      0 && 0;
-      function _export(target, all) {
-        for (var name in all)
-          Object.defineProperty(target, name, {
-            enumerable: true,
-            get: all[name],
-          });
-      }
-      _export(exports, {
-        default: function () {
-          return _default;
-        },
-        getImageProps: function () {
-          return getImageProps;
-        },
-      });
-      const _interop_require_default = __webpack_require__(1532);
-      const _getimgprops = __webpack_require__(3556);
-      const _imagecomponent = __webpack_require__(2728);
-      const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3744)
-      );
-      function getImageProps(imgProps) {
-        const { props } = (0, _getimgprops.getImgProps)(imgProps, {
-          defaultLoader: _imageloader.default,
-          // This is replaced by webpack define plugin
-          imgConf: {
-            deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
-            imageSizes: [32, 48, 64, 96, 128, 256, 384],
-            qualities: [75],
-            path: "/_next/image",
-            loader: "default",
-            dangerouslyAllowSVG: false,
-            unoptimized: false,
-          },
-        });
-        // Normally we don't care about undefined props because we pass to JSX,
-        // but this exported function could be used by the end user for anything
-        // so we delete undefined props to clean it up a little.
-        for (const [key, value] of Object.entries(props)) {
-          if (value === undefined) {
-            delete props[key];
-          }
-        }
-        return {
-          props,
-        };
-      }
-      const _default = _imagecomponent.Image; //# sourceMappingURL=image-external.js.map
-
-      /***/
-    },
-
-    /***/ 8494: /***/ (__unused_webpack_module, exports) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "findClosestQuality", {
-        enumerable: true,
-        get: function () {
-          return findClosestQuality;
-        },
-      });
-      function findClosestQuality(quality, config) {
-        const q = quality || 75;
-        if (!config?.qualities?.length) {
-          return q;
-        }
-        return config.qualities.reduce(
-          (prev, cur) => (Math.abs(cur - q) < Math.abs(prev - q) ? cur : prev),
-          0
-        );
-      } //# sourceMappingURL=find-closest-quality.js.map
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(797)
+      __webpack_exec__(4483)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,338 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4672],
   {
-    /***/ 69: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1511: /***/ (module, exports, __webpack_require__) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "useMergedRef", {
+        enumerable: true,
+        get: function () {
+          return useMergedRef;
+        },
+      });
+      const _react = __webpack_require__(2223);
+      function useMergedRef(refA, refB) {
+        const cleanupA = (0, _react.useRef)(null);
+        const cleanupB = (0, _react.useRef)(null);
+        // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.
+        // (this happens often if the user doesn't pass a ref to Link/Form/Image)
+        // But this can cause us to leak a cleanup-ref into user code (previously via `<Link legacyBehavior>`),
+        // and the user might pass that ref into ref-merging library that doesn't support cleanup refs
+        // (because it hasn't been updated for React 19)
+        // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.
+        // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.
+        return (0, _react.useCallback)(
+          (current) => {
+            if (current === null) {
+              const cleanupFnA = cleanupA.current;
+              if (cleanupFnA) {
+                cleanupA.current = null;
+                cleanupFnA();
+              }
+              const cleanupFnB = cleanupB.current;
+              if (cleanupFnB) {
+                cleanupB.current = null;
+                cleanupFnB();
+              }
+            } else {
+              if (refA) {
+                cleanupA.current = applyRef(refA, current);
+              }
+              if (refB) {
+                cleanupB.current = applyRef(refB, current);
+              }
+            }
+          },
+          [refA, refB]
+        );
+      }
+      function applyRef(refA, current) {
+        if (typeof refA === "function") {
+          const cleanup = refA(current);
+          if (typeof cleanup === "function") {
+            return cleanup;
+          } else {
+            return () => refA(null);
+          }
+        } else {
+          refA.current = current;
+          return () => {
+            refA.current = null;
+          };
+        }
+      }
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true,
+        });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=use-merged-ref.js.map
+
+      /***/
+    },
+
+    /***/ 2025: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/link",
+        function () {
+          return __webpack_require__(4591);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 3267: /***/ (module, exports, __webpack_require__) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "getDomainLocale", {
+        enumerable: true,
+        get: function () {
+          return getDomainLocale;
+        },
+      });
+      const _normalizetrailingslash = __webpack_require__(2371);
+      const basePath =
+        /* unused pure expression or super */ null && (false || "");
+      function getDomainLocale(path, locale, locales, domainLocales) {
+        if (false) {
+        } else {
+          return false;
+        }
+      }
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true,
+        });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=get-domain-locale.js.map
+
+      /***/
+    },
+
+    /***/ 4591: /***/ (
+      __unused_webpack_module,
+      __webpack_exports__,
+      __webpack_require__
+    ) => {
+      "use strict";
+      __webpack_require__.r(__webpack_exports__);
+      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
+        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
+        /* harmony export */
+      });
+      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+        __webpack_require__(1503);
+      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
+        __webpack_require__(6929);
+      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_link__WEBPACK_IMPORTED_MODULE_1__
+        );
+
+      function aLink(props) {
+        return /*#__PURE__*/ (0,
+        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
+          children: [
+            /*#__PURE__*/ (0,
+            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
+              children: "A Link page!",
+            }),
+            /*#__PURE__*/ (0,
+            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+              next_link__WEBPACK_IMPORTED_MODULE_1___default(),
+              {
+                href: "/",
+                children: "Go to /",
+              }
+            ),
+          ],
+        });
+      }
+      var __N_SSP = true;
+      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
+
+      /***/
+    },
+
+    /***/ 6929: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(8885);
+
+      /***/
+    },
+
+    /***/ 7686: /***/ (module, exports, __webpack_require__) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "useIntersection", {
+        enumerable: true,
+        get: function () {
+          return useIntersection;
+        },
+      });
+      const _react = __webpack_require__(2223);
+      const _requestidlecallback = __webpack_require__(901);
+      const hasIntersectionObserver =
+        typeof IntersectionObserver === "function";
+      const observers = new Map();
+      const idList = [];
+      function createObserver(options) {
+        const id = {
+          root: options.root || null,
+          margin: options.rootMargin || "",
+        };
+        const existing = idList.find(
+          (obj) => obj.root === id.root && obj.margin === id.margin
+        );
+        let instance;
+        if (existing) {
+          instance = observers.get(existing);
+          if (instance) {
+            return instance;
+          }
+        }
+        const elements = new Map();
+        const observer = new IntersectionObserver((entries) => {
+          entries.forEach((entry) => {
+            const callback = elements.get(entry.target);
+            const isVisible =
+              entry.isIntersecting || entry.intersectionRatio > 0;
+            if (callback && isVisible) {
+              callback(isVisible);
+            }
+          });
+        }, options);
+        instance = {
+          id,
+          observer,
+          elements,
+        };
+        idList.push(id);
+        observers.set(id, instance);
+        return instance;
+      }
+      function observe(element, callback, options) {
+        const { id, observer, elements } = createObserver(options);
+        elements.set(element, callback);
+        observer.observe(element);
+        return function unobserve() {
+          elements.delete(element);
+          observer.unobserve(element);
+          // Destroy observer when there's nothing left to watch:
+          if (elements.size === 0) {
+            observer.disconnect();
+            observers.delete(id);
+            const index = idList.findIndex(
+              (obj) => obj.root === id.root && obj.margin === id.margin
+            );
+            if (index > -1) {
+              idList.splice(index, 1);
+            }
+          }
+        };
+      }
+      function useIntersection({ rootRef, rootMargin, disabled }) {
+        const isDisabled = disabled || !hasIntersectionObserver;
+        const [visible, setVisible] = (0, _react.useState)(false);
+        const elementRef = (0, _react.useRef)(null);
+        const setElement = (0, _react.useCallback)((element) => {
+          elementRef.current = element;
+        }, []);
+        (0, _react.useEffect)(() => {
+          if (hasIntersectionObserver) {
+            if (isDisabled || visible) return;
+            const element = elementRef.current;
+            if (element && element.tagName) {
+              const unobserve = observe(
+                element,
+                (isVisible) => isVisible && setVisible(isVisible),
+                {
+                  root: rootRef?.current,
+                  rootMargin,
+                }
+              );
+              return unobserve;
+            }
+          } else {
+            if (!visible) {
+              const idleCallback = (0,
+              _requestidlecallback.requestIdleCallback)(() => setVisible(true));
+              return () =>
+                (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
+            }
+          }
+          // eslint-disable-next-line react-hooks/exhaustive-deps
+        }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
+        const resetVisible = (0, _react.useCallback)(() => {
+          setVisible(false);
+        }, []);
+        return [setElement, visible, resetVisible];
+      }
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true,
+        });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=use-intersection.js.map
+
+      /***/
+    },
+
+    /***/ 8101: /***/ (__unused_webpack_module, exports) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "errorOnce", {
+        enumerable: true,
+        get: function () {
+          return errorOnce;
+        },
+      });
+      let errorOnce = (_) => {};
+      if (false) {
+      } //# sourceMappingURL=error-once.js.map
+
+      /***/
+    },
+
+    /***/ 8885: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -28,17 +359,17 @@
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
         __webpack_require__(2223)
       );
-      const _resolvehref = __webpack_require__(2275);
-      const _islocalurl = __webpack_require__(3179);
-      const _formaturl = __webpack_require__(5486);
-      const _utils = __webpack_require__(3708);
-      const _addlocale = __webpack_require__(8225);
-      const _routercontextsharedruntime = __webpack_require__(6046);
-      const _useintersection = __webpack_require__(2678);
-      const _getdomainlocale = __webpack_require__(4499);
-      const _addbasepath = __webpack_require__(7434);
-      const _usemergedref = __webpack_require__(2263);
-      const _erroronce = __webpack_require__(2197);
+      const _resolvehref = __webpack_require__(7379);
+      const _islocalurl = __webpack_require__(4843);
+      const _formaturl = __webpack_require__(9374);
+      const _utils = __webpack_require__(3116);
+      const _addlocale = __webpack_require__(8065);
+      const _routercontextsharedruntime = __webpack_require__(5470);
+      const _useintersection = __webpack_require__(7686);
+      const _getdomainlocale = __webpack_require__(3267);
+      const _addbasepath = __webpack_require__(1450);
+      const _usemergedref = __webpack_require__(1511);
+      const _erroronce = __webpack_require__(8101);
       const prefetched = new Set();
       function prefetch(router, href, as, options) {
         if (false) {
@@ -416,344 +747,13 @@
 
       /***/
     },
-
-    /***/ 2197: /***/ (__unused_webpack_module, exports) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "errorOnce", {
-        enumerable: true,
-        get: function () {
-          return errorOnce;
-        },
-      });
-      let errorOnce = (_) => {};
-      if (false) {
-      } //# sourceMappingURL=error-once.js.map
-
-      /***/
-    },
-
-    /***/ 2263: /***/ (module, exports, __webpack_require__) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "useMergedRef", {
-        enumerable: true,
-        get: function () {
-          return useMergedRef;
-        },
-      });
-      const _react = __webpack_require__(2223);
-      function useMergedRef(refA, refB) {
-        const cleanupA = (0, _react.useRef)(null);
-        const cleanupB = (0, _react.useRef)(null);
-        // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.
-        // (this happens often if the user doesn't pass a ref to Link/Form/Image)
-        // But this can cause us to leak a cleanup-ref into user code (previously via `<Link legacyBehavior>`),
-        // and the user might pass that ref into ref-merging library that doesn't support cleanup refs
-        // (because it hasn't been updated for React 19)
-        // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.
-        // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.
-        return (0, _react.useCallback)(
-          (current) => {
-            if (current === null) {
-              const cleanupFnA = cleanupA.current;
-              if (cleanupFnA) {
-                cleanupA.current = null;
-                cleanupFnA();
-              }
-              const cleanupFnB = cleanupB.current;
-              if (cleanupFnB) {
-                cleanupB.current = null;
-                cleanupFnB();
-              }
-            } else {
-              if (refA) {
-                cleanupA.current = applyRef(refA, current);
-              }
-              if (refB) {
-                cleanupB.current = applyRef(refB, current);
-              }
-            }
-          },
-          [refA, refB]
-        );
-      }
-      function applyRef(refA, current) {
-        if (typeof refA === "function") {
-          const cleanup = refA(current);
-          if (typeof cleanup === "function") {
-            return cleanup;
-          } else {
-            return () => refA(null);
-          }
-        } else {
-          refA.current = current;
-          return () => {
-            refA.current = null;
-          };
-        }
-      }
-      if (
-        (typeof exports.default === "function" ||
-          (typeof exports.default === "object" && exports.default !== null)) &&
-        typeof exports.default.__esModule === "undefined"
-      ) {
-        Object.defineProperty(exports.default, "__esModule", {
-          value: true,
-        });
-        Object.assign(exports.default, exports);
-        module.exports = exports.default;
-      } //# sourceMappingURL=use-merged-ref.js.map
-
-      /***/
-    },
-
-    /***/ 2369: /***/ (
-      __unused_webpack_module,
-      __webpack_exports__,
-      __webpack_require__
-    ) => {
-      "use strict";
-      __webpack_require__.r(__webpack_exports__);
-      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
-        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
-        /* harmony export */
-      });
-      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(1503);
-      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(6691);
-      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_link__WEBPACK_IMPORTED_MODULE_1__
-        );
-
-      function aLink(props) {
-        return /*#__PURE__*/ (0,
-        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
-          children: [
-            /*#__PURE__*/ (0,
-            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
-              children: "A Link page!",
-            }),
-            /*#__PURE__*/ (0,
-            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
-              next_link__WEBPACK_IMPORTED_MODULE_1___default(),
-              {
-                href: "/",
-                children: "Go to /",
-              }
-            ),
-          ],
-        });
-      }
-      var __N_SSP = true;
-      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
-
-      /***/
-    },
-
-    /***/ 2678: /***/ (module, exports, __webpack_require__) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "useIntersection", {
-        enumerable: true,
-        get: function () {
-          return useIntersection;
-        },
-      });
-      const _react = __webpack_require__(2223);
-      const _requestidlecallback = __webpack_require__(4213);
-      const hasIntersectionObserver =
-        typeof IntersectionObserver === "function";
-      const observers = new Map();
-      const idList = [];
-      function createObserver(options) {
-        const id = {
-          root: options.root || null,
-          margin: options.rootMargin || "",
-        };
-        const existing = idList.find(
-          (obj) => obj.root === id.root && obj.margin === id.margin
-        );
-        let instance;
-        if (existing) {
-          instance = observers.get(existing);
-          if (instance) {
-            return instance;
-          }
-        }
-        const elements = new Map();
-        const observer = new IntersectionObserver((entries) => {
-          entries.forEach((entry) => {
-            const callback = elements.get(entry.target);
-            const isVisible =
-              entry.isIntersecting || entry.intersectionRatio > 0;
-            if (callback && isVisible) {
-              callback(isVisible);
-            }
-          });
-        }, options);
-        instance = {
-          id,
-          observer,
-          elements,
-        };
-        idList.push(id);
-        observers.set(id, instance);
-        return instance;
-      }
-      function observe(element, callback, options) {
-        const { id, observer, elements } = createObserver(options);
-        elements.set(element, callback);
-        observer.observe(element);
-        return function unobserve() {
-          elements.delete(element);
-          observer.unobserve(element);
-          // Destroy observer when there's nothing left to watch:
-          if (elements.size === 0) {
-            observer.disconnect();
-            observers.delete(id);
-            const index = idList.findIndex(
-              (obj) => obj.root === id.root && obj.margin === id.margin
-            );
-            if (index > -1) {
-              idList.splice(index, 1);
-            }
-          }
-        };
-      }
-      function useIntersection({ rootRef, rootMargin, disabled }) {
-        const isDisabled = disabled || !hasIntersectionObserver;
-        const [visible, setVisible] = (0, _react.useState)(false);
-        const elementRef = (0, _react.useRef)(null);
-        const setElement = (0, _react.useCallback)((element) => {
-          elementRef.current = element;
-        }, []);
-        (0, _react.useEffect)(() => {
-          if (hasIntersectionObserver) {
-            if (isDisabled || visible) return;
-            const element = elementRef.current;
-            if (element && element.tagName) {
-              const unobserve = observe(
-                element,
-                (isVisible) => isVisible && setVisible(isVisible),
-                {
-                  root: rootRef?.current,
-                  rootMargin,
-                }
-              );
-              return unobserve;
-            }
-          } else {
-            if (!visible) {
-              const idleCallback = (0,
-              _requestidlecallback.requestIdleCallback)(() => setVisible(true));
-              return () =>
-                (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
-            }
-          }
-          // eslint-disable-next-line react-hooks/exhaustive-deps
-        }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
-        const resetVisible = (0, _react.useCallback)(() => {
-          setVisible(false);
-        }, []);
-        return [setElement, visible, resetVisible];
-      }
-      if (
-        (typeof exports.default === "function" ||
-          (typeof exports.default === "object" && exports.default !== null)) &&
-        typeof exports.default.__esModule === "undefined"
-      ) {
-        Object.defineProperty(exports.default, "__esModule", {
-          value: true,
-        });
-        Object.assign(exports.default, exports);
-        module.exports = exports.default;
-      } //# sourceMappingURL=use-intersection.js.map
-
-      /***/
-    },
-
-    /***/ 4499: /***/ (module, exports, __webpack_require__) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "getDomainLocale", {
-        enumerable: true,
-        get: function () {
-          return getDomainLocale;
-        },
-      });
-      const _normalizetrailingslash = __webpack_require__(1379);
-      const basePath =
-        /* unused pure expression or super */ null && (false || "");
-      function getDomainLocale(path, locale, locales, domainLocales) {
-        if (false) {
-        } else {
-          return false;
-        }
-      }
-      if (
-        (typeof exports.default === "function" ||
-          (typeof exports.default === "object" && exports.default !== null)) &&
-        typeof exports.default.__esModule === "undefined"
-      ) {
-        Object.defineProperty(exports.default, "__esModule", {
-          value: true,
-        });
-        Object.assign(exports.default, exports);
-        module.exports = exports.default;
-      } //# sourceMappingURL=get-domain-locale.js.map
-
-      /***/
-    },
-
-    /***/ 6691: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(69);
-
-      /***/
-    },
-
-    /***/ 6771: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/link",
-        function () {
-          return __webpack_require__(2369);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(6771)
+      __webpack_exec__(2025)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,7 +1,34 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [188],
   {
-    /***/ 97: /***/ (
+    /***/ 417: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/routerDirect",
+        function () {
+          return __webpack_require__(5491);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 1840: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(3252);
+
+      /***/
+    },
+
+    /***/ 5491: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -16,7 +43,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1503);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(7798);
+        __webpack_require__(1840);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -35,40 +62,13 @@
 
       /***/
     },
-
-    /***/ 4283: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/routerDirect",
-        function () {
-          return __webpack_require__(97);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 7798: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(9300);
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(4283)
+      __webpack_exec__(417)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,17 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [1209],
   {
-    /***/ 5964: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(2010);
-
-      /***/
-    },
-
-    /***/ 7758: /***/ (
+    /***/ 1312: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -26,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1503);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(5964);
+        __webpack_require__(2398);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -59,7 +49,17 @@
       /***/
     },
 
-    /***/ 8803: /***/ (
+    /***/ 2398: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(8954);
+
+      /***/
+    },
+
+    /***/ 4305: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -67,7 +67,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/script",
         function () {
-          return __webpack_require__(7758);
+          return __webpack_require__(1312);
         },
       ]);
       if (false) {
@@ -81,7 +81,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(8803)
+      __webpack_exec__(4305)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [3263],
   {
-    /***/ 184: /***/ (
+    /***/ 358: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -16,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1503);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(7798);
+        __webpack_require__(1840);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -35,7 +35,17 @@
       /***/
     },
 
-    /***/ 3163: /***/ (
+    /***/ 1840: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(3252);
+
+      /***/
+    },
+
+    /***/ 4041: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -43,7 +53,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/withRouter",
         function () {
-          return __webpack_require__(184);
+          return __webpack_require__(358);
         },
       ]);
       if (false) {
@@ -51,23 +61,13 @@
 
       /***/
     },
-
-    /***/ 7798: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(9300);
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(3163)
+      __webpack_exec__(4041)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 436-HASH.js

Diff too large to display

Diff for 9760-HASH.js
failed to diff
Diff for main-HASH.js

Diff too large to display

Commit: 20fe753

@ijjk
Copy link
Member

ijjk commented Nov 29, 2025

Failing test suites

Commit: 20fe753 | About building and testing Next.js

pnpm test-start test/e2e/app-dir/next-config-ts-native-ts/export-as-default/next-config-ts-export-as-default-esm.test.ts (job)

  • next-config-ts-dynamic-import-esm > should support dynamic import (ESM) (DD)
Expand output

● next-config-ts-dynamic-import-esm › should support dynamic import (ESM)

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  269 |   let next: NextInstance | undefined
  270 |   if (!skipped) {
> 271 |     beforeAll(async () => {
      |     ^
  272 |       next = await createNext(options)
  273 |     })
  274 |     afterAll(async () => {

  at beforeAll (lib/e2e-utils/index.ts:271:5)
  at e2e/app-dir/next-config-ts-native-ts/dynamic-import-esm/next-config-ts-dynamic-import-esm.test.ts:10:33
  at Object.describe (e2e/app-dir/next-config-ts-native-ts/dynamic-import-esm/next-config-ts-dynamic-import-esm.test.ts:3:1)

● Test suite failed to run

next instance not destroyed before exiting, make sure to call .destroy() after the tests after finished

  148 |     if (nextInstance) {
  149 |       await nextInstance.destroy()
> 150 |       throw new Error(
      |             ^
  151 |         `next instance not destroyed before exiting, make sure to call .destroy() after the tests after finished`
  152 |       )
  153 |     }

  at Object.<anonymous> (lib/e2e-utils/index.ts:150:13)

pnpm test-dev test/e2e/app-dir/next-config-ts-native-ts/export-default/next-config-ts-export-default-cjs.test.ts (job)

  • next-config-ts-export-default-esm > should support export default (ESM) (DD)
Expand output

● next-config-ts-export-default-esm › should support export default (ESM)

thrown: "Exceeded timeout of 120000 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."

  15 |   })
  16 |
> 17 |   it('should support export default (ESM)', async () => {
     |   ^
  18 |     const $ = await next.render$('/')
  19 |     expect($('p').text()).toBe('foo')
  20 |   })

  at it (e2e/app-dir/next-config-ts-native-ts/export-default/next-config-ts-export-default-esm.test.ts:17:3)
  at Object.describe (e2e/app-dir/next-config-ts-native-ts/export-default/next-config-ts-export-default-esm.test.ts:3:1)

pnpm test-start test/e2e/app-dir/next-config-ts-native-ts/async-function/async-function-cjs.test.ts (job)

  • next-config-ts-export-default-cjs > should support export default (CJS) (DD)
Expand output

● next-config-ts-export-default-cjs › should support export default (CJS)

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  269 |   let next: NextInstance | undefined
  270 |   if (!skipped) {
> 271 |     beforeAll(async () => {
      |     ^
  272 |       next = await createNext(options)
  273 |     })
  274 |     afterAll(async () => {

  at beforeAll (lib/e2e-utils/index.ts:271:5)
  at e2e/app-dir/next-config-ts-native-ts/export-default/next-config-ts-export-default-cjs.test.ts:10:33
  at Object.describe (e2e/app-dir/next-config-ts-native-ts/export-default/next-config-ts-export-default-cjs.test.ts:3:1)

● Test suite failed to run

next instance not destroyed before exiting, make sure to call .destroy() after the tests after finished

  148 |     if (nextInstance) {
  149 |       await nextInstance.destroy()
> 150 |       throw new Error(
      |             ^
  151 |         `next instance not destroyed before exiting, make sure to call .destroy() after the tests after finished`
  152 |       )
  153 |     }

  at Object.<anonymous> (lib/e2e-utils/index.ts:150:13)

pnpm test-dev test/e2e/app-dir/next-config-ts-native-ts/export-as-default/next-config-ts-export-as-default-cjs.test.ts (job)

  • next-config-ts-export-default-esm > should support export default (ESM) (DD)
Expand output

● next-config-ts-export-default-esm › should support export default (ESM)

thrown: "Exceeded timeout of 120000 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."

  15 |   })
  16 |
> 17 |   it('should support export default (ESM)', async () => {
     |   ^
  18 |     const $ = await next.render$('/')
  19 |     expect($('p').text()).toBe('foo')
  20 |   })

  at it (e2e/app-dir/next-config-ts-native-ts/export-default/next-config-ts-export-default-esm.test.ts:17:3)
  at Object.describe (e2e/app-dir/next-config-ts-native-ts/export-default/next-config-ts-export-default-esm.test.ts:3:1)

pnpm test-start-turbo test/e2e/app-dir/app-basepath-custom-server/index.test.ts (turbopack) (job)

  • app dir - with output export > with distDir configured > should correctly emit exported assets to config.distDir (DD)
  • app dir - with output export > without next config > should error when running next export (DD)
Expand output

● app dir - with output export › without next config › should error when running next export

thrown: "Exceeded timeout of 120000 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."

  42 |       })
  43 |
> 44 |       it('should error when running next export', async () => {
     |       ^
  45 |         let { exitCode } = await next.build()
  46 |         expect(exitCode).toBe(0)
  47 |         expect(await getFiles(join(next.testDir, 'out'))).toEqual([])

  at it (e2e/app-dir-export/test/config.test.ts:44:7)
  at describe (e2e/app-dir-export/test/config.test.ts:36:5)
  at Object.describe (e2e/app-dir-export/test/config.test.ts:6:1)

● app dir - with output export › with distDir configured › should correctly emit exported assets to config.distDir

thrown: "Exceeded timeout of 120000 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."

  89 |       })
  90 |
> 91 |       it('should correctly emit exported assets to config.distDir', async () => {
     |       ^
  92 |         let { exitCode } = await next.build()
  93 |         expect(exitCode).toBe(0)
  94 |         expect(await getFiles(join(next.testDir, 'output'))).toEqual(

  at it (e2e/app-dir-export/test/config.test.ts:91:7)
  at describe (e2e/app-dir-export/test/config.test.ts:74:5)
  at Object.describe (e2e/app-dir-export/test/config.test.ts:6:1)

pnpm test test/integration/app-functional/test/index.test.ts (turbopack) (job)

  • 404 Page Support SSG > development mode > should respond to 404 correctly (DD)
  • 404 Page Support SSG > development mode > should render error correctly (DD)
  • 404 Page Support SSG > development mode > should not show an error in the logs for 404 SSG (DD)
  • 404 Page Support SSG > development mode > should render index page normal (DD)
Expand output

● 404 Page Support SSG › development mode › should respond to 404 correctly

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."

  24 |
  25 | const runTests = (isDev: boolean) => {
> 26 |   it('should respond to 404 correctly', async () => {
     |   ^
  27 |     const res = await fetchViaHTTP(appPort, '/404')
  28 |     expect(res.status).toBe(404)
  29 |     expect(await res.text()).toContain('custom 404 page')

  at it (integration/404-page-ssg/test/index.test.ts:26:3)
  at runTests (integration/404-page-ssg/test/index.test.ts:142:7)
  at integration/404-page-ssg/test/index.test.ts:124:58
  at Object.describe (integration/404-page-ssg/test/index.test.ts:86:1)

● 404 Page Support SSG › development mode › should render error correctly

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."

  30 |   })
  31 |
> 32 |   it('should render error correctly', async () => {
     |   ^
  33 |     const text = await renderViaHTTP(appPort, '/err')
  34 |     expect(text).toContain(isDev ? 'oops' : 'Internal Server Error')
  35 |   })

  at it (integration/404-page-ssg/test/index.test.ts:32:3)
  at runTests (integration/404-page-ssg/test/index.test.ts:142:7)
  at integration/404-page-ssg/test/index.test.ts:124:58
  at Object.describe (integration/404-page-ssg/test/index.test.ts:86:1)

● 404 Page Support SSG › development mode › should not show an error in the logs for 404 SSG

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."

  35 |   })
  36 |
> 37 |   it('should not show an error in the logs for 404 SSG', async () => {
     |   ^
  38 |     await renderViaHTTP(appPort, '/non-existent')
  39 |     expect(stderr).not.toMatch(gip404Err)
  40 |     expect(stdout).not.toMatch(gip404Err)

  at it (integration/404-page-ssg/test/index.test.ts:37:3)
  at runTests (integration/404-page-ssg/test/index.test.ts:142:7)
  at integration/404-page-ssg/test/index.test.ts:124:58
  at Object.describe (integration/404-page-ssg/test/index.test.ts:86:1)

● 404 Page Support SSG › development mode › should render index page normal

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."

  41 |   })
  42 |
> 43 |   it('should render index page normal', async () => {
     |   ^
  44 |     const html = await renderViaHTTP(appPort, '/')
  45 |     expect(html).toContain('hello from index')
  46 |   })

  at it (integration/404-page-ssg/test/index.test.ts:43:3)
  at runTests (integration/404-page-ssg/test/index.test.ts:142:7)
  at integration/404-page-ssg/test/index.test.ts:124:58
  at Object.describe (integration/404-page-ssg/test/index.test.ts:86:1)

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

  • app dir client cache semantics (experimental staleTimes) > dynamic: 0 > prefetch={false} > should trigger a loading state before fetching the page, followed by fresh data on every subsequent navigation (DD)
  • app dir client cache semantics (experimental staleTimes) > dynamic: 0 > prefetch={false} > without a loading boundary > should get fresh data on every subsequent navigation (DD)
  • app dir client cache semantics (experimental staleTimes) > dynamic: 0 > prefetch={true} > should re-use the cache for 5 minutes (default "static" time) (DD)
  • app dir client cache semantics (experimental staleTimes) > dynamic: 0 > prefetch={undefined} - default > should trigger a loading state before fetching the page, followed by fresh data on every subsequent navigation (DD)
  • app dir client cache semantics (experimental staleTimes) > dynamic: 0 > prefetch={undefined} - default > without a loading boundary > should get fresh data on every subsequent navigation (DD)
  • app dir client cache semantics (experimental staleTimes) > dynamic: 0 > telemetry > should send staleTimes feature usage event (DD)
  • app dir client cache semantics (experimental staleTimes) > dynamic: 0, static: 0 > should trigger a loading state before fetching the page, followed by fresh data on every subsequent navigation (DD)
  • app dir client cache semantics (experimental staleTimes) > dynamic: 0, static: 0 > without a loading boundary > should get fresh data on every subsequent navigation (DD)
  • app dir client cache semantics (experimental staleTimes) > static: 180 > prefetch={true} > should use the custom static override time (3 minutes) (DD)
  • app dir client cache semantics (experimental staleTimes) > static: 180 > prefetch={undefined} - default > should re-use the loading boundary for the custom static override time (3 minutes) (DD)
  • app dir client cache semantics (experimental staleTimes) > static: 180 > telemetry > should send staleTimes feature usage event (DD)
Expand output

● app dir client cache semantics (experimental staleTimes) › dynamic: 0 › prefetch={true} › should re-use the cache for 5 minutes (default "static" time)

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  269 |   let next: NextInstance | undefined
  270 |   if (!skipped) {
> 271 |     beforeAll(async () => {
      |     ^
  272 |       next = await createNext(options)
  273 |     })
  274 |     afterAll(async () => {

  at beforeAll (lib/e2e-utils/index.ts:271:5)
  at e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:8:60
  at describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:7:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:6:1)

● app dir client cache semantics (experimental staleTimes) › dynamic: 0 › prefetch={false} › should trigger a loading state before fetching the page, followed by fresh data on every subsequent navigation

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  269 |   let next: NextInstance | undefined
  270 |   if (!skipped) {
> 271 |     beforeAll(async () => {
      |     ^
  272 |       next = await createNext(options)
  273 |     })
  274 |     afterAll(async () => {

  at beforeAll (lib/e2e-utils/index.ts:271:5)
  at e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:8:60
  at describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:7:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:6:1)

● app dir client cache semantics (experimental staleTimes) › dynamic: 0 › prefetch={false} › without a loading boundary › should get fresh data on every subsequent navigation

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  269 |   let next: NextInstance | undefined
  270 |   if (!skipped) {
> 271 |     beforeAll(async () => {
      |     ^
  272 |       next = await createNext(options)
  273 |     })
  274 |     afterAll(async () => {

  at beforeAll (lib/e2e-utils/index.ts:271:5)
  at e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:8:60
  at describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:7:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:6:1)

● app dir client cache semantics (experimental staleTimes) › dynamic: 0 › prefetch={undefined} - default › should trigger a loading state before fetching the page, followed by fresh data on every subsequent navigation

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  269 |   let next: NextInstance | undefined
  270 |   if (!skipped) {
> 271 |     beforeAll(async () => {
      |     ^
  272 |       next = await createNext(options)
  273 |     })
  274 |     afterAll(async () => {

  at beforeAll (lib/e2e-utils/index.ts:271:5)
  at e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:8:60
  at describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:7:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:6:1)

● app dir client cache semantics (experimental staleTimes) › dynamic: 0 › prefetch={undefined} - default › without a loading boundary › should get fresh data on every subsequent navigation

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  269 |   let next: NextInstance | undefined
  270 |   if (!skipped) {
> 271 |     beforeAll(async () => {
      |     ^
  272 |       next = await createNext(options)
  273 |     })
  274 |     afterAll(async () => {

  at beforeAll (lib/e2e-utils/index.ts:271:5)
  at e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:8:60
  at describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:7:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:6:1)

● app dir client cache semantics (experimental staleTimes) › dynamic: 0 › telemetry › should send staleTimes feature usage event

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  269 |   let next: NextInstance | undefined
  270 |   if (!skipped) {
> 271 |     beforeAll(async () => {
      |     ^
  272 |       next = await createNext(options)
  273 |     })
  274 |     afterAll(async () => {

  at beforeAll (lib/e2e-utils/index.ts:271:5)
  at e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:8:60
  at describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:7:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:6:1)

● app dir client cache semantics (experimental staleTimes) › static: 180 › prefetch={true} › should use the custom static override time (3 minutes)

createNext called without destroying previous instance

  174 |   try {
  175 |     if (nextInstance) {
> 176 |       throw new Error(`createNext called without destroying previous instance`)
      |             ^
  177 |     }
  178 |
  179 |     setupTracing()

  at createNext (lib/e2e-utils/index.ts:176:13)
  at Object.createNext (lib/e2e-utils/index.ts:272:20)

● app dir client cache semantics (experimental staleTimes) › static: 180 › prefetch={undefined} - default › should re-use the loading boundary for the custom static override time (3 minutes)

createNext called without destroying previous instance

  174 |   try {
  175 |     if (nextInstance) {
> 176 |       throw new Error(`createNext called without destroying previous instance`)
      |             ^
  177 |     }
  178 |
  179 |     setupTracing()

  at createNext (lib/e2e-utils/index.ts:176:13)
  at Object.createNext (lib/e2e-utils/index.ts:272:20)

● app dir client cache semantics (experimental staleTimes) › static: 180 › telemetry › should send staleTimes feature usage event

createNext called without destroying previous instance

  174 |   try {
  175 |     if (nextInstance) {
> 176 |       throw new Error(`createNext called without destroying previous instance`)
      |             ^
  177 |     }
  178 |
  179 |     setupTracing()

  at createNext (lib/e2e-utils/index.ts:176:13)
  at Object.createNext (lib/e2e-utils/index.ts:272:20)

● app dir client cache semantics (experimental staleTimes) › dynamic: 0, static: 0 › should trigger a loading state before fetching the page, followed by fresh data on every subsequent navigation

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  269 |   let next: NextInstance | undefined
  270 |   if (!skipped) {
> 271 |     beforeAll(async () => {
      |     ^
  272 |       next = await createNext(options)
  273 |     })
  274 |     afterAll(async () => {

  at beforeAll (lib/e2e-utils/index.ts:271:5)
  at e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:373:35
  at describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:372:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:6:1)

● app dir client cache semantics (experimental staleTimes) › dynamic: 0, static: 0 › without a loading boundary › should get fresh data on every subsequent navigation

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  269 |   let next: NextInstance | undefined
  270 |   if (!skipped) {
> 271 |     beforeAll(async () => {
      |     ^
  272 |       next = await createNext(options)
  273 |     })
  274 |     afterAll(async () => {

  at beforeAll (lib/e2e-utils/index.ts:271:5)
  at e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:373:35
  at describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:372:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.experimental.test.ts:6:1)

● Test suite failed to run

next instance not destroyed before exiting, make sure to call .destroy() after the tests after finished

  148 |     if (nextInstance) {
  149 |       await nextInstance.destroy()
> 150 |       throw new Error(
      |             ^
  151 |         `next instance not destroyed before exiting, make sure to call .destroy() after the tests after finished`
  152 |       )
  153 |     }

  at Object.<anonymous> (lib/e2e-utils/index.ts:150:13)

pnpm test-start-turbo test/e2e/app-dir/app-client-cache/client-cache.original.test.ts (turbopack) (job)

  • app dir - with output export - dynamic missing gsp > should error when client component has generateStaticParams > should work (DD)
  • app dir - with output export - dynamic missing gsp > should error when dynamic route is missing generateStaticParams > should work (DD)
Expand output

● app dir - with output export - dynamic missing gsp › should error when dynamic route is missing generateStaticParams › should work

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  259 |   let port: number
  260 |   let stopOrKill: (() => Promise<void>) | undefined
> 261 |   beforeAll(async () => {
      |   ^
  262 |     if (isNextDev) {
  263 |       await next.start()
  264 |       port = Number(next.appPort)

  at beforeAll (e2e/app-dir-export/test/utils.ts:261:3)
  at e2e/app-dir-export/test/dynamic-missing-gsp.test.ts:6:13
  at describe (e2e/app-dir-export/test/dynamic-missing-gsp.test.ts:5:3)
  at Object.describe (e2e/app-dir-export/test/dynamic-missing-gsp.test.ts:4:1)

● app dir - with output export - dynamic missing gsp › should error when client component has generateStaticParams › should work

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  259 |   let port: number
  260 |   let stopOrKill: (() => Promise<void>) | undefined
> 261 |   beforeAll(async () => {
      |   ^
  262 |     if (isNextDev) {
  263 |       await next.start()
  264 |       port = Number(next.appPort)

  at beforeAll (e2e/app-dir-export/test/utils.ts:261:3)
  at e2e/app-dir-export/test/dynamic-missing-gsp.test.ts:20:13
  at describe (e2e/app-dir-export/test/dynamic-missing-gsp.test.ts:15:3)
  at Object.describe (e2e/app-dir-export/test/dynamic-missing-gsp.test.ts:4:1)

pnpm test test/integration/app-tree/test/index.test.ts (turbopack) (job)

  • CSS Support > CSS page transition inject <style> with nonce so it works with CSP header > production mode > should have correct color on index page (on load) (DD)
  • CSS Support > CSS page transition inject <style> with nonce so it works with CSP header > production mode > should have correct color on index page (on hover) (DD)
  • CSS Support > CSS page transition inject <style> with nonce so it works with CSP header > production mode > should not change color on hover (DD)
  • CSS Support > CSS page transition inject <style> with nonce so it works with CSP header > production mode > should have correct CSS injection order (DD)
  • CSS Support > CSS page transition inject <style> with nonce so it works with CSP header > production mode > should have correct color on index page (on nav from index) (DD)
  • CSS Support > CSS page transition inject <style> with nonce so it works with CSP header > production mode > should have correct color on index page (on nav from other) (DD)
  • CSS Support > Page hydrates with CSS and not waiting on dependencies > useLightnincsss(false) > production mode > should hydrate black without dependencies manifest (DD)
  • CSS Support > Page hydrates with CSS and not waiting on dependencies > useLightnincsss(false) > production mode > should hydrate red without dependencies manifest (DD)
  • CSS Support > Page hydrates with CSS and not waiting on dependencies > useLightnincsss(false) > production mode > should route from black to red without dependencies (DD)
  • CSS Support > Page hydrates with CSS and not waiting on dependencies > useLightnincsss(true) > production mode > should hydrate black without dependencies manifest (DD)
  • CSS Support > Page hydrates with CSS and not waiting on dependencies > useLightnincsss(true) > production mode > should hydrate red without dependencies manifest (DD)
  • CSS Support > Page hydrates with CSS and not waiting on dependencies > useLightnincsss(true) > production mode > should route from black to red without dependencies (DD)
  • CSS Support > production mode > CSS Import from node_modules > useLightnincsss(false) > should fail the build (DD)
  • CSS Support > production mode > CSS Import from node_modules > useLightnincsss(true) > should fail the build (DD)
Expand output

● CSS Support › production mode › CSS Import from node_modules › useLightnincsss(true) › should fail the build

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."

  42 |             })
  43 |
> 44 |             it('should fail the build', async () => {
     |             ^
  45 |               const { code, stderr } = await nextBuild(appDir, [], {
  46 |                 stderr: true,
  47 |               })

  at it (integration/css/test/css-rendering.test.ts:44:13)
      at Array.forEach (<anonymous>)
  at integration/css/test/css-rendering.test.ts:25:36
  at describe (integration/css/test/css-rendering.test.ts:21:7)
  at integration/css/test/css-rendering.test.ts:18:56
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › production mode › CSS Import from node_modules › useLightnincsss(false) › should fail the build

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."

  42 |             })
  43 |
> 44 |             it('should fail the build', async () => {
     |             ^
  45 |               const { code, stderr } = await nextBuild(appDir, [], {
  46 |                 stderr: true,
  47 |               })

  at it (integration/css/test/css-rendering.test.ts:44:13)
      at Array.forEach (<anonymous>)
  at integration/css/test/css-rendering.test.ts:25:36
  at describe (integration/css/test/css-rendering.test.ts:21:7)
  at integration/css/test/css-rendering.test.ts:18:56
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › CSS page transition inject <style> with nonce so it works with CSP header › production mode › should have correct color on index page (on load)

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  215 |           await remove(join(appDir, '.next'))
  216 |         })
> 217 |         beforeAll(async () => {
      |         ^
  218 |           await nextBuild(appDir, [], {})
  219 |           appPort = await findPort()
  220 |           app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:217:9)
  at integration/css/test/css-rendering.test.ts:211:58
  at describe (integration/css/test/css-rendering.test.ts:62:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › CSS page transition inject <style> with nonce so it works with CSP header › production mode › should have correct color on index page (on hover)

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  215 |           await remove(join(appDir, '.next'))
  216 |         })
> 217 |         beforeAll(async () => {
      |         ^
  218 |           await nextBuild(appDir, [], {})
  219 |           appPort = await findPort()
  220 |           app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:217:9)
  at integration/css/test/css-rendering.test.ts:211:58
  at describe (integration/css/test/css-rendering.test.ts:62:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › CSS page transition inject <style> with nonce so it works with CSP header › production mode › should not change color on hover

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  215 |           await remove(join(appDir, '.next'))
  216 |         })
> 217 |         beforeAll(async () => {
      |         ^
  218 |           await nextBuild(appDir, [], {})
  219 |           appPort = await findPort()
  220 |           app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:217:9)
  at integration/css/test/css-rendering.test.ts:211:58
  at describe (integration/css/test/css-rendering.test.ts:62:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › CSS page transition inject <style> with nonce so it works with CSP header › production mode › should have correct CSS injection order

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  215 |           await remove(join(appDir, '.next'))
  216 |         })
> 217 |         beforeAll(async () => {
      |         ^
  218 |           await nextBuild(appDir, [], {})
  219 |           appPort = await findPort()
  220 |           app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:217:9)
  at integration/css/test/css-rendering.test.ts:211:58
  at describe (integration/css/test/css-rendering.test.ts:62:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › CSS page transition inject <style> with nonce so it works with CSP header › production mode › should have correct color on index page (on nav from index)

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  215 |           await remove(join(appDir, '.next'))
  216 |         })
> 217 |         beforeAll(async () => {
      |         ^
  218 |           await nextBuild(appDir, [], {})
  219 |           appPort = await findPort()
  220 |           app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:217:9)
  at integration/css/test/css-rendering.test.ts:211:58
  at describe (integration/css/test/css-rendering.test.ts:62:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › CSS page transition inject <style> with nonce so it works with CSP header › production mode › should have correct color on index page (on nav from other)

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  215 |           await remove(join(appDir, '.next'))
  216 |         })
> 217 |         beforeAll(async () => {
      |         ^
  218 |           await nextBuild(appDir, [], {})
  219 |           appPort = await findPort()
  220 |           app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:217:9)
  at integration/css/test/css-rendering.test.ts:211:58
  at describe (integration/css/test/css-rendering.test.ts:62:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › Page hydrates with CSS and not waiting on dependencies › useLightnincsss(true) › production mode › should hydrate black without dependencies manifest

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  484 |             await remove(join(appDir, '.next'))
  485 |           })
> 486 |           beforeAll(async () => {
      |           ^
  487 |             await nextBuild(appDir, [], {})
  488 |             appPort = await findPort()
  489 |             app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:486:11)
  at integration/css/test/css-rendering.test.ts:480:60
      at Array.forEach (<anonymous>)
  at integration/css/test/css-rendering.test.ts:402:32
  at describe (integration/css/test/css-rendering.test.ts:398:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › Page hydrates with CSS and not waiting on dependencies › useLightnincsss(true) › production mode › should hydrate red without dependencies manifest

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  484 |             await remove(join(appDir, '.next'))
  485 |           })
> 486 |           beforeAll(async () => {
      |           ^
  487 |             await nextBuild(appDir, [], {})
  488 |             appPort = await findPort()
  489 |             app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:486:11)
  at integration/css/test/css-rendering.test.ts:480:60
      at Array.forEach (<anonymous>)
  at integration/css/test/css-rendering.test.ts:402:32
  at describe (integration/css/test/css-rendering.test.ts:398:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › Page hydrates with CSS and not waiting on dependencies › useLightnincsss(true) › production mode › should route from black to red without dependencies

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  484 |             await remove(join(appDir, '.next'))
  485 |           })
> 486 |           beforeAll(async () => {
      |           ^
  487 |             await nextBuild(appDir, [], {})
  488 |             appPort = await findPort()
  489 |             app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:486:11)
  at integration/css/test/css-rendering.test.ts:480:60
      at Array.forEach (<anonymous>)
  at integration/css/test/css-rendering.test.ts:402:32
  at describe (integration/css/test/css-rendering.test.ts:398:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › Page hydrates with CSS and not waiting on dependencies › useLightnincsss(false) › production mode › should hydrate black without dependencies manifest

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  484 |             await remove(join(appDir, '.next'))
  485 |           })
> 486 |           beforeAll(async () => {
      |           ^
  487 |             await nextBuild(appDir, [], {})
  488 |             appPort = await findPort()
  489 |             app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:486:11)
  at integration/css/test/css-rendering.test.ts:480:60
      at Array.forEach (<anonymous>)
  at integration/css/test/css-rendering.test.ts:402:32
  at describe (integration/css/test/css-rendering.test.ts:398:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › Page hydrates with CSS and not waiting on dependencies › useLightnincsss(false) › production mode › should hydrate red without dependencies manifest

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  484 |             await remove(join(appDir, '.next'))
  485 |           })
> 486 |           beforeAll(async () => {
      |           ^
  487 |             await nextBuild(appDir, [], {})
  488 |             appPort = await findPort()
  489 |             app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:486:11)
  at integration/css/test/css-rendering.test.ts:480:60
      at Array.forEach (<anonymous>)
  at integration/css/test/css-rendering.test.ts:402:32
  at describe (integration/css/test/css-rendering.test.ts:398:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

● CSS Support › Page hydrates with CSS and not waiting on dependencies › useLightnincsss(false) › production mode › should route from black to red without dependencies

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  484 |             await remove(join(appDir, '.next'))
  485 |           })
> 486 |           beforeAll(async () => {
      |           ^
  487 |             await nextBuild(appDir, [], {})
  488 |             appPort = await findPort()
  489 |             app = await nextStart(appDir, appPort)

  at beforeAll (integration/css/test/css-rendering.test.ts:486:11)
  at integration/css/test/css-rendering.test.ts:480:60
      at Array.forEach (<anonymous>)
  at integration/css/test/css-rendering.test.ts:402:32
  at describe (integration/css/test/css-rendering.test.ts:398:3)
  at Object.describe (integration/css/test/css-rendering.test.ts:17:1)

pnpm test test/integration/app-dynamic-error/test/index.test.ts (turbopack) (job)

  • CSS Module client-side navigation > dev > should be able to client-side navigate from red to blue (DD)
  • CSS Module client-side navigation > dev > should be able to client-side navigate from blue to red (DD)
  • CSS Module client-side navigation > dev > should be able to client-side navigate from none to red (DD)
  • CSS Module client-side navigation > dev > should be able to client-side navigate from none to blue (DD)
  • CSS Module client-side navigation > production mode > should time out and hard navigate for stalled CSS request (DD)
  • CSS Module client-side navigation > production mode > should be able to client-side navigate from red to blue (DD)
  • CSS Module client-side navigation > production mode > should be able to client-side navigate from blue to red (DD)
  • CSS Module client-side navigation > production mode > should be able to client-side navigate from none to red (DD)
  • CSS Module client-side navigation > production mode > should be able to client-side navigate from none to blue (DD)
Expand output

● CSS Module client-side navigation › production mode › should time out and hard navigate for stalled CSS request

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  154 |     'production mode',
  155 |     () => {
> 156 |       beforeAll(async () => {
      |       ^
  157 |         await remove(join(appDir, '.next'))
  158 |         await nextBuild(appDir)
  159 |         const port = await findPort()

  at beforeAll (integration/css-client-nav/test/index.test.ts:156:7)
  at integration/css-client-nav/test/index.test.ts:153:56
  at Object.describe (integration/css-client-nav/test/index.test.ts:152:1)

● CSS Module client-side navigation › production mode › should be able to client-side navigate from red to blue

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  154 |     'production mode',
  155 |     () => {
> 156 |       beforeAll(async () => {
      |       ^
  157 |         await remove(join(appDir, '.next'))
  158 |         await nextBuild(appDir)
  159 |         const port = await findPort()

  at beforeAll (integration/css-client-nav/test/index.test.ts:156:7)
  at integration/css-client-nav/test/index.test.ts:153:56
  at Object.describe (integration/css-client-nav/test/index.test.ts:152:1)

● CSS Module client-side navigation › production mode › should be able to client-side navigate from blue to red

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  154 |     'production mode',
  155 |     () => {
> 156 |       beforeAll(async () => {
      |       ^
  157 |         await remove(join(appDir, '.next'))
  158 |         await nextBuild(appDir)
  159 |         const port = await findPort()

  at beforeAll (integration/css-client-nav/test/index.test.ts:156:7)
  at integration/css-client-nav/test/index.test.ts:153:56
  at Object.describe (integration/css-client-nav/test/index.test.ts:152:1)

● CSS Module client-side navigation › production mode › should be able to client-side navigate from none to red

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  154 |     'production mode',
  155 |     () => {
> 156 |       beforeAll(async () => {
      |       ^
  157 |         await remove(join(appDir, '.next'))
  158 |         await nextBuild(appDir)
  159 |         const port = await findPort()

  at beforeAll (integration/css-client-nav/test/index.test.ts:156:7)
  at integration/css-client-nav/test/index.test.ts:153:56
  at Object.describe (integration/css-client-nav/test/index.test.ts:152:1)

● CSS Module client-side navigation › production mode › should be able to client-side navigate from none to blue

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  154 |     'production mode',
  155 |     () => {
> 156 |       beforeAll(async () => {
      |       ^
  157 |         await remove(join(appDir, '.next'))
  158 |         await nextBuild(appDir)
  159 |         const port = await findPort()

  at beforeAll (integration/css-client-nav/test/index.test.ts:156:7)
  at integration/css-client-nav/test/index.test.ts:153:56
  at Object.describe (integration/css-client-nav/test/index.test.ts:152:1)

● CSS Module client-side navigation › dev › should be able to client-side navigate from red to blue

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."

  25 |
  26 | function runTests(dev: boolean) {
> 27 |   it('should be able to client-side navigate from red to blue', async () => {
     |   ^
  28 |     let browser
  29 |     try {
  30 |       browser = await webdriver(appPort, '/red')

  at it (integration/css-client-nav/test/index.test.ts:27:3)
  at runTests (integration/css-client-nav/test/index.test.ts:235:5)
  at describe (integration/css-client-nav/test/index.test.ts:226:3)
  at Object.describe (integration/css-client-nav/test/index.test.ts:152:1)

● CSS Module client-side navigation › dev › should be able to client-side navigate from blue to red

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."

  56 |   })
  57 |
> 58 |   it('should be able to client-side navigate from blue to red', async () => {
     |   ^
  59 |     const content = await renderViaHTTP(appPort, '/blue')
  60 |     const $ = cheerio.load(content)
  61 |

  at it (integration/css-client-nav/test/index.test.ts:58:3)
  at runTests (integration/css-client-nav/test/index.test.ts:235:5)
  at describe (integration/css-client-nav/test/index.test.ts:226:3)
  at Object.describe (integration/css-client-nav/test/index.test.ts:152:1)

● CSS Module client-side navigation › dev › should be able to client-side navigate from none to red

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."

   99 |   })
  100 |
> 101 |   it('should be able to client-side navigate from none to red', async () => {
      |   ^
  102 |     let browser
  103 |     try {
  104 |       browser = await webdriver(appPort, '/none')

  at it (integration/css-client-nav/test/index.test.ts:101:3)
  at runTests (integration/css-client-nav/test/index.test.ts:235:5)
  at describe (integration/css-client-nav/test/index.test.ts:226:3)
  at Object.describe (integration/css-client-nav/test/index.test.ts:152:1)

● CSS Module client-side navigation › dev › should be able to client-side navigate from none to blue

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."

  124 |   })
  125 |
> 126 |   it('should be able to client-side navigate from none to blue', async () => {
      |   ^
  127 |     let browser
  128 |     try {
  129 |       browser = await webdriver(appPort, '/none')

  at it (integration/css-client-nav/test/index.test.ts:126:3)
  at runTests (integration/css-client-nav/test/index.test.ts:235:5)
  at describe (integration/css-client-nav/test/index.test.ts:226:3)
  at Object.describe (integration/css-client-nav/test/index.test.ts:152:1)

● Test suite failed to run

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

  182 |       })
  183 |       afterAll(async () => {
> 184 |         proxyServer.close()
      |                     ^
  185 |         await killApp(app)
  186 |       })
  187 |

  at Object.close (integration/css-client-nav/test/index.test.ts:184:21)

pnpm test test/integration/auto-export-error-bail/test/index.test.ts (turbopack) (job)

  • Build Output > production mode > Basic Application Output (experimental: {"gzipSize":false}) > should not include internal pages (DD)
  • Build Output > production mode > Basic Application Output (experimental: {"gzipSize":false}) > should print duration when rendering or get static props takes long (DD)
  • Build Output > production mode > Basic Application Output (experimental: {"gzipSize":false}) > should not emit extracted comments (DD)
  • Build Output > production mode > Basic Application Output (experimental: {}) > should not include internal pages (DD)
  • Build Output > production mode > Basic Application Output (experimental: {}) > should print duration when rendering or get static props takes long (DD)
  • Build Output > production mode > Basic Application Output (experimental: {}) > should not emit extracted comments (DD)
  • Build Output > production mode > Custom App Output > should not include custom error (DD)
  • Build Output > production mode > Custom Error Output > should not include custom app (DD)
  • Build Output > production mode > Custom Static Error Output > should not specify /404 as lambda when static (DD)
  • Build Output > production mode > With Parallel Routes > should not have duplicate paths that resolve to the same route (DD)
Expand output

● Build Output › production mode › Basic Application Output (experimental: {}) › should not include internal pages

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  25 |           const hasExperimentalConfig = Object.keys(experimental).length > 0
  26 |
> 27 |           beforeAll(async () => {
     |           ^
  28 |             await remove(join(appDir, '.next'))
  29 |             if (hasExperimentalConfig) {
  30 |               nextConfig.write(

  at beforeAll (integration/build-output/test/index.test.ts:27:11)
  at describe (integration/build-output/test/index.test.ts:19:9)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › Basic Application Output (experimental: {}) › should not deviate from snapshot

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  25 |           const hasExperimentalConfig = Object.keys(experimental).length > 0
  26 |
> 27 |           beforeAll(async () => {
     |           ^
  28 |             await remove(join(appDir, '.next'))
  29 |             if (hasExperimentalConfig) {
  30 |               nextConfig.write(

  at beforeAll (integration/build-output/test/index.test.ts:27:11)
  at describe (integration/build-output/test/index.test.ts:19:9)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › Basic Application Output (experimental: {}) › should print duration when rendering or get static props takes long

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  25 |           const hasExperimentalConfig = Object.keys(experimental).length > 0
  26 |
> 27 |           beforeAll(async () => {
     |           ^
  28 |             await remove(join(appDir, '.next'))
  29 |             if (hasExperimentalConfig) {
  30 |               nextConfig.write(

  at beforeAll (integration/build-output/test/index.test.ts:27:11)
  at describe (integration/build-output/test/index.test.ts:19:9)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › Basic Application Output (experimental: {}) › should not emit extracted comments

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  25 |           const hasExperimentalConfig = Object.keys(experimental).length > 0
  26 |
> 27 |           beforeAll(async () => {
     |           ^
  28 |             await remove(join(appDir, '.next'))
  29 |             if (hasExperimentalConfig) {
  30 |               nextConfig.write(

  at beforeAll (integration/build-output/test/index.test.ts:27:11)
  at describe (integration/build-output/test/index.test.ts:19:9)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › Basic Application Output (experimental: {"gzipSize":false}) › should not include internal pages

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  25 |           const hasExperimentalConfig = Object.keys(experimental).length > 0
  26 |
> 27 |           beforeAll(async () => {
     |           ^
  28 |             await remove(join(appDir, '.next'))
  29 |             if (hasExperimentalConfig) {
  30 |               nextConfig.write(

  at beforeAll (integration/build-output/test/index.test.ts:27:11)
  at describe (integration/build-output/test/index.test.ts:19:9)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › Basic Application Output (experimental: {"gzipSize":false}) › should not deviate from snapshot

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  25 |           const hasExperimentalConfig = Object.keys(experimental).length > 0
  26 |
> 27 |           beforeAll(async () => {
     |           ^
  28 |             await remove(join(appDir, '.next'))
  29 |             if (hasExperimentalConfig) {
  30 |               nextConfig.write(

  at beforeAll (integration/build-output/test/index.test.ts:27:11)
  at describe (integration/build-output/test/index.test.ts:19:9)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › Basic Application Output (experimental: {"gzipSize":false}) › should print duration when rendering or get static props takes long

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  25 |           const hasExperimentalConfig = Object.keys(experimental).length > 0
  26 |
> 27 |           beforeAll(async () => {
     |           ^
  28 |             await remove(join(appDir, '.next'))
  29 |             if (hasExperimentalConfig) {
  30 |               nextConfig.write(

  at beforeAll (integration/build-output/test/index.test.ts:27:11)
  at describe (integration/build-output/test/index.test.ts:19:9)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › Basic Application Output (experimental: {"gzipSize":false}) › should not emit extracted comments

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  25 |           const hasExperimentalConfig = Object.keys(experimental).length > 0
  26 |
> 27 |           beforeAll(async () => {
     |           ^
  28 |             await remove(join(appDir, '.next'))
  29 |             if (hasExperimentalConfig) {
  30 |               nextConfig.write(

  at beforeAll (integration/build-output/test/index.test.ts:27:11)
  at describe (integration/build-output/test/index.test.ts:19:9)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › Custom App Output › should not include custom error

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."

  199 |         })
  200 |
> 201 |         it('should not include custom error', async () => {
      |         ^
  202 |           const { stdout } = await nextBuild(appDir, [], {
  203 |             stdout: true,
  204 |           })

  at it (integration/build-output/test/index.test.ts:201:9)
  at describe (integration/build-output/test/index.test.ts:194:7)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › Custom Error Output › should not include custom app

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."

  223 |         })
  224 |
> 225 |         it('should not include custom app', async () => {
      |         ^
  226 |           const { stdout } = await nextBuild(appDir, [], {
  227 |             stdout: true,
  228 |           })

  at it (integration/build-output/test/index.test.ts:225:9)
  at describe (integration/build-output/test/index.test.ts:218:7)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › Custom Static Error Output › should not specify /404 as lambda when static

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."

  247 |         })
  248 |
> 249 |         it('should not specify /404 as lambda when static', async () => {
      |         ^
  250 |           const { stdout } = await nextBuild(appDir, [], {
  251 |             stdout: true,
  252 |           })

  at it (integration/build-output/test/index.test.ts:249:9)
  at describe (integration/build-output/test/index.test.ts:242:7)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

● Build Output › production mode › With Parallel Routes › should not have duplicate paths that resolve to the same route

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."

  258 |
  259 |       describe('With Parallel Routes', () => {
> 260 |         it('should not have duplicate paths that resolve to the same route', async () => {
      |         ^
  261 |           const appDir = join(fixturesDir, 'with-parallel-routes')
  262 |
  263 |           const { stdout } = await nextBuild(appDir, [], {

  at it (integration/build-output/test/index.test.ts:260:9)
  at describe (integration/build-output/test/index.test.ts:259:7)
  at integration/build-output/test/index.test.ts:13:56
  at Object.describe (integration/build-output/test/index.test.ts:12:1)

pnpm test test/integration/compression/test/index.test.ts (turbopack) (job)

  • 404 Page Support > development mode > should use pages/404 (DD)
  • 404 Page Support > development mode > should set correct status code with pages/404 (DD)
  • 404 Page Support > development mode > should use pages/404 for .d.ts file (DD)
  • 404 Page Support > development mode > should not error when visited directly (DD)
  • 404 Page Support > development mode > should render _error for a 500 error still (DD)
  • 404 Page Support > development mode 2 > falls back to _error correctly without pages/404 (DD)
  • 404 Page Support > development mode 2 > shows error with getInitialProps in pages/404 dev (DD)
  • 404 Page Support > development mode 2 > does not show error with getStaticProps in pages/404 dev (DD)
  • 404 Page Support > development mode 2 > shows error with getServerSideProps in pages/404 dev (DD)
Expand output

● 404 Page Support › development mode › should use pages/404

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."

  28 |
  29 | const runTests = (mode = 'server') => {
> 30 |   it('should use pages/404', async () => {
     |   ^
  31 |     const html = await renderViaHTTP(appPort, '/abc')
  32 |     expect(html).toContain('custom 404 page')
  33 |   })

  at it (integration/404-page/test/index.test.ts:30:3)
  at runTests (integration/404-page/test/index.test.ts:82:7)
  at integration/404-page/test/index.test.ts:73:58
  at Object.describe (integration/404-page/test/index.test.ts:72:1)

● 404 Page Support › development mode › should set correct status code with pages/404

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."

  33 |   })
  34 |
> 35 |   it('should set correct status code with pages/404', async () => {
     |   ^
  36 |     const res = await fetchViaHTTP(appPort, '/abc')
  37 |     expect(res.status).toBe(404)
  38 |   })

  at it (integration/404-page/test/index.test.ts:35:3)
  at runTests (integration/404-page/test/index.test.ts:82:7)
  at integration/404-page/test/index.test.ts:73:58
  at Object.describe (integration/404-page/test/index.test.ts:72:1)

● 404 Page Support › development mode › should use pages/404 for .d.ts file

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."

  38 |   })
  39 |
> 40 |   it('should use pages/404 for .d.ts file', async () => {
     |   ^
  41 |     const html = await renderViaHTTP(appPort, '/invalidExtension')
  42 |     expect(html).toContain('custom 404 page')
  43 |   })

  at it (integration/404-page/test/index.test.ts:40:3)
  at runTests (integration/404-page/test/index.test.ts:82:7)
  at integration/404-page/test/index.test.ts:73:58
  at Object.describe (integration/404-page/test/index.test.ts:72:1)

● 404 Page Support › development mode › should not error when visited directly

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."

  43 |   })
  44 |
> 45 |   it('should not error when visited directly', async () => {
     |   ^
  46 |     const res = await fetchViaHTTP(appPort, '/404')
  47 |     expect(res.status).toBe(404)
  48 |     expect(await res.text()).toContain('custom 404 page')

  at it (integration/404-page/test/index.test.ts:45:3)
  at runTests (integration/404-page/test/index.test.ts:82:7)
  at integration/404-page/test/index.test.ts:73:58
  at Object.describe (integration/404-page/test/index.test.ts:72:1)

● 404 Page Support › development mode › should render _error for a 500 error still

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."

  49 |   })
  50 |
> 51 |   it('should render _error for a 500 error still', async () => {
     |   ^
  52 |     const html = await renderViaHTTP(appPort, '/err')
  53 |     expect(html).not.toContain('custom 404 page')
  54 |     expect(html).toContain(mode === 'dev' ? 'oops' : 'Internal Server Error')

  at it (integration/404-page/test/index.test.ts:51:3)
  at runTests (integration/404-page/test/index.test.ts:82:7)
  at integration/404-page/test/index.test.ts:73:58
  at Object.describe (integration/404-page/test/index.test.ts:72:1)

● 404 Page Support › development mode 2 › falls back to _error correctly without pages/404

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."

  84 |   )
  85 |   describe('development mode 2', () => {
> 86 |     it('falls back to _error correctly without pages/404', async () => {
     |     ^
  87 |       await fs.move(pages404, `${pages404}.bak`)
  88 |       appPort = await findPort()
  89 |       app = await launchApp(appDir, appPort)

  at it (integration/404-page/test/index.test.ts:86:5)
  at describe (integration/404-page/test/index.test.ts:85:3)
  at Object.describe (integration/404-page/test/index.test.ts:72:1)

● 404 Page Support › development mode 2 › shows error with getInitialProps in pages/404 dev

ENOENT: no such file or directory, stat '/root/actions-runner/_work/next.js/next.js/test/integration/404-page/pages/404.js'

● 404 Page Support › development mode 2 › does not show error with getStaticProps in pages/404 dev

ENOENT: no such file or directory, stat '/root/actions-runner/_work/next.js/next.js/test/integration/404-page/pages/404.js'

● 404 Page Support › development mode 2 › shows error with getServerSideProps in pages/404 dev

ENOENT: no such file or directory, stat '/root/actions-runner/_work/next.js/next.js/test/integration/404-page/pages/404.js'

pnpm test test/integration/dynamic-optional-routing/test/index.test.ts (turbopack) (job)

  • create-next-app --no-app (Pages Router) > should create JavaScript project with --js flag (DD)
  • create-next-app --no-app (Pages Router) > should create TypeScript project with --ts flag (DD)
  • create-next-app --no-app (Pages Router) > should create project inside "src" directory with --src-dir flag (DD)
  • create-next-app --no-app (Pages Router) > should create TailwindCSS project with --tailwind flag (DD)
  • create-next-app --no-app (Pages Router) > should create an empty project with --empty flag (DD)
  • create-next-app --no-app (Pages Router) > should create an empty TailwindCSS project with --empty flag (DD)
Expand output

● create-next-app --no-app (Pages Router) › should create JavaScript project with --js flag

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 |
> 25 |   it('should create JavaScript project with --js flag', async () => {
     |   ^
  26 |     await useTempDir(async (cwd) => {
  27 |       const projectName = 'pages-js'
  28 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/pages.test.ts:25:3)
  at Object.describe (integration/create-next-app/templates/pages.test.ts:10:1)

● create-next-app --no-app (Pages Router) › should create TypeScript project with --ts flag

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."

  59 |   })
  60 |
> 61 |   it('should create TypeScript project with --ts flag', async () => {
     |   ^
  62 |     await useTempDir(async (cwd) => {
  63 |       const projectName = 'pages-ts'
  64 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/pages.test.ts:61:3)
  at Object.describe (integration/create-next-app/templates/pages.test.ts:10:1)

● create-next-app --no-app (Pages Router) › should create project inside "src" directory with --src-dir flag

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."

  92 |   })
  93 |
> 94 |   it('should create project inside "src" directory with --src-dir flag', async () => {
     |   ^
  95 |     await useTempDir(async (cwd) => {
  96 |       const projectName = 'pages-src-dir'
  97 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/pages.test.ts:94:3)
  at Object.describe (integration/create-next-app/templates/pages.test.ts:10:1)

● create-next-app --no-app (Pages Router) › should create TailwindCSS project with --tailwind flag

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."

  129 |   })
  130 |
> 131 |   it('should create TailwindCSS project with --tailwind flag', async () => {
      |   ^
  132 |     await useTempDir(async (cwd) => {
  133 |       const projectName = 'pages-tw'
  134 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/pages.test.ts:131:3)
  at Object.describe (integration/create-next-app/templates/pages.test.ts:10:1)

● create-next-app --no-app (Pages Router) › should create an empty project with --empty flag

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."

  167 |   })
  168 |
> 169 |   it('should create an empty project with --empty flag', async () => {
      |   ^
  170 |     await useTempDir(async (cwd) => {
  171 |       const projectName = 'pages-empty'
  172 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/pages.test.ts:169:3)
  at Object.describe (integration/create-next-app/templates/pages.test.ts:10:1)

● create-next-app --no-app (Pages Router) › should create an empty TailwindCSS project with --empty flag

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."

  208 |   })
  209 |
> 210 |   it('should create an empty TailwindCSS project with --empty flag', async () => {
      |   ^
  211 |     await useTempDir(async (cwd) => {
  212 |       const projectName = 'pages-tw-empty'
  213 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/pages.test.ts:210:3)
  at Object.describe (integration/create-next-app/templates/pages.test.ts:10:1)

pnpm test test/integration/catches-missing-getStaticProps/test/index.test.ts (turbopack) (job)

  • create-next-app --app (App Router) > should create JavaScript project with --js flag (DD)
  • create-next-app --app (App Router) > should create TypeScript project with --ts flag (DD)
  • create-next-app --app (App Router) > should create project inside "src" directory with --src-dir flag (DD)
  • create-next-app --app (App Router) > should create TailwindCSS project with --tailwind flag (DD)
  • create-next-app --app (App Router) > should create an empty project with --empty flag (DD)
  • create-next-app --app (App Router) > should create an empty TailwindCSS project with --empty flag (DD)
Expand output

● create-next-app --app (App Router) › should create JavaScript project with --js flag

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 |
> 25 |   it('should create JavaScript project with --js flag', async () => {
     |   ^
  26 |     await useTempDir(async (cwd) => {
  27 |       const projectName = 'app-js'
  28 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/app.test.ts:25:3)
  at Object.describe (integration/create-next-app/templates/app.test.ts:10:1)

● create-next-app --app (App Router) › should create TypeScript project with --ts flag

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."

  54 |   })
  55 |
> 56 |   it('should create TypeScript project with --ts flag', async () => {
     |   ^
  57 |     await useTempDir(async (cwd) => {
  58 |       const projectName = 'app-ts'
  59 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/app.test.ts:56:3)
  at Object.describe (integration/create-next-app/templates/app.test.ts:10:1)

● create-next-app --app (App Router) › should create project inside "src" directory with --src-dir flag

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."

  83 |   })
  84 |
> 85 |   it('should create project inside "src" directory with --src-dir flag', async () => {
     |   ^
  86 |     await useTempDir(async (cwd) => {
  87 |       const projectName = 'app-src-dir'
  88 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/app.test.ts:85:3)
  at Object.describe (integration/create-next-app/templates/app.test.ts:10:1)

● create-next-app --app (App Router) › should create TailwindCSS project with --tailwind flag

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."

  121 |   })
  122 |
> 123 |   it('should create TailwindCSS project with --tailwind flag', async () => {
      |   ^
  124 |     await useTempDir(async (cwd) => {
  125 |       const projectName = 'app-tw'
  126 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/app.test.ts:123:3)
  at Object.describe (integration/create-next-app/templates/app.test.ts:10:1)

● create-next-app --app (App Router) › should create an empty project with --empty flag

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."

  158 |   })
  159 |
> 160 |   it('should create an empty project with --empty flag', async () => {
      |   ^
  161 |     await useTempDir(async (cwd) => {
  162 |       const projectName = 'app-empty'
  163 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/app.test.ts:160:3)
  at Object.describe (integration/create-next-app/templates/app.test.ts:10:1)

● create-next-app --app (App Router) › should create an empty TailwindCSS project with --empty flag

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."

  198 |   })
  199 |
> 200 |   it('should create an empty TailwindCSS project with --empty flag', async () => {
      |   ^
  201 |     await useTempDir(async (cwd) => {
  202 |       const projectName = 'app-tw-empty'
  203 |       const { exitCode } = await run(

  at it (integration/create-next-app/templates/app.test.ts:200:3)
  at Object.describe (integration/create-next-app/templates/app.test.ts:10:1)

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

  • app dir - with output export - dynamic api route > should work in prod with dynamicApiRoute 'error' > should work (DD)
  • app dir - with output export - dynamic api route > should work in prod with dynamicApiRoute 'force-dynamic' > should work (DD)
  • app dir - with output export - dynamic api route > should work in prod with dynamicApiRoute 'force-static' > should work (DD)
  • app dir - with output export - dynamic api route > should work in prod with dynamicApiRoute undefined > should work (DD)
Expand output

● app dir - with output export - dynamic api route › should work in prod with dynamicApiRoute undefined › should work

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  259 |   let port: number
  260 |   let stopOrKill: (() => Promise<void>) | undefined
> 261 |   beforeAll(async () => {
      |   ^
  262 |     if (isNextDev) {
  263 |       await next.start()
  264 |       port = Number(next.appPort)

  at beforeAll (e2e/app-dir-export/test/utils.ts:261:3)
  at e2e/app-dir-export/test/dynamicapiroute.test.ts:20:15
      at Array.forEach (<anonymous>)
  at e2e/app-dir-export/test/dynamicapiroute.test.ts:17:4
  at Object.describe (e2e/app-dir-export/test/dynamicapiroute.test.ts:3:1)

● app dir - with output export - dynamic api route › should work in prod with dynamicApiRoute 'error' › should work

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  259 |   let port: number
  260 |   let stopOrKill: (() => Promise<void>) | undefined
> 261 |   beforeAll(async () => {
      |   ^
  262 |     if (isNextDev) {
  263 |       await next.start()
  264 |       port = Number(next.appPort)

  at beforeAll (e2e/app-dir-export/test/utils.ts:261:3)
  at e2e/app-dir-export/test/dynamicapiroute.test.ts:20:15
      at Array.forEach (<anonymous>)
  at e2e/app-dir-export/test/dynamicapiroute.test.ts:17:4
  at Object.describe (e2e/app-dir-export/test/dynamicapiroute.test.ts:3:1)

● app dir - with output export - dynamic api route › should work in prod with dynamicApiRoute 'force-static' › should work

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  259 |   let port: number
  260 |   let stopOrKill: (() => Promise<void>) | undefined
> 261 |   beforeAll(async () => {
      |   ^
  262 |     if (isNextDev) {
  263 |       await next.start()
  264 |       port = Number(next.appPort)

  at beforeAll (e2e/app-dir-export/test/utils.ts:261:3)
  at e2e/app-dir-export/test/dynamicapiroute.test.ts:20:15
      at Array.forEach (<anonymous>)
  at e2e/app-dir-export/test/dynamicapiroute.test.ts:17:4
  at Object.describe (e2e/app-dir-export/test/dynamicapiroute.test.ts:3:1)

● app dir - with output export - dynamic api route › should work in prod with dynamicApiRoute 'force-dynamic' › should work

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  259 |   let port: number
  260 |   let stopOrKill: (() => Promise<void>) | undefined
> 261 |   beforeAll(async () => {
      |   ^
  262 |     if (isNextDev) {
  263 |       await next.start()
  264 |       port = Number(next.appPort)

  at beforeAll (e2e/app-dir-export/test/utils.ts:261:3)
  at e2e/app-dir-export/test/dynamicapiroute.test.ts:20:15
      at Array.forEach (<anonymous>)
  at e2e/app-dir-export/test/dynamicapiroute.test.ts:17:4
  at Object.describe (e2e/app-dir-export/test/dynamicapiroute.test.ts:3:1)

pnpm test-dev-turbo test/development/app-dir/devtools-position/top-left-position.test.ts (turbopack) (job)

  • ReactRefreshLogBox > Node.js builtins (DD)
  • ReactRefreshLogBox > Module not found (DD)
  • ReactRefreshLogBox > Module not found (empty import trace) (DD)
  • ReactRefreshLogBox > Module not found (missing global CSS) (DD)
Expand output

● ReactRefreshLogBox › Node.js builtins

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:44321/", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at createSandbox (lib/development-sandbox.ts:53:21)
  at Object.<anonymous> (development/acceptance/ReactRefreshLogBox-builtins.test.ts:14:27)

● ReactRefreshLogBox › Module not found

You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`

  184 |     setImmediate(() => {
  185 |       if (!unwrappedByTypeScriptUsingKeyword) {
> 186 |         throw new Error(
      |               ^
  187 |           'You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`'
  188 |         )
  189 |       }

  at Immediate.<anonymous> (lib/development-sandbox.ts:186:15)

● ReactRefreshLogBox › Module not found

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:46379/", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at createSandbox (lib/development-sandbox.ts:53:21)
  at Object.<anonymous> (development/acceptance/ReactRefreshLogBox-builtins.test.ts:96:27)

● ReactRefreshLogBox › Module not found (empty import trace)

You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`

  184 |     setImmediate(() => {
  185 |       if (!unwrappedByTypeScriptUsingKeyword) {
> 186 |         throw new Error(
      |               ^
  187 |           'You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`'
  188 |         )
  189 |       }

  at Immediate.<anonymous> (lib/development-sandbox.ts:186:15)

● ReactRefreshLogBox › Module not found (empty import trace)

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:39443/", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at createSandbox (lib/development-sandbox.ts:53:21)
  at Object.<anonymous> (development/acceptance/ReactRefreshLogBox-builtins.test.ts:165:27)

● ReactRefreshLogBox › Module not found (missing global CSS)

You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`

  184 |     setImmediate(() => {
  185 |       if (!unwrappedByTypeScriptUsingKeyword) {
> 186 |         throw new Error(
      |               ^
  187 |           'You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`'
  188 |         )
  189 |       }

  at Immediate.<anonymous> (lib/development-sandbox.ts:186:15)

● ReactRefreshLogBox › Module not found (missing global CSS)

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:36227/", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at createSandbox (lib/development-sandbox.ts:53:21)
  at Object.<anonymous> (development/acceptance/ReactRefreshLogBox-builtins.test.ts:233:27)

● Test suite failed to run

You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`

  184 |     setImmediate(() => {
  185 |       if (!unwrappedByTypeScriptUsingKeyword) {
> 186 |         throw new Error(
      |               ^
  187 |           'You must use `using` to create a sandbox, i.e., `await using sandbox = await createSandbox(`'
  188 |         )
  189 |       }

  at Immediate.<anonymous> (lib/development-sandbox.ts:186:15)

pnpm test test/integration/build-trace-extra-entries/test/index.test.ts (turbopack) (job)

  • Auto Export > dev > Supports commonjs 1 (DD)
  • Auto Export > dev > Supports commonjs 2 (DD)
  • Auto Export > dev > Refreshes query on mount (DD)
  • Auto Export > dev > should update asPath after mount (DD)
  • Auto Export > dev > should not replace URL with page name while asPath is delayed (DD)
  • Auto Export > dev > should not show hydration warning from mismatching asPath (DD)
  • Auto Export > production mode > Supports commonjs 1 (DD)
  • Auto Export > production mode > Supports commonjs 2 (DD)
  • Auto Export > production mode > Refreshes query on mount (DD)
  • Auto Export > production mode > should update asPath after mount (DD)
  • Auto Export > production mode > should not replace URL with page name while asPath is delayed (DD)
Expand output

● Auto Export › production mode › Supports commonjs 1

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  61 |     'production mode',
  62 |     () => {
> 63 |       beforeAll(async () => {
     |       ^
  64 |         await nextBuild(appDir)
  65 |         appPort = await findPort()
  66 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/auto-export/test/index.test.ts:63:7)
  at integration/auto-export/test/index.test.ts:60:56
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

● Auto Export › production mode › Supports commonjs 2

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  61 |     'production mode',
  62 |     () => {
> 63 |       beforeAll(async () => {
     |       ^
  64 |         await nextBuild(appDir)
  65 |         appPort = await findPort()
  66 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/auto-export/test/index.test.ts:63:7)
  at integration/auto-export/test/index.test.ts:60:56
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

● Auto Export › production mode › Refreshes query on mount

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  61 |     'production mode',
  62 |     () => {
> 63 |       beforeAll(async () => {
     |       ^
  64 |         await nextBuild(appDir)
  65 |         appPort = await findPort()
  66 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/auto-export/test/index.test.ts:63:7)
  at integration/auto-export/test/index.test.ts:60:56
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

● Auto Export › production mode › should update asPath after mount

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  61 |     'production mode',
  62 |     () => {
> 63 |       beforeAll(async () => {
     |       ^
  64 |         await nextBuild(appDir)
  65 |         appPort = await findPort()
  66 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/auto-export/test/index.test.ts:63:7)
  at integration/auto-export/test/index.test.ts:60:56
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

● Auto Export › production mode › should not replace URL with page name while asPath is delayed

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  61 |     'production mode',
  62 |     () => {
> 63 |       beforeAll(async () => {
     |       ^
  64 |         await nextBuild(appDir)
  65 |         appPort = await findPort()
  66 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/auto-export/test/index.test.ts:63:7)
  at integration/auto-export/test/index.test.ts:60:56
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

● Auto Export › dev › Supports commonjs 1

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."

  17 |
  18 | const runTests = () => {
> 19 |   it('Supports commonjs 1', async () => {
     |   ^
  20 |     const browser = await webdriver(appPort, '/commonjs1')
  21 |     const html = await browser.eval('document.body.innerHTML')
  22 |     expect(html).toMatch(/test1/)

  at it (integration/auto-export/test/index.test.ts:19:3)
  at runTests (integration/auto-export/test/index.test.ts:85:5)
  at describe (integration/auto-export/test/index.test.ts:77:3)
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

● Auto Export › dev › Supports commonjs 2

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."

  25 |   })
  26 |
> 27 |   it('Supports commonjs 2', async () => {
     |   ^
  28 |     const browser = await webdriver(appPort, '/commonjs2')
  29 |     const html = await browser.eval('document.body.innerHTML')
  30 |     expect(html).toMatch(/test2/)

  at it (integration/auto-export/test/index.test.ts:27:3)
  at runTests (integration/auto-export/test/index.test.ts:85:5)
  at describe (integration/auto-export/test/index.test.ts:77:3)
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

● Auto Export › dev › Refreshes query on mount

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."

  33 |   })
  34 |
> 35 |   it('Refreshes query on mount', async () => {
     |   ^
  36 |     const browser = await webdriver(appPort, '/post-1')
  37 |     await check(() => browser.eval('document.body.innerHTML'), /post.*post-1/)
  38 |     const html = await browser.eval('document.body.innerHTML')

  at it (integration/auto-export/test/index.test.ts:35:3)
  at runTests (integration/auto-export/test/index.test.ts:85:5)
  at describe (integration/auto-export/test/index.test.ts:77:3)
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

● Auto Export › dev › should update asPath after mount

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."

  40 |   })
  41 |
> 42 |   it('should update asPath after mount', async () => {
     |   ^
  43 |     const browser = await webdriver(appPort, '/zeit/cmnt-2')
  44 |     await check(
  45 |       () => browser.eval(`document.documentElement.innerHTML`),

  at it (integration/auto-export/test/index.test.ts:42:3)
  at runTests (integration/auto-export/test/index.test.ts:85:5)
  at describe (integration/auto-export/test/index.test.ts:77:3)
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

● Auto Export › dev › should not replace URL with page name while asPath is delayed

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."

  48 |   })
  49 |
> 50 |   it('should not replace URL with page name while asPath is delayed', async () => {
     |   ^
  51 |     const browser = await webdriver(appPort, '/zeit/cmnt-1')
  52 |     const val = await browser.eval(`!!window.pathnames.find(function(p) {
  53 |       return p !== '/zeit/cmnt-1'

  at it (integration/auto-export/test/index.test.ts:50:3)
  at runTests (integration/auto-export/test/index.test.ts:85:5)
  at describe (integration/auto-export/test/index.test.ts:77:3)
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

● Auto Export › dev › should not show hydration warning from mismatching asPath

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."

  85 |     runTests()
  86 |
> 87 |     it('should not show hydration warning from mismatching asPath', async () => {
     |     ^
  88 |       const browser = await webdriver(appPort, '/zeit/cmnt-1')
  89 |       const caughtWarns = await browser.eval(`window.caughtWarns`)
  90 |       expect(caughtWarns).toEqual([])

  at it (integration/auto-export/test/index.test.ts:87:5)
  at describe (integration/auto-export/test/index.test.ts:77:3)
  at Object.describe (integration/auto-export/test/index.test.ts:59:1)

pnpm test-dev-turbo test/development/acceptance-app/ReactRefreshLogBoxMisc.test.ts (turbopack) (job)

  • app-dir - capture-console-error-owner-stack > should capture browser console error and format the error message (DD)
  • app-dir - capture-console-error-owner-stack > should capture browser console error in render and dedupe if necessary (DD)
  • app-dir - capture-console-error-owner-stack > should capture browser console error in render and dedupe when multi same errors logged (DD)
  • app-dir - capture-console-error-owner-stack > should capture server replay string error from console error (DD)
  • app-dir - capture-console-error-owner-stack > should capture server replay error instance from console error (DD)
  • app-dir - capture-console-error-owner-stack > should be able to capture rsc logged error (DD)
  • app-dir - capture-console-error-owner-stack > should display the error message in error event when event.error is not present (DD)
Expand output

● app-dir - capture-console-error-owner-stack › should capture browser console error and format the error message

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:40393/browser/event", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at Object.<anonymous> (development/app-dir/capture-console-error-owner-stack/capture-console-error-owner-stack.test.ts:10:21)

● app-dir - capture-console-error-owner-stack › should capture browser console error in render and dedupe if necessary

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:40393/browser/render", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at Object.<anonymous> (development/app-dir/capture-console-error-owner-stack/capture-console-error-owner-stack.test.ts:31:21)

● app-dir - capture-console-error-owner-stack › should capture browser console error in render and dedupe when multi same errors logged

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:40393/browser/render", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at Object.<anonymous> (development/app-dir/capture-console-error-owner-stack/capture-console-error-owner-stack.test.ts:49:21)

● app-dir - capture-console-error-owner-stack › should capture server replay string error from console error

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:40393/ssr", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at Object.<anonymous> (development/app-dir/capture-console-error-owner-stack/capture-console-error-owner-stack.test.ts:67:21)

● app-dir - capture-console-error-owner-stack › should capture server replay error instance from console error

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:40393/ssr-error-instance", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at Object.<anonymous> (development/app-dir/capture-console-error-owner-stack/capture-console-error-owner-stack.test.ts:85:21)

● app-dir - capture-console-error-owner-stack › should be able to capture rsc logged error

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:40393/rsc", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at Object.<anonymous> (development/app-dir/capture-console-error-owner-stack/capture-console-error-owner-stack.test.ts:103:21)

● app-dir - capture-console-error-owner-stack › should display the error message in error event when event.error is not present

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:40393/browser/error-event", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at Object.<anonymous> (development/app-dir/capture-console-error-owner-stack/capture-console-error-owner-stack.test.ts:122:21)

pnpm test-start-turbo test/e2e/app-dir/actions-allowed-origins/app-action-disallowed-origins.test.ts (turbopack) (job)

  • output: standalone with app dir > should handle trace files correctly for route groups (nodejs only) (DD)
  • output: standalone with app dir > should work correctly with output standalone (DD)
Expand output

● output: standalone with app dir › should handle trace files correctly for route groups (nodejs only)

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  26 |     }
  27 |
> 28 |     beforeAll(async () => {
     |     ^
  29 |       await next.patchFile(
  30 |         'next.config.js',
  31 |         (await next.readFile('next.config.js')).replace('// output', 'output')

  at beforeAll (e2e/app-dir/app/standalone.test.ts:28:5)
  at Object.describe (e2e/app-dir/app/standalone.test.ts:15:3)

● output: standalone with app dir › should work correctly with output standalone

thrown: "Exceeded timeout of 120000 ms for a hook.
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."

  26 |     }
  27 |
> 28 |     beforeAll(async () => {
     |     ^
  29 |       await next.patchFile(
  30 |         'next.config.js',
  31 |         (await next.readFile('next.config.js')).replace('// output', 'output')

  at beforeAll (e2e/app-dir/app/standalone.test.ts:28:5)
  at Object.describe (e2e/app-dir/app/standalone.test.ts:15:3)

pnpm test test/integration/app-types/app-types.test.ts (turbopack) (job)

  • distDir > With basic usage > production mode > should render the page (DD)
  • distDir > With basic usage > production mode > should build the app within the given dist directory (DD)
  • distDir > With basic usage > production mode > should not build the app within the default .next directory (DD)
  • distDir > production mode > should handle undefined distDir (DD)
Expand output

● distDir › With basic usage › production mode › should render the page

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  24 |       'production mode',
  25 |       () => {
> 26 |         beforeAll(async () => {
     |         ^
  27 |           await fs.remove(join(appDir, '.next'))
  28 |           await fs.remove(join(appDir, 'dist'))
  29 |           await nextBuild(appDir, [])

  at beforeAll (integration/dist-dir/test/index.test.ts:26:9)
  at integration/dist-dir/test/index.test.ts:23:58
  at describe (integration/dist-dir/test/index.test.ts:22:3)
  at Object.describe (integration/dist-dir/test/index.test.ts:21:1)

● distDir › With basic usage › production mode › should build the app within the given dist directory

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  24 |       'production mode',
  25 |       () => {
> 26 |         beforeAll(async () => {
     |         ^
  27 |           await fs.remove(join(appDir, '.next'))
  28 |           await fs.remove(join(appDir, 'dist'))
  29 |           await nextBuild(appDir, [])

  at beforeAll (integration/dist-dir/test/index.test.ts:26:9)
  at integration/dist-dir/test/index.test.ts:23:58
  at describe (integration/dist-dir/test/index.test.ts:22:3)
  at Object.describe (integration/dist-dir/test/index.test.ts:21:1)

● distDir › With basic usage › production mode › should not build the app within the default .next directory

thrown: "Exceeded timeout of 60000 ms for a hook.
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."

  24 |       'production mode',
  25 |       () => {
> 26 |         beforeAll(async () => {
     |         ^
  27 |           await fs.remove(join(appDir, '.next'))
  28 |           await fs.remove(join(appDir, 'dist'))
  29 |           await nextBuild(appDir, [])

  at beforeAll (integration/dist-dir/test/index.test.ts:26:9)
  at integration/dist-dir/test/index.test.ts:23:58
  at describe (integration/dist-dir/test/index.test.ts:22:3)
  at Object.describe (integration/dist-dir/test/index.test.ts:21:1)

● distDir › production mode › should handle undefined distDir

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."

   96 |       })
   97 |
>  98 |       it('should handle undefined distDir', async () => {
      |       ^
   99 |         const origNextConfig = await fs.readFile(nextConfig, 'utf8')
  100 |         await fs.writeFile(
  101 |           nextConfig,

  at it (integration/dist-dir/test/index.test.ts:98:7)
  at integration/dist-dir/test/index.test.ts:82:56
  at Object.describe (integration/dist-dir/test/index.test.ts:21:1)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants